Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly
  5. Zeitdifferenz berechnen

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    2.6k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.0k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.3k

Zeitdifferenz berechnen

Scheduled Pinned Locked Moved Blockly
blockly
106 Posts 20 Posters 23.7k Views 24 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • E erazor86

    @paul53 said in Zeitdifferenz berechnen:

    @erazor86
    Die Wandlung des Strings "SS:mm:ss" in eine Dezimalzahl ist etwas aufwändiger.

    Bild_2021-12-14_225151.png

    danke, doch irgendwie gibt es hierbei ein Problem... steige nicht ganz durch, wo das Problem liegt:
    log.JPG

    paul53P Offline
    paul53P Offline
    paul53
    wrote on last edited by
    #47

    @erazor86 sagte: wo das Problem liegt:

    Poste bitte den Javascript-Code ohne die letzte Zeile in Code tags.

    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

    E 1 Reply Last reply
    0
    • paul53P paul53

      @erazor86 sagte: wo das Problem liegt:

      Poste bitte den Javascript-Code ohne die letzte Zeile in Code tags.

      E Offline
      E Offline
      erazor86
      wrote on last edited by
      #48

      @paul53

      <xml xmlns="https://developers.google.com/blockly/xml">
        <variables>
          <variable id="H_b:)/lk~U=V#?2Fm-_6">Einschaltdauer</variable>
          <variable id="9zZ/z:qt+2ur[Mg(U{^@">Liste</variable>
        </variables>
        <block type="on_ext" id="g10!%+,PQcoL^1CtCc1M" x="-187" y="-487">
          <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
          <field name="CONDITION">ne</field>
          <field name="ACK_CONDITION"></field>
          <value name="OID0">
            <shadow type="field_oid" id="1^6dn_Y//1Ld.:S1*pg/">
              <field name="oid">0_userdata.0.Datenpunkte.Rechengrößen.Dauer</field>
            </shadow>
          </value>
          <statement name="STATEMENT">
            <block type="variables_set" id="jmdG%dMd*=ZRFyjN};FO">
              <field name="VAR" id="H_b:)/lk~U=V#?2Fm-_6">Einschaltdauer</field>
              <value name="VALUE">
                <block type="lists_split" id="UrkwL9|$/`pGV6dtQ4=#">
                  <mutation mode="SPLIT"></mutation>
                  <field name="MODE">SPLIT</field>
                  <value name="INPUT">
                    <block type="on_source" id="/tG2*O8M2}DxPJBVce+(">
                      <field name="ATTR">state.val</field>
                    </block>
                  </value>
                  <value name="DELIM">
                    <shadow type="text" id="jddb#N[0ZokH]@uv|$^L">
                      <field name="TEXT">:</field>
                    </shadow>
                  </value>
                </block>
              </value>
              <next>
                <block type="variables_set" id="yo,~CC4vFjRQ+!BI[Dj3">
                  <field name="VAR" id="H_b:)/lk~U=V#?2Fm-_6">Einschaltdauer</field>
                  <value name="VALUE">
                    <block type="math_arithmetic" id=";{JdB#Q(L~2pI)@VEq]X" inline="false">
                      <field name="OP">ADD</field>
                      <value name="A">
                        <shadow type="math_number" id="3c9}N}KuPq4SPU`Vi.}0">
                          <field name="NUM">1</field>
                        </shadow>
                        <block type="convert_tonumber" id="6tSv_rtVlamrBt%%sdNk">
                          <value name="VALUE">
                            <block type="lists_getIndex" id="j;YZ-#|;ymc?7Z!/}m`$">
                              <mutation statement="false" at="true"></mutation>
                              <field name="MODE">GET</field>
                              <field name="WHERE">FROM_START</field>
                              <value name="VALUE">
                                <block type="variables_get" id="*zdTBCpC?k.-sQA7_Jd6">
                                  <field name="VAR" id="9zZ/z:qt+2ur[Mg(U{^@">Liste</field>
                                </block>
                              </value>
                              <value name="AT">
                                <block type="math_number" id="8e{^1DPK0hDM:M;#X-S2">
                                  <field name="NUM">1</field>
                                </block>
                              </value>
                            </block>
                          </value>
                        </block>
                      </value>
                      <value name="B">
                        <shadow type="math_number" id="pL0;D`,uYz`_FzqS0iED">
                          <field name="NUM">1</field>
                        </shadow>
                        <block type="math_rndfixed" id="dngO+Sv-~SYJ@nbcCD?}">
                          <field name="n">1</field>
                          <value name="x">
                            <shadow type="math_number" id="IkY$?m}d-0oo0[1S/kHE">
                              <field name="NUM">3.1234</field>
                            </shadow>
                            <block type="math_arithmetic" id="W{h5)61$s9~M5v9,Fi-O">
                              <field name="OP">DIVIDE</field>
                              <value name="A">
                                <shadow type="math_number" id="]yL|:!R]:vuM,{XmCAR+">
                                  <field name="NUM">1</field>
                                </shadow>
                                <block type="lists_getIndex" id="}XJb*fL,oH]:}i%XL1@/">
                                  <mutation statement="false" at="true"></mutation>
                                  <field name="MODE">GET</field>
                                  <field name="WHERE">FROM_START</field>
                                  <value name="VALUE">
                                    <block type="variables_get" id="}~3#`VQg2s=7HTPvh~,0">
                                      <field name="VAR" id="9zZ/z:qt+2ur[Mg(U{^@">Liste</field>
                                    </block>
                                  </value>
                                  <value name="AT">
                                    <block type="math_number" id="ge_58=bFeMNGFo7bk8`9">
                                      <field name="NUM">2</field>
                                    </block>
                                  </value>
                                </block>
                              </value>
                              <value name="B">
                                <shadow type="math_number" id="1mGyZqUY*qCf4zf!K^TZ">
                                  <field name="NUM">60</field>
                                </shadow>
                              </value>
                            </block>
                          </value>
                        </block>
                      </value>
                    </block>
                  </value>
                  <next>
                    <block type="update" id="Qg5uQ5,C~h#CP}OXp,n|">
                      <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                      <field name="OID">0_userdata.0.Datenpunkte.Rechengrößen.Dauer_dezimal</field>
                      <field name="WITH_DELAY">FALSE</field>
                      <value name="VALUE">
                        <block type="variables_get" id=";*9U=xcn:`{pl^f5-rs,">
                          <field name="VAR" id="H_b:)/lk~U=V#?2Fm-_6">Einschaltdauer</field>
                        </block>
                      </value>
                    </block>
                  </next>
                </block>
              </next>
            </block>
          </statement>
        </block>
      </xml>
      
      paul53P 1 Reply Last reply
      0
      • E erazor86

        @paul53

        <xml xmlns="https://developers.google.com/blockly/xml">
          <variables>
            <variable id="H_b:)/lk~U=V#?2Fm-_6">Einschaltdauer</variable>
            <variable id="9zZ/z:qt+2ur[Mg(U{^@">Liste</variable>
          </variables>
          <block type="on_ext" id="g10!%+,PQcoL^1CtCc1M" x="-187" y="-487">
            <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
            <field name="CONDITION">ne</field>
            <field name="ACK_CONDITION"></field>
            <value name="OID0">
              <shadow type="field_oid" id="1^6dn_Y//1Ld.:S1*pg/">
                <field name="oid">0_userdata.0.Datenpunkte.Rechengrößen.Dauer</field>
              </shadow>
            </value>
            <statement name="STATEMENT">
              <block type="variables_set" id="jmdG%dMd*=ZRFyjN};FO">
                <field name="VAR" id="H_b:)/lk~U=V#?2Fm-_6">Einschaltdauer</field>
                <value name="VALUE">
                  <block type="lists_split" id="UrkwL9|$/`pGV6dtQ4=#">
                    <mutation mode="SPLIT"></mutation>
                    <field name="MODE">SPLIT</field>
                    <value name="INPUT">
                      <block type="on_source" id="/tG2*O8M2}DxPJBVce+(">
                        <field name="ATTR">state.val</field>
                      </block>
                    </value>
                    <value name="DELIM">
                      <shadow type="text" id="jddb#N[0ZokH]@uv|$^L">
                        <field name="TEXT">:</field>
                      </shadow>
                    </value>
                  </block>
                </value>
                <next>
                  <block type="variables_set" id="yo,~CC4vFjRQ+!BI[Dj3">
                    <field name="VAR" id="H_b:)/lk~U=V#?2Fm-_6">Einschaltdauer</field>
                    <value name="VALUE">
                      <block type="math_arithmetic" id=";{JdB#Q(L~2pI)@VEq]X" inline="false">
                        <field name="OP">ADD</field>
                        <value name="A">
                          <shadow type="math_number" id="3c9}N}KuPq4SPU`Vi.}0">
                            <field name="NUM">1</field>
                          </shadow>
                          <block type="convert_tonumber" id="6tSv_rtVlamrBt%%sdNk">
                            <value name="VALUE">
                              <block type="lists_getIndex" id="j;YZ-#|;ymc?7Z!/}m`$">
                                <mutation statement="false" at="true"></mutation>
                                <field name="MODE">GET</field>
                                <field name="WHERE">FROM_START</field>
                                <value name="VALUE">
                                  <block type="variables_get" id="*zdTBCpC?k.-sQA7_Jd6">
                                    <field name="VAR" id="9zZ/z:qt+2ur[Mg(U{^@">Liste</field>
                                  </block>
                                </value>
                                <value name="AT">
                                  <block type="math_number" id="8e{^1DPK0hDM:M;#X-S2">
                                    <field name="NUM">1</field>
                                  </block>
                                </value>
                              </block>
                            </value>
                          </block>
                        </value>
                        <value name="B">
                          <shadow type="math_number" id="pL0;D`,uYz`_FzqS0iED">
                            <field name="NUM">1</field>
                          </shadow>
                          <block type="math_rndfixed" id="dngO+Sv-~SYJ@nbcCD?}">
                            <field name="n">1</field>
                            <value name="x">
                              <shadow type="math_number" id="IkY$?m}d-0oo0[1S/kHE">
                                <field name="NUM">3.1234</field>
                              </shadow>
                              <block type="math_arithmetic" id="W{h5)61$s9~M5v9,Fi-O">
                                <field name="OP">DIVIDE</field>
                                <value name="A">
                                  <shadow type="math_number" id="]yL|:!R]:vuM,{XmCAR+">
                                    <field name="NUM">1</field>
                                  </shadow>
                                  <block type="lists_getIndex" id="}XJb*fL,oH]:}i%XL1@/">
                                    <mutation statement="false" at="true"></mutation>
                                    <field name="MODE">GET</field>
                                    <field name="WHERE">FROM_START</field>
                                    <value name="VALUE">
                                      <block type="variables_get" id="}~3#`VQg2s=7HTPvh~,0">
                                        <field name="VAR" id="9zZ/z:qt+2ur[Mg(U{^@">Liste</field>
                                      </block>
                                    </value>
                                    <value name="AT">
                                      <block type="math_number" id="ge_58=bFeMNGFo7bk8`9">
                                        <field name="NUM">2</field>
                                      </block>
                                    </value>
                                  </block>
                                </value>
                                <value name="B">
                                  <shadow type="math_number" id="1mGyZqUY*qCf4zf!K^TZ">
                                    <field name="NUM">60</field>
                                  </shadow>
                                </value>
                              </block>
                            </value>
                          </block>
                        </value>
                      </block>
                    </value>
                    <next>
                      <block type="update" id="Qg5uQ5,C~h#CP}OXp,n|">
                        <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                        <field name="OID">0_userdata.0.Datenpunkte.Rechengrößen.Dauer_dezimal</field>
                        <field name="WITH_DELAY">FALSE</field>
                        <value name="VALUE">
                          <block type="variables_get" id=";*9U=xcn:`{pl^f5-rs,">
                            <field name="VAR" id="H_b:)/lk~U=V#?2Fm-_6">Einschaltdauer</field>
                          </block>
                        </value>
                      </block>
                    </next>
                  </block>
                </next>
              </block>
            </statement>
          </block>
        </xml>
        
        paul53P Offline
        paul53P Offline
        paul53
        wrote on last edited by
        #49

        @erazor86
        Tausche an 2 Stellen die Variable Liste gegen Einschaltdauer.

        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

        E B 2 Replies Last reply
        0
        • paul53P paul53

          @erazor86
          Tausche an 2 Stellen die Variable Liste gegen Einschaltdauer.

          E Offline
          E Offline
          erazor86
          wrote on last edited by
          #50

          @paul53
          :face_palm: manchmal könnte es so einfach sein.... Vielen Dank.. :)

          1 Reply Last reply
          0
          • paul53P paul53

            @erazor86
            Tausche an 2 Stellen die Variable Liste gegen Einschaltdauer.

            B Offline
            B Offline
            brofelscher
            wrote on last edited by
            #51

            Hallo zusammen,

            ich komme mit meiner Differenzzeit in Minuten ebenfalls nicht weiter. Ich versuche die Zeitdifferenz zwischen "Jetzt" und der letzten Aktualisierung eines Datenpunktes in Minuten zu errechnen und diese in den Datenpunkt "AbwesendSeitMinuten" zu schreiben.

            Das folgende Blockly funktioniert bis 59 Minuten prima, alles darüber hinaus funktioniert jedoch nicht. Es werden also zum Beispiel nicht 67 Minuten Differenz dargestellt, sondern nur "7". Die restlichen 60 Minuten verschwinden.

            7bbe51c6-f99c-4a96-96c4-53d43d4fe972-image.png

            <xml xmlns="https://developers.google.com/blockly/xml">
              <block type="comment" id="vdO3Z/b-^J_@l)?Eq_R+" x="13" y="38">
                <field name="COMMENT">Abwesenheitszeit berechnen</field>
                <next>
                  <block type="on" id="-Se3D{`):B`]p/=p_aOI">
                    <field name="OID">fb-checkpresence.0.presentCount</field>
                    <field name="CONDITION">any</field>
                    <field name="ACK_CONDITION"></field>
                    <statement name="STATEMENT">
                      <block type="controls_if" id="g$$Mh+_gT[pE?%~wmOw7">
                        <value name="IF0">
                          <block type="logic_compare" id="B~cGcXi@sZ~Vuxeg9NrH">
                            <field name="OP">EQ</field>
                            <value name="A">
                              <block type="get_value" id="Ra3xND;{0=Gx-[pw@??P">
                                <field name="ATTR">val</field>
                                <field name="OID">fb-checkpresence.0.presentCount</field>
                              </block>
                            </value>
                            <value name="B">
                              <block type="text" id="|2l5jEGj$arki%U@aI1*">
                                <field name="TEXT">0</field>
                              </block>
                            </value>
                          </block>
                        </value>
                        <statement name="DO0">
                          <block type="update" id="fO*d3{jQ-Q,Muo5?^aHF">
                            <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                            <field name="OID">0_userdata.0.AbwesendSeitMinuten</field>
                            <field name="WITH_DELAY">FALSE</field>
                            <value name="VALUE">
                              <block type="convert_from_date" id="xF2Wqp~s/~y5PUaC_;7^">
                                <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation>
                                <field name="OPTION">m</field>
                                <value name="VALUE">
                                  <block type="math_arithmetic" id="{)*krPx!rRWcV.lMNvs9">
                                    <field name="OP">MINUS</field>
                                    <value name="A">
                                      <shadow type="math_number" id="rD[[`+/pH}Z,=`RaZDKb">
                                        <field name="NUM">1</field>
                                      </shadow>
                                      <block type="time_get" id="{YtxVX%(xd!aZrGPIR%/">
                                        <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation>
                                        <field name="OPTION">object</field>
                                      </block>
                                    </value>
                                    <value name="B">
                                      <shadow type="math_number" id="U}:)~D1u/;(DT4d+kNZM">
                                        <field name="NUM">1</field>
                                      </shadow>
                                      <block type="get_value" id="}D,-3Ku3mkH){l1UJ|o?">
                                        <field name="ATTR">lc</field>
                                        <field name="OID">fb-checkpresence.0.presentCount</field>
                                      </block>
                                    </value>
                                  </block>
                                </value>
                              </block>
                            </value>
                          </block>
                        </statement>
                      </block>
                    </statement>
                  </block>
                </next>
              </block>
            </xml>
            
            paul53P 1 Reply Last reply
            0
            • B brofelscher

              Hallo zusammen,

              ich komme mit meiner Differenzzeit in Minuten ebenfalls nicht weiter. Ich versuche die Zeitdifferenz zwischen "Jetzt" und der letzten Aktualisierung eines Datenpunktes in Minuten zu errechnen und diese in den Datenpunkt "AbwesendSeitMinuten" zu schreiben.

              Das folgende Blockly funktioniert bis 59 Minuten prima, alles darüber hinaus funktioniert jedoch nicht. Es werden also zum Beispiel nicht 67 Minuten Differenz dargestellt, sondern nur "7". Die restlichen 60 Minuten verschwinden.

              7bbe51c6-f99c-4a96-96c4-53d43d4fe972-image.png

              <xml xmlns="https://developers.google.com/blockly/xml">
                <block type="comment" id="vdO3Z/b-^J_@l)?Eq_R+" x="13" y="38">
                  <field name="COMMENT">Abwesenheitszeit berechnen</field>
                  <next>
                    <block type="on" id="-Se3D{`):B`]p/=p_aOI">
                      <field name="OID">fb-checkpresence.0.presentCount</field>
                      <field name="CONDITION">any</field>
                      <field name="ACK_CONDITION"></field>
                      <statement name="STATEMENT">
                        <block type="controls_if" id="g$$Mh+_gT[pE?%~wmOw7">
                          <value name="IF0">
                            <block type="logic_compare" id="B~cGcXi@sZ~Vuxeg9NrH">
                              <field name="OP">EQ</field>
                              <value name="A">
                                <block type="get_value" id="Ra3xND;{0=Gx-[pw@??P">
                                  <field name="ATTR">val</field>
                                  <field name="OID">fb-checkpresence.0.presentCount</field>
                                </block>
                              </value>
                              <value name="B">
                                <block type="text" id="|2l5jEGj$arki%U@aI1*">
                                  <field name="TEXT">0</field>
                                </block>
                              </value>
                            </block>
                          </value>
                          <statement name="DO0">
                            <block type="update" id="fO*d3{jQ-Q,Muo5?^aHF">
                              <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                              <field name="OID">0_userdata.0.AbwesendSeitMinuten</field>
                              <field name="WITH_DELAY">FALSE</field>
                              <value name="VALUE">
                                <block type="convert_from_date" id="xF2Wqp~s/~y5PUaC_;7^">
                                  <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation>
                                  <field name="OPTION">m</field>
                                  <value name="VALUE">
                                    <block type="math_arithmetic" id="{)*krPx!rRWcV.lMNvs9">
                                      <field name="OP">MINUS</field>
                                      <value name="A">
                                        <shadow type="math_number" id="rD[[`+/pH}Z,=`RaZDKb">
                                          <field name="NUM">1</field>
                                        </shadow>
                                        <block type="time_get" id="{YtxVX%(xd!aZrGPIR%/">
                                          <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation>
                                          <field name="OPTION">object</field>
                                        </block>
                                      </value>
                                      <value name="B">
                                        <shadow type="math_number" id="U}:)~D1u/;(DT4d+kNZM">
                                          <field name="NUM">1</field>
                                        </shadow>
                                        <block type="get_value" id="}D,-3Ku3mkH){l1UJ|o?">
                                          <field name="ATTR">lc</field>
                                          <field name="OID">fb-checkpresence.0.presentCount</field>
                                        </block>
                                      </value>
                                    </block>
                                  </value>
                                </block>
                              </value>
                            </block>
                          </statement>
                        </block>
                      </statement>
                    </block>
                  </next>
                </block>
              </xml>
              
              paul53P Offline
              paul53P Offline
              paul53
              wrote on last edited by
              #52

              @brofelscher sagte: Blockly funktioniert bis 59 Minuten prima

              Das sind die Minuten der Uhrzeit.
              Vorschlag:

              Bild_2021-12-28_224042.png

              <xml xmlns="https://developers.google.com/blockly/xml">
               <block type="comment" id="vdO3Z/b-^J_@l)?Eq_R+" x="13" y="38">
                 <field name="COMMENT">Abwesenheitszeit berechnen</field>
                 <next>
                   <block type="on" id="-Se3D{`):B`]p/=p_aOI">
                     <field name="OID">fb-checkpresence.0.presentCount</field>
                     <field name="CONDITION">any</field>
                     <field name="ACK_CONDITION"></field>
                     <statement name="STATEMENT">
                       <block type="controls_if" id="g$$Mh+_gT[pE?%~wmOw7">
                         <value name="IF0">
                           <block type="logic_compare" id="B~cGcXi@sZ~Vuxeg9NrH">
                             <field name="OP">EQ</field>
                             <value name="A">
                               <block type="get_value" id="Ra3xND;{0=Gx-[pw@??P">
                                 <field name="ATTR">val</field>
                                 <field name="OID">fb-checkpresence.0.presentCount</field>
                               </block>
                             </value>
                             <value name="B">
                               <block type="text" id="|2l5jEGj$arki%U@aI1*">
                                 <field name="TEXT">0</field>
                               </block>
                             </value>
                           </block>
                         </value>
                         <statement name="DO0">
                           <block type="update" id="fO*d3{jQ-Q,Muo5?^aHF">
                             <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                             <field name="OID">0_userdata.0.AbwesendSeitMinuten</field>
                             <field name="WITH_DELAY">FALSE</field>
                             <value name="VALUE">
                               <block type="math_round" id="jh5X6wfE6}koDRuR}h,7">
                                 <field name="OP">ROUND</field>
                                 <value name="NUM">
                                   <shadow type="math_number" id="dsl{1yg*UVLul@F2*}_x">
                                     <field name="NUM">3.1</field>
                                   </shadow>
                                   <block type="math_arithmetic" id="CG|Sg`nEt;fkO/q}:-Eg">
                                     <field name="OP">DIVIDE</field>
                                     <value name="A">
                                       <shadow type="math_number" id="r16alN.iyJ)%|~KKF{p5">
                                         <field name="NUM">1</field>
                                       </shadow>
                                       <block type="math_arithmetic" id="{)*krPx!rRWcV.lMNvs9">
                                         <field name="OP">MINUS</field>
                                         <value name="A">
                                           <shadow type="math_number" id="rD[[`+/pH}Z,=`RaZDKb">
                                             <field name="NUM">1</field>
                                           </shadow>
                                           <block type="time_get" id="{YtxVX%(xd!aZrGPIR%/">
                                             <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation>
                                             <field name="OPTION">object</field>
                                           </block>
                                         </value>
                                         <value name="B">
                                           <shadow type="math_number" id="U}:)~D1u/;(DT4d+kNZM">
                                             <field name="NUM">1</field>
                                           </shadow>
                                           <block type="on_source" id="75tkb;IKslfqIl;1JyN#">
                                             <field name="ATTR">oldState.lc</field>
                                           </block>
                                         </value>
                                       </block>
                                     </value>
                                     <value name="B">
                                       <shadow type="math_number" id="7o1So,{6-3V~;lGxE-;P">
                                         <field name="NUM">60000</field>
                                       </shadow>
                                     </value>
                                   </block>
                                 </value>
                               </block>
                             </value>
                           </block>
                         </statement>
                       </block>
                     </statement>
                   </block>
                 </next>
               </block>
              </xml>
              

              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
              Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

              B 1 Reply Last reply
              1
              • paul53P paul53

                @brofelscher sagte: Blockly funktioniert bis 59 Minuten prima

                Das sind die Minuten der Uhrzeit.
                Vorschlag:

                Bild_2021-12-28_224042.png

                <xml xmlns="https://developers.google.com/blockly/xml">
                 <block type="comment" id="vdO3Z/b-^J_@l)?Eq_R+" x="13" y="38">
                   <field name="COMMENT">Abwesenheitszeit berechnen</field>
                   <next>
                     <block type="on" id="-Se3D{`):B`]p/=p_aOI">
                       <field name="OID">fb-checkpresence.0.presentCount</field>
                       <field name="CONDITION">any</field>
                       <field name="ACK_CONDITION"></field>
                       <statement name="STATEMENT">
                         <block type="controls_if" id="g$$Mh+_gT[pE?%~wmOw7">
                           <value name="IF0">
                             <block type="logic_compare" id="B~cGcXi@sZ~Vuxeg9NrH">
                               <field name="OP">EQ</field>
                               <value name="A">
                                 <block type="get_value" id="Ra3xND;{0=Gx-[pw@??P">
                                   <field name="ATTR">val</field>
                                   <field name="OID">fb-checkpresence.0.presentCount</field>
                                 </block>
                               </value>
                               <value name="B">
                                 <block type="text" id="|2l5jEGj$arki%U@aI1*">
                                   <field name="TEXT">0</field>
                                 </block>
                               </value>
                             </block>
                           </value>
                           <statement name="DO0">
                             <block type="update" id="fO*d3{jQ-Q,Muo5?^aHF">
                               <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                               <field name="OID">0_userdata.0.AbwesendSeitMinuten</field>
                               <field name="WITH_DELAY">FALSE</field>
                               <value name="VALUE">
                                 <block type="math_round" id="jh5X6wfE6}koDRuR}h,7">
                                   <field name="OP">ROUND</field>
                                   <value name="NUM">
                                     <shadow type="math_number" id="dsl{1yg*UVLul@F2*}_x">
                                       <field name="NUM">3.1</field>
                                     </shadow>
                                     <block type="math_arithmetic" id="CG|Sg`nEt;fkO/q}:-Eg">
                                       <field name="OP">DIVIDE</field>
                                       <value name="A">
                                         <shadow type="math_number" id="r16alN.iyJ)%|~KKF{p5">
                                           <field name="NUM">1</field>
                                         </shadow>
                                         <block type="math_arithmetic" id="{)*krPx!rRWcV.lMNvs9">
                                           <field name="OP">MINUS</field>
                                           <value name="A">
                                             <shadow type="math_number" id="rD[[`+/pH}Z,=`RaZDKb">
                                               <field name="NUM">1</field>
                                             </shadow>
                                             <block type="time_get" id="{YtxVX%(xd!aZrGPIR%/">
                                               <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation>
                                               <field name="OPTION">object</field>
                                             </block>
                                           </value>
                                           <value name="B">
                                             <shadow type="math_number" id="U}:)~D1u/;(DT4d+kNZM">
                                               <field name="NUM">1</field>
                                             </shadow>
                                             <block type="on_source" id="75tkb;IKslfqIl;1JyN#">
                                               <field name="ATTR">oldState.lc</field>
                                             </block>
                                           </value>
                                         </block>
                                       </value>
                                       <value name="B">
                                         <shadow type="math_number" id="7o1So,{6-3V~;lGxE-;P">
                                           <field name="NUM">60000</field>
                                         </shadow>
                                       </value>
                                     </block>
                                   </value>
                                 </block>
                               </value>
                             </block>
                           </statement>
                         </block>
                       </statement>
                     </block>
                   </next>
                 </block>
                </xml>
                

                B Offline
                B Offline
                brofelscher
                wrote on last edited by
                #53

                @paul53 said in Zeitdifferenz berechnen:

                Vorschlag:

                Bild_2021-12-28_224042.png

                Hi, dein Vorschlag passt perfekt :) Danke dir.

                Ich habe wohl die Funktion "Minuten" missverstanden, da ich für die Minuten auch die Formatierung "mm" hätte nutzen können.
                Und wieder ist man ein wenig schlauer :)

                1 Reply Last reply
                0
                • E Offline
                  E Offline
                  erazor86
                  wrote on last edited by
                  #54

                  Ich habe wieder eine neue Aufgabenstellung bzgl. Zeitverrechnung. Diesmal möchte ich die mittlere Außentemperatur der letzten 3h berechnen. Ich habe hierzu mal ein Blockly erstellt. Jedoch ist es nicht ganz korrekt, da die durchschnittliche Temp nur alle 3h neu berechnet wird. Habe es leider nicht hinbekommen wie ich es gerne hätte. Vielleicht hat jemand einen Tip?
                  tempdurchschnitt.JPG

                  paul53P 1 Reply Last reply
                  0
                  • E erazor86

                    Ich habe wieder eine neue Aufgabenstellung bzgl. Zeitverrechnung. Diesmal möchte ich die mittlere Außentemperatur der letzten 3h berechnen. Ich habe hierzu mal ein Blockly erstellt. Jedoch ist es nicht ganz korrekt, da die durchschnittliche Temp nur alle 3h neu berechnet wird. Habe es leider nicht hinbekommen wie ich es gerne hätte. Vielleicht hat jemand einen Tip?
                    tempdurchschnitt.JPG

                    paul53P Offline
                    paul53P Offline
                    paul53
                    wrote on last edited by paul53
                    #55

                    @erazor86 sagte: Vielleicht hat jemand einen Tip?

                    Suche mal im Forum nach "gleitender Mittelwert".

                    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                    1 Reply Last reply
                    0
                    • paul53P paul53

                      @strobi sagte: Stundengenau (als Kommazahl) würde ausreichen) der aktuellen Tageszeit bis zum Sonnenuntergang

                      Bild_2021-11-25_200531.png

                      S Offline
                      S Offline
                      Strobi
                      wrote on last edited by
                      #56

                      @paul53
                      Guten Abend,
                      leider funktioniert die Zeitberechnung so leider nicht.
                      Ich würde gerne immer die Zeitdifferenz bis zum nächsten Sonnenaufgang berechnen.
                      Also 1h vor dem Sonnenaufgang müsste 1h rauskommen, eine Stunde nach dem Sonnenaufgang müsste 23h rauskommen.

                      Mit folgendem Blockly kommt aber leider gar nichts raus:
                      72191ec5-e308-416a-819f-4ce029ed05d6-grafik.png

                      62cbb7ba-6d4e-4dcc-a86e-58aebfb1351d-grafik.png

                      Hat vielleicht jemand eine Idee, wie ich das hinbekommen könnte?

                      Besten Dank!

                      paul53P 1 Reply Last reply
                      0
                      • S Strobi

                        @paul53
                        Guten Abend,
                        leider funktioniert die Zeitberechnung so leider nicht.
                        Ich würde gerne immer die Zeitdifferenz bis zum nächsten Sonnenaufgang berechnen.
                        Also 1h vor dem Sonnenaufgang müsste 1h rauskommen, eine Stunde nach dem Sonnenaufgang müsste 23h rauskommen.

                        Mit folgendem Blockly kommt aber leider gar nichts raus:
                        72191ec5-e308-416a-819f-4ce029ed05d6-grafik.png

                        62cbb7ba-6d4e-4dcc-a86e-58aebfb1351d-grafik.png

                        Hat vielleicht jemand eine Idee, wie ich das hinbekommen könnte?

                        Besten Dank!

                        paul53P Offline
                        paul53P Offline
                        paul53
                        wrote on last edited by paul53
                        #57

                        @strobi sagte eine Stunde nach dem Sonnenaufgang müsste 23h rauskommen.

                        Nein, dann kommt am gleichen Tag ein negativer Wert raus. Teste die Berechnung erst mal mit dem Debug-Block.

                        Der Datenpunkt scheint keinen Zustand zu haben. Ist es der richtige DP? Das Skript ist aktiv, nicht unter der Gruppe "global" erstellt und der Debug-Modus (rechts oben) ist deaktiviert?

                        Für positive Werte:

                        Bild_2022-01-17_235843.png

                        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                        S 1 Reply Last reply
                        0
                        • paul53P paul53

                          @strobi sagte eine Stunde nach dem Sonnenaufgang müsste 23h rauskommen.

                          Nein, dann kommt am gleichen Tag ein negativer Wert raus. Teste die Berechnung erst mal mit dem Debug-Block.

                          Der Datenpunkt scheint keinen Zustand zu haben. Ist es der richtige DP? Das Skript ist aktiv, nicht unter der Gruppe "global" erstellt und der Debug-Modus (rechts oben) ist deaktiviert?

                          Für positive Werte:

                          Bild_2022-01-17_235843.png

                          S Offline
                          S Offline
                          Strobi
                          wrote on last edited by
                          #58

                          @paul53
                          So geht es - falls es noch jemanden interessiert - Zeitspanne bis zum nächsten Sonnenaufgang :-)
                          e87b1c2e-3e72-4fb5-a526-b9fb563ca8f0-grafik.png

                          1 Reply Last reply
                          0
                          • JB_SullivanJ Offline
                            JB_SullivanJ Offline
                            JB_Sullivan
                            wrote on last edited by
                            #59

                            Auch wenn dieser Thread schon "100 Jahre" alt ist, würde ich mich gerne mit meiner Frage hier anschließen, da es sich ebenfalls um eine "Zeit berechnen" Frage handelt.

                            Konkrete Problemstellung:
                            Ich habe zwei Datenpunkte - einmal die Zeit als UTC und dann den Lokalen Korrekturfaktor +2 Std. (CET)

                            Wie kann ich den vorhandenen DP, welcher so aussieht 2022-10-25T13:23:32Z nun um + 2 Stunden hoch addieren?

                            Das hier funktioniert jedenfalls nicht :(

                            178032b4-91c6-4d87-89aa-304ba35c05c0-image.png

                            ioBroker (since 2018) auf Intel Core i3-5005U NUC und Windwos10 Pro

                            haus-automatisierungH 1 Reply Last reply
                            0
                            • JB_SullivanJ JB_Sullivan

                              Auch wenn dieser Thread schon "100 Jahre" alt ist, würde ich mich gerne mit meiner Frage hier anschließen, da es sich ebenfalls um eine "Zeit berechnen" Frage handelt.

                              Konkrete Problemstellung:
                              Ich habe zwei Datenpunkte - einmal die Zeit als UTC und dann den Lokalen Korrekturfaktor +2 Std. (CET)

                              Wie kann ich den vorhandenen DP, welcher so aussieht 2022-10-25T13:23:32Z nun um + 2 Stunden hoch addieren?

                              Das hier funktioniert jedenfalls nicht :(

                              178032b4-91c6-4d87-89aa-304ba35c05c0-image.png

                              haus-automatisierungH Online
                              haus-automatisierungH Online
                              haus-automatisierung
                              Developer Most Active
                              wrote on last edited by haus-automatisierung
                              #60

                              @jb_sullivan sagte in Zeitdifferenz berechnen:

                              Wie kann ich den vorhandenen DP, welcher so aussieht 2022-10-25T13:23:32Z nun um + 2 Stunden hoch addieren?

                              Du willst nichts addieren. Du willst den Zeitstempel nur anders formatieren (für unsere Zeitzone). Der Zeitpunkt bleibt ja genau der gleiche. Wäre ja falsch, da nun Stunden drauf zu schlagen.

                              Das "Z" am Ende deiner Zeitangabe steht für "Zulu". Das heißt, das ist UTC. Wenn Du das nun also in die gängigen Datumsfunktionen gibst, dann wissen die schon damit umzugehen. Wenn man den Zeitpunkt nun also formatiert, dann wird die Zeitzone des Betriebssystems berücksichtigt:

                              Screenshot 2022-10-26 at 10.47.14.png

                              Ergibt: 25.10.2022. 15:23:32

                              <xml xmlns="https://developers.google.com/blockly/xml">
                                <variables>
                                  <variable id=",cJDM_Be,aiY)MRh{R/}">timeStamp</variable>
                                </variables>
                                <block type="variables_set" id="#s#G]QUKK_14+DT$P.$@" x="-587" y="262">
                                  <field name="VAR" id=",cJDM_Be,aiY)MRh{R/}">timeStamp</field>
                                  <value name="VALUE">
                                    <block type="convert_to_date" id="k=w+o:B(w6`jJMabP~b[">
                                      <value name="VALUE">
                                        <block type="text" id="r6t?3L$0}/3s`fDw`eh7">
                                          <field name="TEXT">2022-10-25T13:23:32Z</field>
                                        </block>
                                      </value>
                                    </block>
                                  </value>
                                  <next>
                                    <block type="debug" id="00=-ftF0Y@P^A7$W/(F?">
                                      <field name="Severity">log</field>
                                      <value name="TEXT">
                                        <shadow type="text" id="#=,ZXQ_{QyO-CuYT@KRn">
                                          <field name="TEXT">test</field>
                                        </shadow>
                                        <block type="convert_from_date" id="Ou5k{iL@;t`k5bxyQ^,S">
                                          <mutation xmlns="http://www.w3.org/1999/xhtml" format="true" language="false"></mutation>
                                          <field name="OPTION">custom</field>
                                          <field name="FORMAT">TT.MM.JJJJ. SS:mm:ss</field>
                                          <value name="VALUE">
                                            <block type="variables_get" id="=OC%5Yj^4Ki#Oc,(S1m/">
                                              <field name="VAR" id=",cJDM_Be,aiY)MRh{R/}">timeStamp</field>
                                            </block>
                                          </value>
                                        </block>
                                      </value>
                                    </block>
                                  </next>
                                </block>
                              </xml>
                              

                              EDIT: So gehts sogar noch einfacher

                              Screenshot 2022-10-26 at 10.50.22.png

                              Aber: Wenn Du ein Datum/Zeitpunkt als Wert in einem Datenpunkt speichern möchtest, dann ist UTC dafür ebenfalls korrekt. In dem Fall setzt Du die Rolle auf date und der Admin stellt den Wert dann "richtig" (heißt: in Deiner Zeitzone formatiert) dar:

                              Screenshot 2022-10-26 at 11.04.06.png

                              🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
                              🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
                              📚 Meine inoffizielle ioBroker Dokumentation

                              JB_SullivanJ 1 Reply Last reply
                              0
                              • haus-automatisierungH haus-automatisierung

                                @jb_sullivan sagte in Zeitdifferenz berechnen:

                                Wie kann ich den vorhandenen DP, welcher so aussieht 2022-10-25T13:23:32Z nun um + 2 Stunden hoch addieren?

                                Du willst nichts addieren. Du willst den Zeitstempel nur anders formatieren (für unsere Zeitzone). Der Zeitpunkt bleibt ja genau der gleiche. Wäre ja falsch, da nun Stunden drauf zu schlagen.

                                Das "Z" am Ende deiner Zeitangabe steht für "Zulu". Das heißt, das ist UTC. Wenn Du das nun also in die gängigen Datumsfunktionen gibst, dann wissen die schon damit umzugehen. Wenn man den Zeitpunkt nun also formatiert, dann wird die Zeitzone des Betriebssystems berücksichtigt:

                                Screenshot 2022-10-26 at 10.47.14.png

                                Ergibt: 25.10.2022. 15:23:32

                                <xml xmlns="https://developers.google.com/blockly/xml">
                                  <variables>
                                    <variable id=",cJDM_Be,aiY)MRh{R/}">timeStamp</variable>
                                  </variables>
                                  <block type="variables_set" id="#s#G]QUKK_14+DT$P.$@" x="-587" y="262">
                                    <field name="VAR" id=",cJDM_Be,aiY)MRh{R/}">timeStamp</field>
                                    <value name="VALUE">
                                      <block type="convert_to_date" id="k=w+o:B(w6`jJMabP~b[">
                                        <value name="VALUE">
                                          <block type="text" id="r6t?3L$0}/3s`fDw`eh7">
                                            <field name="TEXT">2022-10-25T13:23:32Z</field>
                                          </block>
                                        </value>
                                      </block>
                                    </value>
                                    <next>
                                      <block type="debug" id="00=-ftF0Y@P^A7$W/(F?">
                                        <field name="Severity">log</field>
                                        <value name="TEXT">
                                          <shadow type="text" id="#=,ZXQ_{QyO-CuYT@KRn">
                                            <field name="TEXT">test</field>
                                          </shadow>
                                          <block type="convert_from_date" id="Ou5k{iL@;t`k5bxyQ^,S">
                                            <mutation xmlns="http://www.w3.org/1999/xhtml" format="true" language="false"></mutation>
                                            <field name="OPTION">custom</field>
                                            <field name="FORMAT">TT.MM.JJJJ. SS:mm:ss</field>
                                            <value name="VALUE">
                                              <block type="variables_get" id="=OC%5Yj^4Ki#Oc,(S1m/">
                                                <field name="VAR" id=",cJDM_Be,aiY)MRh{R/}">timeStamp</field>
                                              </block>
                                            </value>
                                          </block>
                                        </value>
                                      </block>
                                    </next>
                                  </block>
                                </xml>
                                

                                EDIT: So gehts sogar noch einfacher

                                Screenshot 2022-10-26 at 10.50.22.png

                                Aber: Wenn Du ein Datum/Zeitpunkt als Wert in einem Datenpunkt speichern möchtest, dann ist UTC dafür ebenfalls korrekt. In dem Fall setzt Du die Rolle auf date und der Admin stellt den Wert dann "richtig" (heißt: in Deiner Zeitzone formatiert) dar:

                                Screenshot 2022-10-26 at 11.04.06.png

                                JB_SullivanJ Offline
                                JB_SullivanJ Offline
                                JB_Sullivan
                                wrote on last edited by JB_Sullivan
                                #61

                                @haus-automatisierung

                                Naja, den Datenpunkt als UTC gibt es ja. Verstehe ich das richtig, das ich nur die Rolle ändern muss? Also in den Objektdaten von "indicator" in "date", damit nicht UTC sondern die Systemzeit ausgegeben wird?

                                {
                                  "type": "state",
                                  "common": {
                                    "name": "timeInCar",
                                    "role": "indicator",
                                    "type": "string",
                                    "write": false,
                                    "read": true
                                  },
                                  "native": {},
                                  "from": "system.adapter.vw-connect.0",
                                  "user": "system.user.admin",
                                  "ts": 1665834213369,
                                  "_id": "vw-connect.0.FIN.status.air-conditioning.timers.timeInCar",
                                  "acl": {
                                    "object": 1636,
                                    "state": 1636,
                                    "owner": "system.user.admin",
                                    "ownerGroup": "system.group.administrator"
                                  }
                                }
                                

                                ioBroker (since 2018) auf Intel Core i3-5005U NUC und Windwos10 Pro

                                haus-automatisierungH 1 Reply Last reply
                                0
                                • JB_SullivanJ JB_Sullivan

                                  @haus-automatisierung

                                  Naja, den Datenpunkt als UTC gibt es ja. Verstehe ich das richtig, das ich nur die Rolle ändern muss? Also in den Objektdaten von "indicator" in "date", damit nicht UTC sondern die Systemzeit ausgegeben wird?

                                  {
                                    "type": "state",
                                    "common": {
                                      "name": "timeInCar",
                                      "role": "indicator",
                                      "type": "string",
                                      "write": false,
                                      "read": true
                                    },
                                    "native": {},
                                    "from": "system.adapter.vw-connect.0",
                                    "user": "system.user.admin",
                                    "ts": 1665834213369,
                                    "_id": "vw-connect.0.FIN.status.air-conditioning.timers.timeInCar",
                                    "acl": {
                                      "object": 1636,
                                      "state": 1636,
                                      "owner": "system.user.admin",
                                      "ownerGroup": "system.group.administrator"
                                    }
                                  }
                                  
                                  haus-automatisierungH Online
                                  haus-automatisierungH Online
                                  haus-automatisierung
                                  Developer Most Active
                                  wrote on last edited by haus-automatisierung
                                  #62

                                  @jb_sullivan sagte in Zeitdifferenz berechnen:

                                  Verstehe ich das richtig, das ich nur die Rolle ändern muss?

                                  Theoretisch ja, laut Dokumentation wird die Rolle date für number und string unterstützt: https://www.iobroker.net/#en/documentation/dev/stateroles.md

                                  • date (common.type = string - parsable by "new Date(ddd)" string
                                  • date (common.type = number - epoch seconds * 1000

                                  Aber ersteres funktioniert im Admin aktuell nicht. Habe einen Issue aufgemacht:

                                  https://github.com/ioBroker/ioBroker.admin/issues/1770

                                  Und: Ich würde davon abraten, die Rollen von Datenpunkten anzupassen, welche man nicht selbst erstellt hat!

                                  Ein Alias wäre hier eine gute Lösung. Type number, role date und beim Lesen einfach die Funktion einfügen: new Date(val).getTime()

                                  {
                                    "common": {
                                      "name": "test",
                                      "desc": "Manuell erzeugt",
                                      "role": "date",
                                      "type": "number",
                                      "read": true,
                                      "write": true,
                                      "def": 0,
                                      "alias": {
                                        "id": "vw-connect.0.FIN.status.air-conditioning.timers.timeInCar",
                                        "read": "new Date(val).getTime()"
                                      }
                                    },
                                    "type": "state",
                                    "native": {},
                                    "_id": "alias.0.test",
                                    "acl": {
                                      "object": 1632,
                                      "state": 1636,
                                      "owner": "system.user.admin",
                                      "ownerGroup": "system.group.administrator"
                                    },
                                    "from": "system.adapter.admin.0",
                                    "user": "system.user.admin",
                                    "ts": 1666775968588
                                  }
                                  

                                  Die Frage ist nach wie vor: Was hast Du denn vor? Es ändert sich im Admin ja nur die Anzeige, wenn man die Rolle setzt. Der gespeicherte Wert bleibt genau der gleiche...

                                  🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
                                  🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
                                  📚 Meine inoffizielle ioBroker Dokumentation

                                  JB_SullivanJ 1 Reply Last reply
                                  0
                                  • haus-automatisierungH haus-automatisierung

                                    @jb_sullivan sagte in Zeitdifferenz berechnen:

                                    Verstehe ich das richtig, das ich nur die Rolle ändern muss?

                                    Theoretisch ja, laut Dokumentation wird die Rolle date für number und string unterstützt: https://www.iobroker.net/#en/documentation/dev/stateroles.md

                                    • date (common.type = string - parsable by "new Date(ddd)" string
                                    • date (common.type = number - epoch seconds * 1000

                                    Aber ersteres funktioniert im Admin aktuell nicht. Habe einen Issue aufgemacht:

                                    https://github.com/ioBroker/ioBroker.admin/issues/1770

                                    Und: Ich würde davon abraten, die Rollen von Datenpunkten anzupassen, welche man nicht selbst erstellt hat!

                                    Ein Alias wäre hier eine gute Lösung. Type number, role date und beim Lesen einfach die Funktion einfügen: new Date(val).getTime()

                                    {
                                      "common": {
                                        "name": "test",
                                        "desc": "Manuell erzeugt",
                                        "role": "date",
                                        "type": "number",
                                        "read": true,
                                        "write": true,
                                        "def": 0,
                                        "alias": {
                                          "id": "vw-connect.0.FIN.status.air-conditioning.timers.timeInCar",
                                          "read": "new Date(val).getTime()"
                                        }
                                      },
                                      "type": "state",
                                      "native": {},
                                      "_id": "alias.0.test",
                                      "acl": {
                                        "object": 1632,
                                        "state": 1636,
                                        "owner": "system.user.admin",
                                        "ownerGroup": "system.group.administrator"
                                      },
                                      "from": "system.adapter.admin.0",
                                      "user": "system.user.admin",
                                      "ts": 1666775968588
                                    }
                                    

                                    Die Frage ist nach wie vor: Was hast Du denn vor? Es ändert sich im Admin ja nur die Anzeige, wenn man die Rolle setzt. Der gespeicherte Wert bleibt genau der gleiche...

                                    JB_SullivanJ Offline
                                    JB_SullivanJ Offline
                                    JB_Sullivan
                                    wrote on last edited by
                                    #63

                                    @haus-automatisierung sagte in Zeitdifferenz berechnen:

                                    Die Frage ist nach wie vor: Was hast Du denn vor?

                                    Der Adapter liefert die Uhrzeit des Fahrzeugs in UTC und zusätzlich den lokalen (CET) Anpassungsfaktor +2

                                    Das Fahrzeug gibt die Geoposition aus und damit ich in der VIS sehe wie aktuell diese Geoposition ist, blende ich mir den diesen "Zeitstempel" Datenpunkt mit in die VIS ein. Klar kann ICH auch jedesmal im Kopf die 2 Stunden dazu rechnen.

                                    Damit ist aber dem WAF-Faktor leider nicht genüge getan ;) Darum wollte ich den Datenpunkt so umwandeln das ein neuer, zeitlich korrekter DP entsteht, den ich dann in die VIS verknüpfe.

                                    8ad2f5ae-da4d-47c9-8421-aa839907da88-image.png

                                    ioBroker (since 2018) auf Intel Core i3-5005U NUC und Windwos10 Pro

                                    haus-automatisierungH 1 Reply Last reply
                                    0
                                    • JB_SullivanJ JB_Sullivan

                                      @haus-automatisierung sagte in Zeitdifferenz berechnen:

                                      Die Frage ist nach wie vor: Was hast Du denn vor?

                                      Der Adapter liefert die Uhrzeit des Fahrzeugs in UTC und zusätzlich den lokalen (CET) Anpassungsfaktor +2

                                      Das Fahrzeug gibt die Geoposition aus und damit ich in der VIS sehe wie aktuell diese Geoposition ist, blende ich mir den diesen "Zeitstempel" Datenpunkt mit in die VIS ein. Klar kann ICH auch jedesmal im Kopf die 2 Stunden dazu rechnen.

                                      Damit ist aber dem WAF-Faktor leider nicht genüge getan ;) Darum wollte ich den Datenpunkt so umwandeln das ein neuer, zeitlich korrekter DP entsteht, den ich dann in die VIS verknüpfe.

                                      8ad2f5ae-da4d-47c9-8421-aa839907da88-image.png

                                      haus-automatisierungH Online
                                      haus-automatisierungH Online
                                      haus-automatisierung
                                      Developer Most Active
                                      wrote on last edited by haus-automatisierung
                                      #64

                                      @jb_sullivan sagte in Zeitdifferenz berechnen:

                                      Darum wollte ich den Datenpunkt so umwandeln das ein neuer, zeitlich korrekter DP entsteht

                                      Verstehe. Korrekt sind ja die UTC-Zeitpunkte ja auch :)

                                      Das ist meiner Meinung nach die Aufgabe des Frontends (also VIS). Es wäre in jedem Fall richtig, den Datenpunkt in UTC zu speichern (als string so wie er aktuell schon da ist oder number, siehe Alias im vorigen Beitrag) und diesen dann im Frontend von VIS auf die lokale Zeitzone umrechnen zu lassen.

                                      Eine Datenbank sollte Zeitstempel immer in UTC speichern (wie das Forum hier z.B. auch). Und dann erst bei der Darstellung den Zeitstempel für den User darstellen.

                                      Dafür gibt es doch z.B. das Widget TimesValue. Da einfach den Datenpunkt mit dem UTC-Zeitstempel wählen und das Format DD.MM.YYYY hh:mm:ss eintragen. Fertig. Keine Scripts, keine neuen Datenpunkte, keine Rechnerei.

                                      🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
                                      🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
                                      📚 Meine inoffizielle ioBroker Dokumentation

                                      JB_SullivanJ 1 Reply Last reply
                                      1
                                      • haus-automatisierungH haus-automatisierung

                                        @jb_sullivan sagte in Zeitdifferenz berechnen:

                                        Darum wollte ich den Datenpunkt so umwandeln das ein neuer, zeitlich korrekter DP entsteht

                                        Verstehe. Korrekt sind ja die UTC-Zeitpunkte ja auch :)

                                        Das ist meiner Meinung nach die Aufgabe des Frontends (also VIS). Es wäre in jedem Fall richtig, den Datenpunkt in UTC zu speichern (als string so wie er aktuell schon da ist oder number, siehe Alias im vorigen Beitrag) und diesen dann im Frontend von VIS auf die lokale Zeitzone umrechnen zu lassen.

                                        Eine Datenbank sollte Zeitstempel immer in UTC speichern (wie das Forum hier z.B. auch). Und dann erst bei der Darstellung den Zeitstempel für den User darstellen.

                                        Dafür gibt es doch z.B. das Widget TimesValue. Da einfach den Datenpunkt mit dem UTC-Zeitstempel wählen und das Format DD.MM.YYYY hh:mm:ss eintragen. Fertig. Keine Scripts, keine neuen Datenpunkte, keine Rechnerei.

                                        JB_SullivanJ Offline
                                        JB_SullivanJ Offline
                                        JB_Sullivan
                                        wrote on last edited by JB_Sullivan
                                        #65

                                        @haus-automatisierung VIELEN DANK das wir drüber gesprochen haben ;)

                                        Tja wenn man immer alles wüsste was geht, bräuchte man sich nicht den Kopf zu zerbrechen, wie man dieses oder jenes von"hinten durchs Auge" gelöst bekommt.

                                        Also nochmals vielen Dank für deine Zeit und die Erklärungen 👍👍

                                        ioBroker (since 2018) auf Intel Core i3-5005U NUC und Windwos10 Pro

                                        1 Reply Last reply
                                        1
                                        • hg6806H Offline
                                          hg6806H Offline
                                          hg6806
                                          Most Active
                                          wrote on last edited by
                                          #66

                                          Hallo zusammen,

                                          zu dem Thema hätte ich auch eine Frage.
                                          Und zwar habe ich eine Zeitdifferenz berechnet. Die ms stimmen soweit.
                                          16482933ms sind umgerechnet ca. 46h
                                          Mit dem folgenden Blockly bekomme ich aber nur 22:57?
                                          296d9bfd-70bb-4894-80e4-ba9ddb88487e-image.png

                                          HomoranH 1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          695

                                          Online

                                          32.6k

                                          Users

                                          82.3k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Home
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe