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] Sommer / Winterumschaltung nach DIN

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

Dragonos2000
Reactions:
Beiträge: 2181
Registriert: So Aug 12, 2018 1:38 pm
Wohnort: Karlsruher Raum
Hat sich bedankt: 481 Mal
Danksagung erhalten: 889 Mal

#11

Beitrag von Dragonos2000 »

Ich denke wenn man den Level mit 1 initialisiert, einen neuen Level $Temperature_quot_temp definiert und den Code wie folgt ändert, müsste es passen:
Alt

Code: Alles auswählen

	// Summe um aktuellen Mittelwert erhöhen (nur bei Reset3)
	    ["Polynomial","$Konst1","$Temperature_sum_temp",["$Temperature_sum_Monat","$Temperature_avg"]],
	    ["Polynomial","$Konst1","$Counter_temp",["$Counter","$Konst1"]],
	    ["Multiplexer",["$Temperature_sum_Monat","$Temperature_sum_temp"],"$Temperature_sum_Monat","$Reset3"],
	    ["Multiplexer",["$Counter","$Counter_temp"],"$Counter","$Reset3"],
	    
	    ["Ratio", "$Temperature_sum_Monat", "$Temperature_avg_Monat", "$Counter"],
Neu

Code: Alles auswählen

	Entfernt, da Fehlerhaft
Zuletzt geändert von Dragonos2000 am Di Apr 14, 2020 10:23 pm, insgesamt 1-mal geändert.
Lg
Jochen
____________________________________________________________
TW 2600 #188
VPN offen, Zugriff jederzeit, Experimente jederzeit, Reboot jederzeit

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

#12

Beitrag von Robert_Mini »

Hallo Jochen!

Danke für die Info.
Du hast recht, da passt eine "Kleinigkeit" nicht => die Division durch Null gehört abgefangen und natürlich soll die Logik auch am 1. Tag schon die Werte erfassen...

Ich schau mir das bei Gelegenheit an.

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

Dragonos2000
Reactions:
Beiträge: 2181
Registriert: So Aug 12, 2018 1:38 pm
Wohnort: Karlsruher Raum
Hat sich bedankt: 481 Mal
Danksagung erhalten: 889 Mal

#13

Beitrag von Dragonos2000 »

