micropython으로 AWS IoT로 데이터 전송
7722 단어 micropythonawsIoT
오늘은 어제에 계속 Wipy 팜을 쓴 ESP32-Devkit에서 AWS IoT에 데이터를 날려 싶습니다.
공식적으로 공개 된 ESP32 펌웨어는 AWS IoT에 연결할 수 있습니다.
할 수 없었습니다.
SSL 부분의 실장 상태에 차이가 있다고 생각합니다.
사전 준비
미리 AWS IoT 측에서 설정해 둡니다.
순서의 상세 여기에서는 생략하겠습니다. 공식 페이지나 다른 쪽의 기사를 참고해 주세요.
물건, 증명서의 작성과 다운로드, 증명서와 물건의 연결, 정책의 작성과 증명서의 연결이 끝나고 있으면 k입니다. .
실행
AWS 측 설정이 완료되면 다운로드한 인증서를 ampy 도구로 ESP32로 전송해 둡니다.
인증서를 전송한 후 다음 코드를 ESP32로 전송하여 실행해 봅니다.
LM35에서 읽은 온도를 AWS IoT로 보내는 코드입니다.
import socket
import ssl
import json
from machine import ADC
def lm35():
adc = ADC()
apin = adc.channel(pin='P18', attn=ADC.ATTN_0DB)
return (apin() * 0.000235+0.075) / 0.01
def send():
s = socket.socket()
ai = socket.getaddrinfo("xxxxxxxxxx.amazonaws.com", 8443)
print("Address infos:", ai)
addr = ai[0][-1]
s = ssl.wrap_socket(s, certfile='xxxxxxxxxx-certificate.pem.crt',
keyfile='xxxxxxxxxx-private.pem.key',
ca_certs='xxxxxxxxxx.pem',
cert_reqs=ssl.CERT_REQUIRED)
s.connect(addr)
print('Connected to Server')
temp = lm35()
json_data = {'state':{'reported':{'Temperature': temp}}}
send_data=json.dumps(json_data)
s.write(b"POST /things/ESP32/shadow HTTP/1.1\r\n")
s.write(b"Host: xxxxxxxxxx.amazonaws.com\r\n")
s.write(b"Content-Length: %d\r\n" % len(send_data))
s.write(b"Connection: close\r\n")
s.write(b"\r\n")
s.write(send_data)
print('Send Data to Server')
recv_data = s.recv(4096)
print(str(recv_data, 'utf8'))
s.close()
그림자 상태 값이 업데이트되었습니다.
이번에는 HTTPS 연결을 사용했지만 MQTT에서도 같은 방식으로 AWS IoT에 연결할 수 있습니다.
AWS IoT에 연결하려면 TLS1.2가 필요하기 때문에 ESP32를 사용했습니다.
필요하지 않은 IoT 플랫폼은 ESP8266이 될 수 있습니다.
TCP/IP 스택을 탑재한 ESP8266/ESP32와 micropython의 조합은
IoT에서 활약할 수 있는 잠재력을 충분히 느끼네요.
Reference
이 문제에 관하여(micropython으로 AWS IoT로 데이터 전송), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sat0ken/items/ac18b0d14e58e0eae124텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)