NEWS
Gleitkommazahl in Vis 2 anzeigen
-
Ich habe in einem DB meiner S7 eine Gleitkommazahl und möchte die in der Vis 2 anzeigen,
ich finde aber bis jetzt noch keine Möglichkeit für die Anzeige. -
Du hast jetzt keine weiteren Anforderungen dazugeschrieben.
Aber Basic/Number ist schon mal die Wahl.Da ich vermute, dass du das Widget schon gefunden hast, aber Probleme macht, schildere doch mal deine Probleme.
Ich vermute mal, deine Zahl ist im Datenpunkt mit Komma gespeichert und ist damit für Javascript keine Zahl, sondern ein String. Im Datenpunkt müssen zahlen immer mit Punkt Als Gleitzahlentrenner gespeichert werden -
@oliverio Ich habe in Basic/Number in der Object ID S7 db10 dbd112eingetragen und bekomme eine 11 Stellige Zahl angezeigt. Wenn ich in anderen Visualisierungen (HMIDroid) das Format Float wird mir die Temperatur richtig angezeigt.
-
zeige bitte was im datenpunkt drin steht?
am besten auch gleich die objektdaten mit liefernbei meinem beispiel steht
das drin
die objektdaten sehen so aus
{ "common": { "name": "Floatnumber", "desc": "Manually created", "role": "state", "type": "number", "read": true, "write": true, "def": 0 }, "type": "state", "native": {}, "from": "system.adapter.admin.0", "user": "system.user.admin", "ts": 1759316629435, "_id": "0_userdata.0.Floatnumber", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }
und im ergebnis dann so
-
Ich weiss nicht, ob das im html-code von vis geht, aber in den javascripten benutze ich immer parsefloat, um damit sinnvoll zu rechnen, Beispiel:
Math.round(((parseFloat(getState('0_userdata.0.Datenpunkte.Strom.Einspeisung').val) / 1.5 + parseFloat(getState('0_userdata.0.Datenpunkte.EV_Wallbox.EV-Ladestrom').val)) - (parseFloat(getState('0_userdata.0.Datenpunkte.Strom.Netzbezug').val) + 675)) / 68.75);
Im vis html-Code sieht das dann so aus :
{wert1:0_userdata.0.Datenpunkte.Strom.Einspeisung; (+wert1).toFixed(0)} W
.toFixed(0) rundet ohne Nachkommastellen afair.
In diesem Config von einem Label als Anzeige eintragen:
Mit folgendem Ergebnis im Vis:
Dort kann man mit etwas Einarbeitung ziemlich coole Sachen machen:
Wertabhängige Farbsteuerung:
{wert1:sma-em.0.3017XXXXX.psurplus; wert1 > 0 ? "#56e16b": "#bb4444"}
hier eintragen:
Schaltet die Hintergrundfarbe des Labels von rot auf grün je nach Wert im Datenpunkt
-
@oliverio Meine SPS übergibt bei 18,0°C den Wert 1009956224
im IOBroker steht der gleiche Wert (im Bild hat sich die Temperatur ein wenig geändert)
hier noch die Objektdaten
in der Visu müßten die Werte umgewandelt werden damit die 18.0 angezeigt werden. -
wenn du mir jetzt sagst wie man von dem wert
1009956224
nach 18.0 kommt?ich habe diese Geräte nicht.
Ich kenne da keine Formel.
Was wir aber feststellen konnten.
Das widget funktioniert und zeigt genau den Wert an der auch im Datenpunkt drin steht.Die Frage ist ja eher warum im iobroker nicht 18.0 steht
sondern so eine kryptische Zahl
Wenn dann müsste der Adapter doch eher/auch die 18.0 liefern. -
nimm mal nicht Deinen selbst angelegten Datenpunkt, sondern den vom S7-Adapter.
Ich lese selbst auch Real-Werte von meiner SPS und die Funktionieren mit dem Basic-Widget ganz normal.
Den Haken bei "Komme als Trennung" kannst Du weglassen.
Hier noch ein Bild vom Datenpunkt im S7-Adapter
Und der Datenpunkt, wie in der Adapter anlegt:
{ "from": "system.adapter.s7.0", "user": "system.user.admin", "ts": 1757059174328, "common": { "name": "", "role": "value", "unit": "", "type": "number", "read": true, "write": false }, "native": { "cat": "db", "type": "REAL", "db": "DB125", "len": null, "dbId": 125, "address": 158, "offsetBit": 0, "rw": false, "wp": false }, "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator", "state": 1636 }, "_id": "s7.0.DBs.DB125.Füllstand_Pellets_Kessel", "type": "state" }
-
@meinzisas Mit dem Realwert der SPS vor der Umwandlung in Gleitkommazahl hat es geklappt.
Danke