MQTT-Problem

Hallo,

ich habe einen ESP8266 per MQTT an IPS angebunden. Instanzen wurde sauber angelegt und die Nachrichten werden auch im IPS empfangen. Allerdings bekomme ich nichts rausgeschickt. Schon das Debug-Protokoll des Server-Sockets zeigt, dass keine ordentliche Nachricht rausgeht. Ich bin zwar auf der 5.3 beta, aber ich denke, es ist kein beta-Problem, sondern eher ein User-Error. Ich habe mal ein paar Snapshots angehängt, um das zu zeigen, was angelegt wurde und wie ich versuche, was an den ESP8266 zu schicken.

.
MQTT-Meldungen3.jpg

Kann mir jemand einen Tipp geben ?

Grüße Frank

Hallo Frank?

Esp mit Tasmota beschrieben? Wenn ja Tasmota Modul ausprobiert?
Wenn nicht dieser läuft super.

Gruß

nein - ist keine gekaufte ESP8266-Einheit. Meine Shellies 2.5 und Gosund 112 habe ich mit Tasmota geflasched, aber diese Einheiten möchte ich für spezielle Funktionen programmieren und ich gehe mal davon aus, dass die über MQTT im IPS auch funktionieren müsste.
In die eine Richtung funktioniert ja mal schon :slight_smile:

Grüße Frank

Ah gut, dann kennst ja das Modul.

Dann mal abwarten was die Experten dazu sagen, da bin ich nicht so drin.

Bei RequestAction muss die ID der Variable und nicht der Instanz angegeben werden.
Leider kann man die ObjektIDs nicht sehen, hast du beim Screenshot abgeschnitten.
Michael

RequestAction geht auf Value von Power 1 - der Befehlt wird auch ausgeführt und man kann die Änderung im Objektbaum auch sehen

Wie kann das sein, wenn angeblich nichts gesendet wird?
Wer setzt den die Variable neu???

Du hast nicht zufällig bei der Variable ein Aktionsskript hinterlegt mit SetValue?

Weil dann startet RequestAction natürlich dein Aktionsskript und nicht die Standardaktion, welche per MQTT den neuen Wert versendet.
Michael

hm - mit dem RequestAction ändere ich doch die Variable und dann würde ich erwarten, dass der MQTT-Broker diese Änderung an den Client schickt, oder liege ich da falsch ? Im Profil ist nur ein Standardscript Power1 (MQTT-Doppelschalter) hinterlegt und das kam über den MQTT-Konfigurator.
Bei dem Tasmota-Flash setzt man eine Boolean-Variable POWER1 (also nicht die Original-Variable) - was da genau passiert, weiß ich nicht …

Falsch.
Mit RequestAction sagst du der Variable das du gerne die hinterlegte Aktion ausführen möchtest mit Wert x.
Du änderst damit nicht direkt den Wert.

Das wäre korrekt.
Und wenn dann das Gerät Antwortet wird normalerweise die Variable auf den neuen Wert gesetzt.

Warum bei dir nur die Variable den neuen Wert annimmt und kein Befehl rausgeht, verstehe ich aber auch nicht.
Michael

aber wenn da was raus geht,muss es ja im Debug vom Socket zu sehen sein …

Hi,
Geht es denn wenn du das Schalten über ein Ereignis direkt erledigts und nicht durch ein script? Das Problem hab ich nämlich mit dem shelly2.5 und POWER1 … ich benomme beim Ausführen eines Scripts mit requestaction die Fehlermeldung das die Var. ReadOnly sei. Beim Schalten via Ereignis geht es aber…

Grüße
Hardlog

nur wenn ich SetValue benutze - requestaction funktioniert, da ich aber mit TASMOTA arbeite, greife ich nur auf TASMOTA-Variable zu, wenn ich etwas ändern will

Ich möchte nochmal auf das ursprüngliche Problem aufmerksam machen, weswegen dieser Thread entstanden ist. Es wäre wünschenswert, wenn sich tatsächlich einer der IPS/MQTT-Spezialisten damit befassen könnte.
Die Tatsache, dass der Konfigurator die Variablen angelegt hat, zeigt ja, dass der ESP8266 ordentliche MQTT-Nachrichten verschickt und dann sollte es doch auch möglich sein, dass man eine Nachricht wieder zurückschickt und gem. Beschreibung müsste das durch RequestAction funktionieren. Was ich beobachten konnte, dass der Client immer wieder mal x"C0 00" schickt und darauf ein Transmit mit x"D0 00" folgt. Nur auf RequestAction tut sich nichts.

Grüße Frank

Hallo Frank,
verstehe ich dich richtig ?
Du möchtest den internen IPS Client benutzen und damit schalten ?
MQTT — IP-Symcon :: Automatisierungssoftware

Das habe ich nie probiert, und versuche es mal nachzustellen.

So, habe mal probiert mit den internen MQTT Device, schalten geht über die VAR „cmnd/tasmota118/POWER1“, Rückmeldung steht in der VAR „stat/tasmota118/POWER1“

Hallo Frank,

bitte mache mal folgendes:

[ol]
[li]Instanzen nochmal löschen[/li][li]Instanzen wieder anlegen[/li][li]Debug vom MQTT Server öffnen (Nicht vom Server Socket)[/li][li]Variable mit RequestAction setzen[/li][li]Das Debug posten[/li][/ol]
Dann schauen wir mal weiter.
C0 00 ist der Ping der automatisch versendet wird.

Grüße,
Kai

Hallo Kai,

hier sieht es gut aus (siehe Dump, die TX sind die RequestActions).

dump (12).txt (63.6 KB)

Aber müsste das nicht auch im Server-Socket-Debug zu finden sein ?

Hab mal noch den Arduino-Code mitangehängt … aber der sollte soweit passen.

Grüße Frank

dump (10).txt (3.14 KB)

Was genau sind das für Geräte?
Gibt es zu den Geräten eine Doku?

Bei Tasmota zum Beispiel benötigst du zum Publishen ein extra Topic, das fängt bei der Tasmota Firmware mit cmnd/ an.

Grüße,
Kai

Hallo Frank,
wenn du mir den kompletten Code zukommen lässt, würde ich das mal auf einer Nodemcu testen.
SSID usw bitte vorher ändern…

Hallo Tom,

eigtl. fehlt nur das aus der config.inc:

const char* ssid = „…“; // Hier Accesspoint angeben **********************
IPAddress ip(xx, xx,xx, xxx); // Hier IP-Adresse angeben ***********************

Kannst du denn sehen, dass Daten dort ankommen?

Grüße,
Kai

Gesendet von iPhone mit Tapatalk