ich möchte die Pumpe an meiner Wasserzirkulationsleitung smart machen. Bisher hatte ich eine simple Zeitschaltuhr dran.
Folgende Dinge soll es berücksichtigen
• Unterschiedliche Startzeiten frühmorgens (selbst unterhalb der Woche) --> Zeiten sind im Heizplan abgebildet
• Einbeziehung von Feiertagen => Sonntagszeit (Feiertagsvariable ist im Einsatz)
• Einbeziehung des Abwesenheitsstatus (Abwesenheitsvariable ist im Einsatz)
Wie bekomme ich das jetzt alles am besten zusammen?
Die Zeitschaltuhr kann ich direkt an der Pumpe deaktivieren und habe dann einen WallPlug genutzt.
Mittels LUA (oder auch Block-)Szenen lässt sich individuell vorgeben, wann die Pumpe laufen soll.
Aber wie bekomme ich die Zeiten und Abhängigkeiten am besten rein? Blockszene wird wahnsinnig komplex. Lua wäre besser lesbar etc. aber da wären ja alle Zeiten hart gecodet. Hmmm…
wir hatten zuerst auch versucht das über Zeiten zu lösen, was aber nicht wirklich funktionierte da doch jeder Tag anders ist und entweder war es oft kalt oder die Pumpte lief einfach so obwohl alle schon weg waren.
Funktioniert haben Bewegungsmelder vor den “Verbraucher-Zimmern (bad, wc, küche)” - wenn Bewegung dann “kurz” anspringen.
Das “kurz” musste ausgetüftelt werden - bei uns reicht 1minute.
Ergebnis: Pumpe läuft eigentlich nie und wir haben immer sofort warmes Wasser wenn nötig.
Aktuell habe ich 2 Blockszenen, die ganz rudimentär jetzt zeitgesteuert die Pumpe an und aus schalten.
Wir haben daheim aber auch diskutiert, ob wir diese nur im Bedarfsfall (manuell oder zum Beispiel per Bewegungsmelder) anschalten. Dazu müssten wir aber eben auch austüfteln, wie lang das Wasser brauch bis es warm ist.
Oder, ob ich eine Variable (“Zirkulationspumpe an”) anlege, die ich in diverse LUAs verbaue, um dann entsprechend reagieren zu können.
--[[
%% properties
< hier kommen deine IDs der Bewegungsmelder rein >
%% events
%% globals
--]]
function Debug( color, message )
fibaro:debug(string.format('<%s style="color:%s;">%s</%s>', "span", color, message, "span"));
end
Debug("gray", "reset wait...");
fibaro:setGlobal("LastMvmtWarmWatter", os.time());
--Making sure that only one instance of the scene is running.
fibaro:sleep(fibaro:countScenes()); --sleep to prevent all instances being killed.
if (fibaro:countScenes() > 1) then
if (showExtraDebugInfo) then
Debug( "grey", "Abort, Scene count = " .. fibaro:countScenes());
end
fibaro:abort();
end
Debug("green", "TurnOn Pump");
local umlaufPumpe = 252;
fibaro:call(umlaufPumpe, "turnOn");
function checkLastMovement()
local lastMvmtWarmWatter = tonumber(fibaro:getGlobalValue("LastMvmtWarmWatter"));
local curDiff = os.time() - lastMvmtWarmWatter;
if(curDiff > 30 * 2) then
Debug("green", "TurnOff Pump - " .. curDiff);
fibaro:call(umlaufPumpe, "turnOff");
else
Debug("gray", "wait..." .. curDiff);
setTimeout(checkLastMovement, 10*1000);
end
end
checkLastMovement();