DOIF - keine Aktion bei Status "Login necessary"

Begonnen von hoppel118, 25 Dezember 2021, 23:59:04

Vorheriges Thema - Nächstes Thema

hoppel118

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
Server: Openmediavault, XEON E3-1240L-v5, Supermicro X11SSH-CTF, 64GB ECC RAM, SSD, RAID-Z2
Homebridge | Alexa | Yowsup
Homematic | HomeConnect | MQTT | Philips Hue | Sonos | Unifi Network & Protect | vbus | Xiaomi

Stelaku

#1
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

Sany

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
fhem als LXC auf Proxmox auf einem minix Z100 , weitere LXC mit ZigBee2MQTT, MariaDB und Grafana. Homematic, FS20, mySensors, MQTT2, Tasmota, Shelly, Z-Wave  ....

hoppel118

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
Server: Openmediavault, XEON E3-1240L-v5, Supermicro X11SSH-CTF, 64GB ECC RAM, SSD, RAID-Z2
Homebridge | Alexa | Yowsup
Homematic | HomeConnect | MQTT | Philips Hue | Sonos | Unifi Network & Protect | vbus | Xiaomi

Stelaku

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



Sany

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


Viel Erfolg!


Sany
fhem als LXC auf Proxmox auf einem minix Z100 , weitere LXC mit ZigBee2MQTT, MariaDB und Grafana. Homematic, FS20, mySensors, MQTT2, Tasmota, Shelly, Z-Wave  ....

hoppel118

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
Server: Openmediavault, XEON E3-1240L-v5, Supermicro X11SSH-CTF, 64GB ECC RAM, SSD, RAID-Z2
Homebridge | Alexa | Yowsup
Homematic | HomeConnect | MQTT | Philips Hue | Sonos | Unifi Network & Protect | vbus | Xiaomi