Subtraktion im Item?

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Bubbleman
Beiträge: 120
Registriert: 22. Dez 2020 17:03
Answers: 1

Subtraktion im Item?

Beitrag von Bubbleman »

Hallo zusammen

Ich muss was ausrechnen und habe keinerlei Ansatz wie das zu tun wäre, weil ich das bislang auch nicht tun musste.
In einem Item steht als Number der Gesamtverbrauch meines Stromzählers (Kilowattstunden, S0 per IR und WemosD1 Mini WiFi und MQTT). Von diesem Wert will ich die kWh zum Zeitpunkt der letzten Ablesung subtrahieren und in einem weiteren Item anzeigen lassen. Das Item soll also die verbrauchten kWh seit der letzten Ablesung anzeigen.
Wie und wo wäre das in OH3 umzusetzen?
Wahrscheinlich ganz einfach, habe aber keinen Ansatzpunkt/keine Idee.

Beste Grüße
Thomas
OH 3.1, Raspberry 4B, 4GB RAM, 256 GB Solid State Drive via SATA <-> USB Adapter, ConBee II ZigBee Stick

Benutzeravatar
udo1toni
Beiträge: 13858
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Subtraktion im Item?

Beitrag von udo1toni »

Dazu legst Du ein ungebundenes Item an (das nimmt den errechneten Wert auf) und zusätzlich eine Rule, in der Du die Berechnung vornimmst. Aber ehrlich: Das Forum ist voll davon...
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Benutzeravatar
peter-pan
Beiträge: 2564
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: Subtraktion im Item?

Beitrag von peter-pan »

... in OH3 gibt es evtl. noch eine andere Möglichkeit, aber nur, wenn die beiden Werte (Gesamtverbrauch + Verbrauch der letzten Ablesung) bekannt sind.

Das Widget/Cell könnte dann als Code etwa so aussehen:

Code: Alles auswählen

component: oh-label-cell
config:
  header: Subtraktion von zwei Items
  item: Socket_Fritz_04_Power
  subtitle: =items.Socket_Fritz_04_Power.displayState
  footer: =items.Socket_Fritz_03_Power.state
  label: =(Number.parseFloat(items.Socket_Fritz_04_Power.state) -
    Number.parseFloat(items.Socket_Fritz_03_Power.state)).toFixed(2) + "
    Kilowatt"
...und als Screeshot:
subtraktion.jpg
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.1 openhabian

Bubbleman
Beiträge: 120
Registriert: 22. Dez 2020 17:03
Answers: 1

Re: Subtraktion im Item?

Beitrag von Bubbleman »

Danke für die Infos
Mein Problem als Anfänger ist, dass es mir schwer fällt einen Punkt zu finden an dem ich tiefer einsteigen kann.
OH ist mir "an der Oberfläche" mittlerweile gut vertraut. Allerdings wird es schwer wenn es darum geht zB in textuele Definitionen oder Scripting einzusteigen. Ich raffe halt (noch) nicht, wo welche Sprache und/oder Syntax zum Einsatz kommen muss. Da gibt es YAML, Javascript vielleicht noch weitere...
Ich habe noch kein(e) schönen Tutorials für Anfänger gefunden, die einem erklären wo man wie ansetzen kann. Dabei bin ich nicht total doof was das angeht. Ich mache schon ein wenig Arduino Coding. Ein Grundverständnis ist also schon da. Früher habe ich mal ein bischen html und css gemacht.
Bei OH3 habe ich derzeit noch keinerlei Gefühl in welchem Rahmen ich mich da überhaupt bewege. Da sind schon so einfache Sachen wie simple mathematische Operationen schwierig....

Gruß
Thomas
OH 3.1, Raspberry 4B, 4GB RAM, 256 GB Solid State Drive via SATA <-> USB Adapter, ConBee II ZigBee Stick

Benutzeravatar
udo1toni
Beiträge: 13858
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Subtraktion im Item?

Beitrag von udo1toni »

Mit großen Möglichkeiten kommen auch große Schwierigkeiten (oder so ähnlich...)

Wenn Du über die Main UI konfigurierst, musst Du Dich eigentlich gar nicht mit Code beschäftigen (also bis zu dem Punkt, an dem Du nun bist...) YAML kannst Du getrost links liegen lassen.
Die YAML Ansicht ist vor allem praktisch, wenn es darum geht, Informationen über die Konfiguration zu teilen. Früher hat man Teile seiner Textdateien gepostet, das war simpel und jeder konnte einfach den Text kopieren und bei sich einfügen. Damit war dann die Konfiguration leicht von anderen zu übernehmen, es sei denn, man wollte Itemnamen usw. anpassen, aber da in Textform fiel sogar das leicht.
Nun bliebe nur, Screenshots zu posten, aber a) braucht das absurd viel Speicher und b) hat man dann ein Bild, was man naturgemäß nicht als Text irgendwo übernehmen kann... Dafür ist YAML gut.
Willst Du Widgets konfigurieren, so läuft das ebenfalls über YAML ab, obwohl die Notation gewöhnungsbedürftig ist. :)
Legst Du eine Rule über die UI an -> YAML ABER: das betrifft nur die Rule als ganzes, nicht zwingend den auszuführenden Code. Der Code kann JavaScript sein oder auch die openHAB Rules DSL, andere Sprachen lassen sich nachrüsten (das ist das Nette daran... So jemand die Wunschsprache integriert, ist man nicht auf irgendwas anderes festgelegt).

Es gibt verschiedene Optionen, wie und wo man Zahlen subtrahieren kann, das kommt vor allem darauf an, um welche Werte es dabei geht. Ist es ein Offset (z.B. liefert ein Thermofühler immer 2 °C zu viel) dann wäre es ein Leichtes, das über eine ValueTransformation zu berücksichtigen, genauso wie bei Zahlen, die in anderer Form fix umgerechnet werden müssen (man könnte z.B. auch °C in °F umrechnen, wobei es da elegantere Möglichkeiten gibt...)
Geht es darum, zwei variable Werte miteinander zu verrechnen, (also z.B. aktueller Verbrauch und aktuelle Produktion einer PV-Anlage) dann braucht es ein Item zum Speichern des Ergebnisses, zwei Items die die Ausgangswerte beinhalten und eine Rule, welche bei Wertänderung eines oder beider Ausgangswerte das Ergebnis neu berechnet.
Standard wäre hier immer noch die DSL, weil es für die DSL ein mächtiges Tool gibt, das ist VSCode mit dem openHAB Plugin. Damit bekommst Du einen Großteil der Funktionen, die man von einem Editor heute erwarten kann, Code Completion, Vorschläge, Hilfstexte usw. (wobei man natürlich schon verstehen muss, was da angezeigt wird...)
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Antworten