NEWS
(Gelöst) Absoluten Wert eines Objekts anzeigen
-
@homoran sagte in Absoluten Wert eines Objekts anzeigen:
arbeitest du da mit Vorzeichen als String?
Das ist erstmal nur ein Test, ob das mit math.abs überhaupt klappt, hier wird einfach ein Vorzeichen davor geschrieben, eigentlich will ich nur den absoluten Wert ausgeben, ich hatte aus dem alten Thread die Lösung (mit Vorzeichen als String) kopiert und schon die funktioniert nicht.
Der Datenpunkt ist eine "number", von daher müsste die Funktion math.abs eigentlich greifen, oder?{ "_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 }
-
@amg_666 Für mich sieht das richtig aus. Geht es so?
{wert:mqtt.0.iot.smartmeter.sensor.1.obis.1-0:16.7.0.255.value;wert < 0 ? `-${Math.abs(wert)}` : `+${Math.abs(wert)}`}
Mich wundert dass NaN rauskommt. Welches Widget verwendest Du denn? Eventuell wird versucht das Ergebnis vom Binding (was ja ein String ist) irgendwie wieder zu parsen.
-
@haus-automatisierung sagte in Absoluten Wert eines Objekts anzeigen:
{wert:mqtt.0.iot.smartmeter.sensor.1.obis.1-0:16.7.0.255.value;wert < 0 ?
-${Math.abs(wert)}
:+${Math.abs(wert)}
}Das ergibt
ich benutze das "normale" html widget:
[{"tpl":"tplHtml","data":{"g_fixed":false,"g_visibility":false,"g_css_font_text":true,"g_css_background":true,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","refreshInterval":"0","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"html":"{wert:mqtt.0.iot.smartmeter.sensor.1.obis.1-0:16.7.0.255.value;wert<0 ? \"-\"+Math.abs(wert): \"+\"+Math.abs(wert)} "},"style":{"left":"1776px","top":"425px","color":"#ffffff","font-family":"\"Lucida Sans Unicode\", \"Lucida Grande\", sans-serif","text-align":"right","background":"#000000","width":"122px","height":"44px","z-index":"1"},"widgetSet":"basic"}]
-
@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.