Mqtt mit HA verbinden

Begonnen von Sepp, 20 Februar 2025, 10:56:04

Vorheriges Thema - Nächstes Thema

Sepp

Hallo versuche verzweifelt immer noch meinen Rolladen mit HA zu verninden
er findet aber kein richtiges State ich kann ihn in Fehm bedinen jedoch taucht er in HA nicht auf
vieleicht kann mir jemand helfen?

Internals:
   FUUID      67b6242a-f33f-3e5d-1102-e56fa7ee5acd56b2
   IODev      mqtt_io
   NAME       RolloBueroMichael_MQTT
   NR         145
   STATE      position
   TYPE       MQTT2_DEVICE
   READINGS:
     2025-02-20 10:19:34   IODev           mqtt_io
     2025-02-20 10:45:23   state           position
Attributes:
   event-on-change-reading position
   readingList mqtt_io/RolloBueroMichael/position position
   setList    position:slider,0,1,100 mqtt_io/RolloBueroMichael/set $EVTPART1
   verbose    5

Internals:
   BUF       
   Clients    :MQTT2_DEVICE:MQTT_GENERIC_BRIDGE:
   ClientsKeepOrder 1
   DEF        192.168.178.130:1883
   DeviceName 192.168.178.130:1883
   FD         43
   FUUID      67b6213b-f33f-3e5d-fd21-6f76f238ded322f4
   NAME       mqtt_io
   NR         144
   PARTIAL   
   STATE      opened
   TYPE       MQTT2_CLIENT
   WBCallback
   clientId   fhem
   eventCount 1
   lastMsgTime 1740045097.88155
   nextOpenDelay 10
   nrConnects 1
   MatchList:
     1:MQTT2_DEVICE ^.
     2:MQTT_GENERIC_BRIDGE ^.
   READINGS:
     2025-02-20 10:19:37   state           opened
Attributes:
   clientId   fhem
   username   Michael
   verbose    5

und das steht im log von HA
2025-02-20 10:44:23: Client <unknown> closed its connection.
2025-02-20 10:44:39: Client 4gIOejnbwlHJMODsCXryCe closed its connection.
2025-02-20 10:44:50: New connection from 172.30.32.1:55387 on port 1883.
2025-02-20 10:44:50: New client connected from 172.30.32.1:55387 as 6HwB3RM5GQeJ40VOPgDq0S (p2, c1, k60, u'mqtt-user').
2025-02-20 10:46:23: New connection from 172.30.32.2:60394 on port 1883.
2025-02-20 10:46:23: Client <unknown> closed its connection.
2025-02-20 10:48:23: New connection from 172.30.32.2:41854 on port 1883.

wäre super wenn jemand sich das mal anschauen könnte

Sepp

sorry und das steht im Fhem Log
2025.02.20 11:18:07 4: mqtt_io received PINGRESP
2025.02.20 11:18:07 5: mqtt_io: received PINGRESP
2025.02.20 11:18:28 3: MQTT2_DEVICE set RolloBueroMichael_MQTT position 50
2025.02.20 11:18:28 5: mqtt_io: sending PUBLISH 0!(0)(29)mqtt_io/RolloBueroMichael/set50
2025.02.20 11:18:28 4: mqtt_io received PUBLISH
2025.02.20 11:18:28 5: mqtt_io: received PUBLISH (0)(29)mqtt_io/RolloBueroMichael/set50
2025.02.20 11:18:28 5: mqtt_io: dispatch autocreate=no\000fhem\000mqtt_io/RolloBueroMichael/set\00050

Beta-User

Also: Ich gehe mal davon aus, das bezieht sich auf https://forum.fhem.de/index.php?topic=140811.msg1334214#msg1334214 und du willst eigentlich einen Siro-Type Rollladen, der als FHEM-Device bereits existiert via MQTT ansteuern?

Dann ändere als erstes die clientOrder bei deinem MQTT2_CLIENT, damit MQTT_GENERIC_BRIDGE überhaupt die Infos bekommt, was via MQTT eingegangen ist. Irgendein MQTT2_DEVICE braucht man dazu NICHT!

Das steht aber bereits in dem Wiki-Artikel, auf den ich dich verwiesen hatte!
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

Sepp

also lösche ich den MQTT2_DEVICE

Beta-User

Zitat von: Sepp am 20 Februar 2025, 11:45:28also lösche ich den MQTT2_DEVICE
Mir egal, was du damit machst, mit "du brauchst es nicht", ist doch alles gesagt, oder?
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

Sepp

ok werde erstmal weiter versuchen ::)

Beta-User

Vorschlag: Wir gehen die notwendigen Schritte (die eigentlich via attrTemplate automatisiert in einem Rutsch zu erledigen gingen) in kleinen Häppchen miteinander durch?

Dann bitte:
Zitat von: Beta-User am 20 Februar 2025, 11:22:55ändere als erstes die clientOrder bei deinem MQTT2_CLIENT
Und zusätzlich: Passe dort die "subscriptions" so an, dass nur abonniert wird, was unterhalb der Topic-Struktur
mqtt_io/setkommt. Der Device-Name kommt also erst hinten.
Das ist bewußt anders herum als bei deinen bisherigen Versuchen => auf der HA-Seite auch umdrehen.

Wenn du das hast, zeige ein list vom MQTT2_CLIENT.
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

Sepp

#7
also hoffe es passt
Internals:
   BUF       
   Clients    :MQTT2_DEVICE:MQTT_GENERIC_BRIDGE:
   ClientsKeepOrder 1
   DEF        192.168.178.130:1883
   DeviceName 192.168.178.130:1883
   FD         43
   FUUID      67b70b1e-f33f-3e5d-e056-e6cd391ef086bec9
   NAME       mqtt_io
   NR         144
   PARTIAL   
   STATE      opened
   TYPE       MQTT2_CLIENT
   WBCallback
   clientId   mqtt_io
   eventCount 4
   lastMsgTime 1740054313.23524
   nextOpenDelay 10
   nrConnects 3
   MatchList:
     1:MQTT2_DEVICE ^.
     2:MQTT_GENERIC_BRIDGE ^.
   READINGS:
     2025-02-20 13:11:13   state           opened
Attributes:
   alias      MQTT Broker
   devStateIcon .*active:none:disconnect .*disconnected:none:connect
   group      MQTT
   icon       mqtt
   room       IO_Devices
   subscriptions mqtt_io/set
   username   Michael

Frage ist das ok das ich in der yaml liste alles auf werkseinstellung gelöscht habe?

Beta-User

Zitat von: Sepp am 20 Februar 2025, 13:26:10also hoffe es passt
Nein.
a) "subscriptions" ist zwar vorhanden, aber das "wording" in dem Attribut ist "space separated list of subscriptions default is #".
Das "#" zeigt, dass das "MQTT-Syntax" ist. Wenn du alles unterhalb "mqtt_io/set" haben willst, muss es so lauten:
mqtt_io/set/#b) clientOrder wurde weiter ignoriert. Letztmalig (!) ohne eigenen Versuch eine Hilfestellung (weil das im "Hauptthread" neulich auch bei einem anderen User schief ging):
Zitat von: rudolfkoenig am 11 Januar 2025, 19:45:35So wird das nicht funktionieren: clientOrder benoetigt Modulnamen, wie in der Doku: https://fhem.de/commandref_modular.html#MQTT2_CLIENT-attr-clientOrder
d.h.
Code Auswählen Erweitern
attr ha_MQTT2 clientOrder MQTT_GENERIC_BRIDGE MQTT2_DEVICE
Du mußt halt den Namen auf "mqtt_io" anpassen und den Rest 1:1 übernehmen.

Dann bitte wieder ein list.
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

Beta-User

Zitat von: Sepp am 20 Februar 2025, 13:26:10Frage ist das ok das ich in der yaml liste alles auf werkseinstellung gelöscht habe?
Ich habe von dieser yaml-Geschichte keine Ahnung und kann und werde dazu nur theoretische Hinweise geben. Ich hatte nicht "löschen" geschrieben, sondern "ändern".

Klar ist: Wenn du für irgendeine "entity" auf der HA-Seite die MQTT-Schnittstelle aktivieren willst, mußt du das auch passend konfigurieren, und dazu wäre eben eine "Änderung" (gegenüber deiner noch nicht hier gezeigten Ausgangsbasis) notwendig gewesen.

Wir haben hier nur zur Vereinfachung bzw. Verdeutlichung der "subscriptions"-Geschichte "vereinfachenden Klartext" verwendet, weil anscheinend das "eigentlich" für "nur MQTT_GENERIC_BRIDGE-Mode" passende "setByTheProgram" nur nachvollziehen kann, wer weiß, wie der Mechanismus funktioniert...
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

Sepp

Internals:
   BUF       
   Clients    :MQTT_GENERIC_BRIDGE:MQTT2_DEVICE:
   ClientsKeepOrder 1
   DEF        192.168.178.130:1883
   DeviceName 192.168.178.130:1883
   FD         43
   FUUID      67b70b1e-f33f-3e5d-e056-e6cd391ef086bec9
   NAME       mqtt_io
   NR         144
   PARTIAL   
   STATE      opened
   TYPE       MQTT2_CLIENT
   WBCallback
   clientId   mqtt_io
   eventCount 1
   lastMsgTime 1740056564.13686
   nextOpenDelay 10
   nrConnects 1
   MatchList:
     1:MQTT_GENERIC_BRIDGE ^.
     2:MQTT2_DEVICE ^.
   READINGS:
     2025-02-20 13:54:13   state           opened
Attributes:
   alias      MQTT Broker
   clientOrder MQTT_GENERIC_BRIDGE MQTT2_DEVICE
   devStateIcon .*active:none:disconnect .*disconnected:none:connect
   group      MQTT
   icon       mqtt
   room       IO_Devices
   subscriptions mqtt_io/set/#
   username   Michael

Beta-User

OK.

Jetzt aktivierst du im MQTT2_CLIENT "show MQTT traffic" und sendest was von extern an FHEM.

Also z.B. auf den "topic" "mqtt_io/set/RolloBueroMichael/pct" die "payload" 50.

Wie du das machst, ist mir egal, entweder MQTTExplorer oder was ähnliches, mosquitto_pub oder eben HA (mit passender yaml an deiner entity).

Genau diese Message sollte dann im "traffic-Monitor" sichtbar sein.
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

Sepp

Also z.B. auf den "topic" "mqtt_io/set/RolloBueroMichael/pct" die "payload" 50.

Ich hab versucht das rauszubekommen wie man das macht komm aber nicht weiter kannst du mir helfen

Tut mir leid wenn ich nerve

Beta-User

Zitat von: Sepp am 20 Februar 2025, 15:40:47Ich hab versucht das rauszubekommen wie man das macht komm aber nicht weiter kannst du mir helfen
Eigentlich wollte ich vor allem rausfinden, auf welchem Weg du "in der Regel" ggf. testweise irgenwelche MQTT-Messages versendest und überhaupt dem MQTT-Verkehr folgst. Offenbar auf keinem ;D ...

Das solltest du dir "draufschaffen", sonst versteht man m.E. das Gesamtsystem nicht und hat kaum eine Chance, das zu debuggen.

Um direkt erst mal weiterzukommen: Der im Moment einfachste Weg wäre, den "publish"-Befehl am MQTT2_CLIENT zu verwenden ;) .

Dazu aber bitte ein 2. Browserfenster mit der Detailansicht des MQTT2_CLIENT aufzumachen (so dass im anderen "show traffic" aktiviert bleibt).

Dort dann den "publish"-setter auswählen, dort "topic payload" (s.u.) eigeben und enter.
Also das hier:
mqtt_io/set/RolloBueroMichael/pct 50
Im "traffic" sollten dann 2 Zeilen auftauchen, nämlich einmal für's Versenden und dann wieder die Antwort vom MQTT-Server aufgrund unserer subscriptions.
.
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

Sepp

ja die zwei zeilen

in Readings
lastPublish
mqtt_io/set/RolloBueroMichael/pct:50
2025-02-20 15:57:31
state
opened
2025-02-20 13:54:13