Script aus Doku

In der Dokumentation ist ein Script für „Experten“ hinterlegt, um herauszufinden, welche Wochenplanaktion aktiv ist. Leider wird diese Zeile nicht richtig verarbeitet:

    //Überprüfen ob die Gruppe für heute zuständig ist
    if($g['Days'] & date("N") > 0) {

„Days“ gibt beispielsweise bei dem Wochentyp Mo-Fr bzw. Sa-So nicht die Zahl des Wochentags raus. Hier wird die Wertigkeit eines Wochentags addiert. Mo → 1, Di → 2, Mi → 4, Do → 8, usw.

Gibt es da bereits einen einfachen Workaround?

1 „Gefällt mir“

@michaz:

Wie hast Du in diesem Wochenplan die Gruppe(n) „eingestellt“ ?

Gruß
lueralba

Ich habe Mo-Fr (31) und Sa-So (96) eingestellt.

Was meist Du damit ganz genau ?
Bei mir bekomme ich die Wochenplanaktion (int 1 für die Zweite von Zwei Aktionen) heraus …

Gruß
lueralba

Wenn du die Gruppierungen Mo-Fr/Sa-So verwendest, bekommst du die ganze Woche nur die Aktionen für Mo-Fr zurück. Sa-So wird durch das o.g. Problem ignoriert.

@paresy:

michaz hat wohl einen Bug gefunden !

Er fällt bei der bei Nutzung der Mo-Fr|Sa+So - Gruppierung auf.
Es sollten in $g[‚Days‘] „31“ für Mo-Fr bzw. „96“ für Sa+So wieder gegeben werden.
Heute, am Sonntag, wird aber „31“ anstelle „96“ zurückgegeben.

Anschließend führt das „VerUNDen“ der Werte (31 bzw. 96) mit dem Ergebnis des date(„N“) Befehls (Mo=1 bis So=7) nicht zu einem sinnvollen Ergebnis im Script.

Edit: Eben nochmal mit Mo|Di|Mi|Do|Fr|Sa|So - Gruppierung getestet, da wird für heute die „1“ zurückgegeben (64 wäre wohl richtig bzw. 7=So).

Hier ist irgendetwas kaputt.

Gruß
lueralba

Ja da bin ich heute auch darüber gestolpert als die Rolläden zur falschen Zeit fuhren. Die Zeile muss in der Doku unbedingt mal berichtigt werden!

so korrekt?

if($g['Days'] & (2 ** (date('N') - 1)) > 0)

(aus diesem Beitrag kopiert)

Edit: Nein funktioniert auch nicht sinnvoll (sieben Tage WP). Ich benutze jetzt einen simplen Vergleich, da ich ausschließlich 7-Tage Wochenpläne verwende.

Es fehlt leider auch die Doku, welche Einstellungen bei diesem Feld Days zu welchen Werten führen.

Hallo,
versuche das mal

      $SysTimePoint = time();
      if(($g['Days'] & pow(2, date("N",$SysTimePoint)-1)) > 0)

… Du warst schon im richtigen Beitrag zuvor :wink: … nur hast Du den fehlerhaften Betrag kopiert

tgusi74

1 „Gefällt mir“

Interessehalber, wo ist der Unterschied zwischen pow() und dem **-Operator?

Hallo,
in POW bzw. ** ist kein Unterschied … aber in den Klammern ist der Unterschied :slight_smile:

versuch mal

if(($g['Days'] & (2 ** (date('N') - 1))) > 0)

Im Wochenplan steht 1=Montag, 2=Dienstag, 3=Mittwoch, 4=Donnerstag, 5=Freitag, 6=Samstag, 7=Sonntag

tgusi74

1 „Gefällt mir“

Ich glaub ich schlaf zu wenig in letzter Zeit, dass ich das nicht gesehen habe :smiley:
Danke für den Hinweis.

Sollte aber dennoch in der Doku mal korrigiert werden.