Binding für Gerät mit Webserver (Steca-Wechselrichter)

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
starbright
Beiträge: 93
Registriert: 16. Jan 2023 19:27
Answers: 0

Re: Binding für Gerät mit Webserver (Steca-Wechselrichter)

Beitrag von starbright »

Ja, da sehe ich den Code, aber nur so wie ich ihn heute 14:24 gepostet hab - da ist nichts von ITEM.

Komisch auch: Ich möchte diesen Wert auch in meiner Location "Power" hinzufügen, wo schon die Smartmeter ITEMs sind.
Das macht man so: Location auswählen und dann "Add Points from Thing". (Schon doof : oben erscheint dann: Add Items from thing - das trägt nicht grad dazu bei die Begriffe richtig zu verstehen - Item oder Point ?)
Und da kann man nur den Channel auswählen. Ich hätte angenommen einen bzw den Link vom Channel wählt man aus, schließlich hatte ich die regexp erst im link drin.

Also von diesem Channel mit Regexp drin wie du das gemacht hast hab ich gar keinen Link angelegt. Bisher funktioniert das am besten.

Schon recht verwirrend.

Mir ist es jetzt gelungen eine Gruppe anzulegen mit Smartmeter und Solar und die Werte zu addieren. Also
Solar + Verbrauch Smart Meter = richtiger Verbrauch

Das funktioniert auf ITEM Ebene, aber zum Symantic Model kann ich es nicht hinzufügen, das hinzufügen von Items direkt gibt es nicht, nur über die Things. Das wäre nicht weiter schlimm - aber auf die Overview-Seite kann man nur Zellen aus dem Model nehem - arghhh.
Edit: Habs doch auf die Übersicht bekommen, einfach ein anderes Item aus dem Model hinzufügen und dann Editieren des Codes...

Ich glaub das mit der Anzeige in der Sitemap und eben genanntes ist ein Bug.

violine21
Beiträge: 600
Registriert: 20. Sep 2019 05:49
Answers: 7

Re: Binding für Gerät mit Webserver (Steca-Wechselrichter)

Beitrag von violine21 »

starbright hat geschrieben: 22. Feb 2023 16:58 Ja, da sehe ich den Code, aber nur so wie ich ihn heute 14:24 gepostet hab - da ist nichts von ITEM.
Doch. Wenn Du auf der Seite wieder zurück auf die Mitte klickst "Channels", dann siehst Du dort die vorbereiteten Channels aus dem Code.
Du klickst auf einen Channel und das Feld öffnet sich nach unten. Dort ist ein grüner Kreis mit einem Plus und dem Text
"Ad Link to Item". Damit legst Du dann das jeweilige Item an, mit dem Du anschliessend im Model die Zuordnung zu der jeweiligen Kategorie vornimmst.

Manchmal führen in OH viele Wege nach Rom ;)

starbright
Beiträge: 93
Registriert: 16. Jan 2023 19:27
Answers: 0

Re: Binding für Gerät mit Webserver (Steca-Wechselrichter)

Beitrag von starbright »

Ja, vielen Dank an euch insbesondere auch an @udo1toni - ohne euch hätte ich das nicht geschafft!

Die Art wie der Channel (String mit Regexp) angelegt wurde war wichtig. Ich hab den Link dann nicht beim Einrichten des Things gemacht sondern der wurde automatisch erstellt, also ich in Settings/Model einem Ort ein Item hinzufügen wollte. Scheinbar gehört zu einem Channel ein Item (während ich davon ausging dass man aus einem Channel mehrere Items mit Regexps ableiten kann).

Das große Rätsel ist, warum auf der Sitemap dieses Item nicht anzeigen läßt. Wenn ich es als Chart anzeige kommen sogar falsche Daten von einem anderen Item. Das scheint mir ein Bug.

Das gruppierte Icon aus Zähler und Solar (SUM) wird (im Sitemap) als Text gar nicht wiedergegeben und als Diagramm mit zwei Linien (statt einer - wegen der Summe). Gehört das so? Als Page/Chart wird wie erwartet nur ein Chart und das richtig als Summe dargestellt.
Wohl ebenfalls ein Bug.

Ansonsten hab ich das mit den Rules zur Berechnung (der andere Weg) noch nicht geschnallt. Vielleicht versuche ich das noch mal an einem anderen Tag, heute bin ich zu fertig ;)

Ich weiß nicht ob es einen Bugtracker gibt, aber da ich noch zu neu bin und das Konzept noch nicht durchdrungen hab, würde ich mich damit mal zurückhalten.

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

Re: Binding für Gerät mit Webserver (Steca-Wechselrichter)

Beitrag von udo1toni »

Grummel... Kaum ist man mal ein paar Stunden nicht da, weil der Arbeitgeber auch etwas für sein Geld sehen will...

Ich hatte das oben eigentlich genau erklärt...

Wegen der ungültigen Werte in der Nacht (also das " --- " statt einer 0) gibt es keine Option, das REGEX in den Link zu packen. Stattdessen musst Du für jeden Wert einen number Channel anlegen und in diesem number Channel direkt die stateTransformation eintragen. Dort kannst Du aus mehreren Transformations eine Chain bilden - das heißt, der Output einer Transformation wird an die nächste Transformation weitergereicht.
Auf diese Weise kannst Du den Wert per REGEX auslesen und direkt danach per JS aus einem Text " --- " die Ziffer 0 erzeugen. Alle anderen Zahlen werden direkt übernommen (wie oben erläutert).

Zur Sitemap: Die Sitemap ist die ursprüngliche Art, in openHAB eine UI für den Anwender zu erstellen. In der aktuellen Version steht dafür nur die Basic UI zur Verfügung, unter OH 2 gab es zusätzlich die Classic UI, unter OH 1 gab es nur die Classic UI und GreenT (Leider ist der Entwickler schon viele Jahre nicht mehr dabei - GreenT war ... geil :) )
Da die Sitemap wirklich alt ist :) kommt es sehr drauf an, was Du konfiguriert hast.
Ein Item erbt gewöhnlich vom verlinkten Channel seine Eigenschaften für die Anzeige. Man kann diese aber jederzeit überschreiben, vermutlich tust Du das (unbeabsichtigt) in Deiner Sitemap.

Wenn Du einen number Channel mit dem gewünschten Wert hast, kannst Du die Einheit ergänzen.
Wenn der number Channel die Einheit mit liefert, kannst Du ein Number:<irgendwas> Item damit verlinken, wobei <irgendwas> und Unit zusammenpassen müssen.
Wenn das Item so definiert ist, sollte es für Analyze Daten ausspucken.
Dieses Item kannst Du dann mittels Text Widget in die Sitemap bringen, wobei Du bitte lediglich den Namen des Items übergibst, sonst nichts. Als Text Konfiguration:

Code: Alles auswählen

Text item=meinItem
Mehr nicht. Keinesfalls ein Label definieren!
Erscheint nun der Wert, ist alles gut. Erscheint der Wert, aber das Label ist unpassend, kannst Du das Label so schreiben:

Code: Alles auswählen

Text item=meinItem label="Mein Label[%.1f %unit%]"
%.1f steht für eine Dezimalzahl, die mit einer Nachkommastelle ausgegeben wird. %unit% steht für die Einheit, welche sich aus der verwendeten Einheit ableiten lässt und den Landesvorgaben entspricht. Solltest Du z.B. openHAB auf Imperial Measurement einstellen, so zeigt %unit% bei Temperaturwerten nicht mehr °C, sondern °F an - mitsamt Konvertierung von z.B. 0 °C nach 32 °F (das ist der Witz bei UoM).

Ich kann Dir versichern, dass - gesetzt den Fall, Du hast alles korrekt konfiguriert - die korrekten Werte angezeigt werden. openHAB ist sicher nicht frei von Fehlern, aber die Grundfunktionen sind gegeben und arbeiten zuverlässig.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

starbright
Beiträge: 93
Registriert: 16. Jan 2023 19:27
Answers: 0

Re: Binding für Gerät mit Webserver (Steca-Wechselrichter)

Beitrag von starbright »

Nur kurz: Ich hab mich noch nicht verabschieded. Ich brauch nur ne Pause und mit dem Zwischenstand kann ich erst mal leben. Ich werde mir das noch mal in Ruhe ansehen und durchlesen, da war ich vielleicht einfach bisschen hektisch am machen ;). Also nichts für ungut und ganz lieben Dank für die Starthilfe.

starbright
Beiträge: 93
Registriert: 16. Jan 2023 19:27
Answers: 0

Re: Binding für Gerät mit Webserver (Steca-Wechselrichter)

Beitrag von starbright »

Muss da noch mal fragen:
Der Channel - da gibt es ja Strings-Channel aber auch Number-Channel. Geht das nach Input (String) oder Output (Number)?
Scheint ja String-Channel wäre das richtige hier, also geht es nach dem Input?

Ich hab es weder im Thing noch im Channel geschafft eine Unit anzugeben (W). Dennoch erscheint sie - vermute weil ich eine Number:Power angelegt hab.
Der Versuch mit dem anhängen von "∩JS:no2zero.js" hinter die Regexp schlug fehl (Wie in deinem Post 21. Feb 2023 23:35).
Muss die Datein conf/transform/no2zero.js eventuell executable Rechte haben?
Dann fiel mir ein das ich ja noch unter Other Add Ons Javascript transformation installieren muss. Aber auch nach Löschen des Channels und neueinrichten kommt nur NULL: (Also der erste Channel geht).

Code: Alles auswählen

UID: http:url:Steca
label: Steca
thingTypeUID: http:url
configuration:
  authMode: BASIC
  ignoreSSLErrors: false
  baseURL: http://192.168.3.241/gen.measurements.table.js
  delay: 0
  stateMethod: GET
  refresh: 3
  commandMethod: GET
  timeout: 3000
  bufferSize: 2048
channels:
  - id: Solar_AC
    channelTypeUID: http:string
    label: Solar_AC
    description: ""
    configuration:
      mode: READONLY
      stateTransformation: REGEX:.*P AC<\/td><td align='right'> *([0-9\-]+\.?[0-9\-]+?) *<.*
  - id: Steca_Channel
    channelTypeUID: http:string
    label: Steca_Channel
    description: ""
    configuration:
      stateTransformation: REGEX:.*P AC<\/td><td align='right'>
        *([0-9\-]+\.?[0-9\-]+?) *<.*∩JS:no2zero.js
Was aber geht ist die Regexp im Channel und die js Transformation im Link/Item ... ich glaube so hatte das udo1toni auch später gemeint.
Also das ist mal funktional jetzt :)

Lange Rede: Was immer noch zickt unverständlicherweise ist die Darstellung des Steca_Solar_AC items in Sitemap.
Also Chart angezeigt geht es, aber nicht als Text? Das muss mir jemand erklären.

Code: Alles auswählen

sitemap Power label="Power" {
    Text item=Smart_Meter_101670 label="Verbrauch (extern)" icon="energy"
    Chart icon="energy" item=Smart_Meter_101670 label="Verbrauch" period="h"
    Chart item=Smart_Meter_101670 label="Verbrauch (4h)" period="4h"
    Chart item=Smart_Meter_101670 label="Verbrauch (24h)" period="D"
    Chart item=Smart_Meter_10180 label="Bezugs-Zähler" period="D"
    Chart item=Smart_Meter_10280 label="Einspeise-Zähler" period="D"
    Chart item=Steca_Solar_AC label="Solar" period="12h"
    Text icon="energy" item=Steca_Solar_AC label="Steca Solar AC"
    Chart label="Verbrauch (intern)" item=Verbrauch period="12h"
}
Und wie gesagt, die letzte Zeile zeigt in einem Chart zwei Linien und nicht die Summe der Gruppe Verbrauch an (die die Summe von Smart_Meter_101670 und Steca_Solar_AC ist). Kann man das im Code irgendwo sichtbar machen?

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

Re: Binding für Gerät mit Webserver (Steca-Wechselrichter)

Beitrag von udo1toni »

Die Art des Channels bestimmt, welcher Wert übergeben werden kann. Ein switch Channel kann nur die Werte ON und OFF übergeben, ein number Channel kann nur Zahlen übergeben, ein string Channel kann nur Texte übergeben.
Es ist wichtig, zu verstehen, dass ON etwas anderes ist als "ON" (und erst recht etwas anderes als "On")
Genauso ist 4 etwas anderes als "4". Platt gesagt ist 4 + 2 = 6, aber "4" + "2" = "42".
Es kann sein, dass openHAB gnädigerweise aus der "4" tatsächlich eine 4 macht, wenn man einen string Channel mit einem Number Item verlinkt. Darauf wetten würde ich aber nicht. Umgekehrt kann openHAB jederzeit aus der 4 eine "4" machen, weil Items Objekte sind und ihre Methoden erben. Im Stamm gibt es die Methode .toString, welche aus jeglichem Input einen passenden String erzeugt. Und openHAB kann unter Umständen diese Methode automatisch anwenden. Ich schreibe immer kann, verlasse Dich nicht darauf. Es gibt Situationen, wo die Automatik funktioniert, in anderen Situationen funktioniert sie nicht, für beide Fälle gibt es gute Gründe :) die nur professionelle Programmierer nachvollziehen können ;)

Um einen Graphen zuverlässig mit Zahlen zu versorgen, muss das Item vom Typ Number sein (oder als UoM Item noch gar mit einer Einheit versehen sein). Entsprecehnd muss der verlinkte Channel ebenfalls vom Typ number sein (oder innerhalb des Links geschieht ein wenig Magie durch eine Transformation)

Was Die Textdarstellung in der Sitemap angeht, das hatte ich oben geschrieben... Setze bitte kein Label! Wenn Du das Label partout setzen willst, musst Du zusätzlich noch das Ausgabeformat mit angeben. Gibst Du keines an, so wird auch kein Wert hingeschrieben, ganz einfach...
Also nicht

Code: Alles auswählen

Text item=Smart_Meter_101670 label="Verbrauch (extern)" icon="energy"
sondern entweder

Code: Alles auswählen

Text item=Smart_Meter_101670 icon="energy"
oder

Code: Alles auswählen

Text item=Smart_Meter_101670 label="Verbrauch (extern) [%.1f kWh]" icon="energy"
Und entsprechend natürlich auch bei dem anderen Text Widget.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

starbright
Beiträge: 93
Registriert: 16. Jan 2023 19:27
Answers: 0

Re: Binding für Gerät mit Webserver (Steca-Wechselrichter)

Beitrag von starbright »

Ok, das String und Number unterschiedlich sind, klar. Aber ich hab ja aus dem String-Channel eine Number gemacht, die vom Overview und in Settings/Item sogar korrekt mit Einheit angezeigt wird.
Dennoch, dein format String hat es gebracht! Vielen Dank. (Also beim Smartmeter ging es vorher schon, aber der Steca Solar WR hat gezickt).

Was bleibt ist der Chart über den Verbrauch (Verbrauch ist eine Gruppe mit den Membern Smartmeter und Solar-Ertrag die durch Sum verknüpft sind). Mit dem %f Zauber klappt es ja in der Textansicht, aber im Chart werden beide Linien einzeln gezeichnet.
Während in der Chart-Page das als eine Linie nähmlich der Summe gezeichnet wird.
Das verstehe ich wirklich nicht. Greift die Sitemap nicht einfach nur über den Item-Namen auf die Datenbank (Verbrauch.rrd) zu? Ich wäre davon ausgegangen dass diese Datenbank nur aus Zahlen besteht und überhaupt nicht weiß woher die kommen (also eine Summe sind).

Noch eine Kleinigkeit. Die Charts die in der Sitemap dargestellt werden (die nur eine Linie haben) sind leider nicht beschriftet (also das Label wird nicht angezeigt). Warum?

Schönes Wochenende!

----
Edit:
Wollte es noch mal mit "Rules" versuchen. Nach nur zwei Stunden hab ich es geschafft.
Also einen Settings/Model in einer Location ein Item (Verbrauch_intern) angelegt
In Settings/Rules eine Rule angelegt (graphisch).
"send command" "Math 1 + 2" and "Verbrauch_intern".
Es hat ne Weile gebraucht bis ich festgestellt hab, dass man erst zwei Variablen A, B anlegen muss.
z.B vereinfacht.
A=get_state_of_item(Solar)
B=get_state_of_item(Smartmeter)
Verwirrend weil 1 und 2 kein "get_state_of_item" sein können. Man kann nur die Items direkt andocken, aber dann wird scheinbar nicht gerechnet.
Jedenfalls, das klappt, aber eine Diagramm von dem errechneten "Verbrauch_intern" auf der Sitemap wird dennoch nicht angezeigt und als Text nur wieder mit der %f Formatierung. Also insofern, was gelernt aber nichts verbessert.

Als Trigger dann:
wenn (Solar) updated
wenn (Smartmeter) updated

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

Re: Binding für Gerät mit Webserver (Steca-Wechselrichter)

Beitrag von udo1toni »

Wenn Du in der Sitemap ein Group Item für ein Chart angibst, dann wird das Chart Widget immer alle Member einzeln darstellen, das ist Absicht. In der Sitemap ist das die einzige Möglichkeit, mehrere Items gleichzeitig in einem Graphen darzustellen (z.B. alle Temperaturen im Haus, oder Außentemperatur und Heizkesseltemperatur, PV Produktion Strombezug aus dem Netz, Lieferung ins Netz und aktueller Verbrauch...
Die Charts in der Main UI funktionieren anders, man kann sie gezielt und sehr weitreichend konfigurieren, deshalb wird dort der aggregierte Wert dargestellt. Allerdings funktioniert das nur manchmal direkt, wenn man das über den Analyze Link aufruft. Oftmals bleibt der Graph einfach leer, dann muss man den Graphen leider von Hand erstellen (Pages->Add Chart->...)

Deine Rule ist mutmaßlich eine Blockly Rule? Blockly bietet auch eine Code Ansicht an, dort kannst Du den erzeugten Code als Block kopieren und hier einfügen.
Bitte beim Einfügen von Text aus dem openHAB System immer den Text als Code markieren, gleich, ob er von der Shell, einem Code-Fenster oder einem Log stammt - die Formatierung als Code stellt sicher, dass die Forensoftware den Text auch korrekt darstellt.

Für einen Graphen in der Sitemap, der nur die Summe aller Items enthält, musst Du ein Proxy Item verwenden. Die passende Rule ist simpel:

Code: Alles auswählen

configuration: {}
triggers:
  - id: "1"
    configuration:
      itemName: Verbrauch
    type: core.ItemStateChangeTrigger
conditions: []
actions:
  - inputs: {}
    id: "2"
    configuration:
      type: application/vnd.openhab.dsl.rule
      script: myItem.postUpdate(Verbrauch.state)
    type: script.ScriptAction
Du könntest das auch mit Blockly machen :) aber ich war jetzt zu faul... Der Punkt ist, dass die Rule jedes Mal, wenn sich die Summe ändert, diesen Wert in ein anderes Item kopiert. Dieses Item ist kein Group Item (es muss natürlich auch vom Typ Number sein), es wird getrennt persistiert und kann deshalb auch als Quelle für einen Graphen angegeben werden.

Falls ein Graph leer bleibt, deutet das meist auf ein Problem mit der Persistence hin. Das Default Verhalten von openHAB3 ist, dass alle Items automatisch mit rrd4j minütlich und bei Wertänderung persistiert werden. Weiterhin wird default rrd4j als Quelle für die Graphen verwendet. Falls Du an irgendeiner Stelle in die Persistence eingegriffen hast, musst Du natürlich dafür Sorge tragen, dass die Graphen zu den Daten kommen.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

starbright
Beiträge: 93
Registriert: 16. Jan 2023 19:27
Answers: 0

Re: Binding für Gerät mit Webserver (Steca-Wechselrichter)

Beitrag von starbright »

Ok, ich akzeptiere natürlich dass in der Sitemap Groups als einzelne Linien angezeigt werden. ;) Kein Problem.
Genau deswegen hab ich ja nun ein Item erzeugt, dass per Rule berechnet wird. Funktioniert auch.
Und ja, es ist blockly (siehe unten). Bei den Triggern war ich mir nicht sicher, aber ich denke, dass es jetzt passt.

Aber: Wie bekomme ich das Chart nun angezeigt in der Sitemap. Es ist doch nun ein Item, keine Group mehr?
Ich sehe immer wieder das kleine Diagramm-Icon aufleuchten (als er versucht es darzustellen) - aber es klappt nicht.

Code: Alles auswählen

configuration: {}
triggers:
  - id: "2"
    configuration:
      itemName: Smart_Meter_101670
    type: core.ItemStateUpdateTrigger
  - id: "3"
    configuration:
      itemName: Solar_AC_number
    type: core.ItemStateUpdateTrigger
