Shelly Dimmer Gen3 wird nicht als Gerät angelegt

Begonnen von MiK77, 10 Juli 2025, 22:09:53

Vorheriges Thema - Nächstes Thema

MiK77

Hallo,

bei mir läuft der MQTT2_SERVER. Ich nutze schon viele verschiedene Geräte (Shellys, Tasmota, selbst programmierte ESPs) und immer wurde sofort nach Inbetriebname ein entsprechendes MQTT2_DEVICE angelegt.

Nun musste ich meinen Shelly Dimmer2 durch einen Shelly Dimmer Gen3 ersetzen. Dafür wird aber beim besten Willen kein Gerät angelegt.

Ich sehe Nachrichten vom Dimmer im MQTT Explorer und auch wenn ich im MQTT-Server in FHEM auf "Show MQTT traffic" gehe. Soweit funktioniert alles. Aber irgendetwas hängt beim Autocreate.

Kann mir jemand einen Tipp geben, wie ich das debuggen kann?

Ciao

MiK

rudolfkoenig

ZitatKann mir jemand einen Tipp geben, wie ich das debuggen kann?
Mit "attr global verbose 5".

MiK77

Das habe ich gestern kurzzeitig probiert und wurde von den Daten ziemlich erschlagen. Nach was müsste ich suchen, um den Grund für ein fehlgeschlagenes Autocreate zu finden? Hier ein Auszug, der sich öfters ähnlich wiederholt.

2025.07.10 21:19:11 4:   MqttServer_192.168.77.196_56257 shellydimgen3-b0123456789c PUBLISH shellies/Bad/Licht2/events/rpc:{"src":"shellydimmerg3-b0123456789c","dst":"shellies/Bad/Licht2/events","method":"NotifyStatus","params":{"ts":1752175151.01,"light:0":{"brightness":87,"output":true,"source":"WS_in"}}}
2025.07.10 21:19:11 5:   MqttServer_192.168.77.115_53614 mqtt-explorer-5cfe5023 => shellies/Bad/Licht2/events/rpc:{"src":"shellydimmerg3-b0123456789c","dst":"shellies/Bad/Licht2/events","method":"NotifyStatus","params":{"ts":1752175151.01,"light:0":{"brightness":87,"output":true,"source":"WS_in"}}}
2025.07.10 21:19:11 5: MqttServer: dispatch autocreate=complex\000shellydimgen3_b0123456789c\000shellies/Bad/Licht2/events/rpc\000{"src":"shellydimmerg3-b0123456789c","dst":"shellies/Bad/Licht2/events","method":"NotifyStatus","params":{"ts":1752175151.01,"light:0":{"brightness":87,"output":true,"source":"WS_in"}}}
2025.07.10 21:19:11 4:   MqttServer_192.168.77.196_56257 shellydimgen3-b0123456789c PUBLISH shellies/Bad/Licht2/status/light:0:{"id":0,"source":"WS_in","output":true,"brightness":87,"temperature":{"tC":43.4, "tF":110.2},"aenergy":{"total":1.801,"by_minute":[0.000,0.000,0.000],"minute_ts":1752175140},"apower":0.0,"current":0.000,"voltage":230.0}
2025.07.10 21:19:11 5:   MqttServer_192.168.77.115_53614 mqtt-explorer-5cfe5023 => shellies/Bad/Licht2/status/light:0:{"id":0,"source":"WS_in","output":true,"brightness":87,"temperature":{"tC":43.4, "tF":110.2},"aenergy":{"total":1.801,"by_minute":[0.000,0.000,0.000],"minute_ts":1752175140},"apower":0.0,"current":0.000,"voltage":230.0}
2025.07.10 21:19:11 5: MqttServer: dispatch autocreate=complex\000shellydimgen3_b0123456789c\000shellies/Bad/Licht2/status/light_0\000{"id":0,"source":"WS_in","output":true,"brightness":87,"temperature":{"tC":43.4, "tF":110.2},"aenergy":{"total":1.801,"by_minute":[0.000,0.000,0.000],"minute_ts":1752175140},"apower":0.0,"current":0.000,"voltage":230.0}

Zu dem Zeitpunkt hatte ich wohl den autocreate testweise auf "complex".

Ich bekomme im Log auch autocreate-Zeilen für Geräte, die schon längst existieren. Bei denen folgt dann aber immer eine Zeile mit "MQTT2_DEVICE_Parse".

rudolfkoenig

Das sind zu wenig Daten, hier sieht man nur, dass MqttServer die Daten empfangen, an mqtt-explorer zurueckgeschickt und intern in FHEM verteilt hat.

Moegliche Ursachen des Problems:
- kein autocreate Instanz definiert oder es ist deaktiviert. Im verbose 5 Log sollte eine UNDEFINED Zeile auftauchen.
- MQTT2_DEVICE wird (z.Bsp. wegen clientOrder Attribut in MqttServer) nicht aufgerufen, und kann deswegen kein UNDEFINED Event fuer die autocreate Instanz generieren. Im Log sollte eine "help me" Zeile auftauchen,
- es existiert bereits eine MQTT2_DEVICE Instanz, was sich fuer diese Nachrichten zustaendig fuehlt. Im Log sollte eine "MQTT2_DEVICE_Parse:..." Zeile auftauchen