Robert_Mini hat geschrieben: Di Apr 14, 2020 9:53 pm Du hast recht, da passt eine "Kleinigkeit" nicht => die Division durch Null gehört abgefangen und natürlich soll die Logik auch am 1. Tag schon die Werte erfassen...
Schlimm ist's nicht, mir nur beim Testen/Implementieren bzw. Analyse aufgefallen.
Robert_Mini hat geschrieben: Di Apr 14, 2020 9:53 pm Ich schau mir das bei Gelegenheit an.
Musst nur aufpassen: Die Initilisierung des Level mit 0 scheint nicht immer zu erfolgen. Wenn Du die Logik löscht und neu anlegst ja. Wenn Du die Logik änderst und speicherst scheint das zumindest nicht immer der Fall zu sein (hab' das noch nicht rausbekommen wann und wann nicht)
Lg
Jochen
____________________________________________________________
TW 2600 #188
VPN offen, Zugriff jederzeit, Experimente jederzeit, Reboot jederzeit

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

#14

Beitrag von Robert_Mini »

Hallo Jochen!

Ich denke du hattest in deinen Punkten recht.
Counter muss beim Reset auf 0 gesetzt werden, da er beim Speichern eines Wertes um 1 erhöht wird.
In der ursprünglichen Version wurde damit der Monatsmittelwert etwas unterschätzt, da der Divisor um 1 zu groß war.

Ich habe nun einen Workaround eingebaut, der einen Null-Divisor mit 1 ersetzt und das Ergebnis der Division dann wieder mit 0 überschriebt und den alten Divisor wiederherstellt.

Kannst du das nochmal testen, ob das so passt. Ich hab's bei mir auch im Test, aber habe das beim 1. Mal auch übersehen, da die Logik mit "update only" und internen Cron-Triggern gar nicht so einfach im Grafana auswertbar ist (die Logik wird nur 3x am Tag gerechnet!).

@StefanW / @S. Kolbinger: Schaut euch das mal kurz an. Hier würde eine kleine Nachbesserung beim Modul "ratio" sehr hilfreich sein. Der Workaround ist doch wenig praktikabel, die Fehler (Division durch Null stoppt die Ausführung der Logik ohne Fehlermeldung) ist sehr schwer zu finden!
Ich würde eine ähnliche Lösung in den Standard übernehmen, die Krönung wäre dazu eine Variable "$val_ok" wie beim Limiter, die aussagt, ob die Division erfolgreich war. Zwecks Kompatibilität könnte das auch ein neues Modul "ratio2" sein...

lg
Robert

Code: Alles auswählen

/**
um 7 Uhr T1
um 14 uhr T2
um 22 uhr. T3
T= (T1+T2+T3+T3) / 4
T > 16 Sommer, T<= 16 Winter
*/

{
  "Input": [
        ["Außentemperatur","Gemessene Außentemperatur","$I_Temperature","u"], 
		["Temp. Sommer","Außentemperatur bei der auf Sommer umgeschaltet wird","$I_TempSommer","c"], 
		["Temp. Winter","Außentemperatur bei der auf Winter umgeschaltet wird","$I_TempWinter","c"]
  ],
  "Output": [
		["Heizungsmodus Sommer/Winter","Ausgabe ob Sommer oder Winter","$Output","ct"],
		["Temperatur Tag gleitend","(T1+T2+T3*T3)/4","$Temperature_avg","ct"],
		["Temperatur Mittelwert Monat","Mittelwert seit Monatswechsel","$Temperature_avg_Monat","c"],
		["Counter","Anzahl Werte","$Counter?","c"],
		["Temp1 / 7:00","Anzahl Werte","$Temp1_?","c"],
		["Temp2 / 14:00","Anzahl Werte","$Temp2_?","c"],
		["Temp3 / 22:00","Anzahl Werte","$Temp3_?","c"]
  ],
  "Level": [
		["$I_Temperature","float",0.0],
		["$I_TempSommer","float",0.0],
		["$I_TempWinter","float",0.0],
		["$I_Totzone","float",0.0],
		["$Output","bool",false],
		["$Temperature_sum","float",0.0],
		["$Temperature_avg","float",0.0],
		["$Temperature_sum_Monat","float",0.0],
		["$Temperature_sum_temp","float",0.0],
		["$Temperature_avg_Monat","float",0.0],
		["$Temperature_avg_MonatLast","float",0.0],
		["$Counter","integer",0],
		["$Counter_temp","integer",1],
		["$Counter_Lim","integer",0],
		["$Val_ok","bool",false],
		["$Temp1_","float",0.0],
		["$Temp2_","float",0.0],
		["$Temp3_","float",0.0],
		["$Reset1","bool",false],
		["$Reset2","bool",false],
		["$Reset3","bool",false],
		["$ResetMonatTrigger","bool",false],
		["$KonstTrue","bool",true],
		["$Konst0","float",0.0],
		//["$Konst0int","int",0],
		["$Konst1","float",1.0],
		["$Konst4","float",4.0],
		["$KonstFalse","bool",false],
		["$I_Interval_Enable","bool",true],
		["$I_Interval","float",300.0],
		["$Zeitpunkt1","string","0 0 7 * * *"],
		["$Zeitpunkt2","string","0 0 14 * * *"],
		["$Zeitpunkt3","string","0 0 22 * * *"],
		["$ResetMonat","string","20 2 0 1 * *"]
  ],
  "Module": [
		 // Trigger für 7 / 14 und 22 Uhr
		["Cron","$KonstTrue","$Reset1",0,"$Zeitpunkt1"],
		["Cron","$KonstTrue","$Reset2",0,"$Zeitpunkt2"],
		["Cron","$KonstTrue","$Reset3",0,"$Zeitpunkt3"],
		["Cron","$KonstTrue","$ResetMonatTrigger",0,"$ResetMonat"],
		// Temperatur speichern
		["Multiplexer",["$Temp1_","$I_Temperature"],"$Temp1_","$Reset1"],
		["Multiplexer",["$Temp2_","$I_Temperature"],"$Temp2_","$Reset2"],
		["Multiplexer",["$Temp3_","$I_Temperature"],"$Temp3_","$Reset3"],
		// Mittelwert berechnen
		["Polynomial","$Konst1","$Temperature_sum",["$Temp1_","$Temp2_","$Temp3_","$Temp3_"]],
		["Ratio", "$Temperature_sum", "$Temperature_avg", "$Konst4"],
		// Überprüfung 
		["Comparator","$Temperature_avg","$Output",["$I_TempWinter","$I_TempSommer"]],
		
		// Summe um aktuellen Mittelwert erhöhen (nur bei Reset3)
	    ["Polynomial","$Konst1","$Temperature_sum_temp",["$Temperature_sum_Monat","$Temperature_avg"]],
	    ["Polynomial","$Konst1","$Counter_temp",["$Counter","$Konst1"]],
	    ["Multiplexer",["$Temperature_sum_Monat","$Temperature_sum_temp"],"$Temperature_sum_Monat","$Reset3"],
	    ["Multiplexer",["$Counter","$Counter_temp"],"$Counter","$Reset3"],
	    
	    // Divisor prüfen und bei Null mit 1 ersetzen
	    ["Limiter","$Counter","$Counter_Lim","$Val_ok",["$Konst0", "$Konst0"]],
	    ["Latch","$Konst1","$Counter","$Val_ok",0],
	    ["Ratio", "$Temperature_sum_Monat", "$Temperature_avg_Monat", "$Counter"],
	    // Ergebnis überschreiben und alten Divisor wiederherstellen
	    ["Latch","$Konst0","$Temperature_avg_Monat","$Val_ok",0],
	    ["Latch","$Konst0","$Counter","$Val_ok",0],
	    
	    // Summe und Counter zurücksetzen
	    ["Multiplexer",["$Counter","$Konst0"],"$Counter","$ResetMonatTrigger"],
	    ["Multiplexer",["$Temperature_sum_Monat","$Konst0"],"$Temperature_sum_Monat","$ResetMonatTrigger"],
	    
		// Reset auf 0 setzen
		["Multiplexer",["$Reset1","$KonstFalse"],"$Reset1","$Reset1"],
		["Multiplexer",["$Reset2","$KonstFalse"],"$Reset2","$Reset2"],
		["Multiplexer",["$Reset3","$KonstFalse"],"$Reset3","$Reset3"],
		["Multiplexer",["$ResetMonatTrigger","$KonstFalse"],"$ResetMonatTrigger","$ResetMonatTrigger"]
  ]
}

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

Dragonos2000
Reactions:
Beiträge: 2181
Registriert: So Aug 12, 2018 1:38 pm
Wohnort: Karlsruher Raum
Hat sich bedankt: 481 Mal
Danksagung erhalten: 889 Mal

#15

Beitrag von Dragonos2000 »

Robert_Mini hat geschrieben: Fr Apr 17, 2020 10:21 pm Kannst du das nochmal testen, ob das so passt. Ich hab's bei mir auch im Test, aber habe das beim 1. Mal auch übersehen, da die Logik mit "update only" und internen Cron-Triggern gar nicht so einfach im Grafana auswertbar ist (die Logik wird nur 3x am Tag gerechnet!).
Ich check's und geb' Dir Bescheid...
Robert_Mini hat geschrieben: Fr Apr 17, 2020 10:21 pm Ich würde eine ähnliche Lösung in den Standard übernehmen, die Krönung wäre dazu eine Variable "$val_ok" wie beim Limiter, die aussagt, ob die Division erfolgreich war. Zwecks Kompatibilität könnte das auch ein neues Modul "ratio2" sein...
...und dabei sollte das Logik-Modul nicht sang und klanglos abbrechen...
Lg
Jochen
____________________________________________________________
TW 2600 #188
VPN offen, Zugriff jederzeit, Experimente jederzeit, Reboot jederzeit

Piranha
Reactions:
Beiträge: 47
Registriert: Sa Jan 04, 2020 10:23 pm
Danksagung erhalten: 5 Mal

#16

Beitrag von Piranha »

Hallo Robert,

aus irgendeinem Grund funktioniert bei mir die Logik aus Beitrag 1 nicht. Sobald die Temp über 16° Grad geht bleibt der Ausgang bei mir weiterhin auf false. Könntest Du mal bitte schauen ob da ein Fehler in der Logik ist?

Lieben Dank
TWS 975 ID:433, VPN offen, Reboot auf nachfrage
Benutzeravatar

Eraser
Reactions:
Beiträge: 646
Registriert: So Aug 12, 2018 1:51 pm
Wohnort: Amstetten, Österreich
Hat sich bedankt: 205 Mal
Danksagung erhalten: 275 Mal

#17

Beitrag von Eraser »

Laut Anleitung aus Post 1 wird der Heizungsmodus auf 1 gesetzt, wenn die Durchschnittstemperatur über den 16 Grad ist.
Sollte dieser Heizungsmodus nicht da auf 0 gesetzt werden?
mfg
Wolfgang

Timberwolf 2500 #151 / VPN offen / Reboot nach Rücksprache
+ PBM #938

Piranha
Reactions:
Beiträge: 47
Registriert: Sa Jan 04, 2020 10:23 pm
Danksagung erhalten: 5 Mal

#18

Beitrag von Piranha »

Hallo Wolfgang,

egal wie, der Ausgang verändert sich bei mir zu keiner Zeit. Weder nach unten noch nach oben.
TWS 975 ID:433, VPN offen, Reboot auf nachfrage

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

#19

Beitrag von Robert_Mini »

Hallo ? (Piranha ist wohl nicht dein Vorname)

2 Dinge:
- Bitte Code aus Posting #14 verwenden
- Die Logik wird nur um 7:00 / 14:00 / 22:00 getriggert => die Umschaltung erfolgt dann eben nur genau zu diesen Zeiten und nicht auf Basis einer gleitenden Temperatur oder dergleichen.

Ich aktualisiere den Code im Posting 1 und ergänze diese Erklärung dann noch.

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

eib-eg
Reactions:
Beiträge: 442
Registriert: Fr Sep 14, 2018 5:03 pm
Hat sich bedankt: 1457 Mal
Danksagung erhalten: 235 Mal

#20

Beitrag von eib-eg »

🤣🤣🤣🤣
viewtopic.php?f=21&t=1865&p=19881#p19881
In dem Beitrag steht sein Name ( Alex )

Ich finde es auch schade wenn Mann oder auch Frau 🤷‍♂️ Immer nachfragen muß

Anscheinend gibts Personen die wollen ihren Namen nicht nennen.

Währe ja zu einfach den Namen einzufügen in der letzten Zeile einzufügen 🤣🤣

Frohe Weihnachten euch allen noch.
TW 2600_99 seit 1.1.2018 / VPN zu
Antworten

Zurück zu „Zusätzliche Logikbausteine“