FM_AlarmClock (Wecker)

Ferengi-Masters AlarmClock

Auf Wunsch einiger User habe ich den Wecker aus dem Dashboard in das WebFront portiert, was durch die doch teilweise erheblichen Syntaxunterschiede, ein ganzes Stück Arbeit war. Ich hoffe er gefällt Euch und es gibt in Zukunft WebFront gesteuerten Schlaf. :smiley:

Bitte um Feedback ob der Wecker bei allen läuft und ob es noch Wünsche gibt.

Was kann der Wecker?

[ul]
[li]einfache Installation, es alles automatisch angelegt (Neu ab V3.0) [/li][li]verschiedene Weckerprofile anlegen [/li][li] es werden automatisch leere Scripte für Schaltbefehle angelegt die zur Weck- bzw. Schlummerzeit gestartet werden [/li][li] Schlummermodus (Wecker geht nach gewünschter Zeit nochmal an) [/li][li] Wecker kann an Feiertagen automatisch aus gehen (einige Feiertage unterscheiden sich von Bundesland zu Bundesland, entsprechende Auskommentierungen im Weckerscript überpüfen!) [/li][li]Wecker kann nur an Feiertagen an gehen (speziell auf Wunsch von Raketenschnecke :slight_smile: ) (Neu ab V3.0) [/li][li] speichern und löschen von Weckereinstellungen (es werden einzelne Datensätze je Wecker-Name und Tag angelegt!) [/li][li]Tageswecker an/aus schalten [/li][li]Wochenwecker an/aus schalten [/li][li]Zusammenfassung des Weckers via HTML-Box (Neu ab V3.0) [/li][li]per Befehl aus jedem beliebigen Script heraus den Wecker verändern/abfragen (geändert in V3.0) [/li][li]optimierte Anzeige für iFront und Android (Neu ab V3.0) [/li][/ul]
[b]
Bedienung

[/b]Der Name des Weckers ist wie ein Benutzer und dessen Weckprofil zu verstehen. Das könnte z.B. „ThomasArbeit“, „ThomasUrlaub“, „HeidiArbeit“ etc. sein. Zu jedem Tag wird dazu eine Weckzeit definiert. Zusätzlich zur Uhrzeit kann zu jedem Tag einzeln gespeichert werden ob der Schlummermodus aktiv ist (d.h. ob z.B. 10min nach Weckzeit nochmal der Wecker angehen soll) und ob der Wecker an einem Feitertag angehen soll. Oder ob der Wecker nur an einem Feiertag aktiv sein soll.
Der Punkt Tageswecker schaltet den Wecker an diesem Tag an oder aus (als z.B. Donnerstag an, Freitag aus usw.). Mit dem Wochenwecker kann das bestimmte Weckerprofil (also z.B. „ThomasArbeit“) ganz abgeschalten werden. Mit dem Punkt „Neuer Wecker“ kann ein neues Weckerprofil erstellt werden. Als Standard wird hier zunächst Mo-So 10 Uhr als Weckzeit eingetragen. Das kann dann entsprechend geändert werden. Wecker löschen sagt ja schon der Name :-).

Syntax der Befehle

Mit diesen zwei Befehlen kann der Wecker aus einem beliebigen Script heraus gesetzt oder abgefragt werden.

set_wecker(string: „Wecker Name,Tag,Stunde,Minute,Feiertag,Schlummermoduszeit,Wochenwecker,Tageswecker“);


Beispiel setzen eines Weckers:


set_wecker('Thomas,Sa,06,15,1,10,true,true'); 


Stunde und Minute mit führender Null.
Bei Fehlern in der Syntax wird eine IPS_LogMessage erzeugt.

get_wecker(string: „Wecker Name,Tag“);

Beispiel Ausgabe des aktuellen Wecker:


$tag = (date("w")); //Tag ermittel

if(get_wecker("Thomas,$tag"))
{
   print_r($wecker);
}
else
{
  echo "Fehler";
}

Format:
//Name (str) //Tag (int) //Stunde (int) //Minute (int) //Feiertag (int) //Schlummerminuten (int) //Wochenwecker (bool) //Tageswecker (bool)

Ausgabe:


Array
(
    [0] => Thomas
    [1] => 5
    [2] => 20
    [3] => 55
    [4] => 
    [5] => 0
    [6] => 1
    [7] => 
)


Um diese Befehle in Eueren eigenen Scripten nutzen zu können sind folgende Funktionen bereitzustellen. (z.B. durch include):


    function set_wecker($wecker_fkt_1)
     {
          SetValueString(56504 /*[Wecker\wecker_fkt]*/, $wecker_fkt_1);
     }

    function get_wecker($wecker_fkt_2)
     {
       //Hier Ablageort für wecker.txt eintragen
          $pfad                = IPS_GetKernelDir().'webfront/user/FM_AlarmClock';
        $filename                 = $pfad.'/wecker.txt';

       global $wecker;
       $wecker_datensatz = explode(",", $wecker_fkt_2); // nach Komma trennen und in array
       $name                 = $wecker_datensatz[0];
       $tag                  = $wecker_datensatz[1];
        
       $wecker_inh         = file_get_contents($filename); //Wecker in Variable
       $wecker_datensatz = explode(",", $wecker_inh); // nach Komma trennen und in array

       $i        = 0;
       $tagx = $tag; 

       if($tagx == 0)
        {
            $tagx = 6; //Sonntag
        }
        else
        {
           $tagx = $tagx-1;
        }
    
       foreach($wecker_datensatz as $value)
       {
          if($value == $name and $tagx == $wecker_datensatz[$i+1] )
         {
             $wecker[0] = $wecker_datensatz[$i];    //Name (str)
             $wecker[1] = $wecker_datensatz[$i+1];  //Tag (int)
             $wecker[2] = $wecker_datensatz[$i+2];  //Stunde (int)
             $wecker[3] = $wecker_datensatz[$i+3];  //Minute (int)
             $wecker[4] = $wecker_datensatz[$i+4];  //Feiertag (int)
             $wecker[5] = $wecker_datensatz[$i+5];  //Schlummerminuten (int)
             $wecker[6] = $wecker_datensatz[$i+6];  //Wochenwecker (bool)
                $wecker[7] = $wecker_datensatz[$i+7];  //Tageswecker (bool)
                //Feiertag
                if($wecker[4] == 1)
             {
                $wecker[4] = true;
             }
             else
             {
                $wecker[4] = false;
             }
                //Tageswecker
             if($wecker[6] == 1)
             {
                $wecker[6] = true;
             }
             else
             {
                $wecker[6] = false;
             }
                //Wochenwecker
             if($wecker[7] == 1)
             {
                $wecker[7] = true;
             }
             else
             {
                $wecker[7] = false;
             }
             return $wecker;
         }
         $i=$i+1;
        }
        return false;
     }


[ul]
[li]Installation bitte laut Doku in der Anlage durchführen.[/li]
[li]Der Wecker sollte nicht verschoben und die Verzeichnis Struktur nicht geändert werden! [/li][/ul]

V 2.11 Fix für Wochenwecker: http://www.ip-symcon.de/forum/f16/ferengi-masters-wecker-fuer-webfront-11759/index5.html#post101763

V2.2

[ul]
[li]Alle Wecker als Liste anzeigen lassen [/li]
[li]Per Befehl aus jedem beliebigen Script heraus den Wecker verändern/abfragen. [/li][li]Bug Wochenwecker behoben [/li][li]kleinere Bugfixe [/li][li]Bugfix mehrere Wecker konnten nicht zur gleichen Zeit gestartet werden[/li]
[li]Updatefunktion eingabaut [/li][/ul]
V2.21

[ul]
[li]kleiner Bug in der Updatefunktion behoben [/li][/ul]
V2.30 (lauffähig ab IPS V2.5)

  • [li]sehr einfache Installation, automatisches Anlegen der WebFrontobjekte [/li][li]neuer Wecker GUI [/li][li]Anpassungen für IPS V2.5 [/li][li]kleinere Bugs behoben [/li][li]neue Doku[/li]

V3.0 [COLOR=red](getestet unter IPS V3.1) [/COLOR]

[ul]
[li]automatische Installation der Anwendung (RS Exporterscript) [/li][li]Update von alter Version nicht vorgesehen (bei großen Altprojekten auf Anfrage Konverter) [/li][li]neue Wecker GUI (Webfront und Mobile App optimiert) [/li][li]neue Feiertagsfunktion [/li][li]Anpassung der Datensatzstruktur (nicht abwärtskompatibel) [/li][li]Script Befehl angepasst/geändert (nicht abwärtskompatibel) [/li][li]kleinere Bugs behoben [/li][li]neue Doku [/li][/ul]

wecker_V3.00.ips.rar (25.2 KB)

doku_V3.00.rar (80.7 KB)

icons.zip (18.3 KB)

wecker_V2.30.ips.rar (9.31 KB)

doku_V2.30.rar (81.4 KB)

Sehr geil, danke für deine Mühe. Werde es direkt heute abend testen und berichten.

Gruss,
Christian

Hallo Thomas,

danke für dein Weckerskript.

Installation hat super geklappt bis auf das umständliche Container anlegen, aber dafür kannst Du ja nichts :smiley:

Sollte sich paresy mal Gedanken machen die per Skript anlegen zu können.

Das einzige was mich noch ein wenig irretiert ist das Bedienkonzept des Wecker´s. Vielleicht könntest Du noch eine Anleitung bzgl. der Bedienung.

Hallo Werner,

habe mal das Bedienkonzept noch ein wenig erklärt.:wink:

Hm, also irgendwo habe ich noch ein Problem, kann es aber gerade nicht eingrenzen. Habe alles nach Doku eingerichtet, das Skript hat auch passend alles angelegt…

Allerdings der komplette Wecker Container bleibt bei mir leer, die Einstellungen sind allerdings wie auf den Screenshots. Irgendeine Idee dazu? Lasse ich mir die einzelnen Kategorien anzeigen dann sind die Daten vorhanden…

Gruss,
Christian

Hallo Christian,

hast Du auch die Root ID´s der im Container befindlichen Kategorie mit der entsprechenden Kategorie im Objektbaum verknüpft?

Guten Morgen Thomas,

nach einigem hin und herprobieren habe ich den Wecker glaube ich kapiert:D

Jetzt habe ich nur das Problem das das eigentliche Userskript nicht startet:confused:, das entsprechende Schlummerskript aber schon.

Siehe Screenshots

Wie Du siehtst ist der Wecker „Werner“ auf Tageswecker für Sonntag 01:00 eingestellt. Das Skript „Werner.ips.php“ wurde aber nicht gestartet, 00:00:00 ist hellgrau. Passend dazu wurde aber das Werner_Schlummer.ips.php gestartet und mit dem TimerEvent von 300Sekunden versehen und dieser läuft seit 01:00:00 wiederkehrend alle 5 Minuten.

Hast Du eine Idee?

Thomas,

verstehe ich das richtig das wenn man an einem Tageswecker z.b. die Uhrzeit ändert diese erst übernommen wird wenn man auf der rechten Seite den Tagwecker ein- und wieder ausschaltet?

Oder gibt es einen einfacheren Weg.

So,

zur Sicherheit gerade nochmal einen Wecker (Sonntag, 10:04) eingestellt.

Das Weckerskript wurde um 10:04:02 gestartet aber das entsprechende Userskript nicht.

Ja, klar, hab ich. Wie gesagt ändere ich was der Kategorie im Webfront übergeordnet ist und stelle es bspw. alleine ins Webfront wird der Inhalt auch sauber angezeigt…

Gruss,
Christian

Hallo,

da ist wohl noch ein ganz böser Bug im Wecker.:frowning:
Werde mich mal auf die Suche begeben um schnellstmöglich eine Lösung zu finden.

P.S. Habe den Download erstmal vom Netz genommen.

So nächster Versuch.:smiley: Habe die V2.11b hochgeladen.
Bugfix:

[ul]
[li]Fehler beim Speichern behoben
[/li][li]Fehler beim Schlummertimer behoben (THX @Werner)
[/li][li]Weckerstart wird im WebFront angezeigt (THX @Werner)
[/li][/ul]

Super, aber mit meinem Problem kann das ja eigentlich nichts zu tun haben oder?

Gruss,
Christian

Hallo Christian,

nein, ich verstehe Dein Problem auch nicht so wirklich, kannst Du bitte mal ein Screenshot von Deinem Webfront Ergebnis machen.

Klar, here it is…

Also Deine Containereinstellungen stimmen irgendwie nicht. Mache mal bitte von den einzelnen Containerkonfigurationen im WFC noch einen Screenshot. Leider ist die Containerkonfiguration des WF von IPS meiner Meinung nach nicht so glücklich programmiert.:wink:

Anbei die drei Container, die Kategorien sind ja unproblematisch. Vielleicht bin ich ja blind…

Danke für deine Mühe.

Gruss,
Christian

Hallo Christian,

außer das Weckerelemente und Zeitsteuerung die falsche Position haben kann ich keinen Fehler entdecken… Daran liegt es aber nicht das er bei Dir nichst darstellt. Hast Du mal den Rechner & Dienst neu gestartet. Ich kann Dir hier jetzt leider nicht weiter helfen. Vieleicht hat noch jemand anders eine Idee.

Hallo Thomas,

ein Idee hätte ich da noch.

Habe mich gestern mit bmwm3 bzgl. des Weckers unterhalten.

Wir wünschten uns eine extra Kategorie für die User-Skripte, würde die Übersichtlichkeit unterstützen.

Danke für den Einbau der Meldung wann ein Wecker gestartet wurde.

Hallo Christian,

gibt dem Hauptcontainer einmal eine höhere Positionsnummer, also alles ausser der 0. Da war/ist ein Bug im WF gewesen.