[GELÖST] - DOIF triggert nicht mehr

Begonnen von 87insane, 17 April 2019, 13:17:37

Vorheriges Thema - Nächstes Thema

87insane

#15
Mit dem Dummy muss ich nachher mal testen.
Die DOIFs für z.B. Sonnen auf/untergang funktionieren nach wie vor. Habe aktuell aber auch nur drei DOIFs. Sonnenaufgang, Sonnenuntergang und den letzten Wecker.

Mehr als du dir vorstellen kannst... Kannst du denn ein paar Punkte zum prüfen nennen? Ich vermute das es ggf. mit dem Raspberry Update zu tun hat oder aber mit den Paketquellen die hinterlegt sind. Leider kann ich das nicht zu 100% sagen, da ich nicht zu 100% weiß ob es im Zusammenhang steht.
Fest steht, ein Event wird erzeugt. notifys zb. triggern nach wie vor korrekt. Wenn ich dieses DOIF neu anlege (hatte ich zum testen probiert), geht es auch nicht. Teste es, wie oben schon gesagt, wie du vorgeschlagen hast....

Weitere Hinweise sind gerne erwünscht :)


@Per: Deins teste ich auch gleich, DANKE

87insane

#16
Habe mal die DOIF_Readings angelegt...

Zuerst habe ich einen Wecker gestellt auf 6:45. Dieser wurde auch direkt im Alexa Device eingetragen und nach Auswertung in LastAlarm geschrieben.

List -r:
Nach gestelltem Wecker.

define di_letzter_wecker_rollos DOIF ([[ECHO_123:LastAlarm]] and [?ECHO_123:LastAlarm] ne "keiner")\
(set sz_rollo pct 0)\
DOELSEIF ([00:15])
attr di_letzter_wecker_rollos DOIF_Readings test1:"ECHO_123:LastAlarm",test2:["ECHO_123:LastAlarm"],test3:[["ECHO_123:LastAlarm"]],test4:ECHO_123:LastAlarm,test5:[ECHO_123:LastAlarm],test6:[[ECHO_123:LastAlarm]]
attr di_letzter_wecker_rollos room hidden

setstate di_letzter_wecker_rollos cmd_2
setstate di_letzter_wecker_rollos 2019-04-18 00:15:00 cmd 2
setstate di_letzter_wecker_rollos 2019-04-18 00:15:00 cmd_event timer_2
setstate di_letzter_wecker_rollos 2019-04-18 00:15:00 cmd_nr 2
setstate di_letzter_wecker_rollos 2019-04-17 19:06:53 mode enabled
setstate di_letzter_wecker_rollos 2019-04-18 00:15:00 state cmd_2
setstate di_letzter_wecker_rollos 2019-04-18 13:42:57 test1 ECHO_123:LastAlarm
setstate di_letzter_wecker_rollos 2019-04-18 13:40:05 test2 0
setstate di_letzter_wecker_rollos 2019-04-18 13:42:57 test3 ARRAY(0x46e3e70)
setstate di_letzter_wecker_rollos 2019-04-18 13:42:57 test4 error in DOIF_Readings: Bareword "ECHO_123" not allowed while "strict subs" in use, line 1.\

setstate di_letzter_wecker_rollos 2019-04-18 13:42:57 test5 06:45
setstate di_letzter_wecker_rollos 2019-04-18 13:42:57 test6 error in DOIF_Readings: syntax error, line 1, near "ECHO_123:"\

setstate di_letzter_wecker_rollos 2019-04-17 19:07:44 timer_01_c01 error: Wrong timespec keiner: either HH:MM:SS or {perlcode}
setstate di_letzter_wecker_rollos 2019-04-18 00:15:00 timer_02_c02 19.04.2019 00:15:00


Danach stellte ich den Wecker aus und es erschien in LastAlarm "keiner", wie gewünscht. Das interessiert das DOIF auch schon nicht. Ergebnis bei List -r ist genau das gleiche wie bei dem ersten hier.


PS: Ich finde die Art so etwas zu testen, sehr gut! Kannte ich nicht und wird mir sicher an einigen Stellen helfen! Danke für den Tipp!

Ich selber sehe hier nicht wie ich weiter kommen würde. Das einzige Reading, welches reagiert ist test5. Nachdem ich den Wecker auf 6:45 hatte, danach wieder auf keiner und zum Schluss nochmal auf 7:10. Es blieb immer 6:45 stehen. Ich denke die 6:45 sind auch nur stehen geblieben da das DOIF frisch war, durch das DOIF_Readings setzen.

