Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
Klar, kann man, ist auch so gedacht.
Die wichtigste Unterscheidung, init oder zyklischer Aufruf siehe hier.
Etwas Hintergrund, manchmal hat Spaghetticode auch Vorteile: es wird völlig wertfrei nachgesehen ob die letzte zyklische Ausführung länger her ist als time()-plugin...cycle.
Allerdings muss man dazu beachten, das (derzeit) wenn das Plugin davor irgendwie 5sek verbummelt, erfolgt die Ausführung worst-case erst nach 65 statt 60sek.
Hallo,
ich bastle an einem Plugin, das zwei Zustände (aktiv und stand-by) hat.
Im aktiven Zustand (und bei Start) setze ich 60s, im nicht-aktiven 1800s.
Code:
my $cycle_wait = 1800;
my $cycle_active = 60;
my $cycle = $cycle_active;
....
if (...) {
$cycle = $cycle_wait;
...
$plugin_info{$plugname.'_cycle'} = $cycle;
Jetzt steht auch in der Tabelle der Plugins bei Aufrufzyklus 1800 drin, auch bei den Plugin Debug-Infos, aber das Ding wird trotzdem laut log alle 60s aufgerufen!
Hä?
Jemand ne Idee warum?
Jemand ne Idee, was ich falsch mache?
Hast Du noch GAs aboniert? Evtl. gar welche die minütlich gesendet werden?
TS2, B.IQ, DALI, WireGate für 1wire so wie Server für Logik und als KNX Visu die CometVisu auf HomeCockpit Minor. - Bitte keine PNs, Fragen gehören in das Forum, damit jeder was von den Antworten hat!
Eigentlich einfach:
Wenn if (..) nicht ist, wird ohne else der plugin_cycle auf $cycle_active = 60; gesetzt und dann wirds eben Wunschgemäss alle 60s aufgerufen (?)
Eigentlich einfach:
Wenn if (..) nicht ist, wird ohne else der plugin_cycle auf $cycle_active = 60; gesetzt und dann wirds eben Wunschgemäss alle 60s aufgerufen (?)
In dem Fall wird die If(..) durchlaufen.
Plugin_cycle wird auf 1800 gesetzt.
Ich sehe das ja eben auch in der Tabelle auf der Plugins-Seite des WG und in der nachfolgenden Liste "Plugin Debug-Infos".
Da steht überall 1800 drin.
Aber laut /var/log/wiregate_plugin.log erfolgt der Aufruf alle 1s.
Komischerweise steht aber in der Tabelle (Plugin-Seite, oben) unter "Zuletzt ausgeführt (s)" gerade "923" - ??????????
Die "zuletzt ausgeführt" bezieht sich IIRC auf den letzten zyklischen Aufruf. Das würde also heissen, dass dein Plugin zuletzt vor 923s zyklisch aufgerufen wurde. Das würde ja mit 1800s cycle-time ganz gut möglich sein.
Die 1s Aufrufe wären dann durch eine GA getriggert. Vielleicht kannst Du mal das ganze Plugin posten? So ist eine Ferndiagnose etwas schwierig.
Hallo und danke erst mal.
Das komplette Plugin würde ich Euch erst mal noch ersparen ... zumal ich so langsam das Problem einkreise und auch einen konkreten Verdacht habe ...
Sagt mal ...
Angenommen, ich hatte in einem Plugin eine GA (GA1) per $plugin_subscribe{} angemeldet ...
... aber dann irgendwann mal in dem gleichen Plugin die GA (-> GA2) ausgetauscht ...
... kann es dann irgendwie sein, dass das Plugin aber immer noch auf die GA1 hört (weil das Plugin immer noch das gleich ist, ich nie die GA irgendwie abgemeldet habe und das Wiregate seit dem immer durch lief, ....)?
AFAIK ist das so.
Die Plugin-Subscribes werden in ein Hash geschrieben, und solange du keinen Neustart machst, bzw. den wiregated nicht neu startest bleiben die bestehen.
Wunderbar gesagt, ich gehe nur etwas weiter: das ist sicher so
Ein "cleanup" wäre zwar möglich aber IMHO nicht sinnvoll, fast alle Besipiel-Plugins enthalten die Prüfung ob sie mit dieser GA auch gemeint sind und die Entscheidung auf welche GA's subscribed wird unterliegt bewusst nur dem Plugin..
Prinzipiell scheint mir das so auch eigentlich ganz plausibel und okay.
Ich würde sagen, dass man die Philosophie etwas verstanden haben muss, um dann drauf zu kommen, dass ein Plugin auch auf eine GA hören kann, die gar nicht mehr im Plugin (-Code) auftaucht. Weiterhin kann jemanden dann überraschen, dass sich ein Plugin schließlich nach einem WG-Neustart anders verhält, als vorher (nämlich dann, wenn vorher eine GA abonniert war (die nicht mehr im Code auftaucht) und nach dem Neustart nicht mehr).
Auf jeden Fall bin ich der Phil. des WG etwas näher :-)
Und wer den Schritt noch vor sich hat, kann es nun hier nachlesen.
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Kommentar