我想將 dht11 的溫度和濕度資料從 raspberrypi 發送到 pc。
但是當我運行這段代碼時:
import RPi.GPIO as GPIO
import dht11
import time
import datetime
GPIO.setwarnings(True)
GPIO.setmode(GPIO.BCM)
instance = dht11.DHT11(pin=18)
import socket
HOST = '192.168.35.129'
PORT = 9999
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server_socket.bind((HOST, PORT))
server_socket.listen()
client_socket, addr = server_socket.accept()
print('Connected by', addr)
try:
while True:
result = instance.read()
if result.is_valid():
print("Last valid input: " str(datetime.datetime.now()))
print("Temperature: %-3.1f C" % result.temperature)
print("Humidity: %-3.1f %%" % result.humidity)
client_socket.send(result)
time.sleep(6)
except KeyboardInterrupt:
print("Cleanup")
GPIO.cleanup()
client_socket.close()
server_socket.close()
我收到此錯誤:
Traceback (most recent call last):
File "/home/pi/Documents/testsev.py", line 36, in <module>
client_socket.send(result)
TypeError: a bytes-like object is required, not 'DHT11Result'
我想我必須轉換result為位元組的形式,但我不知道該怎么做。
我怎樣才能成功地將此資料發送到服務器,并且此代碼是否需要進行任何更改才能正常運行?
uj5u.com熱心網友回復:
您需要序列化資料
例如,使用 JSON
import json
if result.is_valid():
data = {'temp': result.temperature, 'humidity': result.humidity}
client_socket.send(json.dumps(data).encode('utf-8'))
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/317911.html
上一篇:使用IPV6的UDP套接字
