Hier finde ich nicht die Ursache für die Fehlermeldung von C1, dass ich in der einen Conditionen ein Bareword benutze. Es ist der Name eines Readings, das existiert, und dessen Readingalter ausgewertet werden soll:
Internals:
.AttrList disable:0,1 loglevel:0,1,2,3,4,5,6 notexist checkReadingEvent:0,1 addStateEvent:1,0 weekdays setList:textField-long readingList DOIF_Readings:textField-long event_Readings:textField-long uiTable:textField-long event-aggregator event-min-interval event-on-change-reading event-on-update-reading oldreadings stateFormat:textField-long timestamp-on-change-reading
DEF {if ( (["^RR:^actuatorState"] ne "ok" and ["^RR.*:actuatorState:sec"] > 3600) or ["^RR:^alarm"] ) {::DebianMail('XXXXXX@XXXX.de','PI3 meldet: $DEVICE meldet $EVENT','Dieser Aktor scheint Probleme zu haben - Akku alle? Zu lange keine Temperatur-Ansage?'.$EVENT)}}
DOIFDEV ^global$|^RR|^RR.*
FUUID 5c4329af-f33f-e1df-5149-f9d284a565f8af6b
MODEL Perl
NAME DI_RR_Alarm
NR 156
NTFY_ORDER 50-DI_RR_Alarm
STATE RR_Wohnzimmer
TYPE DOIF
VERSION 24330 2021-04-24 21:09:16
.attraggr:
.attrminint:
READINGS:
2021-04-29 07:43:53 Device RR_Wohnzimmer
2021-04-29 07:43:53 block_01 condition c01: Bareword "actuatorState" not allowed while "strict subs" in use at (eval 949916) line 1.
syntax error at (eval 949916) line 1, near "actuatorState:"
2021-04-29 07:43:32 mode enabled
2021-04-29 07:43:33 state initialized
Regex:
accu:
collect:
cond:
:
0:
"^RR.*:actuatorState:sec" ^RR.*:actuatorState:sec
"^RR:^actuatorState" ^RR:^actuatorState
"^RR:^alarm" ^RR:^alarm
condition:
0 if ( (::EventDoIf('^RR',$hash,'^actuatorState',0) ne "ok" and ::EventDoIf('^RR.*',$hash,'actuatorState:sec',0) > 3600) or ::EventDoIf('^RR',$hash,'^alarm',0) ) {::DebianMail('XXXXX@XXXX.de','PI3 meldet: $DEVICE meldet $EVENT','Dieser Aktor scheint Probleme zu haben - Akku alle? Zu lange keine Temperatur-Ansage?'.$EVENT)}
helper:
DEVFILTER ^global$|^RR|^RR.*
NOTIFYDEV global|RR.*|RR.*.*
event actuatorState: ok
globalinit 1
last_timer 0
sleeptimer -1
triggerDev RR_Wohnzimmer
triggerEvents:
actuatorState: ok
triggerEventsState:
actuatorState: ok
internals:
perlblock:
0 block_01
readings:
trigger:
uiTable:
Attributes:
DbLogExclude .*
room InArbeit
stateFormat Device
verbose 2
Dieses DOIF ist eine Weile gelaufen und wie auch bei einem ähnlichen DOIF ereilt, ist mir erst jetzt aufgefallen, dass der richtige Device-Name "angemeckert" wird als unerlaubt benutztes "Bareword".
Für einen Tipp sage ich schon mal vielen Dank im Voraus
Christian
Moin,
Zitat["^RR:^actuatorState"] ne "ok" and ["^RR.*:actuatorState:sec"] > 3600)
Du hast hier 2 Event-Trigger mit and verknüpft, das geht schon man grundsätzlich nicht. Der zweite Teil mit der Sekundenauswertung dürfte als Event-Trigger gar nicht zu definieren sein, sprich falsche Syntax und wohl daher der Fehler.
https://fhem.de/commandref_modular_DE.html#DOIF_Ereignissteuerung_ueber_Auswertung_von_Events (https://fhem.de/commandref_modular_DE.html#DOIF_Ereignissteuerung_ueber_Auswertung_von_Events)
https://fhem.de/commandref_modular_DE.html#DOIF_Zeitspanne_eines_Readings_seit_der_letzten_Aenderung (https://fhem.de/commandref_modular_DE.html#DOIF_Zeitspanne_eines_Readings_seit_der_letzten_Aenderung)
probier das mal ohne die " und ^. Ein .* ist nicht nötig.
Viel Erfolg!
Versuch mal bitte folgendes. Statt:
{::DebianMail('XXXXXX@XXXX.de','PI3 meldet: $DEVICE meldet $EVENT','Dieser Aktor scheint Probleme zu haben - Akku alle? Zu lange keine Temperatur-Ansage?'.$EVENT)}}
mach mal
{::DebianMail('XXXXXX@XXXX.de',"PI3 meldet: $DEVICE meldet $EVENT","Dieser Aktor scheint Probleme zu haben - Akku alle? Zu lange keine Temperatur-Ansage? $EVENT")}}
Zitat von: Christoph Morrison am 29 April 2021, 16:41:59
mach mal
{::DebianMail('XXXXXX@XXXX.de',"PI3 meldet: $DEVICE meldet $EVENT","Dieser Aktor scheint Probleme zu haben - Akku alle? Zu lange keine Temperatur-Ansage? $EVENT")}}
Vielen Dank, Christoph,
tatsächlich bist Du auf der richtigen Spur, die Fehlermeldung stammt aus dem Ausführungsteil und hat mit der Einbindung der Variablen $DEVICE und $EVENT zu tun.
Herzliche Grüße
Christian