Hallo,
sorry für die Anfängerfrage, aber wie kann ich es hinkriegen, dass mir bei einer Änderung eines Readings von einem Device eine Nachricht senden lassen kann?
Hintergrund:
Den Vertretungsplan meines Sohnes lasse ich mir über das Modul "dsmobile" abholen. Funktioniert.
Die Anzeige habe ich über das Modul abstracttable https://github.com/klein0r/fhem-abstracttable (https://github.com/klein0r/fhem-abstracttable) realisiert, funktioniert auch.
Das Modul abstracttable habe ich so erweitert, dass mir die angezeigte Tabelle auch als reading im html-Quelltext angezeigt wird als reading "html". Funktioniert.
Ein Messengermodul signalbot habe ich auch definiert, funktioniert prima mit z.B. "set signalbot send @zzzzzz Pflanze ist zu trocken"
Problem:
Immer wenn sich der Vertretungsplan ändert, ändert sich auch das reading "html".
Und jetzt möchte ich eigentlich ins Unreine formuliert:
Immer wenn sich das reading xxx des Devices yyyy geändert hat sende mir über mein signalbot device eine Nachricht
Ich habe mich schon durch notify und doif durchgequält aber habe nicht den richtigen Durchblick.
Kann mir jemand helfen?
Danke an alle im Voraus.
Gruß frankreed
Eventmonitor öffnen (Filter setzen), warten bis sich das Reading ändert bzw. genauer bis der (normalerweise) zugehörige Event auftaucht, die Zeile markieren -> create/modify und notify oder DOIF etc. anlegen lassen.
https://wiki.fhem.de/wiki/Event_monitor
Den Ausführungsteil anpassen, fertig :)
Gruß, Joachim
Habe ich so ungefähr verstanden, aber hhhhmmmmm:
Kann sein dass sich das Reading erst in zwei Tagen ändert. Muss ich jetzt so lange warten oder kann ich das schon jetzt aus dem mir vorliegenden Reading "von Hand" zusammenbasteln?
Poste doch ein list des Devices und sag welches Reading, dann kann man versuchen es zu basteln.
Besser/einfacher ist halt mit dem Eventmonitor...
Ansonsten ist die Regex: Devicename:Readingname
Siehe: https://wiki.fhem.de/wiki/Notify
Gruß, Joachim
Das ist das list des devices:
Internals:
DEF dsbmobile
DEVICE dsbmobile
FUUID 5f6a2ae2-f33f-032e-7cac-c785db423fc3c45a
MODULE_VERSION 0.2
NAME dsb_view
NR 74
STATE 4
TYPE abstracttable
READINGS:
2021-09-12 14:22:10 html <table class="block wide abstract-table"><thead><tr><th>Datum</th><th>Klasse</th><th>Stunde</th><th>Fach</th><th>Art</th><th>regulär_bei</th><th>Vertretung_durch</th><th>in_Raum</th><th>Schülergruppe</th></tr></thead><tbody><tr class="even"><td>2021-09-13</td><td>(8D)</td><td>6</td><td>---</td><td>Absenz</td><td>STE</td><td>-</td><td>---</td><td>-</td></tr><tr class="odd"><td>2021-09-13</td><td>(8D)</td><td>8 - 9</td><td>---</td><td>Absenz</td><td>KUR</td><td>-</td><td>---</td><td>-</td></tr><tr class="even"><td>2021-09-14</td><td>8D</td><td>5</td><td>D</td><td>Statt-Vertretung</td><td>SHL</td><td>WEI</td><td>205</td><td>-</td></tr><tr class="odd"><td>2021-09-14</td><td>8C, 8D, 8A, 8B</td><td>6</td><td>---</td><td>Entfall</td><td>SHL</td><td>---</td><td>---</td><td>nur RRK entfällt</td></tr></tbody></table>
2021-09-12 14:22:10 state 4
Attributes:
icon time_calendar
room Konfiguration->Websites
table-header Datum,Klasse,Stunde,Fach,Art,regulär_bei,Vertretung_durch,in_Raum,Schülergruppe
table-rowtemplate tt%d_sdate,tt%d_Stunde,tt%d_Fach,tt%d_Vertreter,tt%d_Text,tt%d_Art,tt%d_Raum,tt%d__Lehrer_,tt%d_Schuelergruppe
/code]
Das reading, das sich ändert bei einer Aktualisierung ist "html".
Und das die def des Messenger-Devices:
defmod fhem_signal Signalbot
attr fhem_signal authDev googleAuth
attr fhem_signal authTimeout 31536000
attr fhem_signal autoJoin yes
attr fhem_signal cmdKeyword =
attr fhem_signal icon Signal_Icon
attr fhem_signal room System->Messenger
attr fhem_signal verbose 5
setstate fhem_signal Connected
setstate fhem_signal 2021-09-12 13:22:11 lastError ok
setstate fhem_signal 2021-09-12 13:09:59 msgAttachment
setstate fhem_signal 2021-09-12 13:09:59 msgAuth 0
setstate fhem_signal 2021-09-12 13:09:59 msgGroupName
setstate fhem_signal 2021-09-12 13:09:59 msgTimestamp 12-09-2021 13:09:55
setstate fhem_signal 2021-09-12 13:09:59 prevMsgAttachment
setstate fhem_signal 2021-09-12 13:09:59 prevMsgGroupName
setstate fhem_signal 2021-09-12 13:09:59 prevMsgTimestamp 12-09-2021 13:07:52
setstate fhem_signal 2021-09-12 13:43:42 sentMsgTimestamp 12-09-2021 13:43:39
Naja evtl. (zuerst mal):
define nNotifyName notify dsb_view:html.* {Log3(undef, 3, "Notify hat ausgelöst, Inhalt war $EVENT")}
Gruß, Joachim
Jetzt löst das aber auch ständig aus, wenn sich nichts geändert hat. Also das reading sich zwischen zwei Abfragen nicht geändert hat.
Zitat von: frankreed am 12 September 2021, 15:57:36
Jetzt löst das aber auch ständig aus, wenn sich nichts geändert hat. Also das reading sich zwischen zwei Abfragen nicht geändert hat.
Dann setz doch in dsb-view das Attribut event-on-change-reading. Dann sollte das notify eigentlich nur bei einer Änderung des readings auslösen.