NEWS
Frage wegen Warnings in Blockly Prg
-
@hg6806 Der Trigger „abonniert“ quasi einen Datenpunkt. Wann immer der sich ändert oder aktualisiert wird, läuft das Skript los.
Das ist also schon deine Schleife. -
Ja das habe ich schon verstanden. Aber wieso gehen dann nicht zwei Trigger?
Sind doch im Prinzip "zwei abonnierte DP" -
@hg6806 Gehen schon. Aber nicht verschachtelt
-
@hg6806 sagte: Ich hoffe es ist verständlich ausgedrückt
Ja. Vorschlag:
Der Leistungswert ändert sich oft genug?
Wert:
-
@hg6806 Getrennt voneinander.
Wie sollte der zweite Trigger denn triggern wenn der erste nie angefangen hat bzw. das eigentliche Skript nie angestoßen wurde? -
@paul53
Danke für deinen Vorschlag, den ich versuche zu verstehen.Im rechten Block ersetze ich oben durch "Wert von Freigabe = Wahr" oder?
Wo finde ich "setze Sollwert auf"?
Wann benutze ich Setze, wann steure, wann aktualisiere?
Ist für immer das Gleiche. -
@hg6806 sagte: Im rechten Block ersetze ich oben durch "Wert von Freigabe = Wahr" oder?
Nein. Wert (unter "Trigger") ist effektiver und entspricht "Wert von Freigabe = Wahr".
@hg6806 sagte in Frage wegen Warnings in Blockly Prg:
Wo finde ich "setze Sollwert auf"?
Unter "Variablen" nachdem die Variable sollwert erstellt wurde.
@hg6806 sagte in Frage wegen Warnings in Blockly Prg:
Wann benutze ich Setze, wann steure, wann aktualisiere?
"setze" ändert Variablen, "steuere" ändert Adapter-Datenpunkte und "aktualisiere" ändert eigene Datenpunkte (unter "0_userdata.0").
-
Wert unter "Trigger" finde ich nicht.
Davon verstehe ich den Sinn nicht.
@paul53 sagte in Frage wegen Warnings in Blockly Prg:
"setze" ändert Variablen, "steuere" ändert Adapter-Datenpunkte und "aktualisiere" ändert eigene Datenpunkte (unter "0_userdata.0").
Eigene Datenpunkte sind für mich Variablen. Ich erzeuge die immer in javascript.o.xxxx
Wieso dann extra Variablen hier in Blockly?
Deswegen ist wohl auch in Variablen nur ein Block mit "Element" womit ich nichts anfangen kann. -
@hg6806 sagte in Frage wegen Warnings in Blockly Prg:
Eigene Datenpunkte sind für mich Variablen.
das sind aber keine Variablen sondern States
@hg6806 sagte in Frage wegen Warnings in Blockly Prg:
Wieso dann extra Variablen hier in Blockly?
Wie gesagt nicht extra, sondern tatsächlich Variablen.
Diese werden nicht extern geschrieben (was Zeit dauert und bei zu frühem Zugriffsversuch noch nicht geschrieben sein könnten = siehe auch Asynchronität) sondern ausschließlich im js/Blockly verwendet.
Dadurch ist der Inhalt auch zur Laufzeit immer korrekt.
Zum Schluss eines Skriptes kannst du deine Variable in deine Datenpunkte schreiben, um sie zu Visualisieren oder woanders zu verwenden.
@hg6806 sagte in Frage wegen Warnings in Blockly Prg:
Wert unter "Trigger" finde ich nicht.
Das ist unter der Kategorie "Trigger" der kleine Baustein mit dem Pulldownmenü hinter dem sich viele nütliche Funktionen, u.a. eben "Wert", befinden
-
Ist das der Baustein aus Logik?
Wenn ja, wie geht der übereinander statt nebeneinander? -
@hg6806
auf externe Eingänge umschalten -
@hg6806 sagte in Frage wegen Warnings in Blockly Prg:
Wenn ja, wie geht der übereinander statt nebeneinander?
rechte Maustaste auf den Baustein und dann umschalten externe/interne Eingänge
-
@hg6806 sagte in Frage wegen Warnings in Blockly Prg:
Wert unter "Trigger" finde ich nicht.
der hier...(wie @Homoran schreibt---Kategorie Trigger)
Das hat @paul53 in seinem Beispiel auch gezeigt.
-
Ein "und" bekomme ich hier nicht
-
@hg6806
Es ist doch nicht so schwer sich die richtigen Blöcke selber zu suchen.
UND ist Logik
-
So, habe es umgesetzt, tut leider nicht.
Der aktuelle Wert wird abgespeichert, aber es wird wenn die Bedingung erfüllt ist, nicht hochgezählt.
Wie kann man die Variable abfragen?"timeout" hatte ich als Variable ebenfalls angelegt, war das richtig?
-
@hg6806
Im unteren Blockly hast Du Wert von Objekt ID….als Trigger, das geht schon mal nicht. (nur Objekt ID nehmen) -
Stimmt!
Ist gefixt.Ich bekomme allerdings noch immer ein Warning:
Ist Zeile 17?
-
@hg6806 Kein Screenshot!
ich kann da nichts zitieren! -
OK, hier das Javascript:
var Boost_Soll_T_Raum, timeout, timeout; on({id: 'smartmeter.0.1-0:16_7_0__255.value', change: "ne"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("javascript.0.PV.Heizung-Boost").val && !timeout) { if ((obj.state ? obj.state.val : "") < -500) { if (Boost_Soll_T_Raum < 30) { Boost_Soll_T_Raum = (typeof Boost_Soll_T_Raum == 'number' ? Boost_Soll_T_Raum : 0) + 0.5; } } } else if ((obj.state ? obj.state.val : "") < -50 && Boost_Soll_T_Raum > getState("javascript.0.PV.Raumtemp-Soll_alt").val) { Boost_Soll_T_Raum = (typeof Boost_Soll_T_Raum == 'number' ? Boost_Soll_T_Raum : 0) + -0.5; } if (getState("smartmeter.0.1-0:16_7_0__255.value").val != Boost_Soll_T_Raum) { setState("fhem.0.myHPSU.HPSU~Soll_T_Raum_1"/*myHPSU HPSU.Soll_T_Raum_1*/, Boost_Soll_T_Raum); timeout = setTimeout(async function () { timeout = null; }, 60000); } }); setState("javascript.0.PV.Heizung-Boost"/*Heizung-Boost*/, false); on({id: 'javascript.0.PV.Heizung-Boost', change: "ne"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if ((obj.state ? obj.state.val : "")) { Boost_Soll_T_Raum = getState("fhem.0.myHPSU.HPSU~Soll_T_Raum_1").val; setState("javascript.0.PV.Raumtemp-Soll_alt"/*Raumtemp-Soll_alt*/, Boost_Soll_T_Raum, true); } else { setState("fhem.0.myHPSU.HPSU~Soll_T_Raum_1"/*myHPSU HPSU.Soll_T_Raum_1*/, getState("javascript.0.PV.Raumtemp-Soll_alt").val); } });