Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. HaJoLu069

    NEWS

    • Amazon Alexa - ioBroker Skill läuft aus ?

    • Monatsrückblick – September 2025

    • Neues Video "KI im Smart Home" - ioBroker plus n8n

    H
    • Profile
    • Following 0
    • Followers 0
    • Topics 3
    • Posts 12
    • Best 0
    • Groups 1

    HaJoLu069

    @HaJoLu069

    Starter

    0
    Reputation
    2
    Profile views
    12
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    HaJoLu069 Follow
    Starter

    Latest posts made by HaJoLu069

    • RE: Mehrere (separate) Timeouts in einer Statemachine

      @martinp Ja genau - der "lokale / interne" Status wird beim Ändern auch immer auf einem "Datenpunkt" abgespeichert und DESSEN Änderung ruft dann den Handle auf - wie man so Statemachinen eben baut mit Blockly.

      Idle - ist der Initiale Status
      und Idle wird automatisch immer dann eingenommen, wenn man über den letzten Status hinaus wechseln wollte - von daher ist StatusNext ein

      • Speichere neuen Status (aktueller + 1) temporär ab
      • prüfe ob temporärer Wert > als maxStatus ist, falls "ja", setze temporären Wert auf 0
      • schreibe temporären Wert auf lokale Variable und anschließend auf Datenpunkt-Kopie, damit der Trigger wieder ausgelöst wird

      ach ja - und wenn man die LichtSteuerung aufstarten will (Wallbox wurde eingeschaltet oder Lichtschranke hat ausgelöst - wobei eine zeitliche Überprüfung auf Sonnenaufgang-Start und Sonnenuntergang-Ende erfolgt, damit nur bei "Dunkelheit" das Aufstarten aktiviert wird), dann wird der Status auf 1 gesetzt, damit die Ablauf-Steuerung / Statemachine angestoßen wird und ihre Stati bis wieder "Idle" automatisch durchläuft.

      posted in Blockly
      H
      HaJoLu069
    • RE: Mehrere (separate) Timeouts in einer Statemachine

      @asgothian Das ist schön für Dich - sagt mir nur, daß es NICHT GRUNDSÄTZLICH ein Problem ist, sondern nur bei mir - hilft mir aber bei meiner Fehlersuche (denn die States werden sauber (und auch jeweils nur EINMALIG durchlaufen - und damit sauber gewechselt und ausgeführt) rein gar nichts, weil Fakt ist, bei mir wird NUR der 1. Timeout ordentlich ausgeführt und die weiteren ignoriert und der dort enthaltene Code SOFORT (OHNE Wartezeit) ausgeführt.

      @Asgothian bist Du Dir denn auch sicher, daß Deine multiplen Timeouts so sind, daß 1 Timeout bereits abgelaufen ist, ehe die anderen gestartet werden sollen - das ist nämlich bei mir in der Programmierung der Fall.
      Wenn Du Deine Timeouts vielleicht startest EHE auch nur einer davon abgelaufen ist, könnte es sein, daß dieser "Fall" richtig gut funktioniert - nur im Falle von einem "abgelaufenen Timeout" macht Blockly Fehler beim Starten von weiteren Timeouts und sie gelten dann alle als bereits abgelaufen (oder werde gar nicht erst gestartet, sondern "ignoriert").
      Dein Fall wäre z.B. der Fall, wenn Du mit "geschachtelten" Timeouts arbeitest.

      Und vielleicht ist das ja auch die Ursache für MEIN Problem, daß Blockly so programmiert wurde, daß bei mehreren Timerouts, davon ausgegangen wurde, daß diese in sich verschachtelt sind und der 1. Timeout als "Master" für die anderen Timeouts angesehen wird und diese dann automatisch beendet, wenn er endet (nur so eine Vermutung eines Programmierers mit 25 Jahren Programmier-Erfahrung in div. Sprachen [angefangen bei Assembler über C bis hin zu C#, aber auch diverse Script-Sprachen - auch WebAssembly-Erfahrung ist dabei und jahrelanges embeded Programmieren]).

      posted in Blockly
      H
      HaJoLu069
    • RE: Mehrere (separate) Timeouts in einer Statemachine

      @paul53 Die StatusNext macht nichts anderes als "bei Änderung" die lokale Variable und anschließend die globale Variable (0_userdata.0-Bereich) auf den angeforderten Wert zu ändern
      UND damit ist auch die 2. Frage beantwortet, denn die gezeigte Funktion wird durch den Trigger bei Änderung von der globalen Variable aufgerufen

      meine Debug-Informationen zeigen auch, daß die Ablaufsteuerung / Statemachine sauber funktioniert - bis auf die "Timeouts"

      Daher werde ich Deinen Ansatz ausprobieren und dann Rückmeldung geben.

      Ist denn irgendwo schon bekannt geworden, daß ein abgelaufener Timer in einem Script einen 2. Timer nicht mehr zulässt ?
      Man muß es ja nur wissen, um "Workarounds" zu entwickeln - mein Ansatz wäre dies dann auch über eine "globale Variable" zu lösen, die man auf "true" setzt, um einen Timeout aufzuziehen (ähnlich Deiner Lösung - nur eben in einem Trigger, der nur bei Änderung auf True Aktionen auslöst und als erstes sich selber auf False ändert - die Dauer kann ja dann ruhig weiterhin lokal bleiben, weil globale Zugriffe deutlich mehr Zeit und Speicher kosten)

      Dieser "Workaround mit globaler Variable" hätte den Charme, daß man an beliebigen Stellen im Code einen neuen Timeout aufziehen kann - wenn man dann unterschiedliches "Handling" durch den Timeout benötigt, muß man dieses auch wieder über eine "Handle"-Funktion abarbeiten und die Stati (oder für jene, die Namen brauchen auch namentliche Stati) in diesem Handle dann ausführen, während man zuvor (vor Setzen des Timeouts) eine lokale Variable beschreibt, die den "Status" (also die später auszuführenden Schritte im "Handle") beinhaltet.

      Klingt vielleicht kompliziert, ist es aber nicht wirklich.

      posted in Blockly
      H
      HaJoLu069
    • RE: Mehrere (separate) Timeouts in einer Statemachine

      @paul53 Danke - das ist ein sehr guter Tipp
      denn meine Vermutung ist und bleibt, daß anscheinend nicht mehr als 1 Timeout innerhalb einer Funktion wirklich funktioniert

      denn bisher haben wir Timeouts kaum in unserem Scripten im Einsatz

      Daa Blockly die Timer-Variable bei Ablauf automatisch auf Null setzt, davon war ich ausgegangen - mein erster Ansatz war 3 Timer (in jedem Status einer) OHNE ein Stop

      Deine andere Fragen beantworte ich Dir gleich.

      posted in Blockly
      H
      HaJoLu069
    • RE: Mehrere (separate) Timeouts in einer Statemachine

      @hajolu069 Meine Befürchtung ist jetzt, daß Blockly NICHT mit mehreren "Sonst Falls" Fällen umgehen kann und max. 1 solchen "Sonst Falls" richtig behandeln kann, der Rest läuft unter "Sonst"

      muß schauen, woher ich ein "Switch" bekomme und wie ich es zu nutzen habe - vermute es ist das "Prüfe xxx"
      nur wie ich dort die einzelnen Prüfungen angeben muß, muß ich jetzt erstmal herausfinden.

      Sobald ich mehr weiß, melde ich mich wieder un löse hier alles auf.

      --
      Liebe Grüße
      HaJoLu069

      posted in Blockly
      H
      HaJoLu069
    • Mehrere (separate) Timeouts in einer Statemachine

      Hallo,

      kann mir jemand sagen, warum der 1. Timeout in meiner Statemachine wie erwartet funktioniert und die nachfolgenden 2 (in anderen States) wie nicht existent durchrauschen

      Anstatt den Status von 2 auf 3 erst nach 5 Min zu ändern, geschieht dies direkt nach der Änderung von Status 1 auf 2

      2b9898cb-8d68-470f-a835-c1961fc94839-grafik.png

      ICh habe bereits die Namen so geändert, daß sich das erste Zeichen unterscheidet (half auch nichts)
      und habe den "Stop Timeout" in den Timeout selber verschoben (war zuvor im nächsten State)
      Auch wenn ich mir den JS Code zum Blockly anschaue, kann ich keinen Grund erkennen, weshalb die weiteren Timeouts NICHT mehr funktionieren - der 1. aber schon (und auch wiederholt - als nach erneutem Start der Ablaufsteuerung)

      Hier der JS-Code zu dieser Funktion
      async function EinfahrtLicht_StatusHandle() {
      // Status
      // 0 = Aus
      // 1 = Start / Einschalten
      // 2 = Stufe 1
      // 3 = Stufe 2
      // 4 = Ausschalten
      if (einfahrtLicht_status == 0) {
      // Idle Status / nichts machen
      } else if (einfahrtLicht_status == 1) {
      setState('alexa2.0.Smart-Home-Devices.c9a608f4-03de-4952-8125-afec97fdb14a.powerState' /* powerState /, true);
      setState('alexa2.0.Smart-Home-Devices.c9a608f4-03de-4952-8125-afec97fdb14a.brightness' /
      brightness /, 100);
      my_1timeout = setTimeout(async () => {
      my_1timeout = null;
      await EinfahrtLicht_StatusNext();
      (() => { if (my_1timeout) { clearTimeout(my_1timeout); my_1timeout = null; }})();
      }, 300000);
      } else if (einfahrtLicht_status == 2) {
      setState('alexa2.0.Smart-Home-Devices.c9a608f4-03de-4952-8125-afec97fdb14a.brightness' /
      brightness /, 20);
      my_2timeout = setTimeout(async () => {
      my_2timeout = null;
      await EinfahrtLicht_StatusNext();
      (() => { if (my_2timeout) { clearTimeout(my_2timeout); my_2timeout = null; }})();
      }, 300000);
      } else if (einfahrtLicht_status == 3) {
      setState('alexa2.0.Smart-Home-Devices.c9a608f4-03de-4952-8125-afec97fdb14a.brightness' /
      brightness /, 0);
      my_3timeout = setTimeout(async () => {
      my_3timeout = null;
      await EinfahrtLicht_StatusNext();
      (() => { if (my_3timeout) { clearTimeout(my_3timeout); my_3timeout = null; }})();
      }, 2000);
      } else {
      setState('alexa2.0.Smart-Home-Devices.c9a608f4-03de-4952-8125-afec97fdb14a.powerState' /
      powerState /, false);
      setState('alexa2.0.Smart-Home-Devices.c9a608f4-03de-4952-8125-afec97fdb14a.brightness' /
      brightness */, 100);
      await EinfahrtLicht_StatusNext();
      }
      }

      --
      Liebe Grüße
      HaJoLu069

      posted in Blockly
      H
      HaJoLu069
    • RE: KI schreibt erfolgreich iobroker Blockly XML

      @bertderkleine Ich bin erfahrener Programmierer, aber mit Blockly habe ich bisher nur wenig Erfahrung, deshalb habe auch ich mir von ChatGPT schon Blockly-XML erstellen lassen, um "Prinzipien" zu verstehen oder Funktions-Verwendung (manche Blöcke aus dem "Baukasten" sind eben NICHT so "selbsterklärend" wie sie sein sollten)
      bei anderen muß man "aufpassen", daß man sich nicht "vergreift" (ich sag nur Timeouts und zeitlich gesteuerte Loops und deren "Beenden")

      Beim "Umgang mit KI" bin ich auch nur ein Rookie, aber man lernt ja Schritt für Schritt dazu, so kann man einer ansonsten standardmäßig auf englisch kommunizierenden KI auch sagen "Bitte antworte mir in deutscher Sprache" bzw. "... grundsätzlich in deutscher Sprache" oder "überlege lieber noch 2 oder 3 Mal, um ein besseres Ergebnis zu erzielen, bevor Du mir antwortest"

      Mit den bei KI sogenannten "Prompts" kann ich nur raten, daß man sich damit beschäftigt und den Umgang lernt diese "Prompts" zu formulieren, denn das wird mehr und mehr zum Einsatz kommen, an ganz unterschiedlichen Stellen.

      posted in Skripten / Logik
      H
      HaJoLu069
    • RE: 'Liste aus Text' Funktion

      @paul53 sagte: 'Weshalb dann Blockly und nicht Javascript?'
      Weil außer mir noch meine Kinder mitprogrammieren, die keine Programmierkenntnisse mitbringen, für sie ist Blockly leichter lesbar und verständlich - da passe ich mich als der "Erfahrene" doch an 😊
      ... und JS gehört nicht zu meinen bisherigen Kenntnissen, für mich ist BEIDES also NEU
      also wähle ich das, was andere bei dem Smarthome auch verwenden

      posted in Blockly
      H
      HaJoLu069
    • Text2Command - kann ich auf Teile im Text reagieren ?

      Hallo,

      ich plane eine universelle Debug-Schnittstelle mir für meine Skripte zu basteln.
      Die Idee ist eine unter 0_userdata.0 angelegte globale Textvariable zu haben, in der eine "Befehlszeile" zum einen bestimmt, welches Skript Debug-Informationen in Telegram ausgeben soll UND zum Anderen auf welcher Telegram-Instanz, die Ausgabe erfolgen soll (Bsp. "DebugInfo 3 Wallbox" - soll also vom Skript "Wallbox" die DebugInfo ausgeben und zwar auf der 3. Telegram-Instanz).
      Das funktioniert auch schon - wenn ich "von Hand" in die globale Variable den obengenannten Text eintrage, wird mir die DebugInfo der Wallbox in der 3. TelegramInstanz ausgegeben.

      so nun will ich den Befehl aber im Telegram-Bot eingeben und mit einem Text2Command erreichen, daß der Text vom Bot in der globalen Variablen landet.
      Idealerweise in dem ich nur auf das "DebugInfo" zu Beginn reagiere und dann der komplette Text in die globale Variable übertragen wird (mit einer Art Platzhalter für den Text, der nach "DebugInfo" kommt oder einen Platzhalter für den kompletten Text)

      gibt es solche Platzhalter bei Text2Command ?

      Und wenn ja, wie lauten sie ?

      --
      Freundlichst
      HaJoLu069

      posted in ioBroker Allgemein
      H
      HaJoLu069
    • RE: 'Liste aus Text' Funktion

      @paul53 ok - dann liegt es an mir, mit >25 Jahren Programmier-Erfahrung in diversen Programmiersprachen und Skriptsprachen (angefangen bei Assembler und relativer Neuling bei Blockly), kann man da schon was durcheinander bringen - Danke an Alle.
      Thema ist gelöst und kann geschlossen werden.

      posted in Blockly
      H
      HaJoLu069
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo