NEWS
Blockly rookie - PI Temperatur auslesen und im IOBroker Objekten als Temp anzeigen
-
Hallo an Alle,
Ich bin gerade am Anfang mit blockly und habe eher wenig Erfahrungen im Programmieren und habe mir deshalb ein einfaches Beispiel ausgesucht.
Also ich möchte einfach nur die PiTemperatur auslesen und als Variable Temp angezeigt bekommen.
Folgendes Blockly habe ich erstellt und bekomme aber keine Ausgabe, wenn mir jemand Zeigen könnte wie das funktioniert wäre ich sehr dankbar.
…. aller Anfang ist schwer, deshalb danke für eure Hilfe....
Im IOBroker - Objekte - Javascript habe ich folgendes Anzeige, Temp habe ich selber erstellt und die ist aber immer auf 0°C
Danke für eure Hilfe,
Stefan
-
1. Das Skript nicht unter der Gruppe global erstellen :!:
2. Eigene Datenpunkt nicht unter javascript.0.scriptEnabled, sondern direkt unter javascript.0 erstellen :!:
3. Mit setze Temp auf … wird nur eine Skriptvariable gesetzt. Um den Wert in den eigenen Datenpunkt zu schreiben, verwende aktualisiere.
-
Hi Paul53,
Ich habe jetzt mal versuch, soweit ich es verstanden habe, deine Informationen umzusetzen.
Kannst du bitte bestätigen ob du das so gemeint hast bzw, mit sagen wo der Fehler liegt da der Wert noch immer 0 ist.
Danke und mfg, Stefan
-
Ziel und Quelle sind identisch (rpi2.0.temperature.soc_temp). Die Datenpunkt-ID für aktualisiere muss javascript.0.Temp sein.
-
Hi Paul53,
Ich habe die Variable im Blocky von Temp auf Temperature geändert da es mich etwas verwirrt hat.
Habe ich das richtig verstanden, wenn sich der Wert für rpi2.0.temperature.soc_temp ändert dann setzte die Variable Temperatur auf den Wert von rpi2.0.temperature.soc_temp danach aktualisiere javascript.0.Temp mit dem Wert von rpi2.0.temperature.soc_temp
Leider funktioniert das noch immer nicht der Wert javascript0.Temp zeigt noch immer 0 an.
Ich habe mal den Code kopiert den blockly anzeigt.
var Temperatur; on({id: getState("rpi2.0.temperature.soc_temp").val, change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; Temperatur = getState("rpi2.0.temperature.soc_temp").val; setState("javascript.0.Temp"/*Temp*/, Temperatur, true); });
Danke und mfg, Stefan
-
der Wert javascript0.Temp zeigt noch immer 0 an. `
Die Temperatur muss sich erst einmal ändern, bevor sie in den neuen Datenpunkt geschrieben wird. -
Hi Paul53,
Die Temperatur von soc_temp hat sich verändert aber javascript.0.Temp hat sich nicht verändert.
Wo kann das Problem noch liegen ?
Danke und mfg,
Stefan
-
Hatte ich übersehen: Der Trigger darf nicht Wert von Objekt sein, sondern das Objekt selbst.
Falls Objekt Objekt ID rpi2.0.temperature.soc_temp
Es geht auch ohne Zwischenvariable:
Oder mit dem Wert des Trigger-Datenpunktes:
Oder mit der vordefiniereten Skriptvariablen value:
-
Hi Paul53,
Danke für deine tolle Hilfe jetzt funktioniert es, ich werde mich jetzt damit weiter beschäftigen und sicher auch das eine oder andere mal wieder ein paar fragen ans Forum haben und auch die Suchfunktion verwenden
Zur Dokumentation und vielleicht auch als Hilfe für andere, anbei die Screenshots
var Temperatur; on({id: 'rpi2.0.temperature.soc_temp', change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; Temperatur = getState("rpi2.0.temperature.soc_temp").val; setState("javascript.0.Temp"/*Temp*/, Temperatur, true); });
mfg
Stefan