FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Gnorbert am 23 April 2020, 13:11:57

Titel: Simultanes Publish und Subscribe
Beitrag von: Gnorbert am 23 April 2020, 13:11:57
Hallo,

Ich komme mit dem folgenden Problem nicht weiter. Ich habe 3 ESP32-Sensorkonoten, die Sensordaten abgreifen und via MQTT publishen. Das Funktioniert auch so weit. Jedoch will ich nun einen der Sensorknoten auch zum ansteuern von LEDs nutzen.

Das funktioniert jedoch nicht oder nur mit Einschränkung. Wenn ich in der loop-Funktion nur das callback über clinet.loop aufrufe, kann ich die LEDs problemlos ansprechen. Sobald meine Code zum publishing der Sensorwerte hinzukommt, funktioniert das aber nur noch selten oder gar nicht mehr. Ich verwende pubsubclient.h

Ist es prinzipiell möglich auf einem ESP32 gleichzeitig zu publischen und zu subscriben? Oder ist das MQTT Protokoll dafür nicht vorgesehen?
Wenn es möglich ist, wie muss dann der code in der loop-Funktion aussehen?
Titel: Antw:Simultanes Publish und Subscribe
Beitrag von: xenos1984 am 23 April 2020, 15:38:59
Das ist durchaus möglich und funktioniert zumindest bei mir auch recht gut (ich habe einen Temperatursensor am ESP / Arduino hängen, dessen Daten per MQTT an FHEM gesendet werden, und einen Datentransfer in die Gegenrichtung zum Schalten eines Digitalausgangs).

Mein Code ist dabei so aufgebaut wie hier in den Beispielen:

http://wiki.fhem.de/wiki/MQTT_Einf%C3%BChrung_Teil_3

Was bei deinem Code schief läuft, lässt sich natürlich schwer sagen, ohne den Code selbst vor Augen zu haben.
Titel: Antw:Simultanes Publish und Subscribe
Beitrag von: Thomas41587 am 24 April 2020, 07:31:31
Gleichzeitiges publish und subscribe funktioniert. Solange man nicht publish und subscribe auf ein und das selbe reading macht, dann hat man einen loop :-) Die Erfahrung durfte ich erst kürzlich machen.
Titel: Antw:Simultanes Publish und Subscribe
Beitrag von: Gisbert am 24 April 2020, 07:52:21
Hallo Gnorbert,

kann mich nur den Vorrednern anschließen. Ohne den Sketch anzuhängen, ist eine Hilfe wohl kaum möglich.

Hast du mal daran gedacht fertige Software wie ESPEasy oder Tasmota einzusetzen? Dort ist dieses Problem ganz sicher gelöst. Das was du prüfen musst, ist ob deine Sensoren und Aktoren bereits in diesen Softwarepaketen bereits enthalten ist. Ich würde wetten, dass das geht, aber du hast uns darüber im Unklaren gelassen.

Ich nutze fast ausschließlich ESPEasy und Tasmota, lediglich bei 2 ESP8266 habe ich eigene Sketche am Start, da ich dort Aktoren bzw. Funktionalitäten nutze, die bei obigen Paketen nicht vorgesehen sind.

Viele​ Grüße​ Gisbert​