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.
-
-
@Johannes-Bauerstatter ersetz mal den Text in der if abfrage durch
obj.State.Val
So 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.Val
So 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
-
Danke für die Korrektur. Und mist Autokorrektur
A. -
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.
-
@Asgothian Danke. Sorry, meinte Javascript.