やりたいこと
ESP32と結線しているBMR280(温度湿度圧力センサ)のデータを
ローカルで待機させているサーバに転送できるようにしたい。
環境
Windows10 64bit版
micro python version 1.12
ターミナルソフトウェア: PuTTY(version 0.74)
micropython(データを転送する側 client.py) のコード
(空白でインデントができないので--->でインデントを表現しました)
micropython
1import machine 2import utime 3import bme280 4import usocket 5 6i2c = machine.I2C(scl=machine.Pin(22), sda=machine.Pin(21), freq=10000) 7 8line = 0 9 10while True: 11 bme = bme280.BME280(i2c=i2c) 12 13 temp_bme280 = bme.temperature 14 buf += str(temp_bme280) + "\n" 15 hum_bme280 = bme.humidity 16 pres_bme280 = bme.pressure 17 18 print("[BME280] Temperature: " + str(temp_bme280)) 19 print("[BME280] Humidity: " + str(hum_bme280)) 20 print("[BME280] Pressure: " + str(pres_bme280), end="\n") 21 22 with usocket.socket(usocket.AF_INET, usocket.SOCK_STREAM) as client: 23 client.connect(("192.168.0.4", 50755)) 24 client.sendall(buf.encode()) 25 data = client.recv(1024).decode() 26 print(repr(data)) 27 28 print(buf) 29 line += 1 30 utime.sleep(5) 31 32fp.close()
データを受け取る(サーバ側 server.py)のmicro pythonのコード
from datetime import datetime import socket print("The server started at ", datetime.now()) print("Waiting ...") with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.bind(("127.0.0.1", 50755)) s.listen(1) while True: conn, addr = s.accept() with conn: while True: data = conn.recv(1024) if not data: break print("data: ", data, "addr", addr) conn.sendall(b"Receive: " + data)
実行したこと
- コマンドプロンプトを起動し、サーバ側のmicro python(server.py)を実行する。
- 2つめのコマンドプロンプトから、クライアント側のmicro python(client.py)を実行する。
発生するエラー
Trackback (most recent call last)
File "client.py", in Line 70, in <module>(←client.pyのwith...の行)
AttributeError: "socket" object has no attribute "exit"
となります。再現性があります。
どのように対処すれば良いのでしょうか。
回答4件
あなたの回答
tips
プレビュー