Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Abfragen von Gerätestati in Verbindung mit Scripten

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Abfragen von Gerätestati in Verbindung mit Scripten

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

      Ich grüße euch! 🙂

      Ich habe mal eine Grundsätzliche Frage wie Ihr eure Logiken aufbaut.

      Konkretes Beispiel:

      Ich habe einen Pioneer AV Receiver an einer Sonoff Steckdose, einen Linux Sat Receiver an einer Sonoff Steckdose und einen LG OLED TV an Dauerstrom (ohne Schaltbare Steckdose.

      Ich möchte: mittels EINES Triggers (Bool-Variable "Fernsehen" auf True) ein Blockly ausführen welches folgende Aufgaben erledigen soll:

      1. LG TV AN -> auf HDMI 2 Eingang umschalten
      2. Pioneer AV-Receiver AN -> CBL/SAT Eingang
      3. SAT Receiver AN

      Jetzt ist es ja so, dass jedes der Geräte einen eigenen iOBroker Adapter benutzt (lgtv, onkyo, enigma2)

      Das Hauptproblem was ich bei solchen Anforderungen habe ist, dass ich diverseste Sachen prüfen muss um ans ziel zu kommen.

      In diesem Konkreten Beispiel muss ich zB für Schritt 1) prüfen

      1a) ist der Fernseher an, wenn nicht -> einschalten
      1b) ist der Fernseher per Netzwerk ansprechbar um den Eingang auf HDMI umschalten zu können <- im Zweifelsfall funktioniert das nicht, weil der Adapter gerade mal nicht reagiert, bzw. muss eine Wartezeit eingebaut werden bis der Adapter eine Verbindung meldet weil der Fernseher gerade erst eingeschalten wurde

      für Schritt 2 wirds kniffliger:

      2a) prüfe ob die Sonoff Steckdose angeschaltet ist -> wenn nicht einschalten
      2b) warten/prüfen ob der AV-Receiver erreichbar ist (Adapter Datenpunkt "connected" = true) <- hier ist schon wieder das Problem, dass wenn man zB die Steckdose vorher ausschaltet und der Receiver ist noch an, bleibt der Adapter Datenpunkt "connected" auf true (egal wie lange man wartet) und selbst wenn man den Receiver wieder einschaltet connected der Adapter sich nicht wieder, sodass ich ins Script auch noch einen Adapter Restart einbauen muss
      2c) AV-Receiver einschalten -> Wartezeit bevor man den Eingang auf CBL/umschalten kann

      Wie löst ihr solche Dinge? (Ich baue mir per Blockly jedesmal spezielle komplizierte Logiken für einen Anwendungsfall, tappe aber oft im Dunklen darüber ob ich den Adapter-Datenpunkten vertrauen kann oder ob die Werte mal wieder nicht mit der Realität übereinstimmen)

      Gibt es eine zweifelsfreie Möglichkeit die "Wahrheit eines Datenpunktes" abzufragen? Es kann ja nicht sein, dass der Connected Datenpunkt auf "true" steht obwohl das Gerät seit 3 Tagen Stromlos ist. Muss ich wirklich immer auch die Zeitstempel eines Datenpunktes mit abfragen und welchen Datenpunkt nimmt man am besten (Einen Datenpunkt aus dem System-Adapter selbst, oder einen Datenpunkt aus den Objekten des Adapters, oder fragt man vielleicht über den Ping Adapter das Gerät zuerst ab.

      Und dann muss man immer noch den Zeitlichen Aspekt eines Script-Ablaufs berücksichtigen, da unterschiedliche Aktionen oft ers nach anderen ausgeführt werden dürfen (meist WENN das gerade eingeschaltete Gerät auch wirklich reagieren kann, bzw der Adpater verbunden ist).

      Ich hoffe ich habe so ungefähr rübergebracht was meine Probleme so sind, selbst bei vermeintlich so einfachen Aufgaben.

      Wie ist eure Erfahrung, bzw. welche "best practice" habt ihr für euch entwickelt?

      MfG Jens

      Zur Vollständigkeit: Ich habe gestern Abend begonnen dieses Script von Grundauf neu zu erstellen, und das ist der aktuelle Stand (ich habe schon wieder das Gefühl, dass das irgendwie nicht sinnvoll ist, bzw dass ich es mir einfach zu schwer mache oder es doch einfacher gehen muss :-)).

      aktuell.png

      mickym Albert K A 3 Replies Last reply Reply Quote 0
      • mickym
        mickym Most Active @Kaskadeur111 last edited by

        @kaskadeur111 Ich frage sehr sparsam mit dem Ping Adapter ab - geht ja auch nur bei Geräten in einem IP-Netzwerk. Aber natürlich ist das ein Möglichkeit, die ich auch nutze.
        Die andere Möglichkeit ist, die, wenn man weiß, dass sich die Geräte in bestimmten Zeitabständen melden, dass man sich Alarmtrigger baut, die bei Ausbleiben eines Updates aktiviert werden. Beides in Kombination ist in meinen Augen am sinnvollsten. Theoretisch kann man auch zyklisch den Timestamp der letzten Aktualisierung abfragen, aber das halt ich nur in seltenen Fällen für erforderlich zudem es ja auch Resourcen auf Deiner Maschine kostet.

        1 Reply Last reply Reply Quote 0
        • Albert K
          Albert K @Kaskadeur111 last edited by

          @kaskadeur111

          Mein Setup ist etwas einfacher, habe nur einen LG TV (nicht smart) und einen Denon AVR. Trotzdem ist es wichtig diese zeitlich und in der Sequenz richtig zu schalten da sonst oft der Ton nicht funktioniert.

          Ich verwende einen Hauptschalter (FritzDect200) der mit App, Sprachbefehl oder Manuell eingeschaltet wird. Ausschalten erfolgt bei Unterschreiten einer bestimmten Watt Zahl für mehr als 2 Minuten (also wenn alle Geräte im Standby sind)

          Durch Einschalten des Stroms verbindet sich der AVR mit dem Netzwerk. Das dauert etwa 30 Sekunden. Die erfolgte Netzwerk Verbindung nehme ich als Trigger für ein Blockly um den AVR dann voll einzuschalten.

          Ein zweites Blockly verwendet dann den eingeschalteten AVR als Trigger um den LG TV über einen Broadlink einzuschalten und am AVR den Input zu wählen.

          Hatte anfangs auch ziemlich komplizierte Blocklies die alles mögliche abfragten und trotzdem nicht zuverlässig funktionierten. Mit den zwei einfachen Blöcken in einem Blockly funktioniert das nun zuverlässig seit etwa einem Jahr.

          Das Wichtigste bei der Sache war bei mir die Geräte korrekt auszuschalten damit die Datenpunkte auch den richtigen Zustand enthielten (also nicht einfach den Strom abschalten).

          c6a4780f-2ac6-4fb1-a8ee-0fd8e83ca4bc-image.png

          1 Reply Last reply Reply Quote 0
          • A
            Ahnungsbefreit @Kaskadeur111 last edited by

            @kaskadeur111 Ich bin da auch eher bei @Albert-K und würde das in einzelne Teilscripte packen, die dann jeweils auf die Vollendung des vorherigen Schrittes triggern.

            Unabhängig davon ist die Verwendung der CRONs im Trigger nicht zu empfehlen und ressourcen-intensiv.

            K 1 Reply Last reply Reply Quote 0
            • K
              Kaskadeur111 @Ahnungsbefreit last edited by

              Danke euch schonmal für eure Antworten. Ich habe mein Blockly jetzt mal komplett umgestrickt und mich gestern mal intensivst mit Funktionen Parametern und Rückgabewerten beschäftigt. Das läuft soweit ganz gut.

              Die Idee mit mehreren Triggern parallel in einem Blockly scheint mir auch ganz brauchbar für bestimmte Anwendungsfälle.

              Jetzt habe ich leider immer noch das Thema mit dem Wahrheitsgehalt der Datenpunkte, vielleicht kann mir da ja jemand noch ein paar infos geben:

              AAAAALSO:

              Der ONKYO Adapter (und vielleicht auch andere) hat die Eigenheit, in Regelmäßigen Abständen die Aktualisierung der Datenpunkte einfach auszusetzen. ZB wenn ich den AVR Receiver vom Strom nehme (egal ob er vorher im Standby oder an war). Der Adapter bekommt das einfach nicht mit und behält zB den Datenpunkt "POWER" auf "true" und das ACK-Flag ebenso auf "true".

              Wenn ich den AVR-Receiver wieder mit Strom versorge und einschalte, bekommt der ONKYO Adapter das auch nicht mehr mit (er stellt sich scheinbar irgendwann auf Tot obwohl der Status des Adapters und die angebliche Verbindung zum Gerät grün ist).

              Jetzt könnte ich einen automatischen Restart des ONKYO-Adapters per CRON direkt im Admin hinterlegen... zB alle 10 Minuten. <- Gefällt mir gar nicht, im Zweifelsfall habe ich dann trotzdem "alte Datenpunkte" während diesen 10 Minuten und obendrein gefällt mir die Vorstellung schon nicht, dass ein Adapter alle 10 Minuten neugestartet wird obwohl es nicht notwendig ist.

              Wie ist der Wert "Qualität" eines Datenpunktes in iOBroker gedacht? Da steht zB "0x00 good" aber leider verändert sich dieser Wert nicht, sondern bekommt ihn nur einmalig beim Adapterstart (und der passiert bei mir jeden Früh 5:30Uhr).

              Was kann ich hier noch tun? Gibt es irgendwelche Einstellungen welche zB die Gültigkeit von Datenpunkten auf "ungültig" flaggen kann, wenn er nach einer gewissen Zeit nicht mehr aktualisiert wurde? Denn irgendwie habe ich kein richtiges Vertrauen in die Anzeige der Adapter "grün" heisst eben nicht zweifelsfrei "läuft und tut was er soll". Und der "Connected" Datenpunkt in verschiedensten Adaptern aktualisiert sich eben auch unterschiedlichsten Intervallen. <- Ist man da wirklich auf den Programmierer des Adapters angewiesen, dass dieser die Werte auch zuverlässig ermittelt? 🙂

              A Homoran 2 Replies Last reply Reply Quote 0
              • A
                Ahnungsbefreit @Kaskadeur111 last edited by

                @kaskadeur111 So weit mir bekannt, gibt es dafür keine allgemeine Lösung. Grundsätzlich wirst Du immer Probleme haben, den Status aktuell zu halten, wenn das Gerät vom Spannungsnetz getrennt wird.

                1 Reply Last reply Reply Quote 0
                • Homoran
                  Homoran Global Moderator Administrators @Kaskadeur111 last edited by

                  @kaskadeur111 sagte in Abfragen von Gerätestati in Verbindung mit Scripten:

                  Der Adapter bekommt das einfach nicht mit

                  wie soll er auch?
                  Wenn du den AVR hart vom Strom nimmst kann er diese Statusmeldung nicht mehr senden.

                  K 1 Reply Last reply Reply Quote 0
                  • K
                    Kaskadeur111 @Homoran last edited by

                    @homoran "Hart vom Strom nehmen" kann man so nicht sagen.

                    Ich schalte den Receiver per Knopfdruck am Gerät "aus" -> Folge er geht in den Standby
                    Jetzt schalte ich die Steckdose aus.

                    Nun scheint der Adapter es noch eine gewisse Zeit zu versuchen mit dem Gerät zu kommunizieren und stellt dann seine Arbeit ein.

                    Wenn ich also nach einer halben Stunde zB den Receiver wieder mit Strom versorge und ihn vielleicht sogar einschalte, ändert das nichts an der Tatsache, dass der GRÜNE Adapter namens Onkyo trotzdem keine Lust mehr hat mit dem Receiver zu kommunizieren.

                    Gehe ich recht in der Annahme, dass der Adapter anders programmiert sein müsste, oder obliegt es dem Gerät sich beim Adapter zu melden und zu sagen "Hey! Ich bin wieder da!" ? Ich versuche zu verstehen wie ein Adapter "tickt" 🙂

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

                      @kaskadeur111 sagte in Abfragen von Gerätestati in Verbindung mit Scripten:

                      Folge er geht in den Standby

                      ist dein AVR so konfiguriert, dass er im Standby noch über die Netzwerkkarte kommunizieren kann?
                      Sonnst kann ioBroker das ja nicht mitbekommen, dass du abschaltest

                      1 Reply Last reply Reply Quote 0
                      • Homoran
                        Homoran Global Moderator Administrators @Kaskadeur111 last edited by

                        @kaskadeur111 sagte in Abfragen von Gerätestati in Verbindung mit Scripten:

                        Folge er geht in den Standby

                        ist dein AVR so konfiguriert, dass er im Standby noch über die Netzwerkkarte kommunizieren kann?
                        Sonnst kann ioBroker das ja nicht mitbekommen, dass du abschaltest

                        K 1 Reply Last reply Reply Quote 0
                        • K
                          Kaskadeur111 @Homoran last edited by Kaskadeur111

                          @Homoran
                          natürlich, der Adapter bekommt auch alles mit wenn der Receiver im Standby ist, ich kann ihn auch problemlos per ioBroker steuern (wieder Einschalten per Datenpunkt), alles schick.

                          Mich stört eben nur, dass ich ihn auch im Standby nicht vom Strom nehmen kann, ohne dass der ADAPTER ab diesem Zeitpunkt FÜR IMMER tot stellt und obendrein mit 3 Grünen LEDS signalisiert, dass er läuft und mit dem Gerät verbunden ist (kopfkratz).

                          Der Adapter sollte doch eigentlich auf Status Gelb gehen und bei Geräteverbindung auf Status rot, solange bis das Gerät wieder erreichbar ist.

                          Homoran 1 Reply Last reply Reply Quote 0
                          • Homoran
                            Homoran Global Moderator Administrators @Kaskadeur111 last edited by

                            @kaskadeur111 sagte in Abfragen von Gerätestati in Verbindung mit Scripten:

                            Der Adapter sollte doch eigentlich auf Status Gelb gehen und bei Geräteverbindung auf Status rot, solange bis das Gerät wieder erreichbar ist.

                            Wenn das alles so ist, solltest du auf Github beim Adapter suchen, ob es da schon ein pasaendes Issue gigt, dann dort kommentieren, ansonsten ein entsprechendes Issue aufmachen

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

                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            825
                            Online

                            32.0k
                            Users

                            80.5k
                            Topics

                            1.3m
                            Posts

                            5
                            12
                            578
                            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