Wecker aus neo einstellbar per slider mit webserver und ccu

Haussteuerung mittels mediola

Moderator: Co-Administratoren

Antworten
33zdenko
Beiträge: 343
Registriert: 21.12.2013, 16:50
Danksagung erhalten: 2 Mal

Wecker aus neo einstellbar per slider mit webserver und ccu

Beitrag von 33zdenko » 13.03.2016, 20:24

Hallo
wie hier http://homematic-forum.de/forum/viewtop ... 35&t=29963
beschrieben habe ich jetzt einen einstellbaren wecker mit einem slider
realisiert, das ganze wird dann in neo per webseitenelement dargestellt
und sieht z.b. so aus
Bildschirmfoto 2016-03-13 um 19.34.37.png
Bildschirmfoto 2016-03-13 um 19.34.21.png
Bildschirmfoto 2016-03-13 um 19.34.08.png
der slider macht schritte von 5 minuten, mit wecker1, wecker2, wecker3 buttons werden
die aktuellen weckzeiten aus der variable TriggerWecker geholt und dargestellt,
schiebt man den slider, werden die zeiten geändert, nach dem button setzen, druck
wird die eingestellte zeit in die TriggerWecker variable geschrieben, für aktuellen wecker button (1,2,3)

man braucht also eine variable TriggerWecker in der ccu von dem typ werteliste
so anlegen
14:00:00;20:15:00;17:45:00
dann brauchen wir ein programm welches einmal pro tag ausgeführt wird,mit dem namen z.b weckerscript
im wenn teil mit zeitsteuereung, jeden tag um 00:10 uhr auslösen
im dann teil dieses script

Code: Alles auswählen

        !Trigger Wecker

        string lTriggerSysVarName = "TriggerWecker";   !Systemvariable vom Typ Werteliste

        !-----------Ende Einstellungen--------------------

        object lTmpObj1 = null;
        object lTmpObj2 = null;
        object lTmpObj3 = null;
        object lTmpObj4 = null;
        integer liZ1;
        string lSplit1;
        string lTmpList1 = "";
        time lTmpDateTime1;
        time lTmpDateTime2;
        time lDateTime = (system.Date("%F %X")).ToTime();
        integer lSecondsAfterMidnight = (lDateTime.Hour() * 3600) + (lDateTime.Minute() * 60) + lDateTime.Second();

        if (dom.GetObject(lTriggerSysVarName))
        {
          lTmpList1 = dom.GetObject(lTriggerSysVarName).ValueList();

          if (lTmpList1 <> "")
          {
            lTmpObj1 = dom.CreateObject(OT_PROGRAM);
            lTmpObj1.Name("AutoCreateTrigger");
            lTmpObj2 = lTmpObj1.Rule();
            lTmpObj3 = lTmpObj2.RuleDestination();

            liZ1 = 0;
            foreach(lSplit1, lTmpList1.Split(";"))
            {
              lTmpDateTime1 = ("1970-01-02 " # lSplit1).ToTime() - lSecondsAfterMidnight;
              lTmpObj4 = lTmpObj3.DestAddSingle();
              lTmpObj4.DestinationParam(19);
              lTmpObj4.DestinationDP(dom.GetObject(lTriggerSysVarName).ID());
              lTmpObj4.DestinationValueType(16);
              lTmpObj4.DestinationValue(liZ1);
              lTmpObj4.DestinationValueParamType(28);
              lTmpObj4.DestinationValueParam("1970-01-01" # " " # lTmpDateTime1.Format("%H:%M:%S"));
              liZ1 = liZ1 + 1;
            }
            lTmpObj1.ProgramExecute();
            dom.DeleteObject(lTmpObj1.ID());
          }
        }
in der zip datei sind 4 php dateien enthalten
wecker1.php
wecker2.php
wecker3.php
setze_zeit.php

in jeder datei 1,2,3 muss man in dieser zeile die ip der ccu anpassen

Code: Alles auswählen

$url ="http://xxx.xxx.xxx.xxx:8181/loksoft.exe?ret=dom.GetObject%28%22TriggerWecker%22%29.ValueList%28%29";
in setze_zeit.php in dieser zeile

Code: Alles auswählen

$CCU_IP = "xxx.xxx.xxx.xxx";
speichern
im neo diese url einfügen im webseiten element

Code: Alles auswählen

http://serverip/wecker/wecker1.php
das wars schon eigentlich, die zip datei entpacken und den ordner wecker auf den server hochladen

wes man beachten muss, die eingestellten zeiten werden in ccu geschrieben, werden aber nicht abgearbeitet, bevor das programm weckerscript einmal ausgeführt wird, da wir es einmal am tag
ausführen werden die zeiten dann gesetzt, um 00.10 uhr oder wie im zeitmodul eingestellt, also ändert man die zeiten mit slider jetzt, wird erst morgen mit denn werten gearbeitet.
möchte man die zeiten jetzt setzen, z.b auf 21:00:00 und möchte man dass heute noch um diese zeit reagiert wird muss man im neo ein button legen mit welchen man das programm
wetterscript ausführt, nachdem man zeiten gesetzt hat.

wie kann man jetzt in programmen reagieren ist einfach
Bildschirmfoto 2016-03-13 um 19.59.26.png
man stellt einfach die 1. 2.oder 3. zeit als auslöser und reagiert im dann teil was man machen möchte...
was in den zeiten steht ist egal, sie werden per slider eingestellt und wenn das weckerscript ausgeführt wird, entsperechend bearbeitet/gesetzt

das ausehen vom slider und buttons kann man in der style.css datei ändern

die zip datei hier
wecker.zip
(7.63 KiB) 36-mal heruntergeladen
viel spass :)
Zuletzt geändert von 33zdenko am 15.03.2016, 11:29, insgesamt 2-mal geändert.

33zdenko
Beiträge: 343
Registriert: 21.12.2013, 16:50
Danksagung erhalten: 2 Mal

Re: Wecker aus neo einstellbar per slider mit webserver und

Beitrag von 33zdenko » 15.03.2016, 09:17

Hallo
leider habe ich einen fehler bei den minuten darstellung, in den php dateien die in der zip gelandet sind
in wecker1.php muss diese zeile so lauten:

Code: Alles auswählen

$minuten = intval(substr($zeiten,2,2));
wecker2.php

Code: Alles auswählen

$minuten = intval(substr($zeiten,11,2));
wecker3.php

Code: Alles auswählen

$minuten = intval(substr($zeiten,20,2));
hier aber die neue datei, die in dem erstem beitrag wurde auch aktualisiert
wecker.zip
(7.63 KiB) 44-mal heruntergeladen

Antworten

Zurück zu „mediola“