Ankündigung

Einklappen
Keine Ankündigung bisher.

Multi Instance Plugin

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

    Multi Instance Plugin

    Hi,
    ich habe 3 Stromzähler EM300 LR die ich über http auslesen kann. (https://knx-user-forum.de/forum/%C3%...messger%C3%A4t) Dazu will ich ein Interface Plugin schreiben.

    Was ich in der Doku zu Multiinstance Plugins noch nicht verstanden habe wie das mit der Instance funktioniert.

    Gibt es eine Konvention wie ich diese benennen muss? Das AVM Plugin heist das instance. Beim Plugin verstehe ich das man das so machen kann. Bei den Items wurde die instance auch instance genannt.

    Das kann ich jetzt doch eigenlich nicht machen da man ja die Items nicht mehr der instance zuordenen kann wenn ich jetzt auch instance als namen dazu nehmen würde oder?

    def get_instance_name(self): gibt mir den name zurück der bei instance angegeben wurde?

    Plugin.yaml
    Code:
    # Metadata for the Smart-Plugin
    plugin:
        # Global plugin attributes
        type: interface               # plugin type (gateway, interface, protocol, system, web)
        description:                  # Alternative: description in multiple languages
            de: 'Implementierung von zugriff auf BControl EM300 Smartmeter'
            en: 'Plugin implements acces to Bcontrol EM300 Smartmeter'
        maintainer: heckmannju
    #    tester:                        # Who tests this plugin?
    #    keywords: iot xyz
    #    documentation: https://github.com/smarthomeNG/smarthome/wiki/CLI-Plugin        # url of documentation (wiki) page
    #    support: https://knx-user-forum.de/forum/supportforen/smarthome-py
    
        version: 1.4.3                 # Plugin version
        sh_minversion: 1.4             # minimum shNG version to use this plugin
    #    sh_maxversion:                 # maximum shNG version to use this plugin (leave empty if latest)
        multi_instance: True          # plugin supports multi instance
    
    parameters:
        # Definition of parameters to be configured in etc/plugin.yaml
        host:
            type: str
            mandatory: True
            description:
                de: 'IP des EM300 Gerätes'
                en: 'IP if the device'
    
        cycle:
            type: str
            mandatory: False
            description:
                de: 'Wartezeit in Sekundento nach jeder Datenanfrage (optional, default: 5)'
                en: 'Seconds to wait after each request (optional, default: 5)'
    
        instance:
            type: str
            mandatory: True
    
           description:
               de: 'Gerätekennung'
               en: 'serialnumber'
    
    item_attributes:
        # Definition of item attributes defined by this plugin
        em300_obis_code:
            type: str
            description:
                de: 'code anhand der Wert Identifiziert wird.'
                en: 'code to identify the value'
    
        instance:
            type: str
            description:
                de: 'id zur erkennung'
                en: 'id zur erkennung'
    Item definition
    Code:
    zahlerhaus:
        type: num
        em300_obis_code: '1-0:1.4.0*255',
        name:  'Wirkleistung Bezug W'
        instance: em1
    Würde das so etwa funktionieren wie gedacht oder würde sich das mit dem AVM Plugin in die quere kommen?

    VG
    Jürgen


    #2
    heckmannju https://github.com/smarthomeNG/smart...ki/SmartPlugin kennst Du? Finde das leider in der neuen Doku nicht, vielleicht kann Msinn da weiterhelfen?

    beim plugin definierst du das attribut instance mit dem wert <instancename>
    beim item schreibst du nicht instance als attribut sondern <attributname>@<instancename>: ...
    Das musst du nur dort machen, wo du mit get_iattr_value bspw im plugin auf das attribut zugreifst.

    mehr steht im link oder kann man in den readmes der MI Plugins sehen.
    Zuletzt geändert von psilo; 20.02.2018, 05:30.

    Kommentar


      #3
      Das macht es auf jedenfall klarer danke psilo.
      VG
      Jürgen

      Kommentar


        #4
        Ich habe gerade gesehen, dass Multiinstance in der Aktuellen Entwicklerdoku zu kurz gekommen ist. Ergänze ich für das kommende Doku-Release.
        Viele Grüße
        Martin

        There is no cloud. It's only someone else's computer.

        Kommentar


          #5

          Kommentar


            #6
            Hi,
            noch eine Frage.

            Muss jede Plugin instanz in etc/plugin.yaml auch einen eigenen namen haben? oder könnten die alle em300 heissen?

            Code:
            em300_haus:
                class_name: Em300
                class_path: plugins.em300
                host: 192.168.102.37
                instance: haus
            
            em300_pv:
                class_name: Em300
                class_path: plugins.em300
                host: 192.168.102.38
                instance: pv    
            
            em300_wp:
                class_name: Em300
                class_path: plugins.em300
                host: 192.168.102.35
                instance: wp
            p.s. mein erstes SHNG MultiInstance Interface Plugin tut schon :-)
            Zuletzt geändert von heckmannju; 20.02.2018, 23:35.

            Kommentar


              #7
              Jede Instanz muss einen eigenen Namen haben. An diesem Namen werden die Instanzen intern unterschieden.

              Keys (wie die Instanznamen) müssen in YAML Dateien übrigens immer eindeutig sein. Aber auch in .conf Dateien hätte die 2. Sektion gleichen Namens, Werte der 1. Sektion überschrieben.
              Viele Grüße
              Martin

              There is no cloud. It's only someone else's computer.

              Kommentar


                #8
                zur konkretisierung: man will ja bspw. per smarthome auf die pluginfunktionen zugreifen. dazu musst du ja eindeutige namen haben. woher weiss sh sonst, auf welches plugin es zugreift. das ist was anderes als ein item an eine instanz zu binden. daher. es gibt instanz und pluginname

                Kommentar


                  #9
                  Hi,
                  dann könnte man doch "theoretisch" diesen namen anstatt des Attributes
                  instance hernehmen für eine eindeutige bezeichnung. Viele Grüsse Jürgen

                  Kommentar

                  Lädt...
                  X