Ich habe heute versucht einen Danfoss Thermostat zu integrieren. Also der Versuch ist gelungen, ich kann ihn im FrontEnd sehen
Jetzt habe ich mir eine Blockszene erstellt und mir dann den zugehörigen LUA Code angeschaut. Ich bin jetzt kein Programmierer, aber
ich denke ich kann den Code so ein wenig lesen/verstehen.
Was soll das Script erledigen?
WENN die variable HomeArea100 auf true steht UND die Netatmo im Wohnzimmer weniger als 23°Grad anzeigt, DANN soll der Thermostat
auf 23°Grad gestellt werden.
Ich weiss das da noch der umgekehrte Fall fehlt, aber ich wollte es nicht gleich übertreiben
Deshalb jetzt mal ein paar Grundsatzfragen damit ich es auch RICHTIG verstehe:
Schaut euch mal den Screen von der Blockszene an und dann diesen LUA Code:
--[[
%% properties
17 value
%% weather
%% events
%% globals
HomeArea100
--]]
local startSource = fibaro:getSourceTrigger();
if (
( fibaro:getGlobalValue("HomeArea100") == "true" and tonumber(fibaro:getValue(17, "value")) < 23 )
or
startSource["type"] == "other"
)
then
fibaro:call(83, "setTargetLevel", "23");
fibaro:call(83, "setTime", tonumber(os.time(t)) + 120*60);
end
1.) Wieso/Weshalb/Warum wird da ein OR eingefügt, wo ich doch gar kein ODER definiert habe?
2.) Wenn ich die letzte Zeile: fibaro:call(83, “setTime”, tonumber(os.time(t)) + 120*60); entferne, läuft dann der Befehl ohne zeitliche Limitierung?
3.) Wieso wird bei den Properties “weather” eingefügt?
4.) Was muss ich wo einstellen damit die Szene immer prüft, oder meinetwegen im 1 Minutentakt?
————————-
Status: Wartet auf eine ordentliches Forumsystem
Durch das or in Zeile 13 und 14 wird bei manuellen Start der Szene dies auch ausgeführt, ohne die Bedingungen “zu beachten”.
In Zeile 18 wird etwas im Thermostat eingestellt (da ich keines habe - k.A. was). Das hat mir einer rollierenden Steuerung/Durchlauf des Scriptes nichts zu tun.
Da Du zwei Trigger hast (die GV und Netatmo) wird bei jeder Änderung davon das Script angestoßen und prüft die Bedingngen und wenn es zu kalt ist…
da würde ich keine minutliche Prüfung dazutun.
Danke für die Aufklärung … Da bin ich ja schonmal einen bzw. 4 Schritte weiter.
Next Question
Folgendes Szenario … Die Temperatur in meinem Wohnzimmer ist relativ gleichbleibend … Wenn keiner heizt um die Jahreszeit nie weniger als 20°Grad.
Wir nehmen also mal an die steht wie angenagelt bei 20°Grad, wenn sich jetzt, per Geofencing, der Wert der variable HomeArea100 von false zu true ändert,
aber die Temperatur gleich bleibt, läuft die Szene dann trotzdem?
… und überhaupt: Ist das ganze praktikabel, oder würdest du/ihr eine andere Lösung vorschlagen?
————————-
Status: Wartet auf eine ordentliches Forumsystem
Unabhängig vom Script:
Wenn die aktuelle Raumtemperatur 23 Grad (oder mehr) beträgt und das Danfoss-Thermostat die Solltemperatur 23 Grad erhalten hat, heizt die Heizung nicht, da ja die Solltemperatur erreicht ist. Dann braucht man die Solltemperatur im Danfoss-Thermostat auch nicht nach unten korrigieren.
Dieser Teil Deiner “UND-Verknüpfung” ist quasi schon in der internen Regelschleife des Thermostates erfüllt.