Ankündigung

Einklappen
Keine Ankündigung bisher.

Nach dem update von testing geht das DLMS Plugin nicht mehr

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

    [callidomus] Nach dem update von testing geht das DLMS Plugin nicht mehr

    Hi,

    nach dem update von Testing kommt es zu folgender Fehlermeldung

    2017-02-24 17:30:34 ERROR Core Plugin DLMS (/data/callidomus/local/plugins/dlms) exception: "port" must be None or a string, not <class 'dict'>
    Traceback (most recent call last):
    File "/mfs/core/lib/plugin.py", line 102, in create
    plugin_thread = Thread(self._core, modclass, conf)
    File "/mfs/core/lib/plugin.py", line 181, in __init__
    self.plugin = _class(core, conf)
    File "/data/callidomus/local/plugins/dlms/__init__.py", line 51, in __init__
    self._serial = serial.Serial(serialport, 300, bytesize=serial.SEVENBITS, parity=serial.PARITY_EVEN, timeout=2)
    File "/usr/local/lib/python3.6/site-packages/serial/serialutil.py", line 216, in __init__
    self.port = port
    File "/usr/local/lib/python3.6/site-packages/serial/serialutil.py", line 260, in port
    raise ValueError('"port" must be None or a string, not {}'.format(type(port)))
    ValueError: "port" must be None or a string, not <class 'dict'>

    Ich habe das fehlende

    def pre_stage(self): pass hinzugefügt was muss man den jetzt alles sonstnoch machen um ein Plugin umzustellen? Viele Grüsse Jürgen

    #2
    Hi,
    okay es scheint sich jetzt ein neuer defaultparameter conf zu geben und lib.plugin.Plugin muss noch rein hinter den Klassennamen.
    Jetzt bekomme ich eine noch seltsamer Fehlermeldung

    2017-02-24 17:47:45 ERROR Core Plugin DLMS (/data/callidomus/local/plugins/dlms) exception: __init__() missing 1 required positional argument: 'serialport'
    Traceback (most recent call last):
    File "/mfs/core/lib/plugin.py", line 102, in create
    plugin_thread = Thread(self._core, modclass, conf)
    File "/mfs/core/lib/plugin.py", line 181, in __init__
    self.plugin = _class(core, conf)
    TypeError: __init__() missing 1 required positional argument: 'serialport'
    2017-02-24 17:47:45 DEBUG Core Item Demo: no type specified.
    Diesen Serialport gibt es aber bei mir seltsam
    Code:
    class DLMS(lib.plugin.Plugin):
    
        def __init__(self, smarthome, conf, serialport, baudrate="auto", update_cycle="60", use_checksum = True, reset_baudrate = True, no_waiting = False, **kwargs):
            lib.plugin.Plugin.__init__(self, smarthome, conf)
            self._sh = smarthome
            self._obis_codes = {}
            self._init_seq = bytes('/?!\r\n', 'ascii')
            self._request = bytearray('\x06000\r\n', 'ascii')
            if (baudrate.lower() == 'auto'):
                self._baudrate = -1

    Kommentar


      #3
      Hi Jürgen,

      ich mirgriere das Plugin morgen.

      Bis bald

      Marcus

      Kommentar


        #4
        Hi Marcus,

        das hilft mir nichts mit den anderen Plugins von mir. Das ist nur das erste Plugin der Liste. Was fehlt den jetzt noch? Ich finde wirlich wenn du solche tiefgreifende änderunge machst must du sie ausführlicher beschreiben was zu tun ist und was sich geändert hat.

        Viele Grüsse
        Jürgen
        Zuletzt geändert von heckmannju; 24.02.2017, 19:54.

        Kommentar


          #5
          Hi,

          def __init__(self, smarthome, conf )#, serialport, baudrate="auto", update_cycle="60", use_checksum = True, reset_baudrate = True, no_waiting = False, **kwargs):
          lib.plugin.Plugin.__init__(self, smarthome, conf)
          serialport = conf.get('serialport')

          wie kann man defaultparamter baudrate="auto" übersetzen? Oder muss man da gar nix machen weil es ja schon in der config md passiert?

          Code:
          form.guiSelect('baudrate', label='Baudrate', named=select_baud, help="""sets the baudrate used for reading from the meter - can be used to force specific baudrate (300,600,1200,2400,4800,9600,auto - default: 'auto')""")

          Kommentar


            #6
            hi,
            ich habe jetzt die Fehlermeldungen weggebracht von dem Plugin..


            def __init__(self, smarthome, conf ):#, serialport, baudrate="auto", update_cycle="60", use_checksum = True, reset_baudrate = True, no_waiting = False, **kwargs):
            lib.plugin.Plugin.__init__(self, smarthome, conf)

            serialport = conf.get('serialport')
            baudrate = conf.get('baudrate')
            update_cycle = conf.get('update_cycle')
            use_checksum = conf.get('use_checksum')
            reset_baudrate = conf.get('reset_baudrate')
            no_waiting = conf.get('no_waiting')

            self._sh = smarthome
            self._obis_codes = {}
            self._init_seq = bytes('/?!\r\n', 'ascii')
            self._request = bytearray('\x06000\r\n', 'ascii')
            if (baudrate.lower() == 'auto'):
            self._baudrate = -1
            else:
            self._baudrate = int(baudrate)
            pow2 = int(self._baudrate / 600)
            self._request[2] = 0x30
            while (pow2 > 0):
            pow2 >>= 1
            self._request[2] += 1
            self._update_cycle = int(update_cycle)
            self._use_checksum = smarthome.string2bool(use_checksum)
            self._reset_baudrate = smarthome.string2bool(reset_baudrate)
            self._no_waiting = smarthome.string2bool(no_waiting)
            self._serial = serial.Serial(serialport, 300, bytesize=serial.SEVENBITS, parity=serial.PARITY_EVEN, timeout=2)
            self._sema = Semaphore()

            def run(self):
            self.alive = True
            self._sh.scheduler.add('DLMS', self._save_update_values, prio=5, cycle=self._update_cycle)
            Es funktioniert aber trotzdem nicht. Laut log wird das Plugin gestartet

            Code:
            2017-02-24 21:05:57 DEBUG    DLMS         Starting DLMS Plugin
            der Scheduler der alle 30s die update routine rufen sollte scheint nicht mehr zu funktionieren! Hat sich da auch was geändert?

            Viele Grüsse
            Jürgen
            Zuletzt geändert von heckmannju; 24.02.2017, 21:43.

            Kommentar


              #7
              Hallo Jürgen,

              das DLMS Plugin ist auf Github aktualisiert. Bitte lade es von dort herunter.

              Das Problem war vermutlich, das scheduler.add in der Methode run definiert war. Diese muss nun start heißen.

              Bis bald

              Marcus

              Kommentar


                #8
                Hi,
                also ich finde du solltest eine Liste machen was sich alles an den Plugins gändert hat. Woher soll man das den rausfinden?
                VG
                Jürgen

                Kommentar


                  #9
                  Hallo Jürgen,

                  ich habe die API dokumentiert https://docs.callidomus.com/de/Plugin-Entwicklung/
                  Wenn das nicht langt, schicke mir das/die Plugins.
                  Bevor ich das lange und breit erkläre habe ich das wahrscheinlich schneller selbst gemacht.

                  Bis bald

                  Marcus

                  Kommentar


                    #10
                    Nein Marcus,

                    du hast da die neue Api dokumentiert was du geändert hast leider hast du nicht genannt. Deine Denkweise das das reicht dir die Plugins zu schicken ist meiner meinung nach viel zu kurz gedacht. Es gibt einige Plugins in smarthome und SmarthomeNG willst du das ich dir die alle Schicke?

                    Viele Grüsse
                    Jürgen

                    Kommentar


                      #11
                      Hi Marcus,

                      ich habe gerdade probiert das Plugin herunterzuladen.

                      dazu habe ich

                      callidomus/plugins/dlms

                      eingetragen und update gedrückt. Das hat aber nichts bewirkt das angepasste Plugin wurde nicht heruntergeladen.

                      Viele Grüsse
                      Jürgen

                      Kommentar


                        #12
                        Hi,

                        nachdem ich run in start umbenannt habe kommt es zu folgender Fehlermeldung

                        2017-02-25 12:41:47 ERROR DLMS <bound method DLMS._save_update_values of Node: DLMS>: _save_update_values() takes 1 positional argument but 3 were given
                        Traceback (most recent call last):
                        File "/mfs/core/lib/scheduler.py", line 420, in _worker
                        obj(value, trigger)
                        TypeError: _save_update_values() takes 1 positional argument but 3 were given

                        im Scheduler hat sich selber auch was geändert es brauch jetzt noch 3 Parameter

                        in der Doku finde ich
                        Code:
                        Die hinterlegte Funktion muss die Argumente value und trigger behandeln. z.B. def meine(self, value, trigger)
                        :

                        Was kann denn in value und trigger drin stehen?

                        Viele Grüsse
                        Jürgen

                        Kommentar


                          #13
                          Hi,
                          das anpassen der update Routine hat auch nix mehr gebraucht. Ausser das die Fehlermeldung weg ist. Das DLMS Plugin tut leider immer noch nicht was es soll.
                          Viele Grüsse
                          Jürgen

                          Kommentar


                            #14
                            Hallo Jürgen,

                            es hat sich der Aufruf des Plugins (__init__) geändert, die Abarbeitung von Items (parse_item) und der Aufruf bei Änderungen wenn Items aktualisiert werden geändert.
                            Wie das ganze funktioniert kann man, denke ich, ganz gut an dem Beispiel sehen https://docs.callidomus.com/de/Plugin-Entwicklung/

                            Dein Update schlug wahrscheinlich fehl, da Du bereits ein git eingerichtet hast und es dort merge Konflikte gab.
                            Code:
                            rm -rf /data/callidomus/local/plugins/.repositories/callidomus/plugins/dlms/
                            Und noch einmal Plugins aktualisieren.

                            Oder callidomus.update & Aktualisierung der Plugins. Ich habe die Update-Routine erweitert das lokale Änderungen den Merge nicht so leicht blockieren können.

                            Du kannst Dir den Code auch auf https://github.com/callidomus/plugin...ms/__init__.py ansehen.

                            Wenn Du weiterhin Problem hast, schicke mir bitte den kompletten Code an support@.

                            Bis bald

                            Marcus

                            Kommentar


                              #15
                              Zitat von callidomus Beitrag anzeigen
                              Dein Update schlug wahrscheinlich fehl, da Du bereits ein git eingerichtet hast und es dort merge Konflikte gab.
                              Code:
                              rm -rf /data/callidomus/local/plugins/.repositories/callidomus/plugins/dlms/
                              Und noch einmal Plugins aktualisieren.

                              Oder callidomus.update & Aktualisierung der Plugins. Ich habe die Update-Routine erweitert das lokale Änderungen den Merge nicht so leicht blockieren können.
                              Ich habe beides probiert ich habe aber immer noch nicht die Version aus dem GIT bei mir drauf. Im log sehe ich nur

                              Code:
                              2017-02-25 15:20:40 INFO     Core         Plugins: updating
                              keine Ahnung ob da mehr stehen sollte oder ob da noch was kommt den er fertig ist.

                              Jedenfalls so führe ich das aus.
                              plugins.JPG



                              Zitat von callidomus Beitrag anzeigen
                              Du kannst Dir den Code auch auf https://github.com/callidomus/plugin...ms/__init__.py ansehen.
                              Da ist es leider so das dadurch das du mehr umgestellt hast als notwenig es leider nicht so eindeutig ist was zu tun ist. Unnötiges ändern von Zeilenumbrüchen hättes zu erstmal lassen sollen...

                              Kommentar

                              Lädt...
                              X