NEWS
[gelöst] Zeitplan mit ändernder Wiederholung erstellen
-
Ein Blockly mit einem Zeitplan und dem Crone-Block, damit dies immer um eine bestimmte Zeit ausgeführt wird funktioniert einwandfrei.
Ich scheitere aber daran, wenn ich dies alle x Sekunden ausführen möchte. Kann dies auch irgendwie umgesetzt werden?
-
@kusi Wieso nimmst Du nicht den Zeitplan ohne CRON? Da kann man die Sekunden einfach einstellen...
-
@joergh Damit ich das Abfrageintervall via "Objekte" ändern kann. Möchte da etwas versuchen, dass man dann z.B. das Abfrageintervall auf der vis ändern könnte.
-
@kusi sagte: alle x Sekunden ausführen
Wenn das Intervall variabel sein soll, muss auf den Datenpunkt getriggert werden.
-
@paul53 Danke für deine Antwort. Diese Änderung hätte ich im Nachhinein vorgenommen, analog dem Wecker-Blockly.
Mir geht es aber nicht darum dass er immer bei xx:xx:10 auslöst (wäre alle 60 Sekunden), sondern dass er alle 10 Sekunden auslöst (analog Timeouts "ausführen alle x Sekunden".
Ich möchte folgendes Element "Variabel" machen:
-
@kusi sagte: sondern dass er alle 10 Sekunden auslöst.
Passiert das nicht mit dem Wert 10 im Datenpunkt?
-
@paul53 Nein, leider nicht.
-
-
@asgothian
genial, funktioniert wunderbar... -
-
@paul53 Funktioniert einwandfrei, vielen Dank für eure rasche Hilfe.
-
@paul53 Du siehst obenstehend mein fertiges Blockly. Wenn ich nun z.B. 2 oder noch mehr IP-Adressen abfragen möchte, soll ich das Blockly kopieren oder die IP-Adresse variabel änderbar machen und mit einer Schleife arbeiten?
Denke vor allem an die Performance (Auslastung ioBroker). -
@kusi Wie oft willst du denn wie viele IP Adressen abfragen ?
Generell gibt es 2 unterschiedliche Situationen:
Situation 1:
Die Summe aller Abfragen dauert kürzer als das Abfrageintervall. Dann ist ein Cron-Job der alle Abfragen erledigt ok.Situation 2:
Die Summe aller Abfragen kann länger dauern als das Abfrageintervall. Dann ist es besser das in getrennten Zeitplänen laufen zu lassen.Der Zeitverlust der Abfrage ist in deinem Skript in dem "Request" Baustein hinterlegt.
Du solltest gut darüber nachdenken wie oft du welchen Wert wirklich abfragen musst damit alles so geht wie du das willst.
A.
-
@asgothian Der "noch funktionierende" Adapter fragt die Werte alle 5 Sekunden ab. Zur Zeit sind es 2 IP-Adressen, welche evtl. in nächster Zeit auf 4 steigen werden.
Momentan muss für jede IP-Adresse eine eigene Instanz installiert werden.
-
@kusi sagte in [gelöst] Zeitplan mit ändernder Wiederholung erstellen:
Der "noch funktionierende" Adapter fragt die Werte alle 5 Sekunden ab. Zur Zeit sind es 2 IP-Adressen, welche evtl. in nächster Zeit auf 4 steigen werden.
Momentan muss für jede IP-Adresse eine eigene Instanz installiert werden.Das sagt noch nicht viel aus.
Ich würde es nicht über einen Cron Job abbilden. Besser ist meiner Meinung nach eine Kette von Timeouts, die jedes mal nach einer erfolgreichen Abfrage weitergereicht wird. Damit ist sichergestellt das wenn ein Gerät mal nicht reagiert kein Haufen an unbeantworteten Requests entstehen kann.
Parallel dazu würde ich eine Liste mit den zu prüfenden Geräten aufbauen, und im Timeout immer ein Gerät abfragen, wenn das geantwortet hat den Timeout neu ansetzen um dann das nächste Gerät abzufragen. Auf die Art und weise kannst du das ganze einfach auf weitere Geräte erweitern ohne das am Skript selber viel getan werden muss.
A.
-
@asgothian ich werde dies versuchen umzusetzen und dich/euch auf dem Laufenden halten.