Hallo zusammen
{ $value{Tom_at_Home} }
führt bei mir zur Ausgabe: present - So hatte ich das auch erwartet.
Leider funktioniert
{ $oldvalue{Tom_at_Home} }
bei mir nicht. Das führt zur Ausgabe: HASH(0x1a3e408) - Was ich nicht erwarte.
Im Grunde wollte ich folgendes in ein DOIF einbauen:
(([Tom_at_Home:state] eq "present") and [22:00-06:00|0123456]) and (OldValue([Tom_at_Home:state]) != Value([Tom_at_Home:state]))
(set FHEM_Tablet ttsSay Hallo Tom <break time="200ms"/> Einen schönen guten Abend <break time="200ms"/> und Willkommen zu Hause,set FHEM_Tablet keepScreenOn on,set FHEM_Tablet screenBrightness 1)
Könnt Ihr mir helfen? Gibt es oldvalue nicht oder ist mein Syntax falsch?
Grüße und Danke,
Der Tom
Hallo,
der OldValue existiert für ein fhem-Objekt nur während des notifies, bei dem sich das Objekt bzgl. des Wertes ändert.
Statt über die fhem-Globale würde ich über die Funktion :
OldValue('Objektname')
analog zu Value('Objektname')
zugreifen.
Wenn das notify zu der Änderung des Values eines Objektes abgeschlossen ist, so wird auch OldValue gelöscht.
Gruß
Elektrolurch
Hi,
danke für Deinen Vorschlag. Wenn ich Dich richtig verstanden habe, dann müsste es so aussehen?
(([Tom_at_Home:state] eq "present") and [22:00-06:00|0123456] and Value('Tom_at_Home') =! OldValue('Tom_at_Home'))
(set FHEM_Tablet ttsSay Hallo Tom <break time="200ms"/> Einen schönen guten Abend <break time="200ms"/> und Willkommen zu Hause,set FHEM_Tablet keepScreenOn on,set FHEM_Tablet screenBrightness 1)
Der Code als solches wird zwar von FHEM angenommen, führt dann aber zu einem PERL-Fehler.
perl error in condition: (ReadingValDoIf('Tom_at_Home','state','') eq "present") and DOIF_time($hash->{realtime}{0},$hash->{realtime}{1},$wday,$hms,"0123456") and Value('Tom_at_Home') =! OldValue('Tom_at_Home'): Can't modify non-lvalue subroutine call in scalar assignment at (eval 56384) line 2, at EOF
Weitere Vorschläge oder Ideen?
Grüße
Der Tom