NEWS
(Gelöst) Absoluten Wert eines Objekts anzeigen
-
@amg_666 Update : Ich hab das jetzt ans Laufen bekommen, allerdings über den Umweg eines alias.
html widgt und da dann{wert:alias.0.testtest.value;Math.abs(wert)}
zeigt mir den absoluten Betrag des Wertes an. Aber verstehen tue ich es nicht, beide Werte (DP und Alias) sind Zustandstyp "Zahl". Der originale Datenpunkt (funktioniert nicht) hat die Objektdaten
{ "_id": "mqtt.0.iot.smartmeter.sensor.1.obis.1-0:16.7.0.255.value", "common": { "name": "iot/smartmeter/sensor/1/obis/1-0:16.7.0/255/value", "write": true, "read": true, "role": "variable", "desc": "mqtt server variable", "type": "number", "custom": { "history.0": { "enabled": true } } }, "native": { "topic": "iot/smartmeter/sensor/1/obis/1-0:16.7.0/255/value" }, "type": "state", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" }, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1716028810331 }
Der Alias (funktioniert) hat die 1:1 übernommen:
{ "type": "state", "common": { "name": "iot/smartmeter/sensor/1/obis/1-0:16.7.0/255/value", "role": "variable", "type": "number", "read": true, "write": true, "alias": { "id": "mqtt.0.iot.smartmeter.sensor.1.obis.1-0:16.7.0.255.value" }, "custom": { "history.0": { "enabled": true } } }, "_id": "alias.0.testtest.value", "native": {}, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1716308213191, "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }
Hat hier jemand eine Idee, woran es liegen könnte? Ich kann da zwar so mit leben, aber schön ist irgendwie anders
-
ginge:
{wert:mqtt.0.iot.smartmeter.sensor.1.obis.1-0:16.7.0.255.value;wert<0 ? "-"+String(Math.abs(wert)): "+"+String(Math.abs(wert))}
-
Ist der orginale Wert vlt. vom Typ Zahl, aber als string gespeichert und enthält dann ein , statt einen . ?
Das würde es erklären: -
@liv-in-sky sagte in Absoluten Wert eines Objekts anzeigen:
{wert:mqtt.0.iot.smartmeter.sensor.1.obis.1-0:16.7.0.255.value;wert<0 ? "-"+String(Math.abs(wert)): "+"+String(Math.abs(wert))}
Nein, das spuckt in der vis "+NaN" aus
-
@amg_666 vis 1 oder vis 2
-
@jogibear9988 Wenn ich in die Objekte schau, dann ist das "type: number" (siehe auch oben die geposteten Objektdaten) und der Wert ist mit einem Punkt, kein Komma:
Momentan z.B. -446.6 -
mal ne andere frage - warum machst du das - ein minus-wert wird doch als minus angezeigt - bei einem normalen binding ?
{mqtt.0.iot.smartmeter.sensor.1.obis.1-0:16.7.0.255.value}
müßte doch reichen
-
@liv-in-sky Nee, wie oben geschrieben, ich hab diesen +/- thread genommen um zu schauen ob das überhaupt funktioniert (tut es nicht), was ich wirklich will ist "nur" den absoluten Wert darstellen, also z.B. 446 wenn es **-**446 sind.
Was ich also will ist Math.abs(xyz) als binding und das funktioniert jetzt bei mir nur mit Alias, nicht mit direktem DP -
@amg_666 nochmal : vis1 oder vis2
-
{wert1:0_userdata.0.CONTROL-OWN.AAATEST.TestStart; Math.abs(wert1) }
vis1: bei mir geht das ohne probleme
-
@liv-in-sky vis1
-
was sagt den die entwicklungsumgebung von chrome, wenn du die seite refresht ?
-
falsche antwort
-
@liv-in-sky ich wll ja eigentlich "nur"
{wert:mqtt.0.iot.smartmeter.sensor.1.obis.1-0:16.7.0.255.value;Math.abs(wert)}
also ohne irgendwelche String Additionen, das funktioniert schon nicht.
Ich weiss nicht was genau aus Chrome ich hier posten soll, der html Quelltext liefert schon das "NaN":
Ich nutze auch eigentlich Firefox, habs jetzt in Chrome geladen, selbes Ergebnis (math.abs mit direktem Datenpunkt geht nicht, Math.abs mit Alias-Datenpunkt geht
-
-
@amg_666 said in Absoluten Wert eines Objekts anzeigen:
{wert:mqtt.0.iot.smartmeter.sensor.1.obis.1-0:16.7.0.255.value;Math.abs(wert)}
was steht da wenn du es so machst (oder geht das bei vis überhaupt??)
{wert:mqtt.0.iot.smartmeter.sensor.1.obis.1-0:16.7.0.255.value;wert}
-
also:
nochmal getestet - das funktioniert bei mir damit:
{wert11:0_userdata.0.CONTROL-OWN.AAATEST.TestStart; wert11 > 0 ? '+'+ String(Math.abs(wert11)) : '-' + String(Math.abs(wert11))}
mit dem alias geht das wahrscheinlich nur - weil du keine doppelpunkte in der object id haben darfst - ist ein fehler auf github und wurde nie repariert
da ist der fehler drin vor 0:16
.1.obis.1-0:16.7.
-
@liv-in-sky sagte in Absoluten Wert eines Objekts anzeigen:
weil du keine doppelpunkte in der object id haben darfst
Dann ist das die Antwort, die ich gesucht habe (die ich aber nicht hören will
)
Die mqtt Datenpunkte kommen von einem Lesekopf für meinen Smartmeter, da kann ich am Namen nichts anpassen, also muss ich wohl mit dem Alias leben.Danke an alle