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 3Man 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.