Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Blockly Schalten zu bestimmten Zeiten

    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

    Blockly Schalten zu bestimmten Zeiten

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

      Hallo zusammen,

      ich arbeite gerade an meinem ersten selbsterstellten Blockly-Script. Es geht um eine Anwesenheitssimulation, bei der Lampen zu bestimmten Zeiten angehen.

      Bisher habe ich:
      Blockly.PNG

      Ohne Uhrzeitsteuerung klappt das Script, mit jedoch nicht.

      Über VIS schalte ich den Datenpunkt Anwesenheitssteuerung an, dann soll zu Zeiten, die auch in VIS zu steuern sind (z.b. Montag_Stunde_1, Montag_Minute_1) die Lampe angehen.

      Wo liegt der Fehler? Was kann ich besser machen?

      Danke und Gruß,
      Patrick

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

        Trigger in Trigger geht glaube ich nicht.
        Also erst Trigger Falls Objekt und dann auf Zeit prüfen mit einem Logikbaustein oder
        Zeitplan Trigger und dann Logikbaustein mit Abwesenheitssteuerung = Wahr

        hoffe mich richtig ausgedrückt zu haben, frag einfach nach.

        1 Reply Last reply Reply Quote 0
        • P
          PatrickFro last edited by

          Super, vielen Dank. Nur mit minütlichem Cron ohne Falls Objekt... klappte es.

          Danke!

          Dann kann es ja weitergehen 😉

          1 Reply Last reply Reply Quote 0
          • P
            PatrickFro last edited by

            Ich benötige leider doch nochmal Hilfe. Ich bin deutlich weitergekommen, mit fehlt nur die Möglichkeit, Geräte zu einer bestimmten Zeit nach dem Anschalten wieder abzuschalten. Die Zeitverzögerung ist mir bekannt, ich möchte aber eine Zeit aus einem Datenpunkt hierfür nehmen.

            Das habe ich bisher:
            Blockly.PNG

            Zeitsteuerung.PNG

            Leider finde ich hierfür keine Möglichkeit. Kennt jemand eine?

            Danke!

            J 1 Reply Last reply Reply Quote 0
            • J
              Jan1 @PatrickFro last edited by

              @PatrickFro
              ist auch ganz einfach. Du nimmst einfach den DP der das steuern soll als Trigger.
              Dann kannst Dir gleich mal angewöhnen mit der Maus einfach auf ein Block zu fahren und kurz warten. So erscheint eine sehr kurze Beschreibung was der Block macht. Beim "falls" Block kommt dann zum Beispiel der Hinweis "Führt eine Anweisung, wenn eine Bedingung wahr ist", heißt im Klartext, der Block prüft auf wahr, was ein zusätzliches "= wahr" komplett überflüssig macht und man sich so gleich 2 ganze Blöcke sparen kann 😉

              1 Reply Last reply Reply Quote 0
              • P
                PatrickFro last edited by

                Hallo Jan,

                spät aber es kommt noch: danke. Das mit dem Wahr werd ich ab sofort beachten, beim jetzigen Script ist es ja nicht wichtig. Wieder was dazugelernt...

                Mit der Uhrzeit komme ich aber an meine Grenzen.

                Ich trage in ein Feld nicht ein, um welche Zeit der DP auf aus geschaltet werden soll, sondern in wieviel Minuten.

                Ich müsste also prüfen, ob (Beispiel 20 Minuten) ab Uhrzeit ... vergangen sind. Die Uhrzeit wird im Datenpunkt aber in Stunden und Minuten separiert. Wenn z.b. die Schaltung an um 14:50 geschieht, die Schaltung aus 20 Minuten später, muss Blockly erkennen, dass dies um 15:10 ist. Wie aber klappt dieses?

                Blockly.PNG

                J 1 Reply Last reply Reply Quote 0
                • J
                  Jan1 @PatrickFro last edited by Jan1

                  @PatrickFro
                  mit Zeiten rechnen hab ich mit Blockly noch nicht probiert, sollte aber auch kein unlösbares Problem sein.
                  Du könntest ein fach beim Einschalten die aktuelle Zeit in Minuten in eine Variable oder DP schreiben (DP ist zum Testen besser, weil man den erstens definieren kann und zweitens gleich sieht was drin steht). Dazu dann die 20 Minuten aus Deinem DP addieren und wenn die aktuelle Zeit in Minuten dem Ergebnis entspricht eben ausschalten.
                  Da ist @paul53 eigentlich Dein Ansprechpartner, wenn es um elegante Lösungen komplexer Blocklys geht.

                  1 Reply Last reply Reply Quote 0
                  • P
                    PatrickFro last edited by

                    Blockly.PNG

                    Das ist nun mein Ansatz mit der Umrechnung der aktuellen Zeit in Minuten, leider funktioniert er nicht. Der Datenpunkt erhält keine Befüllung des Wertes. Hat jemand eine Idee?

                    Danke!

                    liv-in-sky 1 Reply Last reply Reply Quote 0
                    • liv-in-sky
                      liv-in-sky @PatrickFro last edited by

                      @PatrickFro

                      bei berechnungen von uhrzeiten ist es für mich immer am einfachsten mit der linuxzeit direkt zu arbeiten

                      dieser wert ist in millisekunden (z.b. 1563186827171)

                      damit arbeitet es sich leicht beim vergleichen addierst du 20 minuten ( => 20 x 60 x1000)ms hinzu, kannst du einfach mit größer oder kleiner abfragen, ob die zeit abgelaufen ist
                      Image 5.png

                      P 1 Reply Last reply Reply Quote 0
                      • P
                        PatrickFro last edited by

                        Danke für den Ansatz!

                        Ich bin leider noch recht neu bei Blocky, daher brauche ich noch eine kleine Hilfe.

                        Wenn ich diesen Weg nutze, wie schreibe ich die Startzeit in einen DP? Ich brauche leider 112 Startzeiten, daher ist dies etwas unübersichtlich für mich.

                        Könnte ich nicht auch
                        Blockly.PNG zum ermitteln der Startzeit des Scriptes nutzen? Nur habe ich hier auch nicht geschafft, es in einen DP zu schreiben...

                        liv-in-sky 1 Reply Last reply Reply Quote 0
                        • liv-in-sky
                          liv-in-sky @PatrickFro last edited by liv-in-sky

                          @PatrickFro

                          so speichert man die linuxzeit in das gewünschte format (da ist eine konvertierung mit drin !

                          Image 9.png

                          Image 8.png

                          -rechnen mit der reinen linuxzeit
                          -lesbare daten bekommst du mit der konvertierung
                          Image 10.png

                          1 Reply Last reply Reply Quote 0
                          • P
                            PatrickFro @liv-in-sky last edited by

                            @liv-in-sky

                            herrlich, die Startzeit habe ich nun endlich im Datenpunkt. Vielen Dank soweit.

                            Was ich noch nicht schaffe, ist die Ausführung des Ausschaltens.

                            Blockly.PNG

                            Ich sehe ja, dass es nicht genau wie dein oberes ist, nur kann ich das gar nicht zusammenbauen. Nutzt Du hierfür Variablen? Wenn ja, wie nutze ich diese / wie kann ich diesen einen Datenpunkt zuordnen?

                            liv-in-sky 2 Replies Last reply Reply Quote 0
                            • liv-in-sky
                              liv-in-sky @PatrickFro last edited by

                              @PatrickFro

                              mach doch bitte mal ein bild mit den inhalt der datenpunkte - sonst habe ich es echt etwas schwer - ich weiß ja nicht, was da drin steht

                              1 Reply Last reply Reply Quote 0
                              • P
                                PatrickFro last edited by

                                Sorry, hast recht...

                                Blockly.PNG

                                In diesem Fall soll die Schaltung aus nach einer Minute geschehen.

                                liv-in-sky 2 Replies Last reply Reply Quote 0
                                • liv-in-sky
                                  liv-in-sky @PatrickFro last edited by liv-in-sky

                                  @PatrickFro

                                  es scheint schon so zu sein , dass du variable nutzen solltest - variablen sind wie datenpunkte (nur nicht gespeichert) in den objekten (nur zur laufzeit des scriptes) - d.h. beim stoppen des scriopts, iobroker oder des rechners sind die daten weg

                                  also im moment hast du einen string (zeichenkette) mit dem datum und der uhrzeit - dazu möchtst du eine zahl addieren - das geht nicht - 19.7.2019 16:55 plus 60000 = ?

                                  1 Reply Last reply Reply Quote 0
                                  • liv-in-sky
                                    liv-in-sky @PatrickFro last edited by

                                    @PatrickFro

                                    erst mal eine frage - wielange soll den die leuchtdauer höchstens sein - kann es vorkommen, dass du den server neustartest während eine solche leuchtdauer anhält

                                    1 Reply Last reply Reply Quote 0
                                    • liv-in-sky
                                      liv-in-sky @PatrickFro last edited by liv-in-sky

                                      @PatrickFro

                                      der datenpunktist jetz schön anzusehen für dich - aber fü die berechnung nicht zugebrauchen

                                      um sicherzugehen , dass as script eine serverauszeit übelebt müssen wir auch die linuxzeit sichern für die berechnung

                                      das geht so:
                                      ein neuer daten punkt für die linuxzeit (parallel zu deiner datumsansicht):

                                      mit diesem wert können wir dann immer rechnen - selbst wenn du zwischendurch den rechner neustartest !!

                                      Image 18.png

                                      1 Reply Last reply Reply Quote 1
                                      • P
                                        PatrickFro last edited by

                                        Hm, ok. Dann sind Variablen also virtuelle Datenpunkte, die sozusagen im Zwischenspeicher bleiben (solange kein Neustart passiert).

                                        Ich verstehe es nun etwas besser, bin damit aber erstmal überfordert.
                                        Ich danke Dir für die Erklärungen, werde aber wohl zu Beginn einfach die jeweilige Lampe mit einem Timer versehen, dass jede 20 Minuten nach dem Angehen wieder ausgeht.

                                        Nimms mir nicht übel, aber ich kann Excel und VBA, sonst keine Programmiersprache 😉

                                        liv-in-sky 1 Reply Last reply Reply Quote 0
                                        • liv-in-sky
                                          liv-in-sky @PatrickFro last edited by

                                          @PatrickFro

                                          ich nehm dir nix übel - die ganze zeitsache habe ich am anfang auch erstmal ausgelasen und mit einfacheren dingen begonnen

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

                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          378
                                          Online

                                          31.9k
                                          Users

                                          80.3k
                                          Topics

                                          1.3m
                                          Posts

                                          blockly
                                          4
                                          19
                                          7037
                                          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