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

[NEUHEIT] Advanced Timer mit Ausgabe Restzeit, beliebige Zeitbasis, etc.

Hier stellen Foristen und Kunden Ihre EIGENEN Logikbausteine vor. Diese Logikbausteine stehen jedem im Rahmen der vom Autor eingeräumten / genannten Lizenz zur Verfügung.
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
Antworten

Ersteller
Robert_Mini
Reactions:
Beiträge: 3741
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1164 Mal
Danksagung erhalten: 2058 Mal

Advanced Timer mit Ausgabe Restzeit, beliebige Zeitbasis, etc.

#1

Beitrag von Robert_Mini »

Hallo zusammen!

Zeit wieder einmal eine Custom Logik zu teilen. Damit wird auch der FR (mein eigener): viewtopic.php?f=9&t=1085 gelöst.

Funktion:
Der Baustein basiert auf den Standard-Timer-Bausteinen und ergänzt diese um eine Ausgabe der abgelaufenen Zeit bzw. verbleibenden Zeit.
Mittels Umrechnungsfaktor kann die Zeiteinheit der Ein-/Ausgänge angegeben werden. Zusätzlich kann man in der gleichen Zeiteinheit ein zyklisches Senden während aktivem Timer gesetzt werden.

Anwendungsbeidpiel:
Ich verwende solche Timer an mehreren Stellen, zB. Bewässerungslogik.
Während dem Ablauf des Timers (=Zeitprogramm), soll je Bewässerungskreis auch die abgelaufene Zeit in der Visu angezeigt werden.
Auch die verbeibende Zeit (Restdauer des Programmes) soll laufend aktualisiert werden.

