[Modul] Almanac

Kleiner Fehler, große Auswirkung!

DateInfo() liefert ein JSON-String als Antwort zurück - Du muss es erst in ein Array decodieren!!!

$json = ALMANAC_DateInfo(10440, time());
$info = json_decode($json, true);
echo $info['WeekNumber'];

Schönen Abend
Heiko

Prima - vielen Dank und auch einen schönen Abend!

Die Variablen wie „Ist Wochenende?“, „Ist Feiertag?“ oder „Ist Ferienzeit?“ werden ja immer zur gleichen Zeit aktualisiert. Ich habe hinter den einzelnen Variablen unterschiedliche Aktionen stehen, die am Wochenende anders reagieren als z.B. am Feiertag.
Am Tag der deutschen Einheit ist Wochenende auf false gegangen und Feiertag auf true. Es wurde aber wahrscheinlich der Feiertag zuerst abgearbeitet und dann das Wochenende. Somit kam die falsche Aktion.
Kann man die Reihenfolge irgendwie beeinflussen? Oder ist es ein allgemeines Thema von IPS, dass mehrere Variablen mit dem gleichen Trigger in unterschiedlicher Reihenfolge abgearbeitet werden?

Ja, von der Abarbeitung wird Feiertag vor Wochenende geschrieben.

Man kann natürlich die Reihenfolge im Modul ändern, aber dann möchten vielleicht andere es genau anders haben?!?

Was ich gern tun kann - hier die „Schreib“-Reihenfolge veröffentlichen.

ABER - ein Problem bleibt => es gibt keine Möglichkeit alle Variablen gleichzeitig zu schreiben. Selbst wenn - wie soll IPS drauf reagieren? Absolut gleichzeitig werden die Aktionen dann auch nicht abgearbeitet.

Vielleicht gibt es ja auch etwas was ich nicht kenne in IPS :loveips:

Gruß Heiko

Die Reihenfolge würde mir schon helfen, da kann ich bei den Aktionen mit weiteren Bedingungen die Rangfolge beeinflussen. Gern auch als PN.

Hier die Schreibreihenfolge:

  1. Public Holidays
  • $this->SetValueString(‚Holiday‘, …);
  • $this->SetValueBoolean(‚IsHoliday‘, …);
  1. School Vacations
  • $this->SetValueString(‚Vacation‘, …);
  • $this->SetValueBoolean(‚IsVacation‘, …);
  1. Festive Days
  • $this->SetValueString(‚Festive‘, …);
  • $this->SetValueBoolean(‚IsFestive‘, …);
  1. General Date Info
  • $this->SetValueBoolean(‚IsSummer‘, …);
  • $this->SetValueBoolean(‚IsLeapyear‘, …);
  • $this->SetValueBoolean(‚IsWeekend‘, …);
  • $this->SetValueInteger(‚WeekDay‘, …);
  • $this->SetValueInteger(‚WeekNumber‘, …);
  • $this->SetValueInteger(‚DaysInMonth‘, …);
  • $this->SetValueInteger(‚DayOfYear‘, …);
  • $this->SetValueInteger(‚WorkingDays‘, …);
  • $this->SetValueString(‚Season‘, …);
  1. Birthdays
  • $this->SetValueString(‚Birthday‘, …);
  • $this->SetValueBoolean(‚IsBirthday‘, …);
  1. Wedding days
  • $this->SetValueString(‚Weddingday‘, …);
  • $this->SetValueBoolean(‚IsWeddingday‘, …);
  1. Death days
  • $this->SetValueString(‚Deathday‘, …);
  • $this->SetValueBoolean(‚IsDeathday‘, …);
  1. Eclipse event
  • $this->SetValueBoolean(‚IsEclipse‘, …);
  • $this->SetValueString(‚Eclipse‘, …);
  1. Moonphase event
  • $this->SetValueBoolean(‚IsMoonphase‘, …);
  • $this->SetValueString(‚Moonphase‘, …);
  1. Quote of the day
  • $this->SetValueString(‚QuoteOfTheDay‘, …);

Bei Fragen einfach nochmal melden!

Danke! Wenn ich jetzt die Reihenfolge weiß, kann ich die Aktionen und weiteren Bedingungen darauf definieren. Die nächste Probe ist der 31.10., ein Feiertag gleich nach dem Wochenende.

1 „Gefällt mir“

Hallo,

ich nutze dein Modul auch schon eine Weile und lasse mit täglich das Zitat des Tages auf dem GoogleAssistent ansagen :smile:

Eine Frage hab ich aber:

Ich habe einige Geburtstage eingetragen und möchte mir diese als Benachichtigung im Webfront anzeigen lassen. Nur leider bekomme ich keine Nachricht.

Woran kann das liegen?


Hi,

sieht eigentlich gut aus - solltest 17:51:55 eine Benachrichtigung bekommen … also aufs Handy!

Klappen denn andere Benachrichtigungen?

Gruß Heiko

Löst leider nichts aus. Muss ich vielleicht ein Ereignis setzen? Vaiablen werden geschrieben, das funktioniert.

Okay, aber bekommst Du von anderen Modulen oder Scripten Meldungen aufs Handy?

Also ist die Instanz „webfront“ für Mobile konfiguriert und am Handy auch eingerichtet

Cruz Heiko

Jetzt ging es, Meldung eingestellt für 7.00 Uhr, 7 min später bekam ich die Meldung. Vielleicht darf das Smartphone nicht im Standby sein.

Moin,

schon mal gut - wie das mit dem Handy sein muss weiß ich nicht :slight_smile:

Aber 2 Sachen kannst Du bitte mal checken:

1.) am Handy auf Nachrichten gehen und schauen ob da welche angezeigt werden - sollte eigentlich ein History drin sein!

2.) wie sehen Deine Timer-Infos aus (Beispiel von mir anbei)

Gruß Heiko

Wo finde ich die denn? :grin:

1.) Handy - Mobile Symcon App öffnen und unten rechts Nachrichten klicken!

2.) Browser - Console - oben rechts zur Tabansicht wechseln - dann (+) klicken und „Timer Informationen“ auswählen!

Gruß Heiko

1 „Gefällt mir“

Scheint nun zu gehen, danke dir. Unter Timerinfo steht auch alles da.

1 „Gefällt mir“

Ich bekomme beim manuellen aktualisieren des Moduls folgende Fehlermeldung:

Fatal error: Uncaught Error: Minimum value must be less than or equal to the maximum value in /var/lib/symcon/modules/.store/de.wilkware.ips.modul.almanac/Almanac/module.php:679
Stack trace:
#0 /var/lib/symcon/modules/.store/de.wilkware.ips.modul.almanac/Almanac/module.php(679): random_int(0, -1)
#1 /var/lib/symcon/modules/.store/de.wilkware.ips.modul.almanac/Almanac/module.php(346): AlmanacModule->DateInfo(1680906288)
#2 /var/lib/symcon/scripts/__generated.inc.php(4727): AlmanacModule->Update()
#3 /-(6): ALMANAC_Update(55214)
#4 {main}
thrown in /var/lib/symcon/modules/.store/de.wilkware.ips.modul.almanac/Almanac/module.php on line 679

Wenn ich im Debugger nachschaue, steht da:
08.04.2023, 00:20:07 | ExtractDates | LINK: https://api.asmium.de/holiday/2023/de/baden-wuerttemberg/
08.04.2023, 00:20:07 | ExtractDates | ERROR LOAD DATA

Ich kann die Seite aber sowohl im Browser, als auch per wget vom Symcon-Rechner aus problemlos laden… Schönes JSON mit sinnvollen Werten.

Wenn ich per Script aktualisiere:

ALMANAC_Update(57375);

kommt die Meldung:
fatal error: Uncaught Error: Minimum value must be less than or equal to the maximum value in /var/lib/symcon/modules/.store/de.wilkware.ips.modul.almanac/Almanac/module.php:679
Stack trace:
#0 /var/lib/symcon/modules/.store/de.wilkware.ips.modul.almanac/Almanac/module.php(679): random_int(0, -1)
#1 /var/lib/symcon/modules/.store/de.wilkware.ips.modul.almanac/Almanac/module.php(346): AlmanacModule->DateInfo(1680906560)
#2 /var/lib/symcon/scripts/__generated.inc.php(4727): AlmanacModule->Update()
#3 /var/lib/symcon/scripts/15882.ips.php(4): ALMANAC_Update(57375)
#4 {main}
thrown in /var/lib/symcon/modules/.store/de.wilkware.ips.modul.almanac/Almanac/module.php on line 679

Zuletzt funktioniert hat das Modul am 2.2.2023.
Woran könnte das liegen?

Hallo,
darf ich zu diesem Modul einen Wunsch äußern?
Ich habe einige Automatiken von den Wochentagen abhängig gemacht, da man z.B. am Freitag und Samstag schon mal länger aufbleibt, da der darauffolgende Tag frei ist. So würde ich mir eine Variable wünschen wie: „morgen Feiertag“.
Würde mich darüber freuen.
Viele Grüße
Marc

1 „Gefällt mir“

Hallo,
diesem Wunsch schließe ich mich an.
Würde ich auch nutzen.

1 „Gefällt mir“

Kann doch selber abgefragt werden:
Bool-Variable „Ist Morgen Feiertag?“ anlegen und z.B. bei Aktualisierung mit der Variable „Ist Feiertag?“ triggern.
Code bei Aktion:

<?php
$Morgen = json_decode(ALMANAC_DateInfo(20627, strtotime("tomorrow")), true);
SetValueBoolean(20665, $Morgen['IsHoliday']);