Blockszene vs. LUA Code

Ich habe heute versucht einen Danfoss Thermostat zu integrieren. Also der Versuch ist gelungen, ich kann ihn im FrontEnd sehen :slight_smile:

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 :smiley:

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 :slight_smile:

Hi…

  1. or startSource["type"] == "other" wird benötigt, wenn die Szene manuell ausgeführt wird.
  2. Nein, dann werden 15 min gesetzt.
  3. Standard-Vorlage von Fibaro
  4. Brauchst du nicht. Die Szene wird immer ausgeführt, wenn sich die Temperatur vom Netatmo-Sensor ändert. (Kann nur alle 5 min ein neuen Wert geben)

Gruß

Hi,

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.

VG Hoggle

Danke für die Aufklärung … Da bin ich ja schonmal einen bzw. 4 Schritte weiter.

Next Question :slight_smile:

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 :slight_smile:

da war jemand schneller…

Geofencing mit der Fibaro-App (Kann die App nicht, ist immer die “exakte” Position) würd ich nicht empfehlen… Zu träge, zu fehleranfällig…

Ja, die Szene würde dann ausgeführt werden. Ist ja unter 23°.

Gruß

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.

@Geofencing:
Das läuft nicht mit der FibaroApp … Hab eine andere Lösung und diese setzt mir sehr zuverlässig die variable auf true oder false.

@FarmerG
Da hast du auch wieder Recht. Danke für den Hinweis.

————————-
Status: Wartet auf eine ordentliches Forumsystem :slight_smile: