Heizplan - Manueller Modus - Danfoss Wandthermostat

Hallo Zusammen,

ich habe in meiner HC eine Heizungssteuerung realisiert:

Folgende Komponenten spielen aktuell mit rein
• 3x Danfoss LC_13 in Verbindung mit einem Heizplan
• 1x Fibaro Fensterkontakt mit LUA Script (Setzen des Heizplan Urlaubsmodus mit 5° Absenktemperatur)
• globale Variable PresentState mit LUA Script (Setzen des Heizplan Urlaubsmodus mit 5° Absenktemperatur)

soweit funktioniert alles tadellos. Ich besitze jetzt noch ein Danfoss Wandthermostat DAN_RS-Z, welches nun mit eingebunden habe, um zum einen die Raumtemperatur zu ermitteln und zum anderen manuell die Temperatur erhöhen zu können. Wenn ich nun die Temperatur am Device ändere, wird diese auch „sofort“ auf die 3 LC_13 per LUA Srcipt übertragen. Auch das funktioniert.

---- Zieltemperatur an LC_13 senden
for i = 1, #thermostate do
    fibaro:call(thermostate[i],"setTargetLevel",newTempRoom)
    fibaro:call(thermostate[i],"setTime",tonumber(os.time()) + time*60)
end

DOCH wenn die Aufwachzeit eines LC_13 noch relativ weit weg ist, funkt mir der Heizplan wieder dazwichen und setzt wiederrum seine Temperatur ein. Nun habe ich gedacht, wenn ich oben den Urlaubsmodus als API-Funktion verwende, wieso dann nicht bei meinem Wandthermostat den manuellen Modus des Heizplan.

Manueller Modus Hier kann für eine bestimmte Zeit eine gewisse Temperatur eingestellt werden, dabei wird der Heizplan vorübergehend überschrieben.Zum Beispiel: 23°C eine Stunde lang für Zone Küche und Bad.
Wie kann ich das nun realisieren? Wie kann ich den per LUA Script den manuelles Modus ansprechen und setzen?

Viele Grüße
Carsten

Hallo Zusammen,

ich habe am Wochenende versucht etwas zu basteln und zu spielen. Dabei bin ich auf folgenden Thread gestoßen, der im letzten Beitrag ein Skript für den manuellen Heizmodus enthält. Doch leider reagiert/funktioniert der bei mir nicht.

Wie habt ihr denn das Wandthermostat neben dem Heizplan integriert? Wäre das nicht ein schönes Tutorial für Lua 13 :wink:

Grüße
Carsten

Hi Kapitano1,

den manuellen Modus kann man über Lua setzen. Allerdings habe ich noch keinen geeigneten Trigger gefunden. Wenn Du die Temperatur als Trigger nimmst hast Du das Problem, dass bei jeder Änderung - also auch bei Änderungen durch den Heizplan - die Szene gestartet wird und den Heizplan zumindest temporär deaktiviert.

Mit welchem Script kommt man in den manuellen Modus ? Also per Szene ? Gruß

Hi,

hier mal meine Baustelle zu dem Thema:

--[[
%% properties
220 value
%% globals
--]]

now = os.time()
handTime = now + (60 * 60) -- Eine Stunde

         
local schedule = {
id = 186, --Raum aus dem Heizpanel
manTemp = tonumber(fibaro:getValue(220, 'value')) --manuelle Temperatur
}
 
       
function Debug( color, message )
	fibaro:debug(string.format('<%s style="color:%s;">%s<!--%s-->', "span", color, message, "span"));
end

if (fibaro:countScenes()>1) then
	fibaro:debug('Kill the second scene!');
	fibaro:abort();
end

	
local function getMethod(requestUrl, successCallback, errorCallback)
	local http = net.HTTPClient()
	http:request(requestUrl, {
	options = {
	method = 'GET'
	},
	success = successCallback,
	error = errorCallback
	})
end
         
local function putMethod(requestUrl, data, successCallback, errorCallback)
	local http = net.HTTPClient()  
	http:request(requestUrl, {
	options = {
	method = 'PUT',
	data = json.encode(data)
	},
	success = successCallback,
	error = errorCallback
	})
end
         
local function setHandModeTrue(subjectToChange)
	local url = 'http://127.0.0.1:11111/api/panels/heating/' .. subjectToChange.id
	getMethod(url, function(resp)
	if resp.status == 200 then
		print('Verbindung zum Heizpanel erfolgreich, Status ' .. resp.status)
		local panel = json.decode(resp.data)
		if panel.properties.handTemperature ~= nil then
			panel.properties.handTemperature = subjectToChange.manTemp
			panel.properties.handTimestamp = handTime
			print('Setze Temperatur auf ' .. subjectToChange.manTemp .. ' C')
			putMethod(url, panel, function(resp)  
            if resp.status == 200 then
				print('Änderung wurde vorgenommen.')
            end
            end,
            function(err)
            print('Error ' .. err)
            end
            )
            else
            print('Panel nicht gefunden')
            end
            else
              print('Verbindung konnte nicht hergestellt werden, Status ' .. resp.status)
            end
            end,
            function(err)
              print('error ' .. err)
            end
            )
        end

setHandModeTrue(schedule)

Wie schon erwähnt: Das Problem ist, dass man in der Szene nicht unterscheiden kann, ob eine Änderung vom Heizplan kommt oder manuell eingestellt wurde.
Beide Aufrufe kommen mit dem SourceTrigger property und direkt vom Device.

Hallo.Erstmal Danke fürs Script. Läuft generell auch. Nur springt er bei mir weiterhin nach ein paar Sekunden wieder in den Heizplan.Im Debug kommt : Temperatur geändert _ alles ok. Aber dann greift wieder der Heizplan und er springt wieder auf zb. 4 Grad um…

Ich muss korrigieren : Das Script läuft . Er behält jetzt auch die eingestellte Temperatur - und geht nicht direkt wieder in den Heizplan. Schonmal gut. Kann man nicht noch irgendwo im Script die gewünschte Temperatur einbauen ? So bräuchte man nur die Scene starten - ohne das Heizungsthermostat in WO erst aufrufen zu müssen ? Gruß

Hi Campos,

Du kannst im oberen Teil die Zeit und die Temperatur einstellen.

handTime = now + (60 * 60) -- Eine Stunde

         
local schedule = {
id = 186, --Raum aus dem Heizpanel
manTemp = tonumber(fibaro:getValue(220, 'value')) --manuelle Temperatur
}

So wie ich es hier rein kopiert habe holt sich die Szene die Temperatur von meinem Thermostat.
Ersetze also tonumber(fibaro:getValue(220, 'value')) gegen die Wunschtemperatur und fertig.

Hallo. Hinbekommen. Mir hilft das schon mal sehr um das Badezimmer kurzfristig schnell hoch zu heizen, außerhalb des Heizplanes. Vielen Dank.

Hallo Campos,

gern. Was hast Du denn hinbekommen? Das einfache überschreiben des Heizplans, oder auch die Problematik mit dem Trigger?

Nein, nur das einfache überschreiben… Zu mehr reichen meine Fähigkeiten leider nicht… Trigger fällt mir auch nicht ein was man da sinnvoll benutzen könnte…

Oh fein, oh fein.

Habe das Script gleich ausprobiert und funzt - SUPER!! Vielen Dank

Beim manuellen Bedienen wird bisher keine zweite Szene getriggert, mal sehen was die HC heute Abend sagt, wenn der Heizplan dann wieder zuschlägt.

Hi,

der Heizplan selbst ist nicht das Problem. Der wird ja durch das setzen der manuellen Temperatur für die eingestellte Zeit deaktiviert.
Jedoch führt jede andere Änderung der Temperatur wie beispielsweise beim öffnen eines Fensters dazu, dass die Szene getriggert wird und die Temperatur manuell hält.

Edit: Jetzt widerspreche ich mir irgendwie selbst. Ich muss das nochmal ausführlich testen.

So, einen Tag läuft das nun das Script. Folgende Logeinträge bekomme ich:

[DEBUG] 22:53:24: Verbindung zum Heizpanel erfolgreich, Status 200 [DEBUG] 22:53:24: Setze Temperatur auf 18°C für 2 h [DEBUG] 22:53:24: Änderung wurde vorgenommen. [DEBUG] 15:38:23: Verbindung zum Heizpanel erfolgreich, Status 200 [DEBUG] 15:38:23: Setze Temperatur auf 20°C für 2 h [DEBUG] 15:38:23: Änderung wurde vorgenommen. [DEBUG] 17:28:48: Verbindung zum Heizpanel erfolgreich, Status 200 [DEBUG] 17:28:48: Setze Temperatur auf 23°C für 2 h [DEBUG] 17:28:48: Änderung wurde vorgenommen. [DEBUG] 19:38:22: Verbindung zum Heizpanel erfolgreich, Status 200 [DEBUG] 19:38:22: Setze Temperatur auf 22°C für 2 h [DEBUG] 19:38:22: Änderung wurde vorgenommen. [DEBUG] 21:38:28: Verbindung zum Heizpanel erfolgreich, Status 200 [DEBUG] 21:38:28: Setze Temperatur auf 18°C für 2 h [DEBUG] 21:38:28: Änderung wurde vorgenommen.

Heißt also:

  • Szene wird nicht doppelt getriggert
  • 17:28Uhr habe ich manuell auf 23C gesetzt. Dauer 2h
  • die anderen Zeitpunkte sind vom Heizplan –> da läuft das Script auch an und manifestiert die 2h

Mein Heizplan hat folgende Zeiten 15:30 (20c), 16:30 (22c) und 21:30 (18c).

Grüße
Carsten

Moin Carsten,

genau das ist die noch offene Baustelle. Leider wird die Veränderung vom Heizplan auch als Eigenschaftsänderung des Triggers verstanden. Daher führt jede Änderung durch den Heizplan zum Start der Szene. Ich habe aber mittlerweile eine Idee wie ich das umgehen kann.

Werde das morgen mal ausgiebig testen und dann berichten.