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....
-
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?
-
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?
-
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....
-
Ohh, da habe ich die Frage noch in den Code - Block gesteckt - werde umformatieren ;-)
Zeit für frische Luft ...
@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 -
@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 DPHat 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 ...
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden

