NEU! UPGRADE IP 10 verfügbar!
Optimierte Darstellung von VISU Editor und VISU Client - sowie viele weitere Verbesserungen
Infos im Wiki: https://elabnet.atlassian.net/l/cp/8HzePCm3

Insider & Leistungsmerkmale FÜR ALLE freigeschaltet
Ab sofort kann jeder die neue VISU & IFTTT testen. Info: viewtopic.php?f=8&t=5074

Release V 4 am 15. Juni 2024
Es gibt nun einen fixen Termin. Info: viewtopic.php?f=8&t=5117

NEU! Ausführliches Video Tutorial zur IP 10
Jetzt werden alle Fragen beantwortet. Das Video: https://youtu.be/_El-zaC2Rrs

[NEUHEIT] Advanced Betriebsstundenzaehler

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: 3744
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1168 Mal
Danksagung erhalten: 2076 Mal

Advanced Betriebsstundenzaehler

#1

Beitrag von Robert_Mini »

Hallo zusammen!

Ein weiterer Bausteine ist fertig!

Funktion:
Der Baustein erweitert den Standard Betriebsstundenzaehler auf einen Tages/Monatszähler. Zusätzlich kann das zyklische Sendeintervall getrennt für Zustand Ein/Aus angegeben werden (Hintergrund: im Zustand Aus ändert sich der Zählerstand nicht, so dass ein selteneres Senden ausreichend ist)
2 Weitere Ausgänge senden nicht zyklisch, sondern nur beim Tages-Reset (zB zum Speichern in csv-File).

Anwendungsbeispiele:
Betriebsstundenzähler für Wärmepumpe, Waschmaschine, etc. - alle was seinen Status mit 0/1 auf den Bus sendet.

Eingänge:
  • Aktiv: Status des zu messenden Gerätes.
    Zyklisch Senden: Aktiviert das zyklische Senden
    Sendeintervall 1: Sendeintervall im Zustand EIN
    Sendeintervall 2: Sendeintervall im Zustand AUS
Ausgänge:
  • Betriebsstunden Tag: Tageszähler, wird um Mitternacht zurückgesetzt. Der Wert wird entsprechend Sendeintervall zyklisch und beim Statuswechsel des Eingangs "Aktiv" gesendet.
  • Betriebsstunden Monat: Monatszähler, wird bei Monatswechsel um Mitternacht zurückgesetzt. Der Wert wird entsprechend Sendeintervall zyklisch und beim Statuswechsel des Eingangs "Aktiv" gesendet.
  • Betriebsstunden Tag1: Tageszähler, sendet seinen Wert nur beim Reset.
  • Betriebsstunden Monat1: Monatszähler, sendet seinen Wert nur täglich beim Tagesreset.

Der Baustein:

Bild

Code: Alles auswählen

