[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: 3857
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1245 Mal
Danksagung erhalten: 2145 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: 3857
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1245 Mal
Danksagung erhalten: 2145 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

eib-eg
Reactions:
Beiträge: 478
Registriert: Fr Sep 14, 2018 5:03 pm
Hat sich bedankt: 1507 Mal
Danksagung erhalten: 290 Mal

#3

Beitrag von eib-eg »

Ich möchte mich für diese Logik bedanken und gleichzeitig nach oben holen da sie perfekt funktioniert :dance: :bow-yellow: :bow-yellow: .
Danke an @Robert_Mini
Aufgezeichnet werden die Brennerstunden der Heizung und mit dem Temperaturen verglichen und in Grafana übereinandergelegt.

Als nächstes wird vermitlich bei einem Leuchtmittelwechsel wegen Lebensdauer auch aufgezeichnet.
Hier währe dann interesant auf 0 zurücksetzen zu können oder eine neue zu erstellen.
Was haltet ihr davon?
TW 2600_99 seit 1.1.2018 / VPN zu
Antworten

Zurück zu „Zusätzliche Logikbausteine“