Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [gelöst] Blockly Object value in Homematic Variable schreiben und Berechnungen

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [gelöst] Blockly Object value in Homematic Variable schreiben und Berechnungen

    This topic has been deleted. Only users with topic management privileges can see it.
    • Homoran
      Homoran Global Moderator Administrators last edited by

      Hallo Torsten,
      @schneidy76:

      nur ist der Wert immer positiv bei meinen Zähler.. `

      Das verstehe ich nicht, du hast doch einen Zweirichtungszähler:
      @schneidy76:

      smartmeter.0 (2Wege Zähler)

      CODE: ALLES AUSWÄHLEN

      value   1-0:15_7_0*255.value      state      value      7699.6 W `

      Den habe ich auch (Hager eHz):
      144_strom003.jpg
      Habe aber andere Daten.

      und die sind abhängig vom Bezug oder Einspeisung negativ bzw. positiv.

      Gruß

      Rainer

      1 Reply Last reply Reply Quote 0
      • S
        schneidy76 last edited by

        Habe ich nicht:

        smartmeter.0
        1-0:0_0_9*255			Device ID
        1-0:15_7_0*255 		Momentanwert (Total)
        1-0:1_8_0*255			Zählerstand 1 Summe Wirkarbeit Bezug + (Total)
        1-0:1_8_1*255			Zählerstand 1 Summe Wirkarbeit Bezug + (T1)
        1-0:1_8_2*255			Zählerstand 1 Summe Wirkarbeit Bezug + (T2)
        1-0:2_8_0*255			Zählerstand 1 Summe Wirkarbeit Abgabe - (Total)
        1-0:2_8_1*255			Zählerstand 1 Summe Wirkarbeit Abgabe - (T1)
        129-129:199_130_3*255	Manufacturer ID
        129-129:199_130_5*255	Forename/Public Key
        
        smartmeter.1
        
        

        Edit: Ich hab mal geforscht. Das ist kein Hager EML ist der Hersteller. Leider verbaut LEW den standardisiert

        Mehr is nicht….

        1 Reply Last reply Reply Quote 0
        • S
          schneidy76 last edited by

          habe jetzt ein mini script geschafft und es läuft,

          die Variable (Typ Zahl Werte von -12000 bis 12000W) die ich in homematic erstellt habe wird jetzt in iobroker beschrieben und auch aktualisiert

          -> in Homematic WebUi aber nicht aktualisiert?

          Wo fehlt es da noch?

          VG Torsten

          1 Reply Last reply Reply Quote 0
          • rantanplan
            rantanplan last edited by

            Hallo schneidy76

            Den anderen Thread haben wir ja durch.

            Nun können wir hier weiter machen.

            Woher kommen die Daten die Du weiterverarbeiten möchtest. (Adapter, Datenpunkte)

            Bitte nochmal gaaanz laaangsam erklären 😉

            Grüße

            1 Reply Last reply Reply Quote 0
            • S
              schneidy76 last edited by

              2631_2017-08-02_22_44_39-microsoft_edge.jpg

              Ich glaube so geht's.

              Melde mich morgen wenn die Sonne scheint!

              😉

              1 Reply Last reply Reply Quote 0
              • rantanplan
                rantanplan last edited by

                :?:

                Der Wert wird immer gleich sein.

                Nie größer oder kleiner als sein eigener Wert. :roll:

                Grüße

                1 Reply Last reply Reply Quote 0
                • S
                  schneidy76 last edited by

                  Verdammt ja, obwohl die object id von zwei verschiedenen Adapter kommen.

                  Smartmeter.0 und smartmeter.1

                  Kann ich die irgendwie differenzieren?

                  1 Reply Last reply Reply Quote 0
                  • rantanplan
                    rantanplan last edited by

                    @schneidy76:

                    Verdammt ja, obwohl die object id von zwei verschiedenen Adapter kommen.

                    Smartmeter.0 und smartmeter.1

                    Kann ich die irgendwie differenzieren? `
                    Na klar kann man das.

                    Was mich verwirrt: Warum haben bei Dir Smartmeter.0 und Smartmeter.1 den gleichen Namen?

                    "1-0:15_7_0_*255" ist für mich völlig nichtssagend.

                    Da wird es für mich mit dem differenzieren schwer. Wie soll ich Dir sagen, welchen "1-0:15_7_0_*255" ich meine?

                    Auf jeden fall musst Du beide triggern.

                    Z.B.
                    147_beispiel.png

                    Grüße

                    1 Reply Last reply Reply Quote 0
                    • S
                      schneidy76 last edited by

                      Hi,

                      ich weiß auch nicht warum beide den selben Namen tragen.

                      Finde ich auch doof, ich hatte gehofft das die beiden Adapter richtig verlinkt sind.

                      Kann man die object ID nicht umbenennen?

                      Schau mal im Bild vom Homoran

                      dort ist momentan Wert allerdings:

                      1-0:16_7_0_*255

                      VG Torsten

                      1 Reply Last reply Reply Quote 0
                      • rantanplan
                        rantanplan last edited by

                        @schneidy76:

                        dort ist momentan Wert allerdings:

                        1-0:16_7_0_*255 `

                        Ich kenne den Smartmeter Adapter nicht.

                        Aber "1-0:16_7_0_*255" ist doch kein Wert, oder?

                        Unter Objekte solltest Du den NAMEN ändern können.

                        Grüße

                        1 Reply Last reply Reply Quote 0
                        • Homoran
                          Homoran Global Moderator Administrators last edited by

                          er meint wohl mit Wert die ID des vom Smartmeter ausgegeben Datenpunktes

                          Ich habe mir meine Struktur angesehen, da ist eben auch nur *1-0:16_7_0255_ Als ID ohne weitere Zusätze, und wenn du zwei Zähler hast, werden die wohl identisch angelegt.

                          Gruß

                          Rainer

                          1 Reply Last reply Reply Quote 0
                          • rantanplan
                            rantanplan last edited by

                            @Homoran:

                            Ich habe mir meine Struktur angesehen, da ist eben auch nur *1-0:16_7_0255_ Als ID ohne weitere Zusätze, und wenn du zwei Zähler hast, werden die wohl identisch angelegt. `

                            Aber den Namen müsste man doch ändern können, oder?

                            1 Reply Last reply Reply Quote 0
                            • paul53
                              paul53 last edited by

                              @rantanplan:

                              Aber den Namen müsste man doch ändern können, oder? `
                              Ja (nach meinem Kenntnisstand), wenn Du common.name meinst. Die ID beginnt mit der Instanz smartmeter.N., wodurch sich die IDs beider Zähler unterscheiden.

                              1 Reply Last reply Reply Quote 0
                              • S
                                schneidy76 last edited by

                                Hi, habe jetzt im context der Object Eigenschaften im Bereich RAW den Namen geändert:

                                2631_2017-08-03_22_15_44-microsoft_edge.jpg

                                ob es geht ????????? keine Ahnung :roll:

                                {
                                  "common": {
                                    "name": "0-0:15_7_0*255.value",
                                    "type": "number",
                                    "unit": "W",
                                    "role": "value",
                                    "read": true,
                                    "write": false
                                  },
                                  "native": {
                                    "id": "1-0:15_7_0*255.value"
                                  },
                                  "acl": {
                                    "object": 1638,
                                    "owner": "system.user.admin",
                                    "ownerGroup": "system.group.administrator",
                                    "state": 1638
                                  },
                                  "_id": "smartmeter.0.1-0:15_7_0*255.value",
                                  "type": "state"
                                }
                                
                                {
                                  "type": "state",
                                  "common": {
                                    "name": "1-0:15_7_0*255.value",
                                    "type": "number",
                                    "read": true,
                                    "unit": "W",
                                    "role": "value",
                                    "write": false
                                  },
                                  "native": {
                                    "id": "1-0:15_7_0*255.value"
                                  },
                                  "_id": "smartmeter.1.1-0:15_7_0*255.value",
                                  "acl": {
                                    "object": 1638,
                                    "state": 1638
                                  }
                                }
                                
                                1 Reply Last reply Reply Quote 0
                                • rantanplan
                                  rantanplan last edited by

                                  @schneidy76:

                                  Hi, habe jetzt im context der Object Eigenschaften im Bereich RAW den Namen geändert: `

                                  ???? Keine Ahnung wo Du die Namen geändert hast.

                                  Ich sehe immer noch schwer nachvollziehbare, kryptische Bezeichnungen

                                  @schneidy76:

                                  ob es geht ????????? keine Ahnung :roll: `
                                  Keine Ahnung s.o.

                                  Muss die "Berechnung" NUR erfolgen, wenn sich der Wert von "0-0-15_7_0*255" (puh was für ein Name) ändert?

                                  @schneidy76:

                                  Die Berechnung ist "(smartmeter.0) Momentanwert in Watt minus (smartmeter.1) Momentanwert in Watt = Momentanwert Bezug/Einspeisung

                                  Positiv bei Einspeisung

                                  Negativ bei Bezug `
                                  Diese Berechnung vermisse ich gänzlich!

                                  Tut mir Leid, ich bin noch nicht auf Deiner Spur. 😢

                                  Grüße

                                  1 Reply Last reply Reply Quote 0
                                  • S
                                    schneidy76 last edited by

                                    Nun ja, irgendeinen Trigger hab ich ja gebraucht. Der smartmeter.o Adapter liest alle 60s bei mir neue Daten von Bezug/Einspeisungszähler ein.

                                    Sollte ich mal diese Zeit verändern, muss ich es im Script nicht auch noch tun.

                                    Den Adapter für die Erzeugung - smartmeter.1 - macht keinen Sinn, da Nachts keine Sonne scheint und ich auch keinen Speicher hab.

                                    Der Vergleich größer/gleich bzw. Kleiner/gleich liefert im übrigen den selben Entscheidungswert wie meine ursprüngliche Rechnung. Ich spare mir damit einen Schritt.

                                    Fraglich ist jetzt nur, ob es jetzt möglich die beiden Werte auseinander zu halten.

                                    Ich glaube nämlich nicht.

                                    Nachdem ich die Namen geändert habe, hat sich das Script automatisch an die neuen Namen angepasst. Hier musste ich nichts ändern…

                                    1 Reply Last reply Reply Quote 0
                                    • S
                                      schneidy76 last edited by

                                      geht nicht…

                                      Es wird immer nur die untere Aktion ausgelöst - oder beide und die untere überschreibt die erste aus dem Script.

                                      Mir ist noch aufgefallen, das in den unteren Eigenschaften

                                       {
                                        "type": "state",
                                        "common": {
                                          "name": "1-0:15_7_0*255.value",
                                          "type": "number",
                                          "read": true,
                                          "unit": "W",
                                          "role": "value",
                                          "write": false
                                        },
                                        "native": {
                                          "id": "1-0:15_7_0*255.value"
                                        },
                                        "_id": "smartmeter.1.1-0:15_7_0*255.value",
                                        "acl": {
                                          "object": 1638,
                                          "state": 1638
                                        }
                                      
                                      

                                      weniger steht als in der oberen….

                                      :?:

                                      1 Reply Last reply Reply Quote 0
                                      • apollon77
                                        apollon77 last edited by

                                        Hey All,

                                        was genau ist dennd as Problem (Ihr habt mich beim lesen des Threads verloren).

                                        Ich verstehe folgendes:

                                        Es gibt zwei Stromzähler. Beide werden mit dem Smartmeter-Adapter ausgelesen. Korrekt?

                                        Beide haben einen Datenwert mit der gleichen OBIS-ID (das ist dieses "1-0:15_7_0*255" und ja das ist Teil des State-Namens). Korrekt?

                                        Also gibt es einmal ein Objekt mit der ID "smartmeter.0.1-0:15_7_0255.value" und einmal "smartmeter.1.1-0:15_7_0255.value" wo die beiden Zähler drinstehen.

                                        Wenn man sowas bei Blockly eingibt lässt Blockly bei der Anzeige des State/Objekt-Namens (in dem Fall "leider") den Adapternamen weg. Damit ist natürlich in der Grafik eine sichtbare Unterscheidung was jetzt was ist recht schwierig. Eine Option um das ganze etwas zu verbessern ist einfach im Skript Variablen zu nutzen. Blockly kann das. Den Namen weisst Du den Wert der Objekte zu. Die Variablen kannst Du dann so benahmen das alles weitere Sinn macht und Die nur eine Stelle (nämlich die Werte-Zuweisung variable zu Wert) wo Blockly es blöd anzeigt. Da helfen dann ggf noch Kommentare 😉

                                        Macht das Sinn was ich hier geschrieben habe?

                                        Ich glaube das das meiste im Thread die Verwirrung ist weil beides augenscheinlich in Blockly gleich heisst … Korrekt ?!

                                        Wenn ich jetzt Blödsinn geschrieben habe bitte erklärt mir was die Frage ist 🙂

                                        Ingo

                                        1 Reply Last reply Reply Quote 0
                                        • rantanplan
                                          rantanplan last edited by

                                          @Apollon77 Du hast recht und eine gute Idee 😉

                                          Dann will ich mal wieder einen Schritt zur Problemlösung wagen.
                                          147_beispiel.png

                                          Hier der Export.

                                          ! ````
                                          <xml xmlns="http://www.w3.org/1999/xhtml"><block type="comment" id="iPg{yrTs8)/t68+]2F~w" x="-688" y="13"><field name="COMMENT">Smartmeter.0.Value triggern</field>
                                          <next><block type="on_ext" id=",|,%ROg00DLTMz(mn?lt"><mutation items="1"></mutation>
                                          <field name="CONDITION">ne</field>

                                              <value name="OID0"><shadow type="field_oid" id="/BgQCE[.dH~Q@pF8mX+E"><field name="oid">default</field></shadow></value> 
                                              <statement name="STATEMENT"><block type="comment" id="r8;F)*raE~Jh6O-wv0[~"><field name="COMMENT">Werte in lokale Variablen übergeben</field>
                                                  <next><block type="variables_set" id="FzC7IR!sO,Rlq!:1]vuG"><field name="VAR">WertSmart0</field>
                                                      <value name="VALUE"><block type="get_value" id="Ja-.u3g0NZ:NXmA/]e(J"><field name="ATTR">val</field>
                                                          <field name="OID">ID auswählen</field></block></value> 
                                                      <next><block type="variables_set" id="E|`4?i_mVBf9bX.`%H]:"><field name="VAR">WertSmart1</field>
                                                          <value name="VALUE"><block type="get_value" id="iUef=Q[Ux9F(86nt5dr["><field name="ATTR">val</field>
                                                              <field name="OID">ID auswählen</field></block></value> 
                                                          <next><block type="debug" id="TjLFSU?ch.76hHi:J::N"><field name="Severity">log</field>
                                                              <value name="TEXT"><shadow type="text" id="tvQStl6m7T0p.z(PY!o@"><field name="TEXT">test</field></shadow> 
                                                                <block type="text_join" id="yn;dyxTvw9DAx:AGId(I"><mutation items="2"></mutation>
                                                                  <value name="ADD0"><block type="text" id="_7]#*be,2:Yc}_Pvfx9*"><field name="TEXT">***WertSmart0 =</field></block></value> 
                                                                  <value name="ADD1"><block type="variables_get" id="2CGswZhkX_z07fduj1wh"><field name="VAR">WertSmart0</field></block></value></block></value> 
                                                              <next><block type="debug" id="lKR7l5nQ4@K%lo%{4Q}^"><field name="Severity">log</field>
                                                                  <value name="TEXT"><shadow type="text" id="tvQStl6m7T0p.z(PY!o@"><field name="TEXT">test</field></shadow> 
                                                                    <block type="text_join" id="!BM=8(|HEyuI)c]UAq!y"><mutation items="2"></mutation>
                                                                      <value name="ADD0"><block type="text" id="IoqN5HB0eIu*FCnQmrux"><field name="TEXT">***WertSmart1 =</field></block></value> 
                                                                      <value name="ADD1"><block type="variables_get" id="]s]s%}WqOa~0]aF^d[}P"><field name="VAR">WertSmart1</field></block></value></block></value> 
                                                                  <next><block type="controls_if" id="BEA+EbSuK~6;knyI~},R"><mutation else="1"></mutation>
                                                                      <value name="IF0"><block type="logic_compare" id="iHv-h/{QaXuxavtiEj|_"><field name="OP">LTE</field>
                                                                          <value name="A"><block type="variables_get" id="Ta2MV4fzg1XdC26l1];%"><field name="VAR">WertSmart0</field></block></value> 
                                                                          <value name="B"><block type="variables_get" id="y7F(dfGX}opfp00uak!z"><field name="VAR">WertSmart1</field></block></value></block></value> 
                                                                      <statement name="DO0"><block type="comment" id="}zkkWXMR;DaI}W+h;lA3"><field name="COMMENT">Variable Bezug füllen</field>
                                                                          <next><block type="control" id="OIrbXg;QD_+[=p=cJtF#"><mutation delay_input="false"></mutation>
                                                                              <field name="OID">Object ID</field>
                                                                              <field name="WITH_DELAY">FALSE</field>
                                                                              <value name="VALUE"><block type="variables_get" id="o5asmAwjUK|+DWh9^a+y"><field name="VAR">WertSmart0</field></block></value> 
                                                                              <next><block type="comment" id="dK;/t29bb?l17)IF*F#{"><field name="COMMENT">Einspeisung auf 0</field>
                                                                                  <next><block type="control" id="4)_q01!-0pMCl`k!Gut2"><mutation delay_input="false"></mutation>
                                                                                      <field name="OID">Object ID</field>
                                                                                      <field name="WITH_DELAY">FALSE</field>
                                                                                      <value name="VALUE"><block type="math_number" id="L@ZqAId@m8STZ;SWt:.W"><field name="NUM">0</field></block></value></block></next></block></next></block></next></block></statement> 
                                                                      <statement name="ELSE"><block type="comment" id="Fbv+4Row3x(4GWtqzMS@"><field name="COMMENT">Wenn erste Bedingung nicht passt kann</field>
                                                                          <next><block type="comment" id="RXGx-mfWbJlP3[6Kr;0W"><field name="COMMENT">WertSmart0 nur > WertSmart1 sein</field>
                                                                              <next><block type="comment" id="Mh5X-nNf|F,4id(K;f+q"><field name="COMMENT">Einspeisung füllen</field>
                                                                                  <next><block type="control" id="OUdSH0S4|CMwVF~0}-D,"><mutation delay_input="false"></mutation>
                                                                                      <field name="OID">Object ID</field>
                                                                                      <field name="WITH_DELAY">FALSE</field>
                                                                                      <value name="VALUE"><block type="variables_get" id="rg%}9=KrluYQo)8@4Mpo"><field name="VAR">WertSmart0</field></block></value> 
                                                                                      <next><block type="comment" id="%KLPZ)y3dfy/J},%3ubE"><field name="COMMENT">Bezug auf 0</field>
                                                                                          <next><block type="control" id="?n_4-SNXW13XjyxyX+c5"><mutation delay_input="false"></mutation>
                                                                                              <field name="OID">Object ID</field>
                                                                                              <field name="WITH_DELAY">FALSE</field>
                                                                                              <value name="VALUE"><block type="math_number" id="ryMRL.kfnlKSn(m;PoG["><field name="NUM">0</field></block></value></block></next></block></next></block></next></block></next></block></next></block></statement></block></next></block></next></block></next></block></next></block></next></block></statement></block></next></block></xml> 
                                          

                                          ! ````

                                          (debug output schreibt die Werte ins Log. Dort kann man die Werte überprüfen)

                                          Grüße

                                          1 Reply Last reply Reply Quote 0
                                          • S
                                            schneidy76 last edited by

                                            Danke, ich glaube jetzt kommen ich/wir weiter.

                                            Apollon, du hast alles auf den Punkt gebracht, rantanplan das muss ich erst mal lesen und verstehen lernen.

                                            Danke euch!

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            525
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

                                            6
                                            32
                                            6121
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo