Readingsabfrage vom FHEM-MQTT2-Server

Begonnen von uron, 18 April 2024, 11:34:46

Vorheriges Thema - Nächstes Thema

uron

Nervig, ich steige hier nicht mehr durch, hab wohl was verbockt und sitze seit mindestens einem Tag an der Problemlösung!
Ich habe auf meinem FHEM-Raspi den MQTT2-Server installiert
Internals:
   CONNECTS   6
   Clients    :MQTT2_DEVICE:MQTT_GENERIC_BRIDGE:
   ClientsKeepOrder 1
   DEF        1883 global
   FD         15
   FUUID      63d7d3e4-f33f-aab4-350e-e0d8fa6c1e7dbfff
   NAME       MQTT2_FHEM_Server
   NR         852
   PORT       1883
   STATE      Initialized
   TYPE       MQTT2_SERVER
   eventCount 9
   MatchList:
     1:MQTT2_DEVICE ^.
     2:MQTT_GENERIC_BRIDGE ^.
   READINGS:
     2024-04-18 11:00:48   nrclients       3
     2024-04-18 10:59:38   state           Initialized
   clients:
     MQTT2_FHEM_Server_192.168.2.154_56720 1
     MQTT2_FHEM_Server_192.168.2.193_35586 1
     MQTT2_FHEM_Server_192.168.2.193_36294 1
   retain:
Attributes:
   alias      MQTT2_FHEM_Server
   autocreate simple
   room       Büro,MQTT2
Im Ordner unsorted finde ich ein Device mit dem Namen
Internals:
   CID        MQTT2_FHEM_Server
   DEF        MQTT2_FHEM_Server
   FUUID      653d051d-f33f-aab4-f2d7-8769d64aadf4e42c
   IODev      MQTT2_FHEM_Server
   NAME       MQTT2_MQTT2_FHEM_Server
   NR         2018
   STATE      ???
   TYPE       MQTT2_DEVICE
   READINGS:
     2024-04-18 11:00:14   IODev           MQTT2_FHEM_Server
     2024-03-23 18:11:00   RaumanforderungFBH 0
     2024-03-23 18:11:15   bdc1Soc         90
     2024-03-23 18:11:15   bdc1Temp1       19.6
     2024-03-23 18:11:15   pac             410
Attributes:
   alias      MQTT2_FHEM_Server
   autocreate 1
   event-min-interval .*:300
   event-on-change-reading .*
Im Raum MQTT2_DEVICE finde ich ein Device (list kann ich nicht erstellen, daher Screenshot)
[attach id=177847]MQTT2_RaumanforderungFBH.JPG
Mein Ziel ist es in einem notify den Wert 'RaumanforderungFBH' auszulesen und je nach Zustand einen Schalter zu aktivieren/deaktivieren.

Eine ursprüngliche funktionierende Lösung warMQTT2_FHEM_Server:RaumanforderungFBH:.0| MQTT2_FHEM_Server:RaumanforderungFBH:.1 { my@cmd=qw(off on);fhem ("set KG_FBH_Pumpe_Heizraum $cmd[$EVTPART1]")} aber dann habe ich mir offenbar einen Fehler eingebaut.
Der Wert 'RaumanforderungFBH' kommt von einem User-Datenpunkt aus dem ioBroker eines zweiten RasPi.
Kann mir bitte jemand helfen, meine Wirrungen entknoten?
Ich weiß gar nicht, wie ich das Reading "RaumanforderungFBH" aus der Readingslist richtig abfragen muss?
Raspberry Pi  fhem  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitocal 200-S, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox, Wechselrichter Growatt MIN 4600 TL-XH, RasPi ioBroker

betateilchen

Erster Schritt zur Lösung des Problems: Gib den FHEM-devices vernünftige Namen!

Der MQTT2_SERVER kann ja gerne MQTT2_SERVER heißen

rename MQTT2_FHEM_Server MQTT2_SERVER
Dann benenne bitte das MQTT2_DEVICE entsprechend um:

rename MQTT2_MQTT2_FHEM_Server MQTT2_DEVICE_1
attr MQTT2_DEVICE_1 IODev MQTT2_SERVER

und danach kannst Du aus dem Event-Monitor das notify auf das MQTT2_DEVICE anlegen lassen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

TomLee

#2
Hallo,

du hast vor etwas mehr wie einem einem Monat in dem MQTT2_MQTT2_FHEM_Server-Device die readingList gelöscht und in IOBroker die Client-ID (CID) von MQTT2_FHEM_Server zu ioBroker geändert. Darum wurde das MQTT2_ioBroker automatisch erstellt.

Das MQTT2_MQTT2_FHEM_Server-Device kannst im Prinzip jetzt löschen, das Reading für dein notify ist derzeit das 0_userdata_0_RaumanforderungFBH.

Warum der Wert jetzt aber über zwei Topics kommt (und in das gleiche Reading geschrieben werden), hab ich noch nicht verstanden (kenn mich mit IOBroker nicht aus), hier war es nur der Topic 0\x20userdata/0/W\xc3\xa4rmepumpe/RaumanforderungFBH:.* RaumanforderungFBH
Thomas

uron

#3
Danke für eure Unterstützungsversuche.
Nachdem ich nun die Umbenennungen gem. betateilchen unternommen habe kämpfe ich mit dem Problem des ständigen Wechsels des Zusatands des triggers RaumanforderungFBH im ioBroker, die sich natürlich auch im EventMonitor niederschlägt.
Teilauszug:
2024-04-18 12:34:13.577 MQTT2_DEVICE MQTT2_ioBroker 0_userdata_0_RaumanforderungFBH: 1
2024-04-18 12:34:13.620 MQTT2_DEVICE MQTT2_ioBroker 0_userdata_0_RaumanforderungFBH: 0
2024-04-18 12:34:13.646 MQTT2_DEVICE MQTT2_ioBroker 0_userdata_0_RaumanforderungFBH: 1
2024-04-18 12:34:13.689 MQTT2_DEVICE MQTT2_ioBroker 0_userdata_0_RaumanforderungFBH: 0
2024-04-18 12:34:13.713 MQTT2_DEVICE MQTT2_ioBroker 0_userdata_0_RaumanforderungFBH: 1
2024-04-18 12:34:13.757 MQTT2_DEVICE MQTT2_ioBroker 0_userdata_0_RaumanforderungFBH: 0
2024-04-18 12:34:13.783 MQTT2_DEVICE MQTT2_ioBroker 0_userdata_0_RaumanforderungFBH: 1
2024-04-18 12:34:13.825 MQTT2_DEVICE MQTT2_ioBroker 0_userdata_0_RaumanforderungFBH: 0
2024-04-18 12:34:13.852 MQTT2_DEVICE MQTT2_ioBroker 0_userdata_0_RaumanforderungFBH: 1
2024-04-18 12:34:13.895 MQTT2_DEVICE MQTT2_ioBroker 0_userdata_0_RaumanforderungFBH: 0
2024-04-18 12:34:13.922 MQTT2_DEVICE MQTT2_ioBroker 0_userdata_0_RaumanforderungFBH: 1
2024-04-18 12:34:13.965 MQTT2_DEVICE MQTT2_ioBroker 0_userdata_0_RaumanforderungFBH: 0
2024-04-18 12:34:13.991 MQTT2_DEVICE MQTT2_ioBroker 0_userdata_0_RaumanforderungFBH: 1
2024-04-18 12:34:14.035 MQTT2_DEVICE MQTT2_ioBroker 0_userdata_0_RaumanforderungFBH: 0
Der erste Ansatz zur Unterbindung lag in der Deaktivierung der benutzerdefinierten Einstellungen im ioBroker.
Trotz intensiver Recherchen ist es mir nicht gelungen, die Ursache zu finden.
Ich stehe vor einem zusätzlichen Rätsel.
Wie sollte ich weiter vorgehen oder ist es besser, das komplette Thema MQTT zu löschen und neu aufzusetzen?
Raspberry Pi  fhem  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitocal 200-S, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox, Wechselrichter Growatt MIN 4600 TL-XH, RasPi ioBroker

uron

#4
Zitat von: TomLee am 18 April 2024, 12:10:43das Reading für dein notify ist derzeit das 0_userdata_0_RaumanforderungFBH.
Das Problem mit dem alternierendem Trigger konnte ich lösen!
Mit der DEF 0_userdata_0_RaumanforderungFBH:.0|0_userdata_0_RaumanforderungFBH:.1 { my@cmd=qw(off on);fhem ("set KG_FBH_Pumpe_Heizraum $cmd[$EVTPART1]")} klappt die Umschaltung leider nicht!

