NEWS
setState schreibt Wert nicht
-
Hallo.
Ich hab mir ein einfaches Skript gefriemelt. Es ist nicht mein erstes mal JS. Mit den IObroker spezifischen schon.
Es geht um einen einfachen Mittelwert.var target = 'Temperaturen.InnenMittelwert'; // list all remperatures Insides here var inside_t =[ "ble.0.58:2d:34:3b:66:e3.temperature", // Wohnzimmer "ble.0.58:2d:34:3b:72:9f.temperature", // Schlafzimmer "ble.0.58:2d:34:3b:75:5c.temperature" // Küche ] on({id: inside_t, change: "any"}, function (obj) { var sum = 0 inside_t.forEach(function(item, index, array) { sum = sum + getState(item).val }); var result = sum / (inside_t.length) result = Math.round(result*100)/100 if ( !existsState(target )) { createState(target, result,{name: "Durchschnittstemperatur.", type: 'number', role: 'value'}, function () {}); } else { setState(target, result, true); } console.log(result) });Beim Anlegen des Objekts wird der Wert korrekt geschrieben in "javascript.0.Temperaturen.InnenMittelwert".
Nur überschreibt setState den wert nicht. Wo habe ich einen Fehler gemacht ?Grüße
Stephan -
Hallo.
Ich hab mir ein einfaches Skript gefriemelt. Es ist nicht mein erstes mal JS. Mit den IObroker spezifischen schon.
Es geht um einen einfachen Mittelwert.var target = 'Temperaturen.InnenMittelwert'; // list all remperatures Insides here var inside_t =[ "ble.0.58:2d:34:3b:66:e3.temperature", // Wohnzimmer "ble.0.58:2d:34:3b:72:9f.temperature", // Schlafzimmer "ble.0.58:2d:34:3b:75:5c.temperature" // Küche ] on({id: inside_t, change: "any"}, function (obj) { var sum = 0 inside_t.forEach(function(item, index, array) { sum = sum + getState(item).val }); var result = sum / (inside_t.length) result = Math.round(result*100)/100 if ( !existsState(target )) { createState(target, result,{name: "Durchschnittstemperatur.", type: 'number', role: 'value'}, function () {}); } else { setState(target, result, true); } console.log(result) });Beim Anlegen des Objekts wird der Wert korrekt geschrieben in "javascript.0.Temperaturen.InnenMittelwert".
Nur überschreibt setState den wert nicht. Wo habe ich einen Fehler gemacht ?Grüße
Stephan@stephan-4
Und wieder note to myself:einfach immer schreiben. das else hat es iwie kaputt gemacht
nicht kopieren fehler drin:
var target = 'Temperaturen.InnenMittelwert'; // list all remperatures Insides here var inside_t =[ "ble.0.58:2d:34:3b:66:e3.temperature", // Wohnzimmer "ble.0.58:2d:34:3b:72:9f.temperature", // Schlafzimmer "ble.0.58:2d:34:3b:75:5c.temperature" // Küche ] on({id: inside_t, change: "any"}, function (obj) { var sum = 0 inside_t.forEach(function(item, index, array) { sum = sum + getState(item).val }); var result = sum / (inside_t.length) result = Math.round(result*100)/100 if ( !existsState(target)) { createState(target, result,{name: "Durchschnittstemperatur.", type: 'number', role: 'value'}, function () {}); } setState(target, result, true); //console.log(result) });Falls die Selbstgespräche nerven, bitte anschreien!
Küsschen
Stephan -
Hallo.
Ich hab mir ein einfaches Skript gefriemelt. Es ist nicht mein erstes mal JS. Mit den IObroker spezifischen schon.
Es geht um einen einfachen Mittelwert.var target = 'Temperaturen.InnenMittelwert'; // list all remperatures Insides here var inside_t =[ "ble.0.58:2d:34:3b:66:e3.temperature", // Wohnzimmer "ble.0.58:2d:34:3b:72:9f.temperature", // Schlafzimmer "ble.0.58:2d:34:3b:75:5c.temperature" // Küche ] on({id: inside_t, change: "any"}, function (obj) { var sum = 0 inside_t.forEach(function(item, index, array) { sum = sum + getState(item).val }); var result = sum / (inside_t.length) result = Math.round(result*100)/100 if ( !existsState(target )) { createState(target, result,{name: "Durchschnittstemperatur.", type: 'number', role: 'value'}, function () {}); } else { setState(target, result, true); } console.log(result) });Beim Anlegen des Objekts wird der Wert korrekt geschrieben in "javascript.0.Temperaturen.InnenMittelwert".
Nur überschreibt setState den wert nicht. Wo habe ich einen Fehler gemacht ?Grüße
Stephan@stephan-4 ergänze mal target um
javascript.0.und schaue auch mal unter 0_userdata.0 nach -
Hallo.
Ich hab mir ein einfaches Skript gefriemelt. Es ist nicht mein erstes mal JS. Mit den IObroker spezifischen schon.
Es geht um einen einfachen Mittelwert.var target = 'Temperaturen.InnenMittelwert'; // list all remperatures Insides here var inside_t =[ "ble.0.58:2d:34:3b:66:e3.temperature", // Wohnzimmer "ble.0.58:2d:34:3b:72:9f.temperature", // Schlafzimmer "ble.0.58:2d:34:3b:75:5c.temperature" // Küche ] on({id: inside_t, change: "any"}, function (obj) { var sum = 0 inside_t.forEach(function(item, index, array) { sum = sum + getState(item).val }); var result = sum / (inside_t.length) result = Math.round(result*100)/100 if ( !existsState(target )) { createState(target, result,{name: "Durchschnittstemperatur.", type: 'number', role: 'value'}, function () {}); } else { setState(target, result, true); } console.log(result) });Beim Anlegen des Objekts wird der Wert korrekt geschrieben in "javascript.0.Temperaturen.InnenMittelwert".
Nur überschreibt setState den wert nicht. Wo habe ich einen Fehler gemacht ?Grüße
Stephan@stephan-4 sagte: Wo habe ich einen Fehler gemacht ?
existsState(id) benötigt die vollständige ID "javascript.0.Temperaturen.InnenMittelwert".
-
@stephan-4 sagte: Wo habe ich einen Fehler gemacht ?
existsState(id) benötigt die vollständige ID "javascript.0.Temperaturen.InnenMittelwert".
@paul53 said in setState schreibt Wert nicht:
javascript.0.Temperaturen.InnenMittelwert
Vielen Dank, so ist es.
var target = 'javascript.0.Temperaturen.InnenMittelwert'; // list all remperatures Insides here var inside_t =[ "ble.0.58:2d:34:3b:66:e3.temperature", // Wohnzimmer "ble.0.58:2d:34:3b:72:9f.temperature", // Schlafzimmer "ble.0.58:2d:34:3b:75:5c.temperature" // Küche ] on({id: inside_t, change: "any"}, function (obj) { var sum = 0 inside_t.forEach(function(item, index, array) { sum = sum + getState(item).val }); var result = sum / (inside_t.length) result = Math.round(result*100)/100 if ( !existsState(target)) { createState(target, result,{name: "Durchschnittstemperatur.", type: 'number', role: 'value'}, function () {}); } else { setState(target, result, true); } });
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