NEWS
Anfänger: Javascript Operator <= Problem [solved]
-
Hallo,
habe folgenden Datenpunkt:
{ "from": "system.adapter.javascript.0", "user": "system.user.admin", "ts": 1602006860081, "common": { "name": "EGStrom DS18B20 Temperature", "type": "number", "role": "variable", "unit": "°C", "read": true, "write": false, "alias": { "id": "sonoff.0.EGStrom.DS18B20_Temperature" }, "custom": { "sourceanalytix.0": { "enabled": true, "alias": "", "selectedUnit": "automatisch", "costs": true, "consumption": true, "meter_values": true, "start_day": "", "start_week": "", "start_month": "", "start_quarter": "", "start_year": 0, "selectedPrice": "Wählen" }, "influxdb.0": { "enabled": true, "changesOnly": false, "debounce": "1000", "retention": 0, "changesRelogInterval": 0, "changesMinDelta": 0, "storageType": "", "aliasId": "" } } }, "native": {}, "acl": { "object": 1638, "owner": "system.user.admin", "ownerGroup": "system.group.administrator", "state": 1638 }, "_id": "alias.0.Temperaturen.Wohnzimmer", "type": "state" }Der Datenpunkt zeigt folgendes unter Objekte an:

und würde gerne dieses Simple Script ausführen lassen:
const differenz = [ 'alias.0.Temperaturen.Wohnzimmer'/*EGStrom DS18B20 Temperature*/]; on (differenz, function (obj) { if ('alias.0.Temperaturen.Wohnzimmer' <= 23.5 ) {sendTo("telegram.0", "send", {text: 'Heizung ausgefallen?'});} });Hab schon alles versucht:
-
23,5
-
23.5
-
'23,5'
-
'23.5'
Was mach ich falsch?
Wenn es funktioniert möchte ich es noch um weitere Temp. erweitern. Das ist der Start, daher schon etwas umständlich für eine Abfrage.
-
-
Hallo,
habe folgenden Datenpunkt:
{ "from": "system.adapter.javascript.0", "user": "system.user.admin", "ts": 1602006860081, "common": { "name": "EGStrom DS18B20 Temperature", "type": "number", "role": "variable", "unit": "°C", "read": true, "write": false, "alias": { "id": "sonoff.0.EGStrom.DS18B20_Temperature" }, "custom": { "sourceanalytix.0": { "enabled": true, "alias": "", "selectedUnit": "automatisch", "costs": true, "consumption": true, "meter_values": true, "start_day": "", "start_week": "", "start_month": "", "start_quarter": "", "start_year": 0, "selectedPrice": "Wählen" }, "influxdb.0": { "enabled": true, "changesOnly": false, "debounce": "1000", "retention": 0, "changesRelogInterval": 0, "changesMinDelta": 0, "storageType": "", "aliasId": "" } } }, "native": {}, "acl": { "object": 1638, "owner": "system.user.admin", "ownerGroup": "system.group.administrator", "state": 1638 }, "_id": "alias.0.Temperaturen.Wohnzimmer", "type": "state" }Der Datenpunkt zeigt folgendes unter Objekte an:

und würde gerne dieses Simple Script ausführen lassen:
const differenz = [ 'alias.0.Temperaturen.Wohnzimmer'/*EGStrom DS18B20 Temperature*/]; on (differenz, function (obj) { if ('alias.0.Temperaturen.Wohnzimmer' <= 23.5 ) {sendTo("telegram.0", "send", {text: 'Heizung ausgefallen?'});} });Hab schon alles versucht:
-
23,5
-
23.5
-
'23,5'
-
'23.5'
Was mach ich falsch?
Wenn es funktioniert möchte ich es noch um weitere Temp. erweitern. Das ist der Start, daher schon etwas umständlich für eine Abfrage.
-
-
@Johannes-Bauerstatter ersetz mal den Text in der if abfrage durch
obj.State.ValSo wie du es machst vergleichst du den datenpunktnamen mit einer Zahl. Das bringt selten das gewünschte Ergebnis.
A.@Asgothian sagte in Anfänger: Javascript Operator <= Problem:
@Johannes-Bauerstatter ersetz mal den Text in der if abfrage durch
obj.State.ValSo wie du es machst vergleichst du den datenpunktnamen mit einer Zahl. Das bringt selten das gewünschte Ergebnis.
A.Gross/Kleinschreibung ist bei dir durcheinander geraten: es heisst
obj.stat.val -
@Asgothian sagte in Anfänger: Javascript Operator <= Problem:
@Johannes-Bauerstatter ersetz mal den Text in der if abfrage durch
obj.State.ValSo wie du es machst vergleichst du den datenpunktnamen mit einer Zahl. Das bringt selten das gewünschte Ergebnis.
A.Gross/Kleinschreibung ist bei dir durcheinander geraten: es heisst
obj.stat.val -
Vielen Dank.
Würde erweitert so funktionieren?
//notwendige Veränderungen um das Script zu durchlaufen const differenz = [ 'alias.0.Temperaturen.Wohnzimmer'/*EGStrom DS18B20 Temperature*/, 'alias.0.Temperaturen.Vorhaus_EG'/*Wemos Kueche Vorhaus/DS18B/Temperature*/]; //Script on (differenz, function (obj) { var Wohnz = getState('alias.0.Temperaturen.Wohnzimmer').val; //Temp. von Wohnzimmer einlesen var Vorha = getState('alias.0.Temperaturen.Vorhaus_EG').val; //Temp. von Vorhau einlesen if ((Wohnz <= 22.5) && (Vorha <= 20)) //Bedingung {sendTo("telegram.0", "send", {text: 'Heizung ausgefallen?'});} //Aktion });Sind meine Kommentare auch richtig? Ich versuche Java zu lernen für Iobroker daher noch so überborden. :-)
-
Vielen Dank.
Würde erweitert so funktionieren?
//notwendige Veränderungen um das Script zu durchlaufen const differenz = [ 'alias.0.Temperaturen.Wohnzimmer'/*EGStrom DS18B20 Temperature*/, 'alias.0.Temperaturen.Vorhaus_EG'/*Wemos Kueche Vorhaus/DS18B/Temperature*/]; //Script on (differenz, function (obj) { var Wohnz = getState('alias.0.Temperaturen.Wohnzimmer').val; //Temp. von Wohnzimmer einlesen var Vorha = getState('alias.0.Temperaturen.Vorhaus_EG').val; //Temp. von Vorhau einlesen if ((Wohnz <= 22.5) && (Vorha <= 20)) //Bedingung {sendTo("telegram.0", "send", {text: 'Heizung ausgefallen?'});} //Aktion });Sind meine Kommentare auch richtig? Ich versuche Java zu lernen für Iobroker daher noch so überborden. :-)
@Johannes-Bauerstatter sagte in Anfänger: Javascript Operator <= Problem:
Sind meine Kommentare auch richtig? Ich versuche Java zu lernen für Iobroker daher noch so überborden.
Das passt so. Aber: du lernst JavaScript. Java ist eine ganz andere Sprache.
A.
-
@Johannes-Bauerstatter sagte in Anfänger: Javascript Operator <= Problem:
Sind meine Kommentare auch richtig? Ich versuche Java zu lernen für Iobroker daher noch so überborden.
Das passt so. Aber: du lernst JavaScript. Java ist eine ganz andere Sprache.
A.
@Asgothian Danke. Sorry, meinte Javascript.
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