Das mit dem dummy mache ich als nächstes. Hoffe aber hier ggf. schon auf Erkenntnisse.
PS: Weiß nur noch nicht so recht wie. Da setreading (manuell) auch das DOIF triggert. Nur aus dem notify nicht mehr. Auch der Lösungsansatz über readingsSingleUpdate( $defs{$NAME}, 'LastAlarm', $lastalarmalexa,1); hatte keine Veränderung gebracht.

Danke und Gruß,
Kai

Per

Zitat von: 87insane am 18 April 2019, 13:55:21da das DOIF frisch war
Zumindest für die Tests solltest du do always einschalten.
Das sollte allerdings keinen Einfluss auf die DOIF_Readings haben, nur auf das DOIF selbst.

87insane

#18
ERKENNTNIS!

Nachdem ich nun alles ein wenig umgebogen habe...

- Das notify schreibt nun einfach in ein anderes device den LastAlarm...
- DOIF soll nun auch auf das andere Gerät reagieren...
- Alles auf das andere Gerät gedreht...
- Test mit mehreren Weckern...

Da geht das ganze.... Also muss es an dem Alexe Device liegen?
Habe das Alexe Device neu angelegt, ohne Erfolg.

Kann der Ersteller des Module eine Art Sperre oder so einbauen? Wie kann sowas entstehen?

EDIT: Hab mir nun einen dummy dauerhaft dafür angelegt. Ist in meinen Augen am Ende eh besser und übersichtlicher. ABER mich würde trotzdem interessieren warum das nun nicht mehr anders geht...

List:
Internals:
   CFGFN     
   FUUID      5cb86f41-f33f-fcb4-00d6-81aee0b8e0e72a75
   NAME       du_wecker
   NR         792
   STATE      Status: Es ist kein Wecker gestellt
   TYPE       dummy
   READINGS:
     2019-04-18 15:12:36   LastAlarm       keiner
Attributes:
   alias      Letzer Wecker
   group      Wecker
   room       FHEM / Info
   stateFormat {my $text = "Status: "; if(ReadingsVal("$name","LastAlarm","") eq "keiner") {return $text."Es ist kein Wecker gestellt";} else {return $text."Letzter Wecker um ".ReadingsVal("$name","LastAlarm","")."Uhr";} }

Ellert

#19
ZitatABER mich würde trotzdem interessieren warum das nun nicht mehr anders geht...
Diese Frage würde ich in dem entsprechenden Forenbereich stellen.

Edit: Ich seh' gerade, Du meinst nicht das Echogerät.

87insane

#20
Doch doch... das meine ich... Ich kann ein x beliebiges Gerät nehmen wohin das Reading geschrieben wird. Nur in das Echo Gerät geht es nicht mehr. Hatte gedacht das es ggf. hier, bei den Profis, auch jemand weiß. Für mich ist das Thema noch nicht beendet, da ich gerne verstehe was das Problem ist/war. Sonst müsste ich immer wieder fragen und das mag ich gern vermeiden. Ich stelle ja schon immer genug Fragen :-\

Anbei mal das DOIF und NOTIFY für die Nachwelt. Ggf. bringt es jemandem was...

notify - Wertet den letzten Wecker aus und schreibt die Zeit dessen in ein Device-Reading:

(ECHO_NAME_ANPASSEN:alarm_.._status:.(on|off)) {
my $k = "0";
my $alarmoff = "0";
my $schleifennr = "1";
my $lastalarmalexa = "0";

foreach $k (1..ReadingsVal("$NAME", "AlarmCount", ""))
{
$schleifennr = sprintf("%02d", $k);
my $wecker = ReadingsVal("$NAME", "alarm_".$schleifennr."_originalTime" ,"0");
$wecker =~ s/:00.000$//;

if (ReadingsVal("$NAME", "alarm_".$schleifennr."_status", "") eq "on" && "$wecker" gt "$lastalarmalexa")
{
$lastalarmalexa = $wecker;
}

elsif (ReadingsVal("$NAME", "alarm_".$schleifennr."_status", "") eq "off")
{
$alarmoff = $alarmoff + 1;

if ($alarmoff eq ReadingsVal("$NAME", "AlarmCount", ""))
{
$lastalarmalexa = "keiner";
}
}
}
        fhem("setreading du_wecker LastAlarm $lastalarmalexa")
}

Das Ergebnis dieses Notifys ergibt immer eine Zeit im Format HH:MM oder das Wort "keiner", wenn kein Wecker aktiv ist.

DOIF - reagiert auf die ausgewertete Zeit des notifys und macht dann etwas:
([du_wecker:LastAlarm] and [?du_wecker:LastAlarm] ne "keiner")
(set sz_rollo pct 0)
DOELSEIF ([00:15])


Ein zusätzliches Reading im Alexa Gerät ist notwendig um das Reading AlarmCount zu erstellen und aktuell zu halten. Das ist notwendig da der Alarmcount im Modul immer hoch zählt und nicht direkt den ganz-Wert anzeigt.
AlarmCount {my $anz = grep( m/alarm_.._status/, ( keys %{$hash->{READINGS}} )); return $anz;}
Einfach in Userreadings einfügen.

Anbei auch noch der Dummy, wie ich ihn aktuell nutze:
defmod du_wecker dummy
attr du_wecker alias Letzer Wecker
attr du_wecker stateFormat {my $text = "Status: ";; if(ReadingsVal("$name","LastAlarm","") eq "keiner") {return $text."Es ist kein Wecker gestellt";;} else {return $text."Letzter Wecker um ".ReadingsVal("$name","LastAlarm","")."Uhr";;} }

87insane

Guten Morgen nochmal zusammen,

nun hat es heute Nacht wieder nicht geklappt. Da ich das DOIF umstellt hatte, hat er um 0 Uhr das Rollo hoch gefahren. Ich komme nicht ganz klar wenn ich anstelle von "0", "keiner" nehme. Der Trigger von DOIF erwartet in der Form eine Zeitangabe. Wenn aber kein Wecker aktiv ist, soll auch nichts passieren.

Das hier ist das DOIF, mit keiner...
([du_wecker:LastAlarm] and [?du_wecker:LastAlarm] ne "keiner")
(set sz_rollo pct 0)
DOELSEIF ([00:15])


Das hier ist das DOIF mit 0...
([[du_wecker:LastAlarm]] and [du_wecker:LastAlarm] ne "0")
(set az_steckdose_stehlampe relay0 on)
DOELSEIF ([00:15])


Das zweite geht. Aber generell, was macht man wenn der Trigger-Wert eine Zeit sein kann aber auch ein Wort? Aktuell habe ich alles wieder auf "0" umgestellt, da dies auch immer lief.
Zum einen ist das mit der Bedingung so ne Sache, die geht ohne ? genau wie mit... Zum anderen muss ich wohl doppelte [[]] beim trigger nehmen, da die Zeit aus einem anderen Gerät kommt und da mag er es garnicht wenn dort ein Wort drin steht: ehler: error: Wrong timespec : either HH:MM:SS or {perlcode}. Wenn man im Trigger nun einfach noch "" um das Reading packt, dann nimmt er sich keiner Zeit mehr an.

Vielleicht gibt es ja sogar ganz andere Lösungen für ein solches Konstrukt. Ich bin gerne bereit zu lernen und zu verbessern...

Damian

Zitat von: 87insane am 19 April 2019, 09:21:06
Guten Morgen nochmal zusammen,

nun hat es heute Nacht wieder nicht geklappt. Da ich das DOIF umstellt hatte, hat er um 0 Uhr das Rollo hoch gefahren. Ich komme nicht ganz klar wenn ich anstelle von "0", "keiner" nehme. Der Trigger von DOIF erwartet in der Form eine Zeitangabe. Wenn aber kein Wecker aktiv ist, soll auch nichts passieren.

Das hier ist das DOIF, mit keiner...
([du_wecker:LastAlarm] and [?du_wecker:LastAlarm] ne "keiner")
(set sz_rollo pct 0)
DOELSEIF ([00:15])



Das hier ist das DOIF mit 0...
([[du_wecker:LastAlarm]] and [du_wecker:LastAlarm] ne "0")
(set az_steckdose_stehlampe relay0 on)
DOELSEIF ([00:15])


Das zweite geht. Aber generell, was macht man wenn der Trigger-Wert eine Zeit sein kann aber auch ein Wort? Aktuell habe ich alles wieder auf "0" umgestellt, da dies auch immer lief.
Zum einen ist das mit der Bedingung so ne Sache, die geht ohne ? genau wie mit... Zum anderen muss ich wohl doppelte [[]] beim trigger nehmen, da die Zeit aus einem anderen Gerät kommt und da mag er es garnicht wenn dort ein Wort drin steht: ehler: error: Wrong timespec : either HH:MM:SS or {perlcode}. Wenn man im Trigger nun einfach noch "" um das Reading packt, dann nimmt er sich keiner Zeit mehr an.

Vielleicht gibt es ja sogar ganz andere Lösungen für ein solches Konstrukt. Ich bin gerne bereit zu lernen und zu verbessern...

Wie ich schon man zu diesem Konstrukt geschrieben habe, wird mit 0 im Reading die Zeit auf 00:00 gesetzt, nicht gültige Zeitangaben führen zu einer Fehlermeldung.

Eine saubere Lösung wäre statt "keiner", 0 oder sonst etwas Ungültiges zu setzen, das DOIF in diesem Falle per set <mein DOIF> disable in den "inaktiv"-Modus zu versetzen und zum Aktivieren set <mein DOIF> enable. Das sollte man von außen mit einem anderen DOIF/notify machen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

87insane

Manchmal kann es zu einfach sein...

Habe es mal angepasst. Geht sicher besser aber ich glaube so läuft es....

notify

(ECHO_123:alarm_.._status:.(on|off)) {
my $k = "0";
my $alarmoff = "0";
my $schleifennr = "1";
my $lastalarmalexa = "0";
#Log 1, "VOR SCHLEIFE lastalarmalexa: $lastalarmalexa";
foreach $k (1..ReadingsVal("$NAME", "AlarmCount", ""))
{
$schleifennr = sprintf("%02d", $k);
my $wecker = ReadingsVal("$NAME", "alarm_".$schleifennr."_originalTime" ,"0");
$wecker =~ s/:00.000$//;
#Log 1, "IN SCHLEIFE schleifennr: $schleifennr wecker: $wecker lastalarmalexa: $lastalarmalexa";
if (ReadingsVal("$NAME", "alarm_".$schleifennr."_status", "") eq "on" && "$wecker" gt "$lastalarmalexa")
{
$lastalarmalexa = $wecker;
}

elsif (ReadingsVal("$NAME", "alarm_".$schleifennr."_status", "") eq "off")
{
$alarmoff = $alarmoff + 1;
}
}
        if ($alarmoff eq ReadingsVal("$NAME", "AlarmCount", ""))
{
fhem("setreading du_wecker mode disabled");
fhem("set di_letzter_wecker_rollos disable");
}
elsif ($alarmoff ne ReadingsVal("$NAME", "AlarmCount", ""))
{
fhem("setreading du_wecker mode enabled");
fhem("setreading du_wecker LastAlarm $lastalarmalexa");
fhem("set di_letzter_wecker_rollos initialize");
}
}


DOIF:

([[du_wecker:LastAlarm]])(set sz_rollo pct 0)
DOELSEIF ([00:15])


Dummy zur Anzeige:
defmod du_wecker dummy
attr du_wecker alias Letzer Wecker
attr du_wecker group Wecker
attr du_wecker room FHEM / Info
attr du_wecker stateFormat {my $text = "Status: ";;;; if(ReadingsVal("$name","mode","") eq "disabled") {return $text."Es ist kein Wecker gestellt";;;;} else {return $text."Letzter Wecker um ".ReadingsVal("$name","LastAlarm","")."Uhr";;;;} }


Danke Dir! Nehme auch gerne noch mehr Ideen entgegen. Vermutlich gehen meine ganzen set´s auch besser...

87insane

Betrachte das aktuell als gelöst.... Läuft mit dem Dummy wieder erste Sahne ;)

popy

Zitat von: 87insane am 18 April 2019, 14:33:44
ERKENNTNIS!

Nachdem ich nun alles ein wenig umgebogen habe...

- Das notify schreibt nun einfach in ein anderes device den LastAlarm...
- DOIF soll nun auch auf das andere Gerät reagieren...
- Alles auf das andere Gerät gedreht...
- Test mit mehreren Weckern...

Da geht das ganze.... Also muss es an dem Alexe Device liegen?
Habe das Alexe Device neu angelegt, ohne Erfolg.

Kann der Ersteller des Module eine Art Sperre oder so einbauen? Wie kann sowas entstehen?

EDIT: Hab mir nun einen dummy dauerhaft dafür angelegt. Ist in meinen Augen am Ende eh besser und übersichtlicher. ABER mich würde trotzdem interessieren warum das nun nicht mehr anders geht...

List:
Internals:
   CFGFN     
   FUUID      5cb86f41-f33f-fcb4-00d6-81aee0b8e0e72a75
   NAME       du_wecker
   NR         792
   STATE      Status: Es ist kein Wecker gestellt
   TYPE       dummy
   READINGS:
     2019-04-18 15:12:36   LastAlarm       keiner
Attributes:
   alias      Letzer Wecker
   group      Wecker
   room       FHEM / Info
   stateFormat {my $text = "Status: "; if(ReadingsVal("$name","LastAlarm","") eq "keiner") {return $text."Es ist kein Wecker gestellt";} else {return $text."Letzter Wecker um ".ReadingsVal("$name","LastAlarm","")."Uhr";} }


Würde mir auch Gerne folgendes bauen:

Alexa alarm_XX parsen und nächste Weckzeit suchen danach einen "Rollo Auf" Job erstellen/aktualisieren.

Da ich durch suchen auf deinen Beitrag gestoßen bin und du Dich anscheinend schon damit beschäftigt hast.
Wärst du so net und könntest Bitte schnell erklären was du umgesetzt hast und wie?  ;D

Danke

87insane

#26
Guten Morgen,

eigentlich ganz einfach....

Zuerst habe ich im betroffenen Alexa Gerät ein eigenes Reading angelegt zum zählen der gesamten Wecker. Das muss sein, da das original Reading nicht immer korrekt ist.
AlarmCount {my $anz = grep( m/alarm_.._status/, ( keys %{$hash->{READINGS}} )); return $anz;}

ergibt

AlarmCount 17, bei mir zum aktuellen Zeitpunkt.


Danach habe ich mir folgende Funktion gebaut. Diese macht nichts anderes, als zu prüfen welcher der LETZTE, AKTIVE Wecker ist. Kannst du natürlich einfach umdrehen, in ERSTE, aktive Wecker oder was auch immer. Nachdem herausgefunden wurde ob der letzter Wecker existiert und welche Zeit er hat, setzt das wiederum ein DOIF aktiv oder inaktiv - Damit das Rollo/die Rollos auch machen was ich möchte. Zudem habe ich mir einen  Dummy gebaut, der mir anzeigt wann das ganze Spiel los geht und ob ein Wecker aktiv ist.

defmod n_letzter_wecker notify (ECHO_123456:alarm_.._status:.(on|off)) {\
my $k = "0";;\
my $alarmoff = "0";;\
my $schleifennr = "1";;\
my $lastalarmalexa = "0";;\
#Log 1, "VOR SCHLEIFE lastalarmalexa: $lastalarmalexa";;\
foreach $k (1..ReadingsVal("$NAME", "AlarmCount", ""))\
{\
$schleifennr = sprintf("%02d", $k);;\
my $wecker = ReadingsVal("$NAME", "alarm_".$schleifennr."_originalTime" ,"0");;\
$wecker =~ s/:00.000$//;;\
#Log 1, "IN SCHLEIFE schleifennr: $schleifennr wecker: $wecker lastalarmalexa: $lastalarmalexa";;\
if (ReadingsVal("$NAME", "alarm_".$schleifennr."_status", "") eq "on" && "$wecker" gt "$lastalarmalexa") \
{\
$lastalarmalexa = $wecker;;\
}\
\
elsif (ReadingsVal("$NAME", "alarm_".$schleifennr."_status", "") eq "off") \
{\
$alarmoff = $alarmoff + 1;;\
}\
}\
        if ($alarmoff eq ReadingsVal("$NAME", "AlarmCount", "")) \
{\
fhem("setreading du_wecker mode disabled");;\
fhem("set di_letzter_wecker_rollos disable");;\
}\
elsif ($alarmoff ne ReadingsVal("$NAME", "AlarmCount", "")) \
{\
fhem("setreading du_wecker mode enabled");;\
fhem("setreading du_wecker LastAlarm $lastalarmalexa");;\
fhem("set di_letzter_wecker_rollos initialize");;\
}\
}
attr n_letzter_wecker disable 0
attr n_letzter_wecker room hidden


DOIF:
defmod di_letzter_wecker_rollos DOIF ([[du_wecker:LastAlarm]])(set sz_rollo pct 0)\
DOELSEIF ([00:15])
attr di_letzter_wecker_rollos room hidden


Dummy:
defmod du_wecker dummy
attr du_wecker alias Letzer Wecker
attr du_wecker group Wecker
attr du_wecker icon clock
attr du_wecker room FHEM / Info
attr du_wecker stateFormat {my $text = "Status: ";;;; if(ReadingsVal("$name","mode","") eq "disabled") {return $text."Es ist kein Wecker gestellt";;;;} else {return $text."Letzter Wecker um ".ReadingsVal("$name","LastAlarm","")." Uhr";;;;} }



Sieht viel aus, ist aber schnell gemacht, da du ja nur copy/paste machen muss und ggf. anpassen an deine Bedürfnisse. Hast du noch Fragen? Gerne! Hab mich zu Anfang so sehr geärgert, bis ich das hinbekommen habe. Deswegen finde ich das gerade echt gut, dass jemand das auch haben mag :)

Danke und Gruß,
Kai

popy

Zitat von: 87insane am 24 Januar 2020, 07:41:03
Guten Morgen,

eigentlich ganz einfach....

Danke Kai für deine Zeit das rauszusuchen!

Habe in der Zwischenzeit auch schon gelöst allerdings mit einem Notify + _at - funktioniert gut.
Er sucht mir den nächsten aktivierten Wecker heraus setzt ein _at um dass Rollo 10 Minuten später ein Stück in die Höhe zu fahren  ;)

Hier das notify:


Internals:
   DEF        ECHO_Show_SZ_.*:alarm.* {

my $nearest_alarm_timestamp = 0;

#Log 1, "act_on_SZ_Alexa_Alarm: name: ".$NAME." event: ".$EVENT;

#step over all echos
my @echos = ( "ECHO_Show_SZ_Tobi", "ECHO_Show_SZ_Stefi");
foreach ( @echos ) {
#Do Echo has Alarms?
if(ReadingsNum($_,"alarm_count",0) > 0)
{
#Yes, we have at least an alarm -> loop trough it
#Log 1, "act_on_SZ_Alexa_Alarm: wir haben count: ".ReadingsNum($_,"alarm_count",0);
my @a = (1..ReadingsNum($_,"alarm_count",0));
for my $i (@a){
#is the alarm activated
my $num_str = sprintf ("%02d", $i);
if(ReadingsVal($_,"alarm_".$num_str."_status","off") eq "on")
{
my $alarm_sec_timestamp = time_str2num(ReadingsVal($_,"alarm_".$num_str."_originalDate","2020-01-01")." ".substr(ReadingsVal($_,"alarm_".$num_str."_originalTime","00:00:00.000"),0,8));
#Log 1, "act_on_SZ_Alexa_Alarm: ".$_.": ".$i." is on: ".ReadingsVal($_,"alarm_".$num_str."_originalDate","2020-01-01")." ".ReadingsVal($_,"alarm_".$num_str."_originalTime","00:00:00.000")." - sec: ".$alarm_sec_timestamp;

if(($nearest_alarm_timestamp == 0) || ($alarm_sec_timestamp < $nearest_alarm_timestamp))
{
#Log 1, "act_on_SZ_Alexa_Alarm: ".$_.": alarm ".$i." is smaller than".$nearest_alarm_timestamp." - using it!";
$nearest_alarm_timestamp = $alarm_sec_timestamp;
}
}
}
}
}


#set new rollo/sunrise job
fhem("delete job_SZ_Alarm");
if($nearest_alarm_timestamp == 0)
{
Log 1, "act_on_SZ_Alexa_Alarm: no alarm set, disabling blind/sunrise job!";
}else{
$nearest_alarm_timestamp = $nearest_alarm_timestamp + 600;
if($nearest_alarm_timestamp > time)
{
Log 1, "act_on_SZ_Alexa_Alarm: enabling blind/sunrise job @ alarm + 10 Min = ".FmtDateTime($nearest_alarm_timestamp);
fhem("define job_SZ_Alarm at ".$nearest_alarm_timestamp." {Log 1, 'job_SZ_Alarm: Rollo auf, es ist Zeit aufzustehen!'} ;; set BLIND_SZ bri 150");
}else{
Log 1, "act_on_SZ_Alexa_Alarm: ignoring alarm to set because its in the past! ".FmtDateTime($nearest_alarm_timestamp)." <> current time: ".FmtDateTime(time);
}
}
}
   FUUID      5e236307-f33f-0e94-fe22-905e33deb96a584a
   NAME       act_on_SZ_Alexa_Alarm
   NOTIFYDEV  ECHO_Show_SZ_.*
   NR         327
   NTFY_ORDER 50-act_on_SZ_Alexa_Alarm
   REGEXP     ECHO_Show_SZ_.*:alarm.*
   STATE      active
   TYPE       notify
   READINGS:
     2020-01-24 21:38:39   state           active
Attributes:
   alias      Prüfe Alexa Wecker für Rollo
   group      Schlafzimmer
   icon       clock
   room       System


vll. kanns ja auch mal jemand brauchen.

pOpY