Seite 2 von 3

Re: Sommer / Winterumschaltung nach DIN

Verfasst: Di Apr 14, 2020 2:56 pm
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

Re: Sommer / Winterumschaltung nach DIN

Verfasst: Di Apr 14, 2020 9:53 pm
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

Re: Sommer / Winterumschaltung nach DIN

Verfasst: Di Apr 14, 2020 10:17 pm
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)

Re: Sommer / Winterumschaltung nach DIN

Verfasst: Fr Apr 17, 2020 10:21 pm
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"]
  ]
}


Re: Sommer / Winterumschaltung nach DIN

Verfasst: Sa Apr 18, 2020 12:20 am
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...

Re: Sommer / Winterumschaltung nach DIN

Verfasst: Sa Dez 26, 2020 8:15 pm
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

Re: Sommer / Winterumschaltung nach DIN

Verfasst: Sa Dez 26, 2020 8:42 pm
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?

Re: Sommer / Winterumschaltung nach DIN

Verfasst: Sa Dez 26, 2020 8:53 pm
von Piranha
Hallo Wolfgang,

egal wie, der Ausgang verändert sich bei mir zu keiner Zeit. Weder nach unten noch nach oben.

Re: Sommer / Winterumschaltung nach DIN

Verfasst: Sa Dez 26, 2020 9:16 pm
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

Re: Sommer / Winterumschaltung nach DIN

Verfasst: Sa Dez 26, 2020 9:59 pm
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.