conditions: []
actions:
  - inputs: {}
    id: "1"
    configuration:
      blockSource: <xml
        xmlns="https://developers.google.com/blockly/xml"><variables><variable
        id="nu=LKeQkS.1-^~#{]^lB">A</variable><variable
        id="yIy93_*6D[r7a(zn.:|V">B</variable><variable
        id="gR`[)7#`wT9vX^m;#NL6">C</variable><variable
        id="QNk0d#F.(/U`JQ@3H{@]">D</variable><variable
        id="c3LUd4Og+(F^Z#)H)ME!">E</variable><variable
        id="Vs+zYZY3xZ:8]7Z27kar">F</variable></variables><block
        type="variables_set" id="Bgg25EDH^,,O_c9nYo[9" x="-821" y="-784"><field
        name="VAR" id="nu=LKeQkS.1-^~#{]^lB">A</field><value name="VALUE"><block
        type="oh_getitem_state" id="N#R%e^p;b0=]Y8tp;MXb"><value
        name="itemName"><shadow type="oh_item" id="3~P=~8h[G9Zh@%v4ax0s"><field
        name="itemName">Smart_Meter_101670</field></shadow></value></block></value><next><block
        type="variables_set" id="7$|I$[.3u%XC@teMPm?t"><field name="VAR"
        id="yIy93_*6D[r7a(zn.:|V">B</field><value name="VALUE"><block
        type="oh_getitem_state" id="oc@,u.gjtnYSz_9a$i7$"><value
        name="itemName"><shadow type="oh_item" id="l_~W*j$ATg#3qlX;.vaQ"><field
        name="itemName">Solar_AC_number</field></shadow></value></block></value><next><block
        type="variables_set" id="TEepBStC}L}DiZQLL9yV"><field name="VAR"
        id="gR`[)7#`wT9vX^m;#NL6">C</field><value name="VALUE"><block
        type="math_arithmetic" id="C7?fA;V|V6%Stta$-M{`"><field
        name="OP">ADD</field><value name="A"><shadow type="math_number"
        id="8~20KpIL%d{d+O|WZ,=3"><field name="NUM">1</field></shadow><block
        type="variables_get" id="+,0m;Rp89WM@G,[-Uej/"><field name="VAR"
        id="nu=LKeQkS.1-^~#{]^lB">A</field></block></value><value
        name="B"><shadow type="math_number" id="z$~cvSaMY2yaOwN%HbDE"><field
        name="NUM">1</field></shadow><block type="variables_get"
        id="0t.Fnx}^53.Cz}!|^PDb"><field name="VAR"
        id="yIy93_*6D[r7a(zn.:|V">B</field></block></value></block></value><next><block
        type="variables_set" id="~.[?fG1O{{I_ZOybAA1M"><field name="VAR"
        id="QNk0d#F.(/U`JQ@3H{@]">D</field><value name="VALUE"><block
        type="math_arithmetic" id="m.^4iQUC1qc,()eEljEo"><field
        name="OP">MULTIPLY</field><value name="A"><shadow type="math_number"
        id="R4(Ut)r~!?0=ltruLd$B"><field name="NUM">1</field></shadow><block
        type="variables_get" id="gr=MWcW?=Aq4.sA;?riG"><field name="VAR"
        id="gR`[)7#`wT9vX^m;#NL6">C</field></block></value><value
        name="B"><shadow type="math_number" id="wv84#!:-}DMa|}m$+VOF"><field
        name="NUM">100</field></shadow></value></block></value><next><block
        type="variables_set" id="V8dN4L:p;|iQ56KyS.gX"><field name="VAR"
        id="c3LUd4Og+(F^Z#)H)ME!">E</field><value name="VALUE"><block
        type="math_round" id="Qs!nF4RQ]^etFn{=BNR~"><field
        name="OP">ROUND</field><value name="NUM"><shadow
        type="math_number"><field name="NUM">3.1</field></shadow><block
        type="variables_get" id="YYEdd(TnWV=povQ+Q5?v"><field name="VAR"
        id="QNk0d#F.(/U`JQ@3H{@]">D</field></block></value></block></value><next><block
        type="variables_set" id="yyzZk`jJ?Nx_}A(Nzr2g"><field name="VAR"
        id="Vs+zYZY3xZ:8]7Z27kar">F</field><value name="VALUE"><block
        type="math_arithmetic" id="WS%.cERTZ}[s{C2k9WHK"><field
        name="OP">DIVIDE</field><value name="A"><shadow type="math_number"
        id="mn14{TG/Vz{|TU,~:9oA"><field name="NUM">1</field></shadow><block
        type="variables_get" id="WT@v*TnZ^Nr8UL}mM~(g"><field name="VAR"
        id="c3LUd4Og+(F^Z#)H)ME!">E</field></block></value><value
        name="B"><shadow type="math_number" id=",*@rGt.Uyx69syOjI.*O"><field
        name="NUM">100</field></shadow></value></block></value><next><block
        type="oh_event" id="52NFO0%eVSt9w0eV#N(c"><field
        name="eventType">sendCommand</field><value name="value"><shadow
        type="text" id="d,PML{D?$C%L[;k]5jTf"><field
        name="TEXT">value</field></shadow><block type="variables_get"
        id="q76._$l8o5gpPQn7*Hj|"><field name="VAR"
        id="Vs+zYZY3xZ:8]7Z27kar">F</field></block></value><value
        name="itemName"><shadow type="oh_item" id="j8YYZ-sJaRvdbf[AJNr5"><field
        name="itemName">Verbrauch_intern</field></shadow></value></block></next></block></next></block></next></block></next></block></next></block></next></block></xml>
      type: application/javascript
      script: |
        var A, B, C, D, E, F;


        A = itemRegistry.getItem('Smart_Meter_101670').getState();
        B = itemRegistry.getItem('Solar_AC_number').getState();
        C = A + B;
        D = C * 100;
        E = Math.round(D);
        F = E / 100;
        events.sendCommand('Verbrauch_intern', F);
    type: script.ScriptAction
Zuletzt geändert von starbright am 25. Feb 2023 16:15, insgesamt 1-mal geändert.

Antworten