UPGRADE IP 9 verfügbar!
Timberwolf VISU jetzt mit NEUEM Layout Editor
Freie Anordnung, Reihenfolge und Größe der Widgets - viele weitere Verbesserungen
Infos im Wiki: https://elabnet.atlassian.net/l/cp/06SeuHRJ
NEU! Insider & Leistungsmerkmale FÜR ALLE freigeschaltet
Damit kann nun jeder das Upgrade vornehmen und VISU & IFTTT testen. Alle Info hier: viewtopic.php?f=8&t=5074
Timberwolf VISU jetzt mit NEUEM Layout Editor
Freie Anordnung, Reihenfolge und Größe der Widgets - viele weitere Verbesserungen
Infos im Wiki: https://elabnet.atlassian.net/l/cp/06SeuHRJ
NEU! Insider & Leistungsmerkmale FÜR ALLE freigeschaltet
Damit kann nun jeder das Upgrade vornehmen und VISU & IFTTT testen. Alle Info hier: viewtopic.php?f=8&t=5074
[DISKUSSION] Diskussion zu ZSU-Baustein
Forumsregeln
- Denke bitte an aussagekräftige Titel und gebe dort auch die [Firmware] an. Wenn ETS oder CometVisu beteiligt sind, dann auch deren Version
- Bitte mache vollständige Angaben zu Deinem Server, dessen ID und dem Online-Status in Deiner Signatur. Hilfreich ist oft auch die Beschreibung der angeschlossener Hardware sowie die verwendeten Protokolle
- Beschreibe Dein Projekt und Dein Problem bitte vollständig. Achte bitte darauf, dass auf Screenshots die Statusleiste sichtbar ist
- Bitte sei stets freundlich und wohlwollend, bleibe beim Thema und unterschreibe mit deinem Vornamen. Bitte lese alle Regeln, die Du hier findest: https://wiki.timberwolf.io/Forenregeln
-
- Reactions:
- Beiträge: 3741
- Registriert: So Aug 12, 2018 8:44 am
- Hat sich bedankt: 1164 Mal
- Danksagung erhalten: 2058 Mal
Diskussion zu ZSU-Baustein
Hallo Markus!
Abgetrennt von hier: viewtopic.php?f=24&t=2516
Danke übrigens für den Denkanstoß!
Ich werde damit kurzfristig eine Custom Logik für eine ZSU erstellen. Da ist dann die Berechnung der Weckzeit integriert + Eingang h/min für Ein und Aus, Sperreingang.
Lg
Robert
Abgetrennt von hier: viewtopic.php?f=24&t=2516
Danke übrigens für den Denkanstoß!
Ich werde damit kurzfristig eine Custom Logik für eine ZSU erstellen. Da ist dann die Berechnung der Weckzeit integriert + Eingang h/min für Ein und Aus, Sperreingang.
Lg
Robert
Zuletzt geändert von Robert_Mini am Mi Dez 16, 2020 10:42 pm, insgesamt 1-mal geändert.
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297
-
- Reactions:
- Beiträge: 3741
- Registriert: So Aug 12, 2018 8:44 am
- Hat sich bedankt: 1164 Mal
- Danksagung erhalten: 2058 Mal
Kurzer Zwischenstand - die Logik schaltet schon korrekt ein...
Robert
Robert
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297
-
- Reactions:
- Beiträge: 3741
- Registriert: So Aug 12, 2018 8:44 am
- Hat sich bedankt: 1164 Mal
- Danksagung erhalten: 2058 Mal
Kleiner Teaser, weil ich mich grad selbst drüber freue. Bin noch am Initialisieren nach Speichern/Reboot, dann gibt's bald eine ZSU.
lg
Robert
lg
Robert
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297
-
- Reactions:
- Beiträge: 3741
- Registriert: So Aug 12, 2018 8:44 am
- Hat sich bedankt: 1164 Mal
- Danksagung erhalten: 2058 Mal
Hallo Sven! Hallo Markus!
Ich hab gestern befürchte ich das gleiche nochmal umgesetzt.
Das Problem der Einschaltzeit/Ausschaltzeit Reihenfolge habe ich gerade noch gelöst.
Das Modul nutzt die Wakeup Funktion, das macht vieles deutlich einfacher (Sein Ausgang ist im Prinzip ein Comperator auf UTime, aber mit integriertem Timer, der zu diesem Zeitpunkt dann triggert).
Außerdem habe ich das Verhalten soweit erweitert, dass sofort beim Speichern oder Reboot die Weckzeiten gesetzt werden.
Über die Sendeoptionen ist ein Senden bei Änderung 1x EIN, 1x AUS (mit c) oder zyklisch (ct) mit zusätzlichem Trigger (die Standardlösung am +).
Auch ein Enable hab ich integriert. Sekunden fehlen noch.
Das Prinzip ist etwas anders und ich nutze mehr die verfügbaren Module, wo ihr selbst per clocksignal einen Trigger erzeugt.
Schaut euch das mal an, ob wir hier eine gemeinsame Lösung draus machen können, denn am Ende sind die beiden Lösungen am Ausgang gleichwertig. Der Baustein schaltet zu exakten Sekunde.
Kurz zur Funktion: Beim Speichern wird letztes Mitternacht berechnet, ab dann wird jeweils Mitternacht per Cron gespeichert. Die Weckzeit wird dann mit UTime Mitternacht + h*3600 + min*60 berechnet.
Den Rest erledigt Wakeup.
lg
Robert
Ich hab gestern befürchte ich das gleiche nochmal umgesetzt.
Das Problem der Einschaltzeit/Ausschaltzeit Reihenfolge habe ich gerade noch gelöst.
Das Modul nutzt die Wakeup Funktion, das macht vieles deutlich einfacher (Sein Ausgang ist im Prinzip ein Comperator auf UTime, aber mit integriertem Timer, der zu diesem Zeitpunkt dann triggert).
Außerdem habe ich das Verhalten soweit erweitert, dass sofort beim Speichern oder Reboot die Weckzeiten gesetzt werden.
Über die Sendeoptionen ist ein Senden bei Änderung 1x EIN, 1x AUS (mit c) oder zyklisch (ct) mit zusätzlichem Trigger (die Standardlösung am +).
Auch ein Enable hab ich integriert. Sekunden fehlen noch.
Das Prinzip ist etwas anders und ich nutze mehr die verfügbaren Module, wo ihr selbst per clocksignal einen Trigger erzeugt.
Schaut euch das mal an, ob wir hier eine gemeinsame Lösung draus machen können, denn am Ende sind die beiden Lösungen am Ausgang gleichwertig. Der Baustein schaltet zu exakten Sekunde.
Kurz zur Funktion: Beim Speichern wird letztes Mitternacht berechnet, ab dann wird jeweils Mitternacht per Cron gespeichert. Die Weckzeit wird dann mit UTime Mitternacht + h*3600 + min*60 berechnet.
Den Rest erledigt Wakeup.
lg
Robert
Code: Alles auswählen
/**===========================================================
Kommentar
============================================================*/
{
"Level":[
["$I_hour_on","integer",0],
["$I_min_on","integer",0],
["$I_hour_off","integer",0],
["$I_min_off","integer",0],
["$I_Enable","bool",false],
//
["$Output_on","bool",true],
["$Output_off","bool",false],
//
["$Utime","integer",0],
["$Utime_Midnight1","integer",0],
["$Utime_Midnight2","integer",0],
["$Utime_on","integer",0],
["$Utime_off","integer",0],
["$Utime_Ref","integer",0],
["$Utime_temp","integer",0],
["$Utime_hour","integer",0],
["$Utime_min","integer",0],
["$Utime_sec","integer",0],
//
["$Set_Utime_Midnight","bool",false],
["$Set_on","bool",false],
["$Set_off","bool",false],
["$SetCase1","bool",false],
["$SetCase2","bool",false],
["$Set","bool",false],
["$Wake_on","bool",false],
["$Wake_off","bool",false],
["$Wake_on_Last","bool",false],
["$Wake_off_Last","bool",false],
["$Wake_on_Trigger","bool",false],
["$Wake_off_Trigger","bool",false],
// Init nach Reboot
["$Enable","bool",false],
["$State","bool",false],
["$StateOut","bool",false],
["$Delay","float",5.0],
["$TimerStatus","bool",false],
["$SelectCase","bool",false],
["$Konst1","integer",1],
["$Konst0","integer",0],
["$Konst60","integer",60],
["$Konst3600","integer",3600],
["$Konst1_","float",1.0],
["$Konst0_","float",0.0],
["$KonstTrue","bool",true],
["$KonstFalse","bool",false],
["$Cron_Midnight","string","0 0 0 * * *"]
],
"Module":[
["Localtime",0,"$Utime","$Utime_sec","$Utime_min","$Utime_hour",0,0,0,0,0,0],
["Latch","$StateOut","$State","$KonstTrue",0],
// Logik beim speichern bzw. Reboot Aufrufen
["Clocksignal","-$State",0,"$Delay"],
["Latch","$Utime","$Utime_Ref","-$State",0],
// und Utime_Midnight2 initialisieren (State=0)
["Polynomial", "$Utime_hour", "$Utime_temp",["$Utime_Ref", "-$Konst3600"]],
["Polynomial", "$Utime_min", "$Utime_temp",["$Utime_temp", "-$Konst60"]],
["Polynomial", "$Utime_sec", "$Utime_Midnight2",["$Utime_temp", "-$Konst1"]],
["Latch","$Utime_Midnight2","$Utime_Midnight1","-$State",0],
// State nach Start auf 1 setzen
["Latch","$KonstTrue","$StateOut","-$State",0],
// Zeit übernehmen, wenn Cron getriggert hat
["Cron","$KonstTrue","$Set_Utime_Midnight",0,"$Cron_Midnight"],
["Latch","$Utime","$Utime_Midnight1","$Set_Utime_Midnight",0],
// Weckzeit ON berechnen
["Polynomial", "$I_hour_on", "$Utime_temp",["$Utime_Midnight1", "$Konst3600"]],
["Polynomial", "$I_min_on", "$Utime_on",["$Utime_temp", "$Konst60"]],
// Weckzeit OFF berechnen
["Polynomial", "$I_hour_off", "$Utime_temp",["$Utime_Midnight1", "$Konst3600"]],
["Polynomial", "$I_min_off", "$Utime_off",["$Utime_temp", "$Konst60"]],
// Wecker auswertern => Liefert dauerhaft true, wenn t>t_wecker
["Wakeup","$Utime_on","$Wake_on"],
["Wakeup","$Utime_off","$Wake_off"],
// Ein/Aus berechnen abhängig davon ob EIN vor AUS oder AUS vor EIN
["Comparator", "$Utime_on", "$SelectCase", "$Utime_off"],
["And" , ["$Wake_on","$Wake_off","$SelectCase","$I_Enable"], "$SetCase1"],
["And" , ["$Wake_on","-$Wake_off","-$SelectCase","$I_Enable"], "$SetCase2"],
["Multiplexer",["$SetCase1","$SetCase2"],"$Set","-$SelectCase"]
],
"Input":[
["Einschalten Stunde","Input","$I_hour_on","c"],
["Einschalten Minute","Input","$I_min_on","c"],
["Ausschalten Stunde","Input","$I_hour_off","c"],
["Ausschalten Minute","Input","$I_min_off","c"],
["Enable","Input","$I_Enable","c"]
],
"Output":[
["Einschalten","Output","$Set","c"],
// ["Einschalten","Output","$Output_on","x"]
// ["Ausschalten","Output","$Output_off","x"],
["Debug Utime_Midnight1","","$Utime_Midnight1","a"]
]
}
Zuletzt geändert von Robert_Mini am Mi Dez 16, 2020 10:36 pm, insgesamt 1-mal geändert.
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297
-
- Reactions:
- Beiträge: 3741
- Registriert: So Aug 12, 2018 8:44 am
- Hat sich bedankt: 1164 Mal
- Danksagung erhalten: 2058 Mal
Ich habe den Baustein praktisch fertig. Allerdings habe ich den Absatz oben mit getrenntem Ausgang für EIN/AUS aufgegeben.
Daher hier die Frage - braucht das jemand: EIN auf GA1, AUS auf GA2 wie ich das im Bild oben hatte (bei einer GA verbindet man auf beide Ausgänge das gleiche Objekt)? Ich sehe eigentlich selbst keine Notwendigkeit mehr...
Ansonsten bleibt im Prinzip die gleiche Logik wie "Zeitfenster V1.2" hier: viewtopic.php?f=65&t=2348 mit etwas optimierten Modulen und "einfacher".
Danke für eure Hinweise.
Robert
Daher hier die Frage - braucht das jemand: EIN auf GA1, AUS auf GA2 wie ich das im Bild oben hatte (bei einer GA verbindet man auf beide Ausgänge das gleiche Objekt)? Ich sehe eigentlich selbst keine Notwendigkeit mehr...
Ansonsten bleibt im Prinzip die gleiche Logik wie "Zeitfenster V1.2" hier: viewtopic.php?f=65&t=2348 mit etwas optimierten Modulen und "einfacher".
Danke für eure Hinweise.
Robert
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297
-
- Reactions:
- Beiträge: 1876
- Registriert: Di Okt 09, 2018 9:26 am
- Hat sich bedankt: 635 Mal
- Danksagung erhalten: 775 Mal
Ui, krass Robert. Wieso habe ich das Gefühl, dass Dein Tag immer mehr Stunden hat
Hattest Du den Baustein neu entworfen, weil Du Dich nicht an diesen erinnert hattest oder weil Dir daran was nicht gefiel und wenn Letzteres, was gefiel Dir nicht? Icch hatte den Eindruck, dass der Zeitfensterbasutein V1.2 z.B. auch nach einem Speichern oder Reboot funktionierte...
Auch für das Thema Schalten über Mitternach hinweg, war mir jetzt heut morgen eine Lösung eingefallen, die ich gleich mal realisiere. Wenn ich es richtig verstehe, machst Du es untern Strich ähnlich, nämlich mit einer Abfrage und Negierung des Ausgangs, oder?
Ich tue mich gerade noch etwas schwer jedes Modul und jeden Parameter nachzuvollziehen in Deinem Code, aber ich habe ihn einfach mal getestet. Folgendes ist mir aufgefallen:
Der Ausgang sollte glaube ich eher auf das Verhalten t oder ct umgestellt werden damit man auch zyklisch triggern kann.
Wenn ich einen Trigger1-Eingang definiere, scheint dieser dennoch erst nach dem ersten Auslösen (als dem ersten mal True auf dem Ausgang) aktiv zu sein... das verstehe ich gerade noch nicht.
Hattest Du den Baustein neu entworfen, weil Du Dich nicht an diesen erinnert hattest oder weil Dir daran was nicht gefiel und wenn Letzteres, was gefiel Dir nicht? Icch hatte den Eindruck, dass der Zeitfensterbasutein V1.2 z.B. auch nach einem Speichern oder Reboot funktionierte...
Auch für das Thema Schalten über Mitternach hinweg, war mir jetzt heut morgen eine Lösung eingefallen, die ich gleich mal realisiere. Wenn ich es richtig verstehe, machst Du es untern Strich ähnlich, nämlich mit einer Abfrage und Negierung des Ausgangs, oder?
Ich tue mich gerade noch etwas schwer jedes Modul und jeden Parameter nachzuvollziehen in Deinem Code, aber ich habe ihn einfach mal getestet. Folgendes ist mir aufgefallen:
Der Ausgang sollte glaube ich eher auf das Verhalten t oder ct umgestellt werden damit man auch zyklisch triggern kann.
Wenn ich einen Trigger1-Eingang definiere, scheint dieser dennoch erst nach dem ersten Auslösen (als dem ersten mal True auf dem Ausgang) aktiv zu sein... das verstehe ich gerade noch nicht.
VG, Sven - TWS 950Q ID:335 & 291, VPN offen, Reboot OK
-
- Reactions:
- Beiträge: 1876
- Registriert: Di Okt 09, 2018 9:26 am
- Hat sich bedankt: 635 Mal
- Danksagung erhalten: 775 Mal
So habe jetzt mal den Zeitfensterbaustein in V1.3 umgesetzt mit Erkennung, ob der gesetzte Zeitraum über Mitternacht geht:
Code: Alles auswählen
/**
* Zeitfenster
* Der Logikbaustein sendet TRUE, wenn die aktelle Uhrzeit zwischen den beiden angegebenen Zeiten liegt.
* Davor und danach wird FALSE gesendet.
* Über Zyklus [s] kann gesteuert werden, wie oft die Prüfung stattfindet und der Ausgangswert ggfs.
* aktualisiert wird.
*
* Nutzungsrechts: Der Schöpfer dieser Custom Logik überträgt die Nutzungsrechte gemäß der TOLL
* ("Timberwolf Open Logikblock License") die unter https://wrgt.news/TOLL zum Download zur Verfügung steht."
*
* Erstellt am 12.08.2020 von Markus Großmann
*
* ChangeLog:
* V1.3 (17.12.2020): Baustein funktioniert auch, wenn das Zeitfenster über Mitternacht definiert ist, also wenn VON-Zeit > BIS-Zeit (edit Robosoc)
* V1.2 (13.08.2020): optionaler zyklischer Sendetakt, output parameter t statt c (edit Robosoc)
* V1.1 (13.08.2020): Ausgang wird nun sekundengenau geschaltet
* V1.0 (13.08.2020): Initial Release
*/
{
"_Meta": { // Optional
"Description": "Zeitfenster",
"Version": "1.2",
"Icon": "" // format: "data:image/svg+xml;base64,ENCODED_FILE"
},
"Input": [
["Stunde von","Stunde von", "$h_from", "c"],
["Minute von","Minute von", "$m_from", "c"],
//["Sekunde von","Sekunde von", "$s_from", "c"],
["Stunde bis","Stunde bis", "$h_to", "c"],
["Minute bis","Minute bis", "$m_to", "c"],
//["Sekunde bis","Sekunde bis", "$s_to", "c"],
["Zyklischer Sendeinterval", "optionaler Sendetakt in Sekunden, 0 = deaktiv: Ausgang wird nur bei Änderung gesendet, bei Wert > 0 wird der Ausgang zyklisch entrechend gesendet","$interval","c"]
],
"Output": [
["Ausgang","Wenn aktuelle Zeit im Zeitfenster, ausgang = 1, sonst 0", "$CurrIsInInterval", "t"]
],
"Level": [
["$ltime","integer", 0],
["$h_from","integer", 0],
["$m_from","integer", 0],
["$s_from","integer", 0],
["$h_to","integer", 0],
["$m_to","integer", 0],
["$s_to","integer", 0],
["$h_curr","integer", 0],
["$m_curr","integer", 0],
["$s_curr","integer", 0],
["$TimeFrom","integer",0],
["$TimeTo","integer",0],
["$TimeBufferNeg","integer",0],
["$TimeCurrent","integer",0],
["$CurrIsAfterFrom","bool", false],
["$CurrIsAfterTo","bool", false],
["$CurrIsInInterval","bool", false],
["$Const1","integer",1],
["$Const60","integer",60],
["$Const86400", "integer", 86400],
["$Period","integer",60],
["$ConstTRUE","bool", true],
["$SecondsTillFrom","integer",0],
["$SecondsTillTo","integer",0],
["$SecondsTillNext","integer",1],
["$SecondsTillFrom_GT_Zero", "bool", false],
["$SecondsTillTo_GT_Zero", "bool", false],
["$From_GT_To", "bool", false],
["$interval", "integer", 0],
["$Negieren", "bool", false]
],
"Module": [
// Aktuelle Uhrzeit
["Localtime",0,"$ltime","$s_curr","$m_curr","$h_curr",0,0,0,0,0,0],
["Polynomial", "$Const60", "$TimeCurrent", ["$s_curr","$m_curr","$h_curr"]],
// Zeit Von in Sekunden
["Polynomial", "$Const60", "$TimeFrom", ["$s_from","$m_from","$h_from"]],
// Zeit Bis in Sekunden
["Polynomial", "$Const60", "$TimeTo", ["$s_to","$m_to","$h_to"]],
// Prüfen, ob TimeFrom > TimeTo, sonst tauschen und Ausgang negieren
["Comparator", "$TimeFrom" , "$Negieren" , "$TimeTo" ],
["Latch","$TimeTo","$TimeBufferNeg","$Negieren",0],
["Latch","$TimeFrom","$TimeTo","$Negieren",0],
["Latch","$TimeBufferNeg","$TimeFrom","$Negieren",0],
// Wie lange noch bis Zeit von?
["Polynomial", "$Const1", "$SecondsTillFrom", ["$TimeFrom", "-$TimeCurrent"]],
["Comparator", "$Const1", "$SecondsTillFrom_GT_Zero", "$SecondsTillFrom"],
["Polynomial", "$SecondsTillFrom_GT_Zero", "$SecondsTillFrom", ["$SecondsTillFrom", "$Const86400"]],
// Wie lange noch bis Zeit bis?
["Polynomial", "$Const1", "$SecondsTillTo", ["$TimeTo", "-$TimeCurrent"]],
["Comparator", "$Const1", "$SecondsTillTo_GT_Zero", "$SecondsTillTo"],
["Polynomial", "$SecondsTillTo_GT_Zero", "$SecondsTillTo", ["$SecondsTillTo", "$Const86400"]],
// Was ist früher?
["Comparator", "$SecondsTillFrom" , "$From_GT_To" , "$SecondsTillTo" ],
["Multiplexer", ["$SecondsTillFrom", "$SecondsTillTo"],"$SecondsTillNext", "$From_GT_To"],
// Timer setzen
["Clocksignal","$ConstTRUE",0,"$SecondsTillNext"],
// zyklischer Sendetimer
["Clocksignal","$ConstTRUE",0,"$interval"],
// Ergebniswert berechnen
["Comparator", "$TimeFrom" , "$CurrIsAfterFrom" , "$TimeCurrent" ],
["Comparator", "$TimeTo" , "$CurrIsAfterTo" , "$TimeCurrent" ],
["And", ["-$CurrIsAfterFrom", "$CurrIsAfterTo"], "$CurrIsInInterval"],
["Latch","-$CurrIsInInterval","$CurrIsInInterval","$Negieren",0]
]
}
VG, Sven - TWS 950Q ID:335 & 291, VPN offen, Reboot OK
-
- Reactions:
- Beiträge: 3585
- Registriert: So Aug 12, 2018 10:20 am
- Hat sich bedankt: 1253 Mal
- Danksagung erhalten: 1649 Mal
Na dann mal sehen was die Elabnet-Stefans dann noch draus machen können.
Grüße
Göran
#1 Timberwolf 2600 Velvet Red TWS #225 / VPN aktiv / Reboot OK
#2 Timberwolf 2600 Organic Silver TWS #438 / VPN aktiv / Reboot OK
#3 PBM 3 Kanäle, #4 Modbus-Extension
Göran
#1 Timberwolf 2600 Velvet Red TWS #225 / VPN aktiv / Reboot OK
#2 Timberwolf 2600 Organic Silver TWS #438 / VPN aktiv / Reboot OK
#3 PBM 3 Kanäle, #4 Modbus-Extension
-
- Reactions:
- Beiträge: 264
- Registriert: Mi Sep 05, 2018 11:49 pm
- Hat sich bedankt: 287 Mal
- Danksagung erhalten: 102 Mal
Hallo Robert,
mir würde ein Ausgang für Ein/Aus schon reichen. Der Baustein macht vieles einfacher und flexibler!!
mir würde ein Ausgang für Ein/Aus schon reichen. Der Baustein macht vieles einfacher und flexibler!!
Gruß Alan
TWS 2600 ID:190; VPN offen; Reboot nach Absprache, da Beschattung über Logikeditor aktiv!
TWS 2600 ID:190; VPN offen; Reboot nach Absprache, da Beschattung über Logikeditor aktiv!