Seite 1 von 2
[gelöst] Edit Item Metadata: stateDescription
Verfasst: 18. Aug 2021 15:46
von scotty
Hallo,
ich habe es tatsächlich geschafft, mit großer Unterstützung der englischen Community, den Ookla-Speedtest unter OH3.1 im Docker auf meiner Synology zu installieren. Da gibt es jetzt u. a. jeweils ein Item "Download Bytes" und "Upload Byte". Ein Ergebnis für Download ist meines Erachtens mit "986713544" wenig einprägsam.
Weiß jemand, ob unter stateDescription das Ergebnis durch einen funktionierenden Eintrag in Mbit anzeigt werden kann?
Re: Edit Item Metadata: stateDescription
Verfasst: 18. Aug 2021 16:51
von udo1toni
Die Frage ist, ob es sich um ein UoM Item handelt.
Re: Edit Item Metadata: stateDescription
Verfasst: 18. Aug 2021 17:39
von scotty
Hallo Udo,
was bitte ist ein UoM Item?
Re: Edit Item Metadata: stateDescription
Verfasst: 18. Aug 2021 19:38
von scotty
Meine Recherchen haben ergeben: Unit of Measure. Aber wie kann ich das überprüfen?
Re: Edit Item Metadata: stateDescription
Verfasst: 18. Aug 2021 19:52
von udo1toni
UoM (Units of Measurement) Items haben eine Einheit, die mitsamt dem Wert ausgeliefert wird. Die Einheit wird jederzeit angezeigt, also insbesondere in der Itemliste, aber auch im Log, wenn ein ItemStateChanged Event eintritt.
Der Witz bei einem UoM Item ist, dass Du nur die gewünschte Einheit angeben musst, und Du erhältst den Messwert in der Einheit. z.B. wäre die Geschwindigkeit bit/s ein Item vom Typ Number:DataTransferRate. Du musst dann lediglich als Einheit Mbit/s eintragen, um den Wert in Mbit/s zu erhalten. Wenn Du Mibit bevorzugst, schreibst Du Mibit/s und erhältst den Wert in Mibit/s. (M = Mega, 1000x1000, Mi = Megi, 1024x1024)
Auf der UoM Seite ist B/s (Byte pro Sekunde) nicht gelistet, ich gehe also davon aus, dass MB/s nicht funktionieren wird.
Aber ich denke, allein das Beispiel mit dem Bezug auf die Zweierpotenz statt Dezimalstellenverschiebung zeigt, welches Potential in UoM schlummert. Das funktioniert genauso z.B. auch mit °F statt °C (oder umgekehrt) und ganz ohne weiteres Zutun.
Wenn der verknüpfte Channel kein UoM nutzt, nutzt es leider nichts, das Item mit UoM zu definieren. Dann bleibt Dir nur eine Konvertierung, z.B. mit einer JS Transformation. Das machst Du dann über ein Profile.
Re: Edit Item Metadata: stateDescription
Verfasst: 19. Aug 2021 00:01
von scotty
Vielen Dank für die ausführliche Info!
Re: Edit Item Metadata: stateDescription
Verfasst: 29. Aug 2021 02:05
von scotty
Ich greife dieses Thema noch einmal auf, weil der verknüpfte Channel kein UoM nutzt und eine Konvertierung bisher von mir noch nicht realisiert werden konnte.
Deshalb würde ich dich, lieber Udo, einmal bitten mir zu zeigen, wie das am folgenden Beispiel funktioniert: Es sollen 1128332512 Bytes so konvertiert werden, dass ein Wert in MB mit 2 Nachkommastellen angezeigt werden.
Re: Edit Item Metadata: stateDescription
Verfasst: 29. Aug 2021 04:31
von udo1toni
Na, Du musst lediglich den Zahlenwert durch 1024*1024 teilen. Das machst Du mit einer JS Transformation
Eigentlich sollte folgendes Script reichen:
Code: Alles auswählen
(function(byte){
var mbyte = byte/1024/1024;
return mbyte;
})(input)
Das speicherst Du im Ordner /etc/openhab/transform/ unter dem Namen byteToMbyte.js ab.
Dann gibst Du als Profile beim Item JS:byteToMbyte.js an.
Abschließend musst Du noch das Pattern anpassen, dass mit %f.2 MByte/s eben nur noch zwei Nachkommastellen angezeigt werden.
Alles ungetestet

Re: Edit Item Metadata: stateDescription
Verfasst: 29. Aug 2021 06:09
von scotty
Das Script habe ich im Ordner /transform/ gespeichert. Allerdings funktioniert es noch nicht.
Schau selbst:
screenshot_2.png
Re: Edit Item Metadata: stateDescription
Verfasst: 29. Aug 2021 12:49
von udo1toni
Was daran liegt, dass das nichts mit JSON und schon gar nichts mit JSONPATH zu tun hat. Es handelt sich um JavaScript. Da JS in der Liste der Profile nicht auftaucht, musst Du zuerst noch den JS Transformation Service installieren.
