Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Wert regelmäßig in neue Variable loggen

    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

    Wert regelmäßig in neue Variable loggen

    This topic has been deleted. Only users with topic management privileges can see it.
    • J
      Jaschkopf last edited by

      Hallo. Ich möchte gerne meinen Zählerstand, bzw einen Verbrauchswert (es gibt bereits errechnet den Tages-, Monats- und Jahrenverbrauch) nachts um 0Uhr loggen, damit ich mir über längere Zeiträume den Verlauf angucken kann. Ich dachte an jeden Sonntag 23:59Uhr oder am letzten Tag des Monats 23:59Uhr. Dann kann ich ein schönes Diagramm in Excel erstellen. Jedoch scheitere ich an der Scripterstellung. Über blockly ist es anscheinend nicht möglich eine Variable zu erstellen. Ich dachte es geht so:

      Cron --> Erstelle Variable mit Namen "Jahr"."Monat" --> setze Wert auf Zählerstand

      Hat jemand eine Idee wie ich das umsetzen kann?

      Gruß Jaschkopf

      maloross paul53 2 Replies Last reply Reply Quote 0
      • maloross
        maloross @Jaschkopf last edited by

        @Jaschkopf Alternativ wäre eine History-Instanz und ein Diagramm bspw. mit Flot.

        J 1 Reply Last reply Reply Quote 0
        • J
          Jaschkopf @maloross last edited by

          @maloross Damit habe ich mich auch schon beschäftigt, aber ich habe noch nicht heraus gefunden wie ich mit history nur zu einem bestimmten Zeitpunkt die Werte loggen kann.

          maloross 1 Reply Last reply Reply Quote 0
          • maloross
            maloross @Jaschkopf last edited by

            @Jaschkopf aus dem Bauch heraus: "nur Änderungen" deaktivieren und im Feld darunter 86400 sec eintragen. Nach meinem Verständnis - habs aber selber noch nicht getestet - erfolgt alle 24 Stunden eine Speicherung.

            J 1 Reply Last reply Reply Quote 0
            • J
              Jaschkopf @maloross last edited by

              @maloross aber ich kann nicht definieren zu welcher Uhrzeit. Wenn die Werte dann mittags um 13Uhr geloggt werden hab ich nichts gewonnen.

              maloross 1 Reply Last reply Reply Quote 0
              • paul53
                paul53 @Jaschkopf last edited by paul53

                @Jaschkopf sagte:

                Erstelle Variable mit Namen "Jahr"."Monat"

                Dazu benötigt man eine Javascript-Funktion

                Blockly_temp.JPG
                mit folgendem Inhalt:

                createState(id, init, {type:'number', unit:'kWh', read:true, write:false, role:'value'});
                

                <xml xmlns="http://www.w3.org/1999/xhtml">
                 <variables>
                   <variable type="" id="7[ncH.}$Hq9F`]KG(%?E">id</variable>
                   <variable type="" id="[B%FJy2}hXuj_Qebw2=5">init</variable>
                   <variable type="" id="YFqOrOH8:F{;H+_W+feb">gestern</variable>
                 </variables>
                 <block type="procedures_defcustomnoreturn" id=".#,V=g-UqqmN}G~AdE*T" x="-13" y="137">
                   <mutation statements="false">
                     <arg name="id" varid="7[ncH.}$Hq9F`]KG(%?E"></arg>
                     <arg name="init" varid="[B%FJy2}hXuj_Qebw2=5"></arg>
                   </mutation>
                   <field name="NAME">erzeugeDP</field>
                   <field name="SCRIPT">Y3JlYXRlU3RhdGUoaWQsIGluaXQsIHt0eXBlOidudW1iZXInLCB1bml0OidrV2gnLCByZWFkOnRydWUsIHdyaXRlOmZhbHNlLCByb2xlOid2YWx1ZSd9KTs=</field>
                   <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                 </block>
                 <block type="comment" id="jwV3OmuylF{ZMpt[l#Ov" x="-12" y="188">
                   <field name="COMMENT">jeder 1. im Monat um 00:01</field>
                   <next>
                     <block type="schedule" id="S-Kw[;pb!e78/FK=%|9.">
                       <field name="SCHEDULE">1 0 1 * *</field>
                       <statement name="STATEMENT">
                         <block type="variables_set" id="#8enRu_Bv{IZ]^vIj^es">
                           <field name="VAR" id="YFqOrOH8:F{;H+_W+feb" variabletype="">gestern</field>
                           <value name="VALUE">
                             <block type="math_arithmetic" id="Jyl@{RzDW,gUxkkS:p?Z">
                               <field name="OP">MINUS</field>
                               <value name="A">
                                 <shadow type="math_number" id="iipD20^(59e7q_RXr?mK">
                                   <field name="NUM">1</field>
                                 </shadow>
                                 <block type="time_get" id="|3;[eDALBv|De1ze526R">
                                   <mutation format="false" language="false"></mutation>
                                   <field name="OPTION">object</field>
                                 </block>
                               </value>
                               <value name="B">
                                 <shadow type="math_number" id="YAw:f=9C${ZZ[;dMnu;o">
                                   <field name="NUM">120000</field>
                                 </shadow>
                               </value>
                             </block>
                           </value>
                           <next>
                             <block type="procedures_callcustomnoreturn" id="~b}ByC_mXK{2/A7kW=e8">
                               <mutation name="erzeugeDP">
                                 <arg name="id"></arg>
                                 <arg name="init"></arg>
                               </mutation>
                               <value name="ARG0">
                                 <block type="text_join" id=")dVk7CFAcFQ(qM1.9u4o">
                                   <mutation items="4"></mutation>
                                   <value name="ADD0">
                                     <block type="text" id="YKH@(HFHLT54b~6`I}@0">
                                       <field name="TEXT">Zaehlerstand.</field>
                                     </block>
                                   </value>
                                   <value name="ADD1">
                                     <block type="convert_from_date" id="mH?em46.Jl!Spum@);.6">
                                       <mutation format="false" language="false"></mutation>
                                       <field name="OPTION">fy</field>
                                       <value name="VALUE">
                                         <block type="variables_get" id="g-U}$Qb_Ch9TX!ohYk]*">
                                           <field name="VAR" id="YFqOrOH8:F{;H+_W+feb" variabletype="">gestern</field>
                                         </block>
                                       </value>
                                     </block>
                                   </value>
                                   <value name="ADD2">
                                     <block type="text" id="@t+#VRh[:agetS+CM_S*">
                                       <field name="TEXT">.</field>
                                     </block>
                                   </value>
                                   <value name="ADD3">
                                     <block type="convert_from_date" id="CW6v;{gM2$fz[Hsc}tAt">
                                       <mutation format="false" language="true"></mutation>
                                       <field name="OPTION">Mt</field>
                                       <field name="LANGUAGE">de</field>
                                       <value name="VALUE">
                                         <block type="variables_get" id="?cVs+C6o6LfB.}+3jCLx">
                                           <field name="VAR" id="YFqOrOH8:F{;H+_W+feb" variabletype="">gestern</field>
                                         </block>
                                       </value>
                                     </block>
                                   </value>
                                 </block>
                               </value>
                               <value name="ARG1">
                                 <block type="get_value" id="IQo[Ac78HHGCSJXD=m9@">
                                   <field name="ATTR">val</field>
                                   <field name="OID">ID auswählen</field>
                                 </block>
                               </value>
                             </block>
                           </next>
                         </block>
                       </statement>
                     </block>
                   </next>
                 </block>
                </xml>
                

                B 1 Reply Last reply Reply Quote 0
                • maloross
                  maloross @Jaschkopf last edited by

                  @Jaschkopf wenn du das etwa um die Uhrzeit abspeicherst, wo der Wert erfasst werden soll, dann erfolgt 24 Stunden später die nächste. Und da die Sommerzeit eh bald abgeschafft wird....
                  War halt nur bisi Brainstorming

                  1 Reply Last reply Reply Quote 0
                  • J
                    Jaschkopf last edited by Jaschkopf

                    Servus. Habe es jetzt so gelöst:

                    Täglich im 00:01 wird der aktuelle Zählerstand in eine Variable "Tagesanfang" geschoben.
                    Täglich um 23:59 wird dann "Tagesanfang" Minus " "Aktueller Zählerstand" gerechnet und in "Tagesende" geschoben" (Gerundet auf 3 Nachkommastellen)
                    Zählerstände Blockly.PNG

                    Die Variable "Tagesende" logge ich dann mit History und kann mir das dann in Flot als Balkengrafik anzeigen.
                    Stromverbrauch.PNG

                    Gruß Jaschkopf

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

                      @Jaschkopf

                      So in der Art mache ich es auch:
                      Summenwerte.png

                      Die Werte aktualisiere ich laufend:
                      aktuelle_Werte.png

                      Leider habe ich keine konsistenten Bezeichnungen für Tag/Monat/Jahr, da das Skript über die Zeit gewachsen ist.

                      Hier die Datendarstellung:
                      Stromdaten.png

                      rechts das Balkendiagramm der letzten Tage
                      Links die Gauges mit aktuellen Werten, darüber die Anzeigen für Total - Monat - Tag (von oben nach unten - Jahr habe ich gestern erst fertiggestellt)

                      J 1 Reply Last reply Reply Quote 0
                      • J
                        Jaschkopf @Homoran last edited by

                        @Homoran deine Visu gefällt mir gut. Hab ich auch noch auf der ToDo Liste. Was für einen Wechselrichter hast du, bzw wie bekommst du die Daten der PV Anlage in den ioBroker?

                        Gruß Jaschkopf

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

                          @Jaschkopf sagte in Wert regelmäßig in neue Variable loggen:

                          Was für einen Wechselrichter hast du, bzw wie bekommst du die Daten der PV Anlage in den ioBroker?

                          Das ist ein Kostal piko 5.5.
                          Dazu hatte mal jemand ein Script geschrieben.

                          1 Reply Last reply Reply Quote 0
                          • J
                            Jaschkopf last edited by

                            Servus. Mir ist jetzt noch ein Fehler aufgefallen wo ich nochmal eure Hilfe brauche. Über einen Cron Trigger um 23:59 soll er mir die Werte in eine Variable schreiben, wenn ich aber das Objekt prüfe wann der Wert das letzte mal geschrieben wurde passiert es immer um 0:59. Kann mir das jemand erklären?

                            Die Uhrzeit im ioBroker stimmt. Über raspi-config habe ich auch die richtige Zeitzone eingestellt. Wenn ich in der Konsole "date" eingebe gibt er mir die lokale Zeit korrekt und eine universal Zeit mit -1h aus. Kann das damit zusammen hängen?

                            Gruß Jaschkopf

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

                              @Jaschkopf sagte in Wert regelmäßig in neue Variable loggen:

                              gibt er mir die lokale Zeit korrekt und eine universal Zeit mit -1h aus.

                              richtig; die lokale Zeit ist (im Winter) eine Stunde niedriger als die UTC

                              Wenn date die richtige Zeit ausgibt sollte es daran eigentlich nicht liegen

                              1 Reply Last reply Reply Quote 0
                              • J
                                Jaschkopf last edited by

                                Habe gerade nochmal das Datum am Pi geprüft:

                                pi@raspberrypi:~ $ date
                                Do 30. Jan 16:48:51 CET 2020
                                

                                Also das passt. Trotzdem wird der Wert erst um 0:59 geschrieben. Hier nochmal mein Skript:
                                Unbenannt.PNG

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

                                  @Jaschkopf sagte:

                                  wird der Wert erst um 0:59 geschrieben.

                                  Wird so die richtige Zeit im Log ausgegeben ?

                                  Blockly_temp.JPG

                                  J 1 Reply Last reply Reply Quote 0
                                  • J
                                    Jaschkopf @paul53 last edited by

                                    @paul53 sagte in Wert regelmäßig in neue Variable loggen:

                                    @Jaschkopf sagte:

                                    wird der Wert erst um 0:59 geschrieben.

                                    Wird so die richtige Zeit im Log ausgegeben ?

                                    Blockly_temp.JPG

                                    Habe das gerade ausprobiert und es wird tatsächlich die Uhrzeit mit -1h ausgegeben, also gerade eben 16:26Uhr.

                                    Aber im Info Tab wird die Uhrzeit korrekt angezeigt.

                                    Gruß Jaschkopf

                                    1 Reply Last reply Reply Quote 0
                                    • J
                                      Jaschkopf last edited by

                                      Hier mal ein Ausschnitt aus meinem Log. Kann mir das jemand erklären?

                                      Unbenannt2.PNG

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

                                        @Jaschkopf was hast du als timeserver eingetragen (wenn überhaupt)

                                        Synchronisiert der vielleicht mit einem Gerät im Netz, das die Zeit verliert?

                                        J 1 Reply Last reply Reply Quote 0
                                        • J
                                          Jaschkopf @Homoran last edited by

                                          @Homoran einen Zeitserver hab ich nicht explizit eingetragen. Sonst hat das der Pi immer von alleine gemacht. Wüsste nicht von welchem Gerät er sich die Zeit holen sollte. Wenn ich in der Konsole "date" eingebe passt die Systemzeit vom Pi ja auch. Scheint so als würden nur manche Instanzen mit einer falschen Uhrzeit arbeiten

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

                                            @Jaschkopf sagte in Wert regelmäßig in neue Variable loggen:

                                            Wenn ich in der Konsole "date" eingebe passt die Systemzeit vom Pi ja auch.

                                            Auch vor/nach 18:00 (19:00) wenn das log auf einmal die Zeit ändert?

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            999
                                            Online

                                            31.8k
                                            Users

                                            80.0k
                                            Topics

                                            1.3m
                                            Posts

                                            blockly javascript
                                            5
                                            30
                                            2148
                                            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