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.
    • 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
                                  • J
                                    Jaschkopf last edited by

                                    Es sind ja nur bestimmte Instanzen die mit der falschen Uhrzeit loggen. Die systemzeit vom pi ändert sich dabei nicht bzw ich wüsste nicht wie ich das prüfen sollte.

                                    Homoran paul53 2 Replies Last reply Reply Quote 0
                                    • Homoran
                                      Homoran Global Moderator Administrators @Jaschkopf last edited by

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

                                      Es sind ja nur bestimmte Instanzen die mit der falschen Uhrzeit loggen.

                                      ok - das ist mir jetzt neu.

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

                                      Die systemzeit vom pi ändert sich dabei nicht

                                      Dein Ausschnitt aus dem log lässt mich an dieser Aussage zweifeln.
                                      Es wäre schon sehr seltsam, wenn genau eine Stunde kein Event passiert, und der folgende dann wieder im normalen Rhythmus auftritt.

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

                                      ich wüsste nicht wie ich das prüfen sollte.

                                      Ich auch nicht - das wäre wieder eine "Aufgabe" für @paul53

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

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

                                        ich wüsste nicht wie ich das prüfen sollte.

                                        Wenn sich die Systemzeit wirklich ändern sollte, dann wird das folgende Script ein Log erzeugen, andernfalls nicht:

                                        var last = Date.now();
                                        schedule('* * * * *', function() {
                                            if(Math.abs(Date.now() - last) > 65000) log('Abweichung > 1 Minute ' + formatDate(new Date(), 'hh:mm:ss'), 'warn');
                                            last = Date.now();
                                        });
                                        
                                        J 1 Reply Last reply Reply Quote 0
                                        • J
                                          Jaschkopf last edited by

                                          Das Skript werde ich nachher mal noch erstellen und scharf schalten.

                                          Kann es sein das iobroker die Uhrzeit aus meiner homematic CCU bzw pimatic bezieht? Da hab ich Die Zeit noch nicht geprüft.

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

                                            @paul53 Habe das Skript jetzt fast 24h laufen. Die Uhrzeit im Log springt immer noch lustig um 1 Stunde hin und her, aber das Skript hat nichts ins Log eingetragen...

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            799
                                            Online

                                            31.8k
                                            Users

                                            80.0k
                                            Topics

                                            1.3m
                                            Posts

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