Mit der autocreate Angabe in dispatch reicht der Server sein Attribut an MQTT2_DEVICE weiter. simple/complex ist fuer die Erweiterung des readingsList Attributes relevant, nicht fuer das Anlegen von neuen Instanzen.

Bei mir wird mit folgendem Befehl (Daten aus dem Log oben extrahiert) eine MQTT2_DEVICE Instanz angelegt:
mosquitto_pub -i shellydimgen3-b0123456789c -t shellies/Bad/Licht2/events/rpc -m '{"srcllydimmerg3-b0123456789c","dst":"shellies/Bad/Licht2/events","method":"NotifyStatus","params":{"ts":1752175151.01,"light:0":{"brightness":87,"output":true,"source":"WS_in"}}}'

MiK77

Wenn ich Dich richtig verstehe, sollte im Log entweder ein UNDEFINED, "help me" oder MQTT2_DEVICE_Parse nach dem Empfang der Nachricht auftauchen.

In meinem Log kommt aber keiner dieser Fälle im Zusammenhang mit der Nachricht vom Dimmer vor.

Heißt das, keiner der drei aufgeführten Ursachen trifft auf meinen Fall zu?

rudolfkoenig

ZitatWenn ich Dich richtig verstehe, sollte im Log entweder ein UNDEFINED, "help me" oder MQTT2_DEVICE_Parse nach dem Empfang der Nachricht auftauchen.
UNDEFINED kommt auf global verbose 5
help me auf Mqtt_Server verbose 3+ (oder global verbose 3+)
MQTT2_DEVICE_Parse auf verbose4+ der passenden MQTT2_DEVICE Instanz (oder global verbose 4+).

Heißt das, keiner der drei aufgeführten Ursachen trifft auf meinen Fall zu?
Wenn bei "attr global verbose 5" keine der Meldungen kommt, dann ist das Etwas, was ich z.Zt. nicht im Blick habe.

MiK77

Global verbose stand bei dem Log auf 5. Beim mqtt2_server und den Devices war kein Verbose gesetzt.

rudolfkoenig

ZitatGlobal verbose stand bei dem Log auf 5. Beim mqtt2_server und den Devices war kein Verbose gesetzt.
Das haette fuer meine Meldungen gereicht.
Bin z.Zt. ratlos.
Kannst Du mir einen kompletten Log-Ausschnitt mit verbose 5 hier anhaengen oder per email/PM zuschicken?

MiK77

Das Log hatte schon nach 20 Sekunden mehr als 10000 Zeilen. Ich habe es weitgehend reduziert und Dir per PM geschickt.

rudolfkoenig

ZitatIch habe es weitgehend reduziert [...]
Warum?

Im Log habe ich nichts Neues gesehen, habe deswegen jetzt den Quellcode nochmal eine Weile angestarrt.

Weitere Moeglichkeit waere ein bridgeRegexp, was false (d.h. undef, "" oder 0) zurueckliefert.
Falls das auch nicht der Fall sein sollte und ich weiter suchen soll, dann benoetige ich die readingsList und bridgeRegexp Attribute aller(!) MQTT2_DEVICE Instanzen.

MiK77

Ich habe nur Dinge entfernt die definitiv nichts mit mqtt zu tun haben. Sehr lange Ausgaben vom Aufruf der fhem-Webseite, von Alexa-Echo-Devices und der Fritzbox.

Bräuchtest Du nur diese Attribute von den Devices oder Auch von Mqtt-Clients und Mqtt-Bridges?

Ich habe das Device nun erst einmal von Hand angelegt. Damit funktioniert es. Die Nachrichten kommen dort an. Werden also auch nicht von einem anderen Device abgefangen.

Was mir dabei aufgefallen ist: Das Device hatte erst einmal ein falsches IODev. Nämlich ein Mqtt-Client, den ich für die Abfrage eines entfernten MQTT-Servers nutze.

Beta-User

Zitat von: MiK77 am 12 Juli 2025, 10:32:20Werden also auch nicht von einem anderen Device abgefangen.
Fehlinterpretation: "Abfangen" bedeutet nur, dass es irgendwo einen readingList-Eintrag gibt, der paßt und dann autocreate "verhindert". That's all.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

rudolfkoenig

ZitatIch habe nur Dinge entfernt die definitiv nichts mit mqtt zu tun haben.
Das mag sein, fuer einen Benutzer ist es aber nicht leicht zu beurteilen, was damit zu tun hat und es verunsichert mich unnoetig.

ZitatDas Device hatte erst einmal ein falsches IODev.
Es ist das zuletzt angelegte kompatible IODev, da das Modul es nicht besser weiss.
autocreate setzt das "richtig" auf dem Empfaenger-IODev.

ZitatFehlinterpretation: "Abfangen" bedeutet nur, dass es irgendwo einen readingList-Eintrag gibt, der paßt und dann autocreate "verhindert". That's all.
Das habe ich auch so verstanden.
Solange ich aber die Ursache nicht kenne, kann auch irgendwo noch ein Fehler im Code sein.