NEWS
Wert wird nicht gelesen
-
Bei meinem ersten Skript habe ich das Problem, dass ich statt des Werts nur den Namen erhalten.
Mein kleines Hello-World-Programm schaut so aus
schedule("*/10 * * * * *", function () { var Luftdruck = "hm-rega.0.2464"/*Luftdruck*/ var Luftdruck1 = "hm-rega.0.2464.state"/*Luftdruck*/ log(Luftdruck, "info"); log(Luftdruck1, "info"); if (Luftdruck > 1010) { log("Luftdruck > 1010 hPa", "info"); } });
Aber statt des erwarteten Werts erhalte ich die Objekt-Daten
14:17:09.923 [info] javascript.0 script.js.Test_Abfrage_Luftdruck: schedule(cron=*/10 * * * * *) [info] javascript.0 script.js.Test_Abfrage_Luftdruck: registered 0 subscriptions and 1 schedule [info] javascript.0 script.js.Test_Abfrage_Luftdruck: hm-rega.0.2464 [info] javascript.0 script.js.Test_Abfrage_Luftdruck: hm-rega.0.2464.state [info] javascript.0 Stop script script.js.Test_Abfrage_Luftdruck
Was mache ich falsch?
Wie komme ich an Wert selbst?
-
getState(Luftdruck).val
-
const idLuftdruck = getIdByName('Luftdruck'); on(idLuftdruck, function(dp) { var Luftdruck = dp.state.val; log('Luftdruck: ' + Luftdruck + ' hPa'); });
getIdByName(name) funktioniert nur, wenn der Name "Luftdruck" nur einmal (an die SV) vergeben wurde.
-
getState(Luftdruck).val ```` `
Danke, das funktioniert.
const idLuftdruck = getIdByName('Luftdruck'); on(idLuftdruck, function(dp) { var Luftdruck = dp.state.val; log('Luftdruck: ' + Luftdruck + ' hPa'); });
getIdByName(name) funktioniert nur, wenn der Name "Luftdruck" nur einmal (an die SV) vergeben wurde. `
Das verstehe ich nicht.Was meinst Du damit?
-
Was meinst Du damit? `
Objekt-Namen sind in ioBroker nicht zwingend eindeutig, d.h. der gleiche Name (im Beispiel "Luftdruck") kann mehrfach vergeben sein. Ist der Name mehrfach vergeben, liefert die Funktion getIdByName(name) ein Array mit mehreren IDs, denn IDs sind immer eindeutig.const idLuftdruck = getIdByName('Luftdruck');
kann ersetzt werden durch
const idLuftdruck = "hm-rega.0.2464"/*Luftdruck*/;
Die Verwendung der Funktion getIdByName(name) ist gerade bei Systemvariablen sinnvoll, da die ID keine Aussagekraft hat.
-
Danke für die ausführliche Erklärung!