define KG_FBH_Pumpe_HeizraumONOFFneu notify 0_userdata_0_RaumanforderungFBH:.0|0_userdata_0_RaumanforderungFBH:.1 { my@cmd=qw(off on);;fhem ("set KG_FBH_Pumpe_Heizraum $cmd[$EVTPART1]")}
attr KG_FBH_Pumpe_HeizraumONOFFneu alias KG_FBH_Pumpe_HeizraumONOFFneu
attr KG_FBH_Pumpe_HeizraumONOFFneu room Heizung
#   DEF        0_userdata_0_RaumanforderungFBH:.0|0_userdata_0_RaumanforderungFBH:.1 { my@cmd=qw(off on);fhem ("set KG_FBH_Pumpe_Heizraum $cmd[$EVTPART1]")}
#   FUUID      6620e0fe-f33f-aab4-28f5-924dfcba05e80e21
#   NAME       KG_FBH_Pumpe_HeizraumONOFFneu
#   NR         1851
#   NTFY_ORDER 50-KG_FBH_Pumpe_HeizraumONOFFneu
#   REGEXP     0_userdata_0_RaumanforderungFBH:.0|0_userdata_0_RaumanforderungFBH:.1
#   STATE      2024-04-18 15:33:20
#   TRIGGERTIME 1713447200.50192
#   TYPE       notify
#   eventCount 3
#   READINGS:
#     2024-04-18 15:29:42   state           active
#     2024-04-18 15:33:20   triggeredByDev  MQTT2_ioBroker
#     2024-04-18 15:33:20   triggeredByEvent 0_userdata_0_RaumanforderungFBH: 1
#
setstate KG_FBH_Pumpe_HeizraumONOFFneu 2024-04-18 15:33:20
setstate KG_FBH_Pumpe_HeizraumONOFFneu 2024-04-18 15:29:42 state active
setstate KG_FBH_Pumpe_HeizraumONOFFneu 2024-04-18 15:33:20 triggeredByDev MQTT2_ioBroker
setstate KG_FBH_Pumpe_HeizraumONOFFneu 2024-04-18 15:33:20 triggeredByEvent 0_userdata_0_RaumanforderungFBH: 1

Ich weiß noch nicht warum, aber der Fehler muss in unterschiedlichen Triggern liegen (s. Screenshot)
Du darfst diesen Dateianhang nicht ansehen.
Unter triggeredByEvent 0_userdata_0_RaumanforderungFBH: 1 ist der Wert "1", auf dem Screenshot ist der Wert in der vorletzten Zeile "0"
Raspberry Pi  fhem  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitocal 200-S, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox, Wechselrichter Growatt MIN 4600 TL-XH, RasPi ioBroker

TomLee

#5
Zitat von: Otto123 am 10 Februar 2024, 17:31:02ich sage doch: nimm den Eventmonitor um die Grundlage anzulegen! Der spricht die Wahrheit. ;)

Zitat von: betateilchen am 18 April 2024, 12:01:34und danach kannst Du aus dem Event-Monitor das notify auf das MQTT2_DEVICE anlegen lassen.

Versuchs doch wenigstens mal  ;)

Vorgehensweise beim Anlegen eines Gerätes

uron

#6
Im Eventmonitor sehe ich das
2024-04-18 16:22:10.071 Global global UNDEFINED MQTT2_RaumanforderungFBH MQTT2_DEVICE RaumanforderungFBH MQTT2_SERVER
2024-04-18 16:22:10.071 Global global DEFINED MQTT2_RaumanforderungFBH
2024-04-18 16:22:10.141 Global global ATTR MQTT2_RaumanforderungFBH readingList RaumanforderungFBH:0\x20userdata/0/RaumanforderungFBH:.* 0_userdata_0_RaumanforderungFBH
???
Weiter unten MQTT2_DEVICE MQTT2_RaumanforderungFBH 0_userdata_0_RaumanforderungFBH:0 Auch damit schaltet die Pumpe nicht um!
Raspberry Pi  fhem  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitocal 200-S, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox, Wechselrichter Growatt MIN 4600 TL-XH, RasPi ioBroker

TomLee

Wenn du das das jetzt durchgelesen hast, was genau ist jetzt die Frage, wo hängts ?

Sry, ich frag blöd, weil irgendwann musst dich ja mal mit beschäftigen ...
Sonst wird sich an dem Zustand:
ZitatIch weiß gar nicht, wie ich das Reading "RaumanforderungFBH" aus der Readingslist richtig abfragen muss?
ja nie was ändern.

uron

Zitat von: TomLee am 18 April 2024, 16:30:23Wenn du das das jetzt durchgelesen hast, was genau ist jetzt die Frage, wo hängts ?
Sry, ich frag blöd, weil irgendwann musst dich ja mal mit beschäftigen ...
Sonst wird sich an dem Zustand:
ZitatIch weiß gar nicht, wie ich das Reading "RaumanforderungFBH" aus der Readingslist richtig abfragen muss?
ja nie was ändern.
Gut, dass du mich nochmals mit der Nase draufgestoßen hast, vieles ist einfach wenn man weiß, wie es geht  ;)
Jetzt klappt es auch wenngleich die Abfrage nicht sehr übersichtlich ist, da gibt es noch ein wenig Arbeit.
Ich habe gerade gelesen, dass ein Abfrage auch über Aliase möglich ist. Das muss ich mal testen - im Moment bin ich nur froh, dass es läuft.
Danke TomLee für deine Geduld!
So sieht das notify (DEF) nun aus:
MQTT2_RaumanforderungFBH:0_userdata_0_RaumanforderungFBH:.0|MQTT2_RaumanforderungFBH:0_userdata_0_RaumanforderungFBH:.1 {if ($EVTPART1==0) {fhem ("set KG_FBH_Pumpe_Heizraum off")} else {fhem ("set KG_FBH_Pumpe_Heizraum on")}}
Raspberry Pi  fhem  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitocal 200-S, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox, Wechselrichter Growatt MIN 4600 TL-XH, RasPi ioBroker

betateilchen

man könnte die readings ja auch einfach mit "vernünftigen" Namen anlegen...

(wenn man wenigstens ansatzweise verstanden hätte, was man da eigentlich tut)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

uron

Zitat von: betateilchen am 18 April 2024, 20:23:32man könnte die readings ja auch einfach mit "vernünftigen" Namen anlegen...
(wenn man wenigstens ansatzweise verstanden hätte, was man da eigentlich tut)
Das hört sich gut znd einfach an, der Ausgangspunkt ist eine Variable, die ich durch ein Script im ioBroker generiert habe: "RaumanforderungFBH".
Diese Variable wird dort in den User-definierten Objekten abgelegt. Ergebnis: die Variable wird duch diese Verortung mit "0_userdata_0_" "verlängert.
usw, usw!
Vielleicht stelle ich mich nur ungeschickt an, der Weg über Aliase ist sicher einer, der für meine Fähigkeiten gangbar ist.
Raspberry Pi  fhem  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitocal 200-S, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox, Wechselrichter Growatt MIN 4600 TL-XH, RasPi ioBroker

betateilchen

Anstatt die readings im MQTT2_DEVICE automatisch anlegen zu lassen, kann man bei manueller Anlage selbst bestimmen, wie das reading am Ende heißen soll.

Für irgendwas muss das Attribut "readingList" im MQTT2_DEVICE ja schließlich gut sein.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

TomLee

ZitatRaumanforderungFBH:0\x20userdata/0/RaumanforderungFBH:.* 0_userdata_0_RaumanforderungFBH

Hier in diesem Fall (es kommt via MQTT nur eine Zahl ) kannst da hinten einfach hinschreiben was du als Readingnamen wünschst.

uron

Ok, daran werde ich in ein paar Tagen wohl arbeiten müssen.
Raspberry Pi  fhem  FHEMobile  CUL  FS20-, HM-, Intertechno-, AVM- und Shelly-Aktoren, Vitoconnect 100, Vitocal 200-S, Optolink, FTUI auf iPad, FTUI auf iPhone, Stromzähler von Powerfox, Wechselrichter Growatt MIN 4600 TL-XH, RasPi ioBroker