Guten Morgen,
ich habe einen ESP8266 (Node MCU und D1 Mini) verschaltet und schicke
die Temperaturdaten per MQTT an einen Server (MQTT Broker). Micropython
ist auf dem ESP installiert, das Python Programm mit Thonny funktioniert
gut.
Wenn ich das ESP Board vom Rechner mit Thonny trenne, das Board mit
Strom versorge dann funktioniert es nicht mehr. Genauer: Die Anmeldung
im Wlan funktioniert, das verbinden zum MQTT Broker gelingt nicht. (die
led nach "mqttc.connect()" leuchtet nicht auf). Vor dem
"mqttc.connect()" geht die led an.
Ich bin kein Profi, habe aber versucht die Lösung selber zu finden. Ich
habe den gleichen Aufbau mit einem anderen Board (D1 Mini) und einem
anderen Sensor (dht22) versucht - gleiches Ergebnis. Einer Fehlermeldung
würde mir vielleicht helfen, aber wie komme ich die Meldung? Im log am
MQTT Broker habe ich keine Fehlermeldung gefunden.
Jetzt weiss ich nicht mehr weiter. Hat jemand eine Idee?
1 | import machine, onewire, ds18x20, time
|
2 |
|
3 | # Verbindung zu Wlan
|
4 | import network
|
5 | sta_if = network.WLAN(network.STA_IF); sta_if.active(True)
|
6 | sta_if.scan() # Scan for available access points
|
7 | sta_if.connect("xxxxx", "xxxxx") # Connect to an AP
|
8 | sta_if.isconnected() # Check for successful connection
|
9 |
|
10 | # zum testen
|
11 | # from machine import Pin
|
12 | # Pin(2, Pin.OUT).value(0) # led aus, 0 schaltet ein
|
13 |
|
14 | # Verbindung zu MQTT Server
|
15 | from umqtt.simple import MQTTClient
|
16 | CLIENT_NAME = 'esp_1'
|
17 | BROKER_ADDR = '192.168.59.67'
|
18 | PORT = '1883'
|
19 | mqttc = MQTTClient(CLIENT_NAME, BROKER_ADDR, keepalive=60)
|
20 | mqttc.connect()
|
21 | TOPIC = 'home/temp/azi'
|
22 |
|
23 | ds_pin = machine.Pin(4)
|
24 | ds_sensor = ds18x20.DS18X20(onewire.OneWire(ds_pin))
|
25 | roms = ds_sensor.scan()
|
26 | #print('Found DS devices: ', roms)
|
27 |
|
28 | while True:
|
29 | ds_sensor.convert_temp()
|
30 | time.sleep_ms(750)
|
31 | for rom in roms:
|
32 | #print(rom)
|
33 | temp = ds_sensor.read_temp(rom)
|
34 | mqttc.publish(TOPIC, ''+str("%2.2f"%temp))
|
35 | print('Die Temperatur im Azi: ', temp)
|
36 | #print (str("%2.2f"%temp))
|
37 | time.sleep(60) # alle 60 Sekunden
|