Eingänge:
  • Start/Stop: Der Timer wird bei Empfang eines "True" gestartet.
  • Faktor Zeit: Damit werden die angegebenen Zeitgrößendie intern in Sekunden umgerechnet.
    • Faktor 1 für Sekunden
    • Faktor 60 für Minuten
    • Faktor 3600 für Stunden
    • Faktor 86400 für Tage
  • Dauer: Legt fest, wie lange der Timer aktiv sein soll.
  • Sendeintervall: Gibt an, wie oft die aktuellen Stati gesendet werden sollen.
    Hinweis: Soll auch der Ausgang "Timer aktiv" zyklisch gesendet werden, muss die Sendeoption auf "a" (Always" gesetzt werden).
Ausgänge:
  • Timer aktiv: Zeit an, ob der Timer aktiv ist
  • Zeit abgelaufen: Gibt jene Zeit aus, die bereits abgelaufen ist
  • Dauer verbleibend: Gibt jene Zeit aus, die bis zum Ablauf des TImers verbleibt.
Der Baustein:

Bild

Ein Grafana Ausschnitt, schön zu sehen, dass bei inaktivem Timer auch keine Werte gesendet werden:

Bild

Code: Alles auswählen

/**===========================================================
Timer mit Ausgabe abgelaufener Zeit und Restzeit
============================================================*/
{
  "Input": [
        ["Start/Stop","Timer starten mit Wert 1","$I_Timer","c"],
	    ["Faktor Zeit","Umrechungsfaktor [sec/Zeiteinheit] legt die Zeiteinheit für Dauer und Sendeintervall fest. zb 1 für Sekunden, 60 für Minuten, 3600 für Stunden","$I_Faktor","c"],
	    ["Dauer","Nachtbetrieb","$I_Dauer","c"],
	    ["Sendeintervall","Zyklisch Senden wenn Timer=True","$I_Interval","c"]
  ],
  "Output": [
		["Timer aktiv","Ausgang","$State","c"],
		["Zeit abgelaufen","Dauer","$Time","c"],
		["Dauer verbleibend","Restdauer","$Time_Left","c"]
  ],
  "Level": [
		["$I_Timer","bool",false],
		["$State","bool",false],
		["$I_Dauer","float",0],
		["$Dauer_sec","float",0],
		["$Time_sec","float",0.0],
		["$Time","float",0.0],
		["$Time_Left_sec","float",0.0],
		["$Time_Left","float",0.0],
		["$I_Interval","float",30.0],
		["$Interval_sec","float",30.0],
		["$I_Faktor","float",1.0],
		["$Konst1","float",1.0],
		["$Konst0","float",0.0],
        ["$Val_ok","bool",false]
  ],
  "Module": [
	  // Umrechnung in Sekunden
		["Polynomial", "$I_Faktor", "$Dauer_sec",["$Konst0","$I_Dauer"]],
		["Polynomial", "$I_Faktor", "$Interval_sec",["$Konst0","$I_Interval"]],
	  // Timer und Stopuhr in sec starten bzw. Zeit aktualisieren	
		["Monoflop","$I_Timer","-$I_Timer","$State","$Dauer_sec",2],
		["Stopwatch","$I_Timer", "$Time_sec"],
	  // Restzeit berechnen
		["Polynomial", "$Konst1", "$Time_Left_sec",["$Dauer_sec","-$Time_sec"]],
	  // Zyklischer Trigger, wenn Timer aktiv
		["Clocksignal","$I_Timer",0,"$Interval_sec"],
      //
	  // Ausgabewerte in Eingabeeinheit umrechnen
	    ["Limiter","$Time_Left","$Time_Left","$Val_ok",["$Konst0", "$Dauer_sec"]],
	    ["Ratio", "$Time_Left_sec", "$Time_Left", "$I_Faktor"],
	    ["Ratio", "$Time_sec", "$Time", "$I_Faktor"]
  ]
}
/** 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. */
Nutzungsrechte:
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.

Viel Spaß damit und gerne Rückmeldung, wenn was fehlt oder euch die Sache gefällt.
Robert
Zuletzt geändert von Robert_Mini am So Jan 12, 2020 9:13 pm, insgesamt 1-mal geändert.
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297

StefanW
Elaborated Networks
Reactions:
Beiträge: 9689
Registriert: So Aug 12, 2018 9:27 am
Wohnort: Frauenneuharting
Hat sich bedankt: 4831 Mal
Danksagung erhalten: 7632 Mal
Kontaktdaten:

#2

Beitrag von StefanW »

Hervorragend!

Danke dass Du Deine tolle Arbeit mit uns teilst. Jetzt würde ich mir nur noch wünschen, dass sich noch viele weitere Autoren finden

lg

Stefan
Stefan Werner
Product Owner für Timberwolf Server, 1-Wire und BlitzART
Bitte WIKI lesen. Allg. Support nur im Forum. Bitte keine PN
Zu Preisen, Lizenzen, Garantie, HW-Defekt an service at elabnet dot de

Link zu Impressum und Datenschutzerklärung oben.

Chiudalla
Reactions:
Beiträge: 23
Registriert: Do Mär 10, 2022 8:06 am
Hat sich bedankt: 18 Mal
Danksagung erhalten: 1 Mal

#3

Beitrag von Chiudalla »

Robert_Mini hat geschrieben: So Jan 12, 2020 2:55 pm Ausgänge:
  • Timer aktiv: Zeit an, ob der Timer aktiv ist
  • Zeit abgelaufen: Gibt jene Zeit aus, die bereits abgelaufen ist
  • Dauer verbleibend: Gibt jene Zeit aus, die bis zum Ablauf des TImers verbleibt.
Bravo, Danke für den Code.

Gäbe es eine Möglichkeit die Ausgabe (in Float) zu Text (also String) zu konvertieiren? Hintergrund ist die Anzeige in einem MDT Glastaster, der nur String als Datentyp entgegen nimmt.

VIele Grüße
Mat
TWS 3500 #735 | VPN offen | Reboot erlaubt
Version 3.5.1 - Rock The House

Ersteller
Robert_Mini
Reactions:
Beiträge: 3741
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1164 Mal
Danksagung erhalten: 2058 Mal

#4

Beitrag von Robert_Mini »

Hallo Mat!

Meines Wissens nach passiert automatisch, wenn du an den Float-Ausgang einen String verbindest.
Hast du das schon probiert?

lg
Robert
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297
Antworten

Zurück zu „Zusätzliche Logikbausteine“