/**===========================================================
Betriebsstundenzähler für Tages-/Monatsbetriebsdauer 
============================================================*/
{
  "Input": [
        ["Aktiv","True wenn in Betrieb","$I_State","c"], 
		["Zyklisch Senden","Sendeintervalle aktivieren","$I_Interval_Enable","c"],
		["Sendeintervall 1","Sendeintervall im Zustand EIN","$I_Interval_On","c"],
		["Sendeintervall 2","Sendeintervall im Zustand AUS","$I_Interval_Off","c"]
  ],
  "Output": [
		["Betriebsstunden Tag","Betriebsdauer in h seit Tageswechsel","$Betriebsdauer_Tag","ct"],
		["Betriebsstunden Monat","Betriebsdauer in h seit Monatswechsel","$Betriebsdauer_MonatNeu","ct"],
		["Betriebsstunden Tag1","Betriebsdauer in h seit Monatswechsel, sendet 1x/Tag beim Reset","$Betriebsdauer_TagLast","c"],
		["Betriebsstunden Monat1","Betriebsdauer in h seit Monatswechsel, sendet 1x/Tag beim Reset","$Betriebsdauer_MonatLast","c"]
  ],
  "Level": [
		["$I_State","bool",false],
		["$Reset","bool",false],	
		["$ResetTag","bool",false],	
		["$ResetMonat","bool",false],	
		["$Betriebsdauer_Tag","float",0.11],
		["$Betriebsdauer_TagLast","float",0.0],
		["$Betriebsdauer_Monat","float",0.32],
		["$Betriebsdauer_MonatNeu","float",0.0],
		["$Betriebsdauer_MonatLast","float",0.0],
		["$KonstTrue","bool",true],
		["$KonstFalse","bool",false],
		["$Konst1","float",1.0],
		["$Konst0","float",0.0],
		["$I_Interval_Enable","bool",true],
		["$I_Interval_On","float",15.0],
		["$I_Interval_Off","float",60.0],
		["$I_Interval","float",10.0],
		["$Interval","float",3600.0],
		["$Interval_Reset","float",0.1],
		["$StartZeitTag","string","3 0 0 2-31 * *"],
		["$StartZeitMonat","string","3 0 0 1 * *"]
  ],
  "Module": [
		//Sendeintervall setzen (abhängig aktiv/inaktiv)
		["Multiplexer",["$I_Interval_Off","$I_Interval_On"],"$I_Interval","$I_State"],
		// Betriebsdauer aktualisieren
		["HobbsMeter","$I_State","$Betriebsdauer_Tag","$Reset"],
		
		// ResetTag auf 0 setzen (wurde im letzten Aufruf vom Cron aktiviert )
		["Multiplexer",["$ResetTag","$KonstFalse"],"$ResetTag","$ResetTag"],
		
		// Monatszaehler zurücksetzen und ResetMonat auf 0 setzen 
		["Multiplexer",["$Betriebsdauer_Monat","$Konst0"],"$Betriebsdauer_Monat","$ResetMonat"],
		["Multiplexer",["$ResetMonat","$KonstFalse"],"$ResetMonat","$ResetMonat"],
		
		// Timer für Reset Tag/Monat, sendet nochmal die letzten Werte und triggert einen erneuten Aufruf
		["Cron","$KonstTrue","$ResetTag",0,"$StartZeitTag"],
		["Cron","$KonstTrue","$ResetMonat",0,"$StartZeitMonat"],
		["Or" , ["$ResetTag" , "$ResetMonat"], "$Reset"],
		// Bei Reset nochmaligen Aufruf triggern => Intervall verkürzen!
		["Multiplexer",["$I_Interval","$Interval_Reset"],"$Interval","$Reset"],
		
		// Tageszähler laufend zum aktuellen Monatsstand (bis Vortag) addieren
		["Polynomial","$Konst1","$Betriebsdauer_MonatNeu",["$Betriebsdauer_Monat", "$Betriebsdauer_Tag"]],
		
		// Beim Triggern von Reset täglich Monatszaehler speichern
		["Multiplexer",["$Betriebsdauer_Monat","$Betriebsdauer_MonatNeu"],"$Betriebsdauer_Monat","$Reset"],
		// beim Reset letzten Tages-/Monatswert aktualisieren (und senden)
		["Multiplexer",["$Betriebsdauer_MonatLast","$Betriebsdauer_MonatNeu"],"$Betriebsdauer_MonatLast","$Reset"],
		["Multiplexer",["$Betriebsdauer_TagLast","$Betriebsdauer_Tag"],"$Betriebsdauer_TagLast","$Reset"],
	
		// Clocksignal für Sendeintervall
		["Clocksignal","$I_Interval_Enable",0,"$Interval"]
  ]
}


/** 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.

Falls wer einen freiwilligen Beitrag zur Motivation leisten will: Klick

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 Feb 09, 2020 10:52 am, insgesamt 1-mal geändert.
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297

Ersteller
Robert_Mini
Reactions:
Beiträge: 3744
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1168 Mal
Danksagung erhalten: 2076 Mal

#2

Beitrag von Robert_Mini »

Hallo zusammen!

Ich habe vor einigen Wochen eine Anfrage bezüglich Erweiterung um einen Jahreszähler bekommen und diesen Wunsch umgesetzt.
Betriebsstundenzähler.png

Code: Alles auswählen

{
  "Input": [
        ["Aktiv","True wenn in Betrieb","$I_State","c"], 
		["Zyklisch Senden","Sendeintervalle aktivieren","$I_Interval_Enable","c"],
		["Sendeintervall 1","Sendeintervall im Zustand EIN","$I_Interval_On","c"],
		["Sendeintervall 2","Sendeintervall im Zustand AUS","$I_Interval_Off","c"]
  ],
  "Output": [
		["Betriebsstunden Tag","Betriebsdauer in h seit Tageswechsel","$Betriebsdauer_Tag","ct"],
		["Betriebsstunden Monat","Betriebsdauer in h seit Monatswechsel","$Betriebsdauer_MonatNeu","ct"],
        ["Betriebsstunden Jahr","Betriebsdauer in h seit Jahresswechsel","$Betriebsdauer_JahrNeu","ct"],
		["Betriebsstunden Tag1","Betriebsdauer in h seit Monatswechsel, sendet 1x/Tag beim Reset","$Betriebsdauer_TagLast","c"],
		["Betriebsstunden Monat1","Betriebsdauer in h seit Monatswechsel, sendet 1x/Tag beim Reset","$Betriebsdauer_MonatLast","c"],
		["Betriebsstunden Jahr1","Betriebsdauer in h seit Jahreswechsel, sendet 1x/Tag beim Reset","$Betriebsdauer_JahrLast","c"]
  ],
  "Level": [
		["$I_State","bool",false],
		["$Reset","bool",false],	
		["$ResetTag","bool",false],	
		["$ResetMonat","bool",false],
		["$ResetJahr","bool",false],
		["$Betriebsdauer_Tag","float",0.0],
		["$Betriebsdauer_TagLast","float",0.0],
		["$Betriebsdauer_Monat","float",0.0],
		["$Betriebsdauer_MonatNeu","float",0.0],
		["$Betriebsdauer_MonatLast","float",0.0],
		["$Betriebsdauer_Jahr","float",0.0],
		["$Betriebsdauer_JahrNeu","float",0.0],
		["$Betriebsdauer_JahrLast","float",0.0],
		["$KonstTrue","bool",true],
		["$KonstFalse","bool",false],
		["$Konst1","float",1.0],
		["$Konst0","float",0.0],
		["$I_Interval_Enable","bool",true],
		["$I_Interval_On","float",15.0],
		["$I_Interval_Off","float",60.0],
		["$I_Interval","float",10.0],
		["$Interval","float",3600.0],
		["$Interval_Reset","float",0.1],
		["$StartZeitTag","string","22 0 0 2-31 * *"],
		["$StartZeitMonat","string","22 0 0 1 2-12 *"],
		["$StartZeitJahr","string","22 0 0 1 1 *"]
  ],
  "Module": [
		//Sendeintervall setzen (abhängig aktiv/inaktiv)
		["Multiplexer",["$I_Interval_Off","$I_Interval_On"],"$I_Interval","$I_State"],
		// Betriebsdauer aktualisieren
		["HobbsMeter","$I_State","$Betriebsdauer_Tag","$Reset"],
		
		// ResetTag auf 0 setzen (wurde im letzten Aufruf vom Cron aktiviert )
		["Multiplexer",["$ResetTag","$KonstFalse"],"$ResetTag","$ResetTag"],
		
		// Monats-/Jahreszaehler zurücksetzen und ResetMonat auf 0 setzen 
		["Multiplexer",["$Betriebsdauer_Monat","$Konst0"],"$Betriebsdauer_Monat","$ResetMonat"],
		["Multiplexer",["$Betriebsdauer_Jahr","$Konst0"],"$Betriebsdauer_Jahr","$ResetJahr"],
		["Multiplexer",["$ResetMonat","$KonstFalse"],"$ResetMonat","$ResetMonat"],
		["Multiplexer",["$ResetJahr","$KonstFalse"],"$ResetJahr","$ResetJahr"],
		
		// Timer für Reset Tag/Monat, sendet nochmal die letzten Werte und triggert einen erneuten Aufruf
		["Cron","$KonstTrue","$ResetTag",0,"$StartZeitTag"],
		["Cron","$KonstTrue","$ResetMonat",0,"$StartZeitMonat"],
		["Cron","$KonstTrue","$ResetJahr",0,"$StartZeitJahr"],
		["Or" , ["$ResetTag" , "$ResetMonat", "$ResetJahr"], "$Reset"],
		// Bei Reset nochmaligen Aufruf triggern => Intervall verkürzen!
		["Multiplexer",["$I_Interval","$Interval_Reset"],"$Interval","$Reset"],
		// Bei Reset Jahr auch Monat zurücksetzen
		["Latch","$KonstTrue","$ResetMonat","$ResetJahr",0],
		
		// Tageszähler laufend zum aktuellen Monatsstand (bis Vortag) addieren
		["Polynomial","$Konst1","$Betriebsdauer_MonatNeu",["$Betriebsdauer_Monat", "$Betriebsdauer_Tag"]],
		["Polynomial","$Konst1","$Betriebsdauer_JahrNeu",["$Betriebsdauer_Jahr", "$Betriebsdauer_Tag"]],
		
		// Beim Triggern von Reset täglich Monatszaehler speichern
		["Multiplexer",["$Betriebsdauer_Monat","$Betriebsdauer_MonatNeu"],"$Betriebsdauer_Monat","$Reset"],
		["Multiplexer",["$Betriebsdauer_Jahr","$Betriebsdauer_JahrNeu"],"$Betriebsdauer_Jahr","$Reset"],		
		// beim Reset letzten Tages-/Monatswert aktualisieren (und senden)
		["Multiplexer",["$Betriebsdauer_MonatLast","$Betriebsdauer_MonatNeu"],"$Betriebsdauer_MonatLast","$Reset"],
		["Multiplexer",["$Betriebsdauer_JahrLast","$Betriebsdauer_JahrNeu"],"$Betriebsdauer_JahrLast","$Reset"],
		["Multiplexer",["$Betriebsdauer_TagLast","$Betriebsdauer_Tag"],"$Betriebsdauer_TagLast","$Reset"],
		
		// Clocksignal für Sendeintervall
		["Clocksignal","$I_Interval_Enable",0,"$Interval"]
  ]
}
//*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. */
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
Antworten

Zurück zu „Zusätzliche Logikbausteine“