NEWS
[gelöst] Zugriff auf interne Blockly Variablen
-
Ich habe folgendes Blockly angelegt:
Schalte ich nun in die Javascript Ansicht um, sehe ich folgendes ...
on({id: "0_userdata.0.Heizung.Nachtabsenkung"/*Nachtabsenkung*/, change: "any"}, async function (obj) { let value = obj.state.val; let oldValue = obj.oldState.val; if (getState("0_userdata.0.Heizung.Nachtabsenkung").val == true) { console.log('Setze Solltemperatur "Nacht"'); setState("mqtt.0.thermostat.desired.temperature"/*thermostat/desired/temperature*/, 18.7); } else { console.log('Setze Solltemperatur "Tag"'); setState("mqtt.0.thermostat.desired.temperature"/*thermostat/desired/temperature*/, 21.9); } });
Kommt man irgendwie ohne Verrenkungen an "value" und "oldValue" über Blockly heran? - würde ggfs. den "falls" Block vereinfachen....
-
@martinp sagte in Zugriff auf interne Blockly Variablen:
Schalte ich nun in die Javascript Ansicht um, sehe ich folgendes ...
und?
wo ist das Problem?
was hat das mit dem Threadtitel zu tun?
-
@martinp Trigger -> objectId
-
Ohh, da habe ich die Frage noch in den Code - Block gesteckt - werde umformatieren
Zeit für frische Luft ...
-
@martinp sagte: Kommt man irgendwie ohne Verrenkungen an "value" und "oldValue" über Blockly heran?
Ja. Variable mit identischem Bezeichner erstellen.
-
@martinp sagte in Zugriff auf interne Blockly Variablen:
Ohh, da habe ich die Frage noch in den Code - Block gesteckt
Das erklärt einiges.
da ich kein js kann hab ich mir den Code nicht angesehen.ja Wert und vorheriger Wert des triggernden Datenpunkts bekommst du mit dem Block, den @MCU dir gezeigt hat.
aber leider nur von diesem DP -
Hat gut funktioniert ...
Der Thermostat hat einen Datenpunkt "Solltemperatur" der zu bestimmten Zeiten auf Nacht- bzw Tagtemperatur gesetzt werden soll...
Mehrschrittiges Vorgehen
Usersdata-Datenpunkt bool "Nachtabsenkung" (Nachtabsenkung immer zu gleicher Zeit beginnen, Sa/So erfolgt die Taganhebung etwas später. als Werktags)
Hier ein Trick mit "wurde aktualisiert" statt "wurde geändert", um die Solltemperatur zu setzen:
Hier wird über die Aktualisierung des Datenpunktes "Raumtemperatur" per 30 Sekunden-Timeout überwacht, ob der ESP8266 des Raumthermostaten noch arbeitet.
Durch die Aktualiserung des "Nachtabsenkung" Datenpunktes (ohne den Wert zu ändern) wird das Setzen des Solltemperatur-Datenpunktes ausgelöst. Ansonsten würde der Thermostat mit der festverdrahteten Temperatur arbeiten, die die Thermostat-Software bei Neustart einstellt, bis das nächste mal ein Tag <-> Nacht Wechsel passiert ...