Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly Frage zum loggen von Zuständen

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

Blockly Frage zum loggen von Zuständen

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
8 Beiträge 2 Kommentatoren 2.5k Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • W Offline
    W Offline
    weimaraner
    schrieb am zuletzt editiert von
    #1

    Ich möchte die Dauer eines Zustandes loggen, um es mit history zu visualisieren. Einzelheiten zum Vorhaben http://forum.iobroker.net/viewtopic.php … 074#p55182

    Mein erster Versuch mit Blockly sieht nun so aus, daß ich den timestamp beim Starten und beim Stoppen in zwei Variablen schreibe. TimeStart und TimeStop.

    Jetzt möchte ich im nächsten Schritt die Variable "DauerFahrt" aus TimeStop minus TimeStart berechnen.

    Welches Blöckchen muß ich dafür verwenden?

    Danke und Grüße

    Andreas

    Die Objekt-ID heißt im Moment noch "Kellertürkontakt", weil der TFK noch dort verbaut ist.
    1884_blockly_maehroboter.jpg

    1 Antwort Letzte Antwort
    0
    • rantanplanR Offline
      rantanplanR Offline
      rantanplan
      schrieb am zuletzt editiert von
      #2

      Hallo weimaraner

      Mit dem timestamp müssten noch einige Konvertierungen gemacht werden.

      Eine einfache Lösung könnte so aussehen.
      147_timediff.png

      Die Berechnung funktioniert allerdings nicht über einen Tageswechsel hinaus!

      Dann wird das ganze wieder komplexer.

      Hier noch der Export

      ! ````
      <xml xmlns="http://www.w3.org/1999/xhtml"><block type="on_ext" id=";HVkIK%xDV*hfg5kGhZK" x="-1387" y="-662"><mutation items="1"></mutation>
      <field name="CONDITION">ne</field>

      <value name="OID0"><shadow type="field_oid" id="`h{W|EEJ_2vq}hmhx[S/"><field name="oid">javascript.1.bolTest01</field></shadow></value> 
      <statement name="STATEMENT"><block type="controls_if" id="y,)_no9bSoe+qt#3^Y}H"><mutation else="1"></mutation>
          <value name="IF0"><block type="logic_compare" id="~ajXk0%CiC`QN86X?(CJ"><field name="OP">EQ</field>
              <value name="A"><block type="get_value" id="VT1Pj)5C7:n;w3z5JZ23"><field name="ATTR">val</field>
                  <field name="OID">javascript.1.bolTest01</field></block></value> 
              <value name="B"><block type="logic_boolean" id="B(Y7/,N|SMqnfh]6;%)V"><field name="BOOL">TRUE</field></block></value></block></value> 
          <statement name="DO0"><block type="variables_set" id="p?oe83FptKFq,K*YT;a4"><field name="VAR">TimeStart</field>
              <value name="VALUE"><block type="time_get" id="Yftzf+X9i2YJD}YpN??|"><mutation format="false" language="false"></mutation>
                  <field name="OPTION">sid</field></block></value></block></statement> 
          <statement name="ELSE"><block type="variables_set" id="hfKNl]+nTN3RN3wj%qXM"><field name="VAR">TimeStop</field>
              <value name="VALUE"><block type="time_get" id="|Yr~}d{|jmkg6mKE%4ME"><mutation format="false" language="false"></mutation>
                  <field name="OPTION">sid</field></block></value> 
              <next><block type="variables_set" id="+Y~vjk`Hv8}[6qVJhtOY"><field name="VAR">TimeDiff</field>
                  <value name="VALUE"><block type="math_arithmetic" id="gkY(egaQS,%tf6iaH}/."><field name="OP">MINUS</field>
                      <value name="A"><shadow type="math_number" id="lXZR6{CRHSk1iZDT3oO/"><field name="NUM">1</field></shadow> 
                        <block type="variables_get" id="WYs:bX7BZKath^oFSXrY"><field name="VAR">TimeStop</field></block></value> 
                      <value name="B"><shadow type="math_number" id="{b%.79|%M%x7m+D:_P9?"><field name="NUM">1</field></shadow> 
                        <block type="variables_get" id="1FeI#T(Je3V.Xq(5cujG"><field name="VAR">TimeStart</field></block></value></block></value> 
                  <next><block type="debug" id="x)M[!d}o@`N9+;mY8c,g"><field name="Severity">log</field>
                      <value name="TEXT"><shadow type="text" id="POVS+U[=i]S%2WLeMN.9"><field name="TEXT">test</field></shadow> 
                        <block type="text_join" id="KK!Ge-G[]lp4ynS`0eAW"><mutation items="2"></mutation>
                          <value name="ADD0"><block type="variables_get" id="Lx7(:Ql@0+Tnh3=3)=tO"><field name="VAR">TimeDiff</field></block></value> 
                          <value name="ADD1"><block type="text" id="[UYujye7FkQD*Bw2QxnM"><field name="TEXT"> Sekunden</field></block></value></block></value></block></next></block></next></block></statement></block></statement></block></xml> 
      
      
      Grüße

      Rantanplan

      CCU3 / MS Server 2019(VM) / Scripten mit Blockly

      1 Antwort Letzte Antwort
      0
      • W Offline
        W Offline
        weimaraner
        schrieb am zuletzt editiert von
        #3

        Vielen Dank, Rantanplan!

        Das werde ich gleich morgen mal ausprobieren. Über den Tageswechsel dürfte vielleicht gar kein Problem sein, da ich nachts ja nicht mähe und mich die Ruhepause nicht interessiert.

        Mal schauen, wie ich das dann in history dargestellt bekomme.

        Ich werde weiter berichten (und fragen ;) ).

        Grüße Andreas

        1 Antwort Letzte Antwort
        0
        • W Offline
          W Offline
          weimaraner
          schrieb am zuletzt editiert von
          #4

          So, ich habe nun Rantanplans Skript angepaßt und gleich noch ein zweites "spiegelverkehrtes" für den jeweils anderen Zustand erstellt.

          Mähen:
          1884_skript_maehen.jpg

          Laden:
          1884_skriptladen.jpg

          Nun tut sich wieder ein bunter Straus an Fragen auf. :o :D :D

          Ich habe die Skripte in einer weiteren JavaSkript-Instanz laufen lassen, da ich im Forum gelesen hatte, daß man das zum Testen tuen soll. Also die "1" gewählt (siehe Bilder oben)

          Warum sehe ich aber im Reiter Objekte die Skripte unter javascript.0 ?

          siehe hier:
          1884_objekte_skript.jpg

          Nächste Frage: Wo finde ich die geloggten Zeiten meiner Zustände? Unter Objekte?

          Ich habe auf dieser Seite das Zahnrad ganz rechts geklickt. Da komme ich in den history-Adapter. Dort auf "aktiviert". Es passiert aber nichts. Der Kontakt wurde mehrmals bedient, aber ich sehe keine Dauern.
          1884_skript_history.jpg

          Und noch eine generelle Frage: Könnte ich beide Skripte zu einem Skript zusammen fassen? Hätte das Vor- oder Nachteile?

          Danke und viele Grüße

          Andreas

          1 Antwort Letzte Antwort
          0
          • rantanplanR Offline
            rantanplanR Offline
            rantanplan
            schrieb am zuletzt editiert von
            #5

            @weimaraner:

            Nun tut sich wieder ein bunter Straus an Fragen auf. :o :D :D `

            Ich habe es befürchtet :D

            @weimaraner:

            Ich habe die Skripte in einer weiteren JavaSkript-Instanz laufen lassen, da ich im Forum gelesen hatte, daß man das zum Testen tuen soll. Also die "1" gewählt (siehe Bilder oben)

            Warum sehe ich aber im Reiter Objekte die Skripte unter javascript.0 ? `
            Ja, sollte man so machen. Ich habe die 0 für produktiv und die 1 zum Testen.

            Das die Scripte manchmal in der falschen Instanz angezeigt werden ist bei mir auch so. Reorganiesiert sich aber irgenwann.

            @weimaraner:

            Und noch eine generelle Frage: Könnte ich beide Skripte zu einem Skript zusammen fassen? Hätte das Vor- oder Nachteile? `
            Ja könntest Du. Ein Blockly kann mehrere Trigger beinhalten.

            Dann solltest Du aber zusätzliche lokale Variablen nehmen. z.B. TimerStartMaehen, TimerStopMaehen. TimerStartLaden, TimerStopLaden

            Und die Trigger nicht auf "Änderung" sondern jeweils auf "wahr" oder "unwahr" reagieren lassen.

            @weimaraner:

            Nächste Frage: Wo finde ich die geloggten Zeiten meiner Zustände? Unter Objekte?

            Ich habe auf dieser Seite das Zahnrad ganz rechts geklickt. Da komme ich in den history-Adapter. Dort auf "aktiviert". Es passiert aber nichts. Der Kontakt wurde mehrmals bedient, aber ich sehe keine Dauern. `
            In Deinem Screenshot hast Du das Script selbst ausgewählt.

            Ein Script kennt nur 2 Zustände. Läuft oder läuft nicht.

            Da würde also nur geloggt wann Du das Script startest und wann Du auf Pause klickst.

            Ich habe immer geflissentlich überlesen, dass Du mit "History" loggen willst :oops: :roll:

            Dafür brauchst Du kein Blockly. :cry:

            Geh unter Objekte, wähle den STATE von dem Adapter aus und dann das "Zahnrädchen".

            History zeigt Dir dann wie lange das Teil offen oder zu war.

            Das hat aber alles nichts mehr mit Blockly zutun.

            Kurz zum Verständnis.

            Wenn Du dies mit Blockly lösen wolltest, müsstest Du

            1. Ein Objekt/Datenpunkt anlegen, Typ Logikwert, Bezeichnung "LadenAktiv" (lokale Variablen kannst Du nicht unter Objekte finden!)

            2. Ein Blockly, wo der Datenpunkt "LadenAktiv" auf "wahr" oder "unwahr" gesetzt wird.

            3. "LadenAktiv" unter Objekte auswählen und mit "History" verbinden.

            Grüße

            Rantanplan

            CCU3 / MS Server 2019(VM) / Scripten mit Blockly

            1 Antwort Letzte Antwort
            0
            • W Offline
              W Offline
              weimaraner
              schrieb am zuletzt editiert von
              #6

              Okay, ;) blockly war ein Irrweg. Aber ich habe was gelernt. :)

              Bei history habe ich geschaut, aber die geloggten Uhrzeiten über history lassen sich aber irgenwie nicht gut darstellen.

              Meine Idee ist ein Graph in einem Koordinatensystem, wobei auf der X-Achse die (Uhr)Zeit ist und auf der Y-Achse der Zustand 0=Laden, 1=Mähen.

              I-Tüpfelchen wäre dann eine Warnmeldung, wenn die Mähdauer eine Zeit x überschreitet, weil festgefahren, umgekippt, geklaut… :o :(

              Deshalb wollte ich aus den Uhrzeiten ja anfänglich die Dauer des Zustandes ermitteln. Daher kam ich zu blockly. Du siehst der Kreis schließt sich. :D

              Grüße Andreas

              1 Antwort Letzte Antwort
              0
              • rantanplanR Offline
                rantanplanR Offline
                rantanplan
                schrieb am zuletzt editiert von
                #7

                @weimaraner:

                Okay, ;) blockly war ein Irrweg. Aber ich habe was gelernt. :) `
                Jeder Tag an dem man etwas lernt ist ein guter Tag. ;)
                @weimaraner:

                Bei history habe ich geschaut, aber die geloggten Uhrzeiten über history lassen sich aber irgenwie nicht gut darstellen.

                Meine Idee ist ein Graph in einem Koordinatensystem, wobei auf der X-Achse die (Uhr)Zeit ist und auf der Y-Achse der Zustand 0=Laden, 1=Mähen. `
                Da gibt es bestimmt Möglichkeiten. Mach doch einen neuen Fred auf.

                Hier gibt es bestimmt jemanden, der Dir weiterhelfen kann.

                @weimaraner:

                I-Tüpfelchen wäre dann eine Warnmeldung, wenn die Mähdauer eine Zeit x überschreitet, weil festgefahren, umgekippt, geklaut… :o :( `
                Na, da kann ich wieder versuchen Dir zu helfen. :D
                147_beispiel.png

                Der Import:

                ! <xml 1999/xmlns="<URL url=" http:/www.w3.org/xhtml"="">http://www.w3.org/1999/xhtml">
                ! <block type="on_ext" id="hWe3oOsT9qm9n2FDJ^" x="-112" y="38"><mutation items="1"></mutation>
                ! <field name="CONDITION">ne</field>
                ! <value name="OID0"><shadow type="field_oid" id="Rcde!sY/svk9PIQLQZ^;"><field name="oid">default</field></shadow></value>
                ! <statement name="STATEMENT"><block type="controls_if" id="0Ob]KV][t6rD5_#FX~Tt"><mutation else="1"></mutation>
                ! <value name="IF0"><block type="logic_compare" id="[mb4E5oRS;wD}!LxvcRw"><field name="OP">EQ</field>
                ! <value name="A"><block type="get_value" id="Wc?S@q%|PQBr;y=fnp(M"><field name="ATTR">val</field>
                ! <field name="OID">ID auswählen</field></block></value>
                ! <value name="B"><block type="logic_boolean" id="4Ay!O+qV!O^G;vp|gQ99"><field name="BOOL">TRUE</field></block></value></block></value>
                ! <statement name="DO0"><block type="pushover" id="s{f8]F),e==dhjq,kI^"><field name="PRIORITY">0</field> ! <value name="MESSAGE"><shadow type="text" id="]hr~.X}J_r:THi68IF_;"><field name="TEXT">Hey Boss, beginne meinen schlecht bezahlten Job!</field></shadow></value> ! <value name="TITLE"><block type="text" id="z2Y,NPD4{[[U4NPGY+Pu"><field name="TEXT">Vom Rasen-Sklaven</field></block></value> ! <next><block type="timeouts_settimeout" id="1+SYeYF_P:RxreH=7L^@"><field name="NAME">timeout</field> ! <field name="DELAY">1800000</field> ! <statement name="STATEMENT"><block type="comment" id="e7yoscMDR(@+P4:?X8#E"><field name="COMMENT">Nach 30 Minuten</field> ! <next><block type="pushover" id="GBHg_}E~kV|i~/GrZ@9"><field name="PRIORITY">0</field>
                ! <value name="MESSAGE"><shadow type="text" id="h9WKC=fHrkIp[N[vz_7x"><field name="TEXT">Hey Boss, brauche Hilfe!!!</field></shadow></value>
                ! <value name="TITLE"><block type="text" id="g{2bJ|Tr|eskt:}6lcdt"><field name="TEXT">Vom Rasen-Sklaven</field></block></value></block></next></block></statement></block></next></block></statement>
                ! <statement name="ELSE"><block type="timeouts_cleartimeout" id="AeHq]M4eR):X_f2-I?.t"><field name="NAME">timeout</field>
                ! <next><block type="pushover" id="4IkGMCW#)A,Oq-N-|;Kd"><field name="PRIORITY">0</field>
                ! <value name="MESSAGE"><shadow type="text" id="-BIt^-hW9Y%pHxVGBa"><field name="TEXT">Hey Boss, mache Pause!</field></shadow></value>
                ! <value name="TITLE"><block type="text" id="I@2lY3Q]%,QP=(E;,X3("><field name="TEXT">Vom Rasen-Sklaven</field></block></value></block></next></block></statement></block></statement></block></xml>
                @weimaraner:

                Daher kam ich zu blockly. Du siehst der Kreis schließt sich. :D `
                Gut so ;)

                Grüße

                Rantanplan

                CCU3 / MS Server 2019(VM) / Scripten mit Blockly

                1 Antwort Letzte Antwort
                0
                • W Offline
                  W Offline
                  weimaraner
                  schrieb am zuletzt editiert von
                  #8

                  Schönes Blockly! ;) :D

                  Werde ich morgen mal umsetzen.

                  Ich berichte!

                  Danke und Grüße

                  Andreas

                  1 Antwort Letzte Antwort
                  0
                  Antworten
                  • In einem neuen Thema antworten
                  Anmelden zum Antworten
                  • Älteste zuerst
                  • Neuste zuerst
                  • Meiste Stimmen


                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  673

                  Online

                  32.6k

                  Benutzer

                  82.2k

                  Themen

                  1.3m

                  Beiträge
                  Community
                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                  ioBroker Community 2014-2025
                  logo
                  • Anmelden

                  • Du hast noch kein Konto? Registrieren

                  • Anmelden oder registrieren, um zu suchen
                  • Erster Beitrag
                    Letzter Beitrag
                  0
                  • Home
                  • Aktuell
                  • Tags
                  • Ungelesen 0
                  • Kategorien
                  • Unreplied
                  • Beliebt
                  • GitHub
                  • Docu
                  • Hilfe