Ich habe ein Modul, das mir die Abfuhrtermine bereitstellt:
Internals:
DEF XXXXXX YYYYYYYY
FVERSION 57_bsrabfallkalender.pm:0.000050/2019-10-01
NAME abfuhrtermine_bsr
NR 545
STATE 1
TYPE bsrabfallkalender
eventCount 15
READINGS:
2024-01-14 16:17:27 biogut_hinweis
2024-01-14 16:17:27 biogut_next_datum 22.01.2024
2024-01-14 16:17:27 biogut_next_tage 8
2024-01-14 16:17:27 biogut_next_wochentag Montag
2024-01-14 16:17:27 hausmuell_hinweis
2024-01-14 16:17:27 hausmuell_next_datum 24.01.2024
2024-01-14 16:17:27 hausmuell_next_tage 10
2024-01-14 16:17:27 hausmuell_next_wochentag Mittwoch
2024-01-14 16:17:27 state 1
2024-01-14 16:17:28 weihnachtsbaeume_hinweis
2024-01-14 16:17:28 weihnachtsbaeume_next_datum 20.01.2024
2024-01-14 16:17:28 weihnachtsbaeume_next_tage 6
2024-01-14 16:17:28 weihnachtsbaeume_next_wochentag Samstag
2024-01-14 16:17:27 wertstoffe__abholung_durch_alba__hinweis
2024-01-14 16:17:27 wertstoffe__abholung_durch_alba__next_datum 15.01.2024
2024-01-14 16:17:27 wertstoffe__abholung_durch_alba__next_tage 1
2024-01-14 16:17:27 wertstoffe__abholung_durch_alba__next_wochentag Montag
helper:
SetCookie PHPSESSID=8g1qqjhbvulntr46qsk0lt6lho; path=/
bsradrkey XXXXXX, YYYYY
Attributes:
comment siehe auch
device wertstoff
group Info
sortby 3
Man erkennt, dass durch das Modul ein Event erzeugt wurde, das ich auswerten will. Das Event enthält die Angaben, welche Art von Abfuhr erfolgt (hier zB wertstoffe__abholung_durch_alba__next_tage) und wie viele Tage es noch dauert (hier 1). Genau die 1 will ich nutzen, um mir dann ein Telegram schicken zu lassen.
Das habe ich in einem notify umgesetzt, und zwar wie folgt:
Internals:
DEF abfuhrtermine_bsr:.*_next_tage:.* {
Log3 "", 1, "event ".$EVTPART0." und ".$EVTPART1;
if (ReadingsVal("abfuhrtermine_bsr", $EVTPART1, 0) eq "1"){
Log3 "", 1, "BSR ja";
$EVTPART0 =~ /^([a-zA-Z]+)_.*/;
fhem("set TelegramBot _msg @AAAAAAA 🚮: $1;attr abfuhrtermine_bsr room Info;attr abfuhrtermine_bsr stateFormat $1;save")
} else {
Log3 "", 1, "BSR nein ";
fhem ("deleteattr abfuhrtermine_bsr room;save")
}
}
FVERSION 91_notify.pm:0.258880/2022-03-27
NAME abfuhrtermine_bsr_notify
NOTIFYDEV abfuhrtermine_bsr
NR 546
NTFY_ORDER 50-abfuhrtermine_bsr_notify
REGEXP abfuhrtermine_bsr:.*_next_tage:.*
STATE 2024-01-14 16:17:28
TRIGGERTIME 1705245448.31825
TYPE notify
eventCount 12
READINGS:
2024-01-14 16:13:54 state active
2024-01-14 16:17:28 triggeredByDev abfuhrtermine_bsr
2024-01-14 16:17:28 triggeredByEvent weihnachtsbaeume_next_tage: 6
Attributes:
Obwohl das Ereignis ordentlich erkannt wird, klappt da etwas nicht. Im Logfile steht
2024.01.14 16:17:28 1: event wertstoffe__abholung_durch_alba__next_tage: und 1
2024.01.14 16:17:28 1: BSR nein
2024.01.14 16:17:28 1: event biogut_next_tage: und 8
2024.01.14 16:17:28 1: BSR nein
2024.01.14 16:17:28 1: event hausmuell_next_tage: und 10
2024.01.14 16:17:28 1: BSR nein
2024.01.14 16:17:28 1: event weihnachtsbaeume_next_tage: und 6
2024.01.14 16:17:28 1: BSR nein
und das kann doch nicht sein? Es wird erkannt, dass es noch einen Tag bis zur Wertstoffabfuhr dauert und dennoch wird das beim if-else nicht richtig erkannt. Ist denn $EVTPART1 kein string? Oder muss ich die anders vergleichen?
(PS Und kann mir jemand einen Tipp mit "save" geben, ich erinnere dunkel, dass das dennoch eine User-Eingabe notwendig machte.)
OK, hat sich erledigt - Abfrage beim ReadingsVal ist falsch.