Ankündigung

Einklappen

Hinweis

Die Forenregeln wurden überarbeitet (Stand 7.11.22). Sie sind ab sofort verbindlich. Wir bitten um Beachtung.
Mehr anzeigen
Weniger anzeigen

AVM Plugin

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

    jetzt muss ich in den supporthread meines eigenes plugins schreiben. das letzte update (nicht von mir) hat offenbar etwas mit meinen DECT Steckdosen kaputt gemacht:

    Code:
    2020-05-09 09:43:57 ERROR lib.item Item avm.dect.socket_office: problem running <bound method AVM.update_item of <plugins.avm.AVM object at 0x7fa85e847278>>: 'NoneType' object has no attribute 'strip'
    > Traceback (most recent call last):
    > File "/python/smarthome/lib/item.py", line 2368, in __update
    > method(self, caller, source, dest)
    > File "/python/smarthome/plugins/avm/__init__.py", line 957, in update_item
    > {'NewAIN': ain.strip(),
    > AttributeError: 'NoneType' object has no attribute 'strip'
    Ideen??

    Ich denke das problem ist, dass die AIN als Itemattribut kein @instance vorgesehen hat, sondern nur der avm_data_type

    Update: mit @instance geht es - ich bin nur nicht sicher ob ich diese änderung gut finde.. habe den commit kommentiert..
    Zuletzt geändert von psilo; 09.05.2020, 08:59.

    Kommentar


      Hallo psilo ,

      ich habe im letzten commit die Instanz für die AIN mit hinzugefügt. Nutzt du das AVM plugin mit Instanzname? Folgender Hintergrund:

      1) Ich wollte im Plugin sauber abfangen, dass eine Fehlermeldung generiert wird, wenn man ein AVM item avm_data_type == hkr oder dect ohne spezifizierte AIN nutzt.
      2) Dazu habe ich wie sonst auch die Basismehtode "hast_attr() aus dem SmartPlugin genutzt.
      3) Das Problem: Ist für das AVM plugin eine Instanz definiert und fragt man nach einem Attribut ohne Instanz (z.B. AIN) gibt die Funktion has_attr('AIN') false zurück. Man kann das Attribute trotzdem für diesen Fall inkonsistenter Weise mit get_attr('AIN') laden.
      4) Meine Interpretation war, dass der SmartPlugin Autor bewusst bei spezifizierter Plugininstanz nur die Items sichtbar machen wollte, die auch den passenden Instanznamen im Item tragen.
      5) Deshalb habe ich für die AIN die Plugininstanz eingetragen. Übrigens auch in der Doku.

      Viele Grüße

      Kommentar


        aschwith ja, ich habe 5 avm geräte im einsatz. aber beim entwickeln damals dachte ich (ich bin ja der autor des plugin), es reicht beim avm_data_type über das instance attribut zu gehen. ich sehe oben auch noch keinen 100%igen grund, warum man das ändern sollte? was geht denn nicht, wenn du die ain mit item['conf'] abfragst? im richtigen item landest du ja über den avm_data_type

        im kommentar zum commit schlage ich vor, als fallback beides zu checken. wäre das eine lösung? also erst mit prüfung der instanz und wenn AIN None ist, nochmal direkt zu schauen..
        inzwischen habe ich aber meine items angepasst. kann daher notfalls auch mit deiner lösung leben.. wird hat beim nächsten release einige dann betreffen.
        Zuletzt geändert von psilo; 09.05.2020, 09:12.

        Kommentar


          ps: in der README sind mehrere beispiele.. drum ist die doku noch nicht 100% angepasst.

          Kommentar


            @psilo: Ja, funktional reicht das auch. Die generelle Frage ist ja, ob wir es generell so designen, dass ein item bei pluginspezifischen Attributen, für die eine Instanz definiert ist, durchgehend die Instanz auch einsetzen.

            Andere Möglichkeit ist, dass wir wie du sagst, eine Mischung aus Attributen mit und ohne definierter Instanz für ein und daselbe Plugin zulassen. Dann allerdings müssten wir die Methode has_attr() im SmartPlugin auch korrigieren.

            Bin für Beides offen, was meinst Du?

            Kommentar


              aschwith
              Die generelle Frage ist ja, ob wir es generell so designen, dass ein item bei pluginspezifischen Attributen, für die eine Instanz definiert ist, durchgehend die Instanz auch einsetzen.
              Drum hab ich im Kommentar zum Commit auch Msinn mal um seine Meinung gefragt. dürfte mglw eine ganze reihe plugins dann betreffen.

              Mal sehen was er sagt.

              Mischmasch ist halt auch nicht gut, das verleitet beim Programmieren zu Fehlern.

              Kommentar


                psilo

                Ich habe aus dem AVM Plugin eine "Ausgründung" speziell für die AVM smarthome Geräte als Plugin gebaut, dass auf das http AHA Interface setzt.
                siehe hier (Beitrag #578)
                Könntest Du das bei Dir mal testen? Vielleicht kann man das bei einem Update des AVM Plugins mit verwenden.

                Danke Dir.

                Kommentar


                  Könntest Du das bei Dir mal testen?
                  Ich hab halt nur die Steckdosen, reicht das für nen Test?

                  Kommentar


                    psilo

                    Ja, Steckdosen sind im Plugin auch berücksichtigt.
                    Ich habe Thermostate. Da geht es prima.

                    Kommentar


                      Ja, aber ich kann halt nicht alles testen.. Das macht dann v.A. eine etwaige Integration schwer, weil ich im Blindflug laufen würde.. Was spricht gegen einen PR?

                      Kommentar


                        Zitat von psilo Beitrag anzeigen
                        Ja, aber ich kann halt nicht alles testen..
                        Konntest du meine Version mal testen?

                        Zitat von psilo Beitrag anzeigen
                        Was spricht gegen einen PR?
                        Meine Kenntnisse in python reichen nicht, um das AHA -Interface in das bestehene AVM-Plugin zu integrieren.
                        Ich habe Thermostate und Du Steckdosen. Ich würde mir noch einen Türsensor beschaffen, so dass wir alle AVM-smarthome Geräte hätte. Könnten wir gemeinsam die Integration machen?

                        Kommentar


                          Hallo,
                          ich habe heute mal auf 1.7.2 Master (Core und Plugins) umgestellt.

                          Auffällig ist eine Fehlermeldung des AVM-Plugins, die seit dem Wechsel erscheint:
                          Code:
                          "ERROR    plugins.avm      _update_home_automation fritzbox_7560@: Cannot update AVM item Status: 0-closed, 1-open, 2-temperature controlled, 3-error as AIN is not specified."
                          Die Konfig sieht so aus und sah auch so vor der Umstellung aus:
                          Code:
                                  hkr:
                                      hkr_bathroom_og:
                                          # Current hkr state: 0 = closed, 1: open, 2: temperature controlled, 3: error
                                          name: 'Status: 0-closed, 1-open, 2-temperature controlled, 3-error'
                                          type: num
                                          value: 3
                                          avm_data_type@fritzbox_7560: hkr_device
                                          ain: 11963 0521424 # has to be identical to id in fritzbox (also with spaces!)
                                          visu_acl: ro
                          Gab es auch Änderungen am AVM-Plugin?

                          Kommentar


                            Hast Du mehrere Fritzboxen im Einsatz?

                            Mich erstaunt, dass Du bei avm_data_type eine instance angegeben hast, bei ain jedoch nicht.

                            Gehört die Frage. Icht eher in den avm Support Thread?
                            Viele Grüße
                            Martin

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

                            Kommentar


                              Zitat von Msinn Beitrag anzeigen
                              Hast Du mehrere Fritzboxen im Einsatz?
                              Ja, 2 Stück. @fritzbox_7560 und die andere ist @fritzbox_7490

                              Zitat von Msinn Beitrag anzeigen
                              Mich erstaunt, dass Du bei avm_data_type eine instance angegeben hast, bei ain jedoch nicht.
                              Hab es nun ergänzt, schon geht es. Komisch ist, dass das bis lang auch so funktioniert hat.

                              Zitat von Msinn Beitrag anzeigen
                              Gehört die Frage. Icht eher in den avm Support Thread?
                              Eigentlich ja. Könntest Du verschieben? Ist aber eigentlich auch geklärt

                              DANKE

                              Kommentar


                                ain hat früher keine instance gebraucht, jetzt aber schon. Ich hatte das auch schon angekreidet, gab aber keine kommentare mehr dazu

                                Siehe auch hier: https://github.com/smarthomeNG/plugi...0ebd1449238607

                                aschwith war halt der meinung jedes pluginspezifische attribut sollte die instance requiren. Ich war der meinung, nur eine art "master" attribut.. man haette es aber auch kompatibel ändern können.

                                Das thema wurde nie zuende diskutiert. Ich konnte mit der änderung aber leben.
                                Zuletzt geändert von psilo; 25.06.2020, 04:19.

                                Kommentar

                                Lädt...
                                X