Mein Name ist Tom und ich tüftel gerne.
Ich habe an meinen alten Raspi B3+ einen DHT 20 Sensor angeschlossen und habe Ihn auch dazu gebracht mir Werte anzuzeigen.
Nun bin ich aber in Python absoluter nichtskönner. Ich habe versucht aus zwei Scripten eines zu basteln.
Die Sensordaten sollen via MQTT an meinen IoBroker gehen. Ich bin auch schon soweit, dass ich die Datenpunkte in meinem Broker sehe.
Code: Alles auswählen
pi@Test:~/DFRobot_DHT20/python/raspberrypi/examples $ python3 dht20.py
Temperatur: 23.891448974609375 *C
Luftfeuchtigkeit: 39.478206634521484 RH
Nun mien Problem:
Ich weiß nicht was ich im Script eintragen muss, damit die Werte des Sensors überliefert werden.
Kann mir vielleicht jemand helfen und mir einen Tip geben, wie die Eintragung lauten muss?
Code: Alles auswählen
import time
import smbus2
import paho.mqtt.client as mqtt
address = 0x38 #Put your device's address here
i2cbus = smbus2.SMBus(1)
time.sleep(0.5)
data = i2cbus.read_i2c_block_data(address,0x71,1)
if (data[0] | 0x08) == 0:
print('Initialization error')
broker='XXX.XXX.XXX.XXX'
port=1879
publish_topic="Testpi/pi-DHT20"
clientid='TestPi'
username='XXX'
password='XXXXXXXX'
insecure=True
qos=1
retain_message=True
i2cbus.write_i2c_block_data(address,0xac,[0x33,0x00])
time.sleep(0.1)
data = i2cbus.read_i2c_block_data(address,0x71,7)
Traw = ((data[3] & 0xf) << 16) + (data[4] << 8) + data[5]
temperature = 200*float(Traw)/2**20 - 50
Hraw = ((data[3] & 0xf0) >> 4) + (data[1] << 12) + (data[2] << 4)
humidity = 100*float(Hraw)/2**20
print("Temperatur: ", temperature, "*C")
print("Luftfeuchtigkeit: ", humidity, "RH")
print()
time.sleep(2)
#MQTT Connection
client=mqtt.Client(clientid)
client.username_pw_set(username, password)
#client.tls_set(cert_reqs=ssl.CERT_NONE) #no client certificate needed
#client.tls_insecure_set(insecure)
client.connect(broker, port)
client.loop_start()
client.publish("{}/temperature".format(publish_topic),"was muss hier rein, um den Temperaturwert zu senden")
client.disconnect()
client.loop_stop()
Mfg
Tom