Ankündigung

Einklappen
Keine Ankündigung bisher.

Plugins programmieren

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Bernator
    antwortet
    danke, manchmal kann es so einfach sein

    Einen Kommentar schreiben:


  • Sandman60
    antwortet
    visu_acl = rw in der items.conf gesetzt?

    Einen Kommentar schreiben:


  • Bernator
    antwortet
    so habs mal soweit geschafft das bei parse_item die entsprechenden daten über die serielle angefordert werden und die item values entsprechend geupdatet werden....
    testweise hab ich mal über ein basic.switch ein item geändert und ich bekomme dann die warnung: "Client want to update read only item"
    die methode die bei parse_item übergeben wurde wird nicht ausgeführt, woher nimmt er die info das es nur ein "read only" item ist?

    Einen Kommentar schreiben:


  • Bernator
    antwortet
    danke für die Rückmeldungen, jetzt ist mir wieder einiges klarer und ich werde mal mein Glück versuchen

    stimmt in 90% der Fälle reicht es wohl wenn sh.py zyklisch die Daten anfordert, ich denke ich werde das erstmal auch so machen....

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    Hi,

    ja run ist die Methode in der die while self.alive Schleife laufen sollte.

    asynchat wurde durch lib.connection ersetzt und kann, glaube ich, nicht mit Seriellen umgehen. Das wollte ich mal angehen, mir fehlt aber ein Anwendungsfall bei dem ich bidirektional auf eine Serielle zugreifen muss.

    Bis bald

    Marcus

    Einen Kommentar schreiben:


  • 2ndsky
    antwortet
    Oder asynchat nutzen, das sollte auch mit einem seriellen Port gehen

    Einen Kommentar schreiben:


  • JuMi2006
    antwortet
    Ich würde in der run-Methode "verweilen" oder dort auf eine neue, eigene Methode verweisen. Sieh Dir mal das EnOcean Plugin diesbezüglich an.

    Einen Kommentar schreiben:


  • Bernator
    antwortet
    und wie erstellt man im plugin einen solchen task der ständig läuft?
    mit self._sh.scheduler.add erstellte tasks werden ja zyklisch immer wieder von neuem gestartet?

    Einen Kommentar schreiben:


  • 2ndsky
    antwortet
    In dem dein Plugin direkt auf die serielle Schnittstelle lauscht und ankommende Daten damit selber mitbekommt

    Einen Kommentar schreiben:


  • Bernator
    antwortet
    alles klar danke, sprich momentan gibts nur die sourcen als doku?

    Mir ist allerdings noch nicht ganz klar wie die Verbindung zur Aussenwelt realisiert wird die nicht über ein item kommt. Konkret geht es um eine serielle Schnittstelle an der sporadisch daten daherkommen, wenn diese daten kommen will ich prüfen ob ein item dafür konfiguriert wurde und wenn ja dieses updaten. Wie kann ich sh.py aber sagen das bei anstehenden daten an der seriellen schnittstelle die entsprechende methode aus meinem Plugin aufgerufen wird?

    Einen Kommentar schreiben:


  • 2ndsky
    antwortet
    parse_item wird für jedes Item beim Start von sh.py aufgerufen. Diese Methode kann dann eine Funktion zurückgeben, die bei Itemänderung getriggert wird. Oft nennt man diese Methode update_item, aber prinzipiell kann man die Methode nennen wie man möchte. Schau dir nochmal ein paar Plugins an, dann sollte das nun klarer werden.

    Einen Kommentar schreiben:


  • Bernator
    antwortet
    ahh gut das ich den thread gefundne habe, hat sich wieder einiges aufgelöst

    Zitat von mknx Beitrag anzeigen
    Prinzipiell hängt das erst einmal vom Plugin ab. Wenn das Plugin bzw. das Backend an das die Anbindung realisiert wird gut ist, dann wird das Item sofort geändert. z.B. bei Asterisk, KNX,CLI, Network, Russound und Visu Plugin.

    Die anderen Plugins müssen den Zustand (regelmäßig) pollen, da das Backend keine Notifications bei Änderung unterstützt.
    wie genau wird das realisiert, denke mal es hat was mit handle_connection zu tun?
    Beim pollen wird ein thread erstellt der endlos läuft und einmal z.b. beim starten angeworfen wird und nicht über cycle alle x sekunden aufgerufen wird?

    welche methoden werden von sh.py aufgerufen und wann, gibts da irgendwo eine liste?

    __init__ beim Plugin initialisieren
    run beim starten des Plugins
    stop beim stoppen des Plugins
    parse_item ?
    update_item ?
    gibts noch mehrere und was passiert wenn diese methoden im plugin nicht existieren?

    Fragen über Fragen, hoffe es kann jemand licht ins dunkle bringen

    Danke!

    Einen Kommentar schreiben:


  • JuMi2006
    antwortet
    Hab ich hier getan: https://knx-user-forum.de/316183-post43.html

    Ist jetzt kein Killerfeature, eher die Frage ob sich da zwischenzeitlich was geändert hat da der Pi aus der Wärmepumpe rausfliegt und alles auf sh.py auf dem eigenen Server umgestellt wird.

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    Zitat von JuMi2006 Beitrag anzeigen
    Also nur der Weg über die zusätzlich Logik ?
    Ja, aber erzähl doch was Du machen möchtest.

    Bis bald

    Marcus

    Einen Kommentar schreiben:


  • JuMi2006
    antwortet
    Also nur der Weg über die zusätzlich Logik ?

    Einen Kommentar schreiben:

Lädt...
X