ESP8266 (Node MCU und D1 Mini)

OP #7372941
Lesenswert?

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
OP #7372958
Lesenswert?

Hallo Fred,

danke für deine Antwort. Ich bin eigentlich froh von der Arduino IDE zu Thonny gekommen zu sein.

Wie ist so dein erster Gedanke zu dem Thema - ist für mich schwer zu begreifen. Der gleiche Code, nur einmal kommt er aus der IDE und funktioniert und wenn er vom ESP kommt, funktioniert er nicht...

Für eine Idee oder einen Wink wäre ich dankbar.

MfG

#7372987
Lesenswert?

Hi,

habe keine Erfahrung mit Thonny, aber Danke für den Tip! ;-)

ein paar Anmerkungen:

  • Ist Deine Stromversorgung ausreichend dimensioniert und gepuffert? (Evtl. hast Du eine Speisung über das USB-Kabel, sofern verbunden)
  • Dein LED an / aus aus Deiner Prosa findet sich nicht so im Code
  • Du frägst zwar ab ob "sta_if.isconnected()", wertest das aber nicht aus, woher weißt Du, dass Du wirklich mit dem passenden WLAN verbunden bist?

Viele Grüße Stefan

OP #7373003
Lesenswert?

Vielen Dank an alle.

  • das Netzteil macht max. 1,5 A
  • das Kabel habe ich versuchsweise getauscht - gleicher Effekt
  • Wlan funktioniert ohne Probleme auch wenn der Code vom ESP ausgeführt wird (den Code habe ich mir aus Thonny Beispielen kopiert)
  • der Code für die LED ist jetzt auskommentiert. Wenn der Codeteil aktiv ist leuchtet die LED auf wenn der Code vor der Zeile: mqttc.connect() steht wenn er dahinter steht leuchtet die LED nicht. Daraus schliesse ich, dass das Problem beim mqtt.connect entsteht. Wenn der Code in der IDE ausgeführt wird steht die neue Verbindung zum MQTT Broker in der Logdatei - wenn der Code vom ESP ausgeführt wird passiert in der Logdatei nichts.

Das ist alles nicht professionell bei mir, aber ich weiss nicht wie man sonst debuggen kann.

Für Hilfe wäre ich wirklich sehr dankbar :-)

MfG

Gast #7373166
Lesenswert?

Rainer W. schrieb:

Die Stromaufnahme des ESP8266 liegt beim Senden unter 400mA.

Nein, sie liegt knapp drüber. Habe ich selbst gemessen. Der da auch: https://www.ondrovo.com/a/20170207-esp-consumption/

Matthias, ich würde mal versuchen, die Netzwerk-Kommunikation mit Wireshark zu analysieren. Das lässt du am besten auf dem Rechner laufen, wo dein MQTT Server liegt.

Das D1 Mini Board läuft oft deutlich stabiler, wenn man einen 100µF Elko direkt an 3,3V + GND auf das Modul lötet.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren