Ankündigung

Einklappen
Keine Ankündigung bisher.

EDOMI-Releases/Updates | Aktuell: Version 2.03

Einklappen
Dieses Thema ist geschlossen.
X
Das ist ein wichtiges Thema.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Danke! In Zukunft warte ich wieder ein paar Tage mit dem updaten...
    Gruß
    Andi

    Kommentar


      tger977 warte noch mal 5 Minuten..

      Kommentar


        tger977 Hier was auf die Schnelle. Leider kann der LBS jetzt nur mit einer Schaltzeit in der ZSU umgehen. Es wird der letzte Eintrag verwendet. Da es in dieser Konstellation aber nicht mehr möglich ist, die Aktionen der Uhr zuverlässig zu bestimmen, muss man entweder für jede Schaltzeit eine eigene Uhr anlegen, oder nicht mehr updaten. Ich habe mich im Moment für letzteres entschieden. Das zeitgesteuerte Aufrufen von "Makros" ist für mich keine Zeitschaltuhr. Diese Funktion war vorher auch im Logikeditor möglich. für mich also ein Rückschritt!


        ​​​​​​​
        Code:
        ###[DEF]###
        [name        =ZSU Zeiten mit neg. offset Vxxxxx]
        
        [e#1        =Trigger                 ]
        [e#2        =ZSUID  #init=1            ]
        [e#3        =neg.offset 1 EIN  #init=0    ]
        [e#4        =neg.offset 2 EIN  #init=0    ]
        [e#5        =neg.offset 1 AUS  #init=0    ]
        [e#6        =neg.offset 2 AUS  #init=0    ]
        [e#7        =Freigabe  #init=1    ]
        [a#1        =EIN Zeit                ]
        [a#2        =EIN offset 1            ]
        [a#3        =Trigger EIN 1            ]
        [a#4        =EIN offset 2            ]
        [a#5        =Trigger EIN 2             ]
        [a#6        =AUS Zeit                ]
        [a#7        =AUS offset 1            ]
        [a#8        =Trigger AUS 1            ]
        [a#9        =AUS offset 2            ]
        [a#10        =Trigger AUS 2            ]
        [a#11        =Name ZSU                ]
        [v#1=0]
        [v#2=0]
        ###[/DEF]###
        
        
        ###[HELP]###
        E1 Trigger
        E2 ID der ZSU (Sieht man in der Konfiguration der Zeitschaltuhren)
        E3 negatives Offset1 auf nächste EIN-Schaltzeit in Minuten 
        E4 negatives Offset2 auf nächste EIN-Schaltzeit in Minuten
        E5 negatives Offset1 auf nächste AUS-Schaltzeit in Minuten
        E6 negatives Offset2 auf nächste AUS-Schaltzeit in Minuten
        E7 Ein Wert <> 1 sperrt den Baustein
        
        A1 n&auml;chste EIN-Zeit
        A2 EIN Zeit mit negativen offset aus E3
        A3 Trigger  mit negativen offset aus E3
        A4 EIN Zeit mit negativen offset aus E4
        A5 Trigger  mit negativen offset aus E4
        A6 n&auml;chste AUS Zeit
        A7 AUS Zeit mit negativen offset aus E5
        A8 Trigger  mit negativen offset aus E5
        A9 AUS Zeit mit negativen offset aus E6
        A10 Trigger  mit negativen offset aus E6
        A11 Name der ZSU
        
        Schaltzeiten die in der Vergangenheit liegen, werden ignoriert.
        
        
        
        Changelog
        V0.81
        - Eingang Freigabe hinzugefügt
        V0.8
        - Fehler bei ZSU korrigiert, die über KNX GA geschaltet werden. Danke an MuckiLegden!
        V0.7
        - Anpassungen für Edomi ab 1.49 hinzugef&uuml;gt
        V0.6
        - Codeoptimierung das die n&auml;chsten Schaltzeiten auch &uuml;ber Jahre entfernt angezeigt werden
        - Bei ausgeschalteter ZSU werden die Werte nicht mehr auf 31.12. des n&auml;chsten Jahres gesetzt sondern auf ein Leerzeichen
        - Fehlerbehebung bei nicht vorhandenen Schaltzeiten 
        - A11 Name der ZSU hinzugef&uuml;gt
        
        V0.5 inital version
        ###[/HELP]###
        
        
        ###[LBS]###
        <?
        function LB_LBSID($id) {
        $tim = array();    
        $onTime = 0;
        $offTime = 0;
        $x = ''; $y = '';
        $zus ='';
        $name = '';
        
            if ($E=logic_getInputs($id)) {
        
                if (($E[1]['refresh']==1 || $E[2]['refresh']==1 || $E[3]['refresh']==1 || $E[4]['refresh']==1 || $E[5]['refresh']==1 || $E[6]['refresh']==1)&& $E[7]['value']==1) {
                    $i = 0;
                    //$Arr = array(); $Arr2 = array();
                    If (is_numeric($E[3]['value']) and $E[3]['value'] != '' ){$off1 = $E[3]['value'];}else {$off1 = 0;}
                    If (is_numeric($E[4]['value']) and $E[4]['value'] != '' ){$off2 = $E[4]['value'];}else {$off2 = 0;}
                    If (is_numeric($E[5]['value']) and $E[5]['value'] != '' ){$off3 = $E[5]['value'];}else {$off3 = 0;}
                    If (is_numeric($E[6]['value']) and $E[6]['value'] != '' ){$off4 = $E[6]['value'];}else {$off4 = 0;}
                    if ($off1 > 0) $off1 = $off1 *-1;
                    if ($off2 > 0) $off2 = $off2 *-1;
                    if ($off3 > 0) $off3 = $off3 *-1;
                    if ($off4 > 0) $off4 = $off4 *-1;
        
                    $mysqli = new mysqli('localhost', 'root', '', 'edomiLive');
                        if (!$mysqli->connect_error) {
                            $query = "Select RAMko.value,timerData.hour,timerData.minute,timerData.d0,timerData.d1,timerData.d2,timerData.d3,timerData.d4,timerData.d5,timerData.d6,timerData.cmdid,timerData.day1,timerData.day2,timerData.month1,timerData.month2,timerData.year1,timerData.year2,timer.name From timer Inner Join RAMko On timer.gaid = RAMko.id Inner Join timerData On timer.id = timerData.targetid Where timer.id = ".$E[2]['value']." Order By timerData.hour, timerData.minute";  
                            $result = $mysqli->query($query);
                            while ($row = $result->fetch_array(MYSQLI_ASSOC)){
                                $name = $row['name'];
                                $tim[$i] = $row['hour'].":".$row['minute']; 
                                $Art[$i] = $row['cmdid'];
                                $TagStart[$i] = $row['day1'];
                                $TagEnd[$i] = $row['day2'];
                                $MonStart[$i] = $row['month1'];
                                $MonEnd[$i] = $row['month2'];
                                $JahrStart[$i] = $row['year1'];
                                $JahrEnd[$i] = $row['year2'];
                                $zus = $row['value'];
                                for ($n = 0; $n<7;$n++){
                                    $k = "d".$n;
                                    $on[$i][$n] = $row["d".$n];
        
                                } $i++; 
                            }
                        }
                        $mysqli->close();
                        $date = date("H:i");
                        $Jahr = date("o");
                        $Mon = date("n");
                        $Tag = date("j");
                        $month_end = date("t");
                        logic_setOutput($id,11,$name);
        
                        foreach ($tim as $n => $value){
                        $month_end1 = date("t",mktime(0, 0, 0, $MonStart[$n], 1, $JahrStart[$n]));
        
                        if($JahrStart[$n] == 0 || $JahrStart[$n] =='') $JahrStart[$n] = $Jahr;
                        if($JahrStart[$n] < $Jahr) $JahrStart[$n] = $Jahr; 
                        if($JahrStart[$n] > $Jahr && $Mon[$n] == 0) $MonStart[$n] = 1;
                        if($MonStart[$n] == 0 || $MonStart[$n] == '') $MonStart[$n] = $Mon;
                        if($MonStart[$n] < $Mon) $MonStart[$n] = $Mon;
        
                        if(($MonStart[$n] > $Mon || $JahrStart[$n] > $Jahr) && ($TagStart[$n] == 0 || $TagStart[$n] == '')) $TagStart[$n] = 1; 
                        if($TagStart[$n] == 0 || $TagStart[$n] == '') $TagStart[$n] = $Tag;
                        if($TagStart[$n] < $Tag && $MonStart[$n] == $Mon && $JahrStart[$n] == $Jahr) $TagStart[$n] = $Tag;
        
                        if($TagStart[$n] > $month_end1) {$TagStart[$n] = 1;$MonStart[$n] = $MonStart[$n]+1;}
        
                        $month_end2 = date("t",mktime(0, 0, 0, $MonEnd[$n], 1, $JahrEnd[$n]));
        
                        if (($JahrEnd[$n]==9999 || $JahrEnd[$n]=='') && ($MonEnd[$n]==9999 || $MonEnd[$n]=='') && ($TagEnd[$n]==9999 || $TagEnd[$n]=='')) $JahrEnd[$n] = $Jahr+1;
                        if ($JahrEnd[$n]==9999 || $JahrEnd[$n]=='') $JahrEnd[$n] = $JahrStart[$n]; 
                        if ($MonEnd[$n]==9999 || $MonEnd[$n]=='') $MonEnd[$n] = $MonStart[$n]; 
                        if ($TagEnd[$n]==9999 || $TagEnd[$n]=='') $TagEnd[$n] = $month_end;
                        if($TagEnd[$n] > $month_end2) $TagEnd[$n] = $month_end2;
        
                        list ($Stunde, $Minute) = explode(':', date('H:i', strtotime($value)));
                        $Startdatum = date("d.m.Y H.i",mktime($Stunde,$Minute,0,$MonStart[$n], $TagStart[$n], $JahrStart[$n]));
                        $Enddatum = date("d.m.Y H.i",mktime($Stunde,$Minute,0,$MonEnd[$n], $TagEnd[$n], $JahrEnd[$n]));
        
                        $Monday = date("d.m.Y H:i",(strtotime("this Monday".$Startdatum)));
                        $Tuesday = date("d.m.Y H:i",(strtotime("this Tuesday".$Startdatum)));
                        $Wednesday =  date("d.m.Y H:i",(strtotime("this Wednesday".$Startdatum)));
                        $Thursday = date("d.m.Y H:i",(strtotime("this Thursday".$Startdatum)));
                        $Friday = date("d.m.Y H:i",(strtotime("this Friday".$Startdatum)));
                        $Saturday = date("d.m.Y H:i",(strtotime("this Saturday".$Startdatum)));
                        $Sunday = date("d.m.Y H:i",(strtotime("this Sunday".$Startdatum)));
        
                        $Monday2 = date("d.m.Y H:i",(strtotime("+1 Week".$Monday)));
                        $Tuesday2 = date("d.m.Y H:i",(strtotime("+1 Week".$Tuesday)));
                        $Wednesday2 =  date("d.m.Y H:i",(strtotime("+1 Week".$Wednesday)));
                        $Thursday2 = date("d.m.Y H:i",(strtotime("+1 Week".$Thursday)));
                        $Friday2 = date("d.m.Y H:i",(strtotime("+1 Week".$Friday)));
                        $Saturday2 = date("d.m.Y H:i",(strtotime("+1 Week".$Saturday)));
                        $Sunday2 = date("d.m.Y H:i",(strtotime("+1 Week".$Sunday)));
        
        
                        #if($Art[$n] == 1){    
                            if ($on[$n][0] == 1 && (strtotime(date($Monday)) <= strtotime(date($Enddatum)))) {$Arr[] = strtotime(date($Monday));}
                            if ($on[$n][1] == 1 && (strtotime(date($Tuesday)) <= strtotime(date($Enddatum)))) {$Arr[] = strtotime(date($Tuesday));}
                            if ($on[$n][2] == 1 && (strtotime(date($Wednesday)) <= strtotime(date($Enddatum)))) {$Arr[] = strtotime(date($Wednesday));}
                            if ($on[$n][3] == 1 && (strtotime(date($Thursday)) <= strtotime(date($Enddatum)))) {$Arr[] = strtotime(date($Thursday));}
                            if ($on[$n][4] == 1 && (strtotime(date($Friday)) <= strtotime(date($Enddatum)))) {$Arr[] = strtotime(date($Friday));}
                            if ($on[$n][5] == 1 && (strtotime(date($Saturday)) <= strtotime(date($Enddatum)))) {$Arr[] = strtotime(date($Saturday));}
                            if ($on[$n][6] == 1 && (strtotime(date($Sunday)) <= strtotime(date($Enddatum)))) {$Arr[] = strtotime(date($Sunday));}
                            if ($on[$n][0] == 1 && (strtotime(date($Monday2)) <= strtotime(date($Enddatum)))) {$Arr[] = strtotime(date($Monday2));}
                            if ($on[$n][1] == 1 && (strtotime(date($Tuesday2)) <= strtotime(date($Enddatum)))) {$Arr[] = strtotime(date($Tuesday2));}
                            if ($on[$n][2] == 1 && (strtotime(date($Wednesday2)) <= strtotime(date($Enddatum)))) {$Arr[] = strtotime(date($Wednesday2));}
                            if ($on[$n][3] == 1 && (strtotime(date($Thursday2)) <= strtotime(date($Enddatum)))) {$Arr[] = strtotime(date($Thursday2));}
                            if ($on[$n][4] == 1 && (strtotime(date($Friday2)) <= strtotime(date($Enddatum)))) {$Arr[] = strtotime(date($Friday2));}
                            if ($on[$n][5] == 1 && (strtotime(date($Saturday2)) <= strtotime(date($Enddatum)))) {$Arr[] = strtotime(date($Saturday2));}
                            if ($on[$n][6] == 1 && (strtotime(date($Sunday2)) <= strtotime(date($Enddatum)))) {$Arr[] = strtotime(date($Sunday2));}
                        #}
                        if($Art[$n] == 0){
                            if ($on[$n][0] == 1 && (strtotime(date($Monday)) <= strtotime(date($Enddatum)))) {$Arr2[] = strtotime(date($Monday));}
                            if ($on[$n][1] == 1 && (strtotime(date($Tuesday)) <= strtotime(date($Enddatum)))) {$Arr2[] = strtotime(date($Tuesday));}
                            if ($on[$n][2] == 1 && (strtotime(date($Wednesday)) <= strtotime(date($Enddatum)))) {$Arr2[] = strtotime(date($Wednesday));}
                            if ($on[$n][3] == 1 && (strtotime(date($Thursday)) <= strtotime(date($Enddatum)))) {$Arr2[] = strtotime(date($Thursday));}
                            if ($on[$n][4] == 1 && (strtotime(date($Friday)) <= strtotime(date($Enddatum)))) {$Arr2[] = strtotime(date($Friday));}
                            if ($on[$n][5] == 1 && (strtotime(date($Saturday)) <= strtotime(date($Enddatum)))) {$Arr2[] = strtotime(date($Saturday));}
                            if ($on[$n][6] == 1 && (strtotime(date($Sunday)) <= strtotime(date($Enddatum)))) {$Arr2[] = strtotime(date($Sunday));}
                            if ($on[$n][0] == 1 && (strtotime(date($Monday2)) <= strtotime(date($Enddatum)))) {$Arr2[] = strtotime(date($Monday2));}
                            if ($on[$n][1] == 1 && (strtotime(date($Tuesday2)) <= strtotime(date($Enddatum)))) {$Arr2[] = strtotime(date($Tuesday2));}
                            if ($on[$n][2] == 1 && (strtotime(date($Wednesday2)) <= strtotime(date($Enddatum)))) {$Arr2[] = strtotime(date($Wednesday2));}
                            if ($on[$n][3] == 1 && (strtotime(date($Thursday2)) <= strtotime(date($Enddatum)))) {$Arr2[] = strtotime(date($Thursday2));}
                            if ($on[$n][4] == 1 && (strtotime(date($Friday2)) <= strtotime(date($Enddatum)))) {$Arr2[] = strtotime(date($Friday2));}
                            if ($on[$n][5] == 1 && (strtotime(date($Saturday2)) <= strtotime(date($Enddatum)))) {$Arr2[] = strtotime(date($Saturday2));}
                            if ($on[$n][6] == 1 && (strtotime(date($Sunday2)) <= strtotime(date($Enddatum)))) {$Arr2[] = strtotime(date($Sunday2));}
                        }
        
                    }                
                        if (!empty($Arr)) {
                            $length = count($Arr);
                            for ($i=0; $i <= $length ;$i++){
                            sort($Arr);
                            if ($Arr[0] < strtotime(date('d.m.Y H:i'))) {unset ($Arr[0]);array_values($Arr);$length = count($Arr);}
                            }
                            if (array_key_exists('0', $Arr)) {
                                $next_on = date("d.m.Y H:i",$Arr[0]);
                            } else {$next_on = 0;}
                        }    else {$next_on = 0;}
        
                        if (!empty($Arr2)) {
                            $length = count($Arr2);
                            for ($i=0; $i <= $length ;$i++){
                            sort($Arr2);
                            if ($Arr2[0] < strtotime(date('d.m.Y H:i'))) {unset ($Arr2[0]);array_values($Arr2);$length = count($Arr2);}
                            }
                            if (array_key_exists('0', $Arr2)) {
                                $next_off = date("d.m.Y H:i",$Arr2[0]);
                            } else {$next_off = 0;}
                        }    else {$next_off =0;}
        
                        // Schaltzeiten auf Ausgang
                        #if ($zus == 1) {    
                            if ($next_on != 0 && (strtotime($next_on) > strtotime($date))) {logic_setOutput($id,1,date("d.m.Y H:i", strtotime($next_on)));}else {logic_setOutput($id,1,' ');}
                            if ($next_on != 0 && (strtotime(($off1.'Minutes').$next_on) > strtotime($date))) {logic_setOutput($id,2,date("d.m.Y H:i", strtotime(($off1.'Minutes').$next_on)));}else {logic_setOutput($id,2,' ');}
                            if ($next_on != 0 && (strtotime(($off1.'Minutes').$next_on) == strtotime($date))) logic_setOutput($id,3,1);
                            if ($next_on != 0 && (strtotime(($off2.'Minutes').$next_on) > strtotime($date))) {logic_setOutput($id,4,date("d.m.Y H:i", strtotime(($off2.'Minutes').$next_on)));}else {logic_setOutput($id,4,' ');}
                            if ($next_on != 0 && (strtotime(($off2.'Minutes').$next_on) == strtotime($date))) logic_setOutput($id,5,1);
                            }else {
                                logic_setOutput($id,1,' ');
                                logic_setOutput($id,2,' ');
                                logic_setOutput($id,3,0);
                                logic_setOutput($id,4,' ');
                                logic_setOutput($id,5,0);
                            #}
                        if ($zus == 1) {
                            if ($next_off != 0 && (strtotime($next_off) > strtotime($date))) {logic_setOutput($id,6,date("d.m.Y H:i", strtotime($next_off)));}else {logic_setOutput($id,6,' ');}
                            if ($next_off != 0 && (strtotime(($off3.'Minutes').$next_off) > strtotime($date))) {logic_setOutput($id,7,date("d.m.Y H:i", strtotime(($off3.'Minutes').$next_off)));}else {logic_setOutput($id,7,' ');}
                            if ($next_off != 0 && (strtotime(($off3.'Minutes').$next_off) == strtotime($date))) logic_setOutput($id,8,1);
                            if ($next_off != 0 && (strtotime(($off4.'Minutes').$next_off) > strtotime($date))) {logic_setOutput($id,9,date("d.m.Y H:i", strtotime(($off4.'Minutes').$next_off)));}else {logic_setOutput($id,9,' ');}
                            if ($next_off != 0 && (strtotime(($off4.'Minutes').$next_off) == strtotime($date))) logic_setOutput($id,10,1);
                            }else {
                                logic_setOutput($id,6,' ');
                                logic_setOutput($id,7,' ');
                                logic_setOutput($id,8,0);
                                logic_setOutput($id,9,' ');
                                logic_setOutput($id,10,0);
                                }
                    }
                }
        }
        
        ?>
        ###[/LBS]###
        
        
        ###[EXEC]###
        <?
        
        ?>
        ###[/EXEC]###

        Kommentar


          Danke damit läuft V1.55 nun mit dem 602er LBS zumindest!

          Die Einschränkung auf nur eine Schaltzeit ist aber unschön. Mal sehen wie sich das hier weiterentwickelt. Muss dann halt ggf. den harten Weg auf die 1.54 zurückgehen.


          Gruß
          Andi

          Kommentar


            Danke fürs Update, läuft perfekt!

            Kommentar


              Hallo gaert,
              vielen Dank für das tolle Weihnachtsgeschenk, läuft soweit ohne Probleme bei mir.

              Kommentar


                Danke gaert für das Weihnachtsgeschenk!

                Kommentar


                  Hallo gaert ,

                  was genau ist denn der Unterschied zwischen einer Sequenz mit einer Wartezeit gleich 0 und einem Makro?
                  Außerdem steht in der Hilfe zu den Makros zusätzlich, dass die Reihenfolge der Befehle nicht geändert werden könne.
                  Im Kontext mit den Sequenzen hört sich das so an, als wenn das bei den Sequenzen möglich sei.
                  Habe ich etwas übersehen bei den Sequenzen?

                  Kommentar


                    Hallo,

                    hab auch eine Frage...

                    Das mit den Macros ist ja schön und gut.. aber kann ich jetzt aus der Visu raus nicht mehr, zb. meinem Rollo einen mir beliebigen Wert zuweisen ? Gehen jetzt nur noch vordefinierte Macros ??
                    Das finde ich einen Schritt zurück.. ich will ja nicht immer ein Macro generieren müssen (über die Adminoberfläche)
                    nur weil ich jetzt meinen Rollo nicht mehr auf 80 sondern auf 90% fahren will ?!?
                    oder überseh ich da irgendwas ?

                    Gruß Martin
                    Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

                    Kommentar


                      Ist so...... Du brauchst ja nur 20 Makros anlegen, dann hast Du alle 5% Schritte verfügbar Oder du brauchst einen LBS "Makroeditor"
                      Das wäre zwar nicht das Problem, aber scheinbar ändert sich immer wieder was an der Datenbankstruktur, so das es weder Spass noch Sinn macht etwas in dieser Richtung zu schreiben.
                      Zuletzt geändert von vento66; 23.12.2017, 13:42.

                      Kommentar


                        Ich hab gerade mal versucht da was anzulegen.. ist schon machbar.. aber ich finde es überaus umständlich..
                        Erst für jeden erdenklichen Zustand ein Macro anlegen.. dann das Macro der Zeitschaltuhr zuweisen.. Dann alles aktivieren... und erst dann kann man sich das gewünschte in der ZSU auswählen..

                        Der Wahnsinns Vorteil erschließt sich mir hier noch nicht.. denn wenn ich fixe Werte vergeben hätte wollen, hätte ich das auch direkt unter "Fixe Schaltzeiten" eintragen können... Das schöne war doch, das ich so frei Werte wählen konnte..
                        nach belieben...

                        Gruß Martin
                        Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

                        Kommentar


                          Sorry - ich kapier es gerade nicht. Wenn ich bereits eine ZSU (oder mehrere) im Einsatz habe und ich mache ein Update, funktionieren diese dann danach noch oder muss ich die Schaltbefehle von KO zu Macro dann neu zuweisen?

                          Kommentar


                            Ich musste ein paar Makros anlegen und zuweisen und danach die Schaltzeiten neu eingeben.
                            Nur die über die Admin Oberfläche erstellten Schaltzeiten bleiben erhalten, dort werden die Makros automatisch angelegt.
                            Die automatisch angelegten Makros hab ich umbenannt, da diese nur die Edomi KO-Nummer als Namen hatten.
                            Bei mir war es ca. in 30 Minuten erledigt.

                            Kommentar


                              Bei mir waren es jetzt auch nur ca. 30-45 min. Aber jetzt kann ich nur noch zb. Rollo auf 0; 80 und 100% Fahren, weil ich nicht 10 Macros je Rollo anlegen will...
                              vorher könnt ich beliebige Werte angeben... einfach so...

                              seh eh halt den Vorteil nicht..
                              Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

                              Kommentar


                                schade, dass der Visu Import nicht kam

                                Kommentar

                                Lädt...
                                X