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?
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.
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 (ungFBH:.*%20RaumanforderungFBH) war es nur der Topic 0\x20userdata/0/W\xc3\xa4rmepumpe/RaumanforderungFBH:.* RaumanforderungFBH
Thomas
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?
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)
Screenshot KG_FBH_Pumpe_HeizraumONOFFneu.JPG
Unter
triggeredByEvent 0_userdata_0_RaumanforderungFBH: 1
ist der Wert "1", auf dem Screenshot ist der Wert in der vorletzten Zeile "0"
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 (https://wiki.fhem.de/wiki/Event_monitor#Vorgehensweise_beim_Anlegen_eines_Ger%C3%A4tes)
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!
Wenn du das das (https://wiki.fhem.de/wiki/Event_monitor) 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.
Zitat von: TomLee am 18 April 2024, 16:30:23Wenn du das das (https://wiki.fhem.de/wiki/Event_monitor) 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")}}
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)
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.
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.
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.
Ok, daran werde ich in ein paar Tagen wohl arbeiten müssen.