Ankündigung

Einklappen
Keine Ankündigung bisher.

Plugin mit Multiinstanzen

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

    [callidomus] Plugin mit Multiinstanzen

    Hi Markus,

    Ich nehme an ein Pilotprojekt teil -> http://living-lab-walldorf.de/

    Ich habe heute 3 Zwischenzähler (B-control EM300) eingebaut bekommen die ich auslesen will.

    Das ist die Doku
    http://www.b-control.com/fileadmin/W...N-API_0100.pdf

    mit der Request lib und pyhton ist das auslesen recht einfach Das habe ich schon geschafft. Ich habe ein json objekt wo die ganzen obis codes drin stehen.

    Ich will mir jetzt ein Plugin bauen. Da es 3 Zähler sind bräuchte ich ein Beispiel wie man mit der neuen API die ja multiintancen kann umgeht.

    Das Kaco Beispiel past recht gut zu dem was ich brauche. Was muss man da machen das es mit multiinstancen umgehen kann?

    Viele Grüsse
    Jürgen

    #2
    Hallo Jürgen,

    prinzipiell ist jedes Plugin von Haus aus multiinstanzfähig.
    Das "Geheimnis" liegt in der Auswahl der Items in pre_stage.

    Siehe Dir doch einmal das FritzBox Plugin an, das nutzt die Option.

    Bis bald

    Marcus

    Kommentar


      #3
      Markus,

      das habe ich mir schon angesehen und nicht verstanden was der Rückgabewert der Funktion query_nodes ist.

      Der erste Parameter ist mir noch klar aber die beiden Parameter childern und fritzbox_node nicht.

      Was ist self.path?

      Musst du mir jetzt analog zum fritzbox_node einen em300_node in die query_nodes reinporgrammieren?

      Wer setzt den die Instance hoch?

      Viele Grüsse
      Jürgen

      Kommentar


        #4
        Hallo Jürgen,

        self.instances wird von lib.plugin.Plugin hochgesetzt.

        self._core.config.query_nodes('fritzbox')
        Liefert alle Nodes mit dem Attribut 'fritzbox'

        self._core.config.query_nodes('fritzbox', children=self.path)
        Liefert alle Kindernodes von dem aktuellen Node (self.path)

        self._core.config.query_nodes('fritzbox', fritzbox_node=self.path)
        Liefert alle Nodes mit dem Attribut 'fritzbox' und die den Pfad des aktuellen Plugins als Wert für das Attribut 'fritzbox_node' haben.

        self._core.config.query_nodes('em300', em300_node=self.path)

        Du kannst einfach beliebige Attribute angeben.

        Bis bald

        Marcus

        Kommentar


          #5
          Zitat von callidomus Beitrag anzeigen
          self._core.config.query_nodes('fritzbox', fritzbox_node=self.path)
          Liefert alle Nodes mit dem Attribut 'fritzbox' und die den Pfad des aktuellen Plugins als Wert für das Attribut 'fritzbox_node' haben.
          Hi Marcus,

          das hilft schon mal aber so ganz habe ich es leider noch nicht verstanden.

          das Attribut fritzbox kommt aus der item.conf woher kommt aber das Attribut fritzbox? Es steht zwar in der item.conf drin man kann es aber im UI nicht einstellen. Das sehe ich nur 2 eingabefelder.

          in der item.md habe ich noch ein data_plugin='FritzBox' gefunden wo ich die zusammenhänge nicht verstehe.

          Warum ist die unterscheidung den ob 1 oder mehrer Instanzen da sind notwendig? Oder ist das nur eine Optimierung.

          Viele Grüsse
          Jürgen
          Zuletzt geändert von heckmannju; 05.03.2017, 08:20.

          Kommentar


            #6
            Hallo Jürgen,

            doch das fritzbox Attribut kann man immer über die GUI einstellen.

            Das Attribut fritzbox_node, mit data_plugin='FritzBox', erscheint nur, wenn es mehrere Instanzen des FritzBox Plugins gibt. Dafür ist die Unterscheidung notwendig.

            Wichtig hierbei ist das data-plugin! Dort kannst Du einfach Deine eigenes Plugin angeben. Die GUI macht den Rest.

            Bis bald

            Marcus

            Kommentar


              #7
              Hi,
              was ist den die bedeutung von Automatik was macht das? irgentwas passiert automatisch nur was?
              VG
              Jürgen

              Kommentar


                #8
                Hi Jürgen, bei multiinstanzen ist es wichtig, dass ein item einer bestimmten instanz zugeordnet ist. Automatisch heißt, das Item ist im Baum irgendwo unter dem plugin-node und findet so seine zugehörigkeit.

                Gruß Waldemar
                OpenKNX www.openknx.de

                Kommentar


                  #9
                  Hi,

                  okay wenn ich nur ein Plugin habe gibt es keinen Dialog da ist es egal weil alle zu diesem Plugin gehören. Wenn ich jetzt ein 2 Plugin plazire was passiert dann? So wie ich sehe werden beide plugins auf Automatic gestellt. Was okay ist wenn die Items unter dem Plugin angelegt wurden.

                  Was ist aber wenn diese nicht passiert ist? Werden die dann automatisch umgehängt?

                  Viele Grüsse
                  Jürgen

                  Kommentar


                    #10
                    Hallo Jürgen,

                    wie sollte das automatische umhängen funktionieren?
                    Nein, wenn die Items nicht unter dem Plugin hängen, dann müssen diese manuell dem Plugin zugeordnet werden.

                    Bis bald

                    Marcus

                    Kommentar


                      #11
                      Hi Markus,

                      solagne es nur ein Plugin gibt ist die Beziehung klar. Es gibt ja nicht mal eine Möglichkeit diese zu Pflegen. Diese beziehung müsste man meiner meinung nach auch gleich eintragen.

                      Weil wenn ich ein zweites Plugin erzeuge habe ich u.u auf einmal die funktionierende Konfig meines ersten Plugins kaputt gemacht was jetzt nicht gerade intuitiv ist. Da ich ja an der stelle nix geändert habe.

                      Viele Grüsse
                      Jürgen

                      Kommentar


                        #12
                        Hi Marcus,
                        hast du dir mal meine Vorschlag überlegt?
                        Viele Grüsse
                        Jürgen

                        Kommentar


                          #13
                          Hi,
                          mit welcher methode kann ich rausfinden ob eine node der von self._core.config.query_nodes() zurückkommt ein item, plugin oder eine Logik ist?
                          Viele Grüsse
                          Jürgen

                          Kommentar


                            #14
                            Hallo,

                            mit node.type: https://docs.callidomus.com/de/Logiken/

                            Bis bald

                            Marcus

                            Kommentar


                              #15
                              Zitat von heckmannju Beitrag anzeigen
                              hast du dir mal meine Vorschlag überlegt?
                              Welchen Vorschlag?

                              Bis bald

                              Marcus

                              Kommentar

                              Lädt...
                              X