Moinsen,
habe mal wieder eine DOIF Thematik vor der Brust:
define di_HomeConnect_LoginStatus DOIF ([hcconn:state] eq "Login necessary")
(({Log 3, ,,HomeConnect: Bitte neu einloggen!}),(set Mein_WhatsApp send HomeConnect: Bitte neu einloggen!))
Problematik: Bei HomeConnect muss man sich ab und zu mal neu einloggen, wenn bspw. eine ABG zu bestätigen ist. Wenn ich das nicht mache, funktionieren meine HomeConnect Geräte in FHEM nicht.
Ziel: Wenn am Device "hccon" der Status "Login necessary" vorliegt, benachrichtige mich per Whatsapp.
Das DOIF macht nichts.
Hängt das jetzt mit dem Leerzeichen in "Login necessary"?
Wie muss das DOIF richtigerweise aussehen?
Danke euch und Gruß Hoppel
Moin Hoppel
Ich glaube nicht daß Leerzeichen ist Dein Problem sondern die fehlenden Anführungszeichen beim Log 3
(({Log 3, "HomeConnect: Bitte neu einloggen!"}),(set Mein_WhatsApp send HomeConnect: Bitte neu einloggen!))
Und vielleicht einen anderen Event Trigger
([hcconn:"^Login.necessary$"])
Gruss Stephan
Frohes Fest!
ZitatDas DOIF macht nichts.
...das siehst Du erst mal nur in einem list vom DOIF.
Wenn es wirklich nichts macht wird es evtl. nicht getriggert. Also den Eventmonitor anwerfen mit Filter auf das triggernde Device, hier: hcconn.
Wenn da die gewünschten Events kommen (Login necessary, auch noch was anderes, also wechselt der Inhalt von state? Gibts andere Readings außer state, die verwendet werden können? event-on-change/update-reading evtl. falsch gesetzt?):
Wechselt der Inhalt von state kannst Du eine Abfrage machen wie in Deinem Vorschlag. Aber: sollten sich dann andere Readings von hcconn ändern wird die Abfrage im DOIF wieder neu angestoßen.
Wechselt der Inhalt nicht mußt Du auf den Event triggern, wie von Stelaku schon vorgeschlagen. Diesen Trigger kannst Du im EventMonitor automatisch erzeugen lassen.
Da das DOIF nur die eine Zeile hat brauchts "do always" als Attribut, oder ein DOELSE am Ende, aber nur wenn sich state von hconn ändert!
Du siehst, viel fischen im trüben, und in der Glaskugel schneits.
Also: list vom DOIF, list von hcconn und Ausgabe vom EventMonitor (eine Weile laufen lassen, am besten mit dem gewünschten Event (Login necessary))
Du bist dran.
Gruß
Sany
Moin,
@Stelaku Danke, habe deine beiden Anpassungen mal übernommen. Jo, anscheinend ist das eine Anführungszeichen beim Anpassen verloren gegangen und ich war anschließend betriebsblind. ;)
@Sany Das mit dem Event Monitor ist leider nicht so leicht. Ich weiß ja nicht, wann der Login erneut erforderlich ist. Das passiert nur alle paar Monate mal.
list doif
Internals:
DEF ([hcconn:"^Login.necessary$"])
(({Log 3, ,,HomeConnect: Bitte neu einloggen!"}),(set Mein_WhatsApp send HomeConnect: Bitte neu einloggen!))
FUUID 6081a903-f33f-5dcf-9d57-4941c8cd11fd6e9a
MODEL FHEM
NAME di_HomeConnect_LoginStatus
NOTIFYDEV global,hcconn
NR 629
NTFY_ORDER 50-di_HomeConnect_LoginStatus
STATE initialized
TYPE DOIF
VERSION 25295 2021-12-04 18:13:39
READINGS:
2021-12-27 23:18:26 cmd 0
2021-12-27 23:18:26 mode enabled
2021-12-27 23:18:26 state initialized
Regex:
accu:
collect:
cond:
hcconn:
0:
&STATE ^hcconn$
attr:
waitdel:
condition:
0 ::EventDoIf('hcconn',$hash,'^Login.necessary$',1)
do:
0:
0 ({Log 3, ,,HomeConnect: Bitte neu einloggen!"}),(set Mein_WhatsApp send HomeConnect: Bitte neu einloggen!)
1:
helper:
DEVFILTER ^global$|^hcconn$
NOTIFYDEV global|hcconn
globalinit 1
last_timer 0
sleeptimer -1
trigger:
all hcconn
uiState:
uiTable:
Attributes:
do always
group DOIF exkl Homebridge Switch
room System->DOIF
list hcconn
Internals:
DEF xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx https://10.11.11.11:8083/fhem?cmd.Test=set%20hcconn%20auth%20 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
FUUID 5db19986-f33f-5dcf-3403-4ee32e22b5000c49
NAME hcconn
NR 455
STATE Connected
TYPE HomeConnectConnection
api_uri https://api.home-connect.com
client_id xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
client_secret xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
expires_at 1640703996.2969
redirect_uri https://x.x.x.x:8083/fhem?cmd.Test=set%20hcconn%20auth%20
refreshFailCount
READINGS:
2021-12-27 16:06:36 state Connected
2021-12-27 16:06:36 tokenExpiry Tue Dec 28 16:06:36 2021
Attributes:
room Hersteller->HomeConnect
Also den Eventmonitor anwerfen mit Filter auf das triggernde Device, hier: hcconn.
Wie mache ich das, also einen Filter im Eventmonitor setzen?
Danke euch und Gruß Hoppel
Hallo hoppel
Da ist noch ein Fehler im Ausführungsteil. Da hat bestimmt deine auto Korrektur zugeschlagen.
Es müssen zwei doppel Hochkomma sein siehe hier
(({Log 3, "HomeConnect: Bitte neu einloggen!"}),(set Mein_WhatsApp send HomeConnect: Bitte neu einloggen!))
Den Filter im event Monitor kannst Du ganz einfach setzten in dem Du auf der Ansicht für event Monitor bist und oben auf die .* von
Events (Filter: .*) FHEM log
klickst.
dann nur noch hcconn vor den .* scheiben und ok klicken.
Jetzt werden so lange wie Du die Seite auf hast nur noch events von hcconn angezeigt.
Da Dein Event was Du brauchst wie Du schon sagst alle paar Monate nur kommt ist das für Dich sicherlich nicht die beste Lösung.
Wenn der state von Deinem hcconn Device im state Login necessary stehen hat sollte aber der Trigger im DOIF mit
([hcconn:"^Login.necessary$"])
passen.
Mit den Event Monitor ist es besonders Einfach für ein angezeigtes Event einen passenden Trigger zu bekommen.
Einfach das jeweilige EVENT kpl. makieren und dann auf Create/Modify/Devvice
klicken.
Dann kannst Du im drop Down noch auswählen für was Du den Trigger brauchst notify DOIF ...
und schon wird der der passende Triger angezeigt.
Viele Grüsse
Stephan
Hallo hoppel,
ZitatDas mit dem Event Monitor ist leider nicht so leicht. Ich weiß ja nicht, wann der Login erneut erforderlich ist. Das passiert nur alle paar Monate mal.
Wenn Du die Hinweise von Stelaku eingebaut hast:
lege ein Logfile anlegen, was dir hcconn mitloggt. Alles davon. Dann siehst Du wenigstens welche Werte da in state vorkommen können. Sollte hcconn irgendwelche Werte ständig aktualisieren (ohne dass sie sich ändern) dann setzte attr hccon event-on-change-reading state. Falls das reading token-expiry noch wichtig ist dann dieses auch mit angeben.
Solltest Du in eine Datenbank loggen dann hast Du die Infos ja bereits (musst halt die datenbank auslesen)
Damit das ganze nicht so spannend ist, da die Werte ja wohl nur selten kommen, kannst Du 2 Dinge machen:
- Das DOIF ist ein DOIF im fhem-Modus. Da kannst Du in der Detailansicht oben bei
set hcconn dann im Dropdownfeld
cmd_1 auswählen und
set klicken. Damit wird der Ausführungszweig ausgeführt. Du solltest also den Eintrag im fhem-Log sehen und eine Nachricht auf whatsapp. Oder eben Fehler im Logfile und/oder der Detailansicht vom DOIF.
- Du kannst das hcconn triggern, das es den entsprechenden event erzeugt:
Zitattrigger hcconn Login necessary
Das löst den gewünschten event aus und das DOIF sollte getriggert werden. Ob das mit dem Leerzeichen zwischen Login und necessary klappt kann ich nicht sagen, falls nicht kannst Du ja das DOIF kurz umbauen und den Trigger entsprechend senden.
Versuch macht kluch.
Details im Wiki: https://wiki.fhem.de/wiki/Trigger (https://wiki.fhem.de/wiki/Trigger)
Viel Erfolg!
Sany
Cool, danke euch beiden für die Info.
Ich war jetzt mal im Event Monitor und habe den Filter gesetzt, da ich hcconn einmal neu bauen musste, wegen einer Änderung der IP-Adresse meines FHEM Servers. Dabei habe ich festgestellt, dass das DOIF nun funktioniert und ich tatsächlich WhatsApp Nachrichten erhalte. :D
Anschließend habe ich entdeckt, dass ich hcconn auch ausloggen kann. Dann dachte ich mir, dass ich damit ja an das benötigte Event kommen müsste.
Wenn ich den Filter also auf hcconn.* setze, wird folgendes geloggt:
2022-01-17 14:12:17 DOIF di_HomeConnect_LoginStatus cmd_event: hcconn
2022-01-17 14:12:17 DOIF hcconn_DOIF_1 cmd_nr: 1
2022-01-17 14:12:17 DOIF hcconn_DOIF_1 cmd: 1
2022-01-17 14:12:17 DOIF hcconn_DOIF_1 cmd_event: hcconn
2022-01-17 14:12:17 DOIF hcconn_DOIF_1 cmd_1
2022-01-17 14:12:17 HomeConnectConnection hcconn Login necessary
und wenn mich einlogge folgendes:
2022-01-17 14:12:44 DOIF hcconn_DOIF_1 cmd_nr: 2
2022-01-17 14:12:44 DOIF hcconn_DOIF_1 cmd: 2
2022-01-17 14:12:44 DOIF hcconn_DOIF_1 cmd_event: hcconn
2022-01-17 14:12:44 DOIF hcconn_DOIF_1 cmd_2
2022-01-17 14:12:44 HomeConnectConnection hcconn auth
2022-01-17 14:12:44 HomeConnectConnection hcconn Connected
2022-01-17 14:12:44 HomeConnectConnection hcconn tokenExpiry: Tue Jan 18 14:12:44 2022
ZitatDa ist noch ein Fehler im Ausführungsteil. Da hat bestimmt deine auto Korrektur zugeschlagen.
Es müssen zwei doppel Hochkomma sein siehe hier
Jo, das war die Autokorrektur. Habe es jetzt angepasst. Es funktionierte aber auch mit dem Hochkomma unten (Untenkomma, keine Ahnung wie das heißt). ;)
Diese ganzen Funktionen vom Eventmonitor waren mir bisher komplett unbekannt. Das ist ja richtig cool! Danke für die Erleuchtung. ;)
ZitatWenn Du die Hinweise von Stelaku eingebaut hast:
lege ein Logfile anlegen, was dir hcconn mitloggt. Alles davon. Dann siehst Du wenigstens welche Werte da in state vorkommen können.
Jo, stimmt. Da hätte ich auch drauf kommen können.
Danke, danke euch beiden. Ich denke, damit habe ich nun verstanden, dass diese Werkzeuge im FHEM Werkzeugkoffer liegen und wie ich diese verwende. ;)
Viele Grüße Hoppel