Danke! In Zukunft warte ich wieder ein paar Tage mit dem updaten...
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
-
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ä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ä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ügt V0.6 - Codeoptimierung das die nächsten Schaltzeiten auch über Jahre entfernt angezeigt werden - Bei ausgeschalteter ZSU werden die Werte nicht mehr auf 31.12. des nächsten Jahres gesetzt sondern auf ein Leerzeichen - Fehlerbehebung bei nicht vorhandenen Schaltzeiten - A11 Name der ZSU hinzugefü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
-
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ß MartinDie 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ügbarOder 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ß MartinDie Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.
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
Kommentar