Ankündigung

Einklappen
Keine Ankündigung bisher.

AVM Plugin

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

    #16
    Ja das stimmt. In dem Fall, in dem beide annehmen ist es nicht eindeutig.


    Das alte Plugin war da deutlich grobgranularer und hat nichtmal Zustandsübergänge berücksichtigt.
    Da zeigt sich das Potential von OpenSource.
    Zuletzt geändert von cmalo; 05.04.2016, 16:21.

    Kommentar


      #17
      Da zeigt sich das Potential von OpenSource.
      Ich hoffe es zeigt sich auch in weiteren Performanceoptimierungen und Fehlerbehebungen in meinem Plugin durch andere
      Zuletzt geändert von cmalo; 05.04.2016, 16:22.

      Kommentar


        #18
        Zitat von psilo Beitrag anzeigen
        @Marcov: bei mir geht aktuell ein

        Code:
        [COLOR=#94558d]self[/COLOR].set_call_origin([COLOR=#008080][B]"**610"[/B][/COLOR])
        [COLOR=#94558d]self[/COLOR].start_call([COLOR=#008080][B]'**620'[/B][/COLOR])
        Die App am Handy klingelt - bin nur nicht sicher, ob das exakt das Verhalten von VOIP ist?!
        okay, wenn ich mal ne Stunde Zeit habe, werde ich es testen und hier berichten!

        Kommentar


          #19
          so, wollte es mal testen, erhalte aber einen Fehler:

          PHP-Code:
          2016-04-05 17:46:19 ERROR    Main         Plugin fb1 exceptioncannot import name 'InsecureRequestWarning'
          Traceback (most recent call last):
            
          File "/usr/local/smarthome/lib/plugin.py"line 53in __init__
              plugin_thread 
          Plugin(smarthomepluginclassnameclasspathargs)
            
          File "/usr/local/smarthome/lib/plugin.py"line 81in __init__
              exec
          ("import {0}".format(classpath))
            
          File "<string>"line 1in <module>
            
          File "/usr/local/smarthome/plugins/avm/__init__.py"line 41in <module>
              
          from requests.packages.urllib3.exceptions import InsecureRequestWarning
          ImportError
          cannot import name 'InsecureRequestWarning' 
          habe mal requests upgedated:

          PHP-Code:
          pip install requests --upgrade
          Collecting requests
            Downloading requests
          -2.9.1-py2.py3-none-any.whl (501kB)
              
          100% |████████████████████████████████501kB 218kB/s
          Installing collected packages
          requests
            Found existing installation
          requests 2.4.3
              Uninstalling requests
          -2.4.3:
                
          Successfully uninstalled requests-2.4.3
          Successfully installed requests
          -2.9.1 
          Fehlermeldung bleibt aber leider bestehen...

          habe Zeile 41 mal auskommentiert, läuft aber auch dann nicht:

          PHP-Code:
          2016-04-05 19:23:59,423 DEBUG    avm_fritzbox_1 "POST /upnp/control/x_myfritz HTTP/1.1" 200 401 -- connectionpool.py:_make_request:362
          2016
          -04-05 19:23:59,437 DEBUG    avm_fritzbox_1 Accessing TAM reponse cache for action GetInfo! -- __init__.py:_update_tam:902
          2016
          -04-05 19:23:59,441 ERROR    avm_fritzbox_1 Method avm_fritzbox_1 exception'ExpatError' object has no attribute 'strerror' -- scheduler.py:_task:362
          Traceback 
          (most recent call last):
            
          File "/usr/local/smarthome/plugins/avm/__init__.py"line 905in _update_tam
              xml 
          minidom.parseString(self._response_cache["tam_"+action])
            
          File "/usr/lib/python3.4/xml/dom/minidom.py"line 1970in parseString
              
          return expatbuilder.parseString(string)
            
          File "/usr/lib/python3.4/xml/dom/expatbuilder.py"line 925in parseString
              
          return builder.parseString(string)
            
          File "/usr/lib/python3.4/xml/dom/expatbuilder.py"line 223in parseString
              parser
          .Parse(stringTrue)
          xml.parsers.expat.ExpatErrormismatched tagline 1column 174

          During handling of the above exception
          another exception occurred:

          Traceback (most recent call last):
            
          File "/usr/local/smarthome/lib/scheduler.py"line 358in _task
              obj
          ()
            
          File "/usr/local/smarthome/plugins/avm/__init__.py"line 394in _update_loop
              self
          ._update_tam(item)
            
          File "/usr/local/smarthome/plugins/avm/__init__.py"line 907in _update_tam
              logger
          .error("Exception when parsing response: %s" e.strerror)
          AttributeError'ExpatError' object has no attribute 'strerror' 
          Zuletzt geändert von Marcov; 05.04.2016, 18:31.

          Kommentar


            #20
            Hmm bei mir ist requests (2.8.1) drauf.. Nutze aber auch nicht das Standard-Image. Man müsste mal schauen, wie man diese Warning mit einem älteren Requests rauskriegt. Muss mal die Woche noch ein Debian-Image aufsetzen.

            Wobei ich sehe, Du hast jetzt 2.9.1 drauf.. hmmm

            Auf dem Raspi gibt es wohl einige mit dem Problem: https://github.com/diraimondo/gmusicproxy/issues/35

            Ich muss mal schauen, ob man die Warning die ohne das include und die Zeile die darauf aufbaut kommt, anderweitig wegbekommt.. Er schiebt halt warnings ins log, dass man ohne "verify" gegen ein HTTPS geht..Theoretisch kannst Du das include und diese Zeile auskommentieren:
            Code:
                    if not self._verify:
                        requests.packages.urllib3.disable_warnings()
            Es gibt wohl auch alternative Methoden wie

            Code:
            with warnings.catch_warnings():
              warnings.filterwarnings("ignore", message=".*InsecurePlatformWarning.*")
            Ich schaue morgen mal, ob das irgendwie anders geht. Vielleicht hat auch jemand Ideen oder möchte - wenn er das Problem hat - selber mal experimentieren.
            Zuletzt geändert von psilo; 05.04.2016, 18:14.

            Kommentar


              #21
              Hatte einen fiesen Bug in den gettern / settern der Authentifizierung. Kein Plan warum bei mir trotzdem alles lief. Nach Fixen des Bugs hagelt es nun neue Fehler. Bitte erstmal den Test on Hold, bis ich eine neue Version liefere!!!

              Kommentar


                #22
                Bug behoben. Ich schaue mir jetzt das von Markov an und committe vermutlich morgen in develop.

                Kommentar


                  #23
                  So ich denke das von Markov könnte jetzt auch gehen. Ich mache nun ein urllib3.disable_warnings() anstatt dem Befehl von vorher.. Wenn das auch nicht geht oder jemanden stört, lasse ich die Warning halt rausloggen. Notfalls kann man ja immer noch ein -W ignore ans Python hängen.

                  PS: Bitte mal testen, ob die Version aus dem DEV jetzt geht..

                  Update: ich habe gerade noch die aktuellste readme in den DEV gepackt. Dort sind jetzt die Item-Erweiterungen für den Monitor enthalten.
                  Zuletzt geändert von psilo; 07.04.2016, 08:47.

                  Kommentar


                    #24
                    Hallo psilo,

                    das ganze sieht ja sehr interessant aus.

                    ist das von Dir abgebildete Widget (#12) verfügbar?

                    Gruß Ivan

                    Kommentar


                      #25
                      @ivande: das ist ein Merge aus den Sachen https://github.com/herrmannj/smartvi...aster/fritzbox (ich selber habe da den weiter unten stehenden callmonitor_small ergänzt) und bischen eigenem HTML / SmartVISU Gebastel.

                      SV "Code":

                      Code:
                      <div class="block">
                                  
                              <div class="set-2" data-role="collapsible-set" data-theme="c" data-content-theme="a" data-mini="true">
                      
                                  <div data-role="collapsible" data-collapsed="false">
                                      <h3>Fritzbox 7490</h3>
                                      <table width=100%>
                                                              <tr>
                                                                      <td align=left colspan="2">
                                                                           {% import "widgets/widget_fritzbox.html" as fritzbox %}
                                                                          {{ fritzbox.sys('wlan_widget', 'avm.hardware_version_7490', 'avm.firmware_7490', 'avm.wlan.gf_wlan_1', 'avm.wlan.gf_wlan_2', 'avm.wlan.gf_wlan_3', 'avm.wlan.gf_wlan_3_tr') }}
                                                                      </td>
                                                              </tr>                                        
                                                              <tr>
                                                                      <td align=left colspan="2">  
                                                                          <hr/>
                                                                          {{ fritzbox.tam('TAM', 'avm.tam.name', 'avm.tam.message_number_new', 'avm.tam.message_number_old', 'avm.tam') }}
                                                                          <hr/>
                                                                      </td>  
                                                              </tr>                                        
                                                              <tr>
                                                                      <td align=left>
                                                                          {{ basic.symbol('myfritz_status_off', 'avm.myfritz', 'MyFritz', icon0~'it_internet.png', 0) }}
                                                                          {{ basic.symbol('myfritz_status_on', 'avm.myfritz', 'MyFritz', icon1~'it_internet.png', 1) }}  
                                                                      </td>
                                                                      <td align=left>
                                                                      </td>  
                                                              </tr>
                                                              <tr>
                                                                      <td align=left style="width:100%;" colspan="2">  
                                                                          Letzter Anruf (eingehend):<br/>
                                                                          {{ fritzbox.callmonitor_small('callmonitor_in','avm.monitor.incoming.event','avm.monitor.direction','avm.monitor.incoming.last_caller','avm.monitor.incoming.last_call_date', 'avm.monitor.incoming.duration') }}<br/>
                                                                          Letzter Anruf (ausgehend):<br/>
                                                                          {{ fritzbox.callmonitor_small('callmonitor_out','avm.monitor.outgoing.event','avm.monitor.direction','avm.monitor.outgoing.last_caller','avm.monitor.outgoing.last_call_date', 'avm.monitor.outgoing.duration') }}
                                                                      </td>
                                                              </tr>
                                                      </table>        
                                  </div>
                      
                              </div>
                          </div>
                      Das unten ist 2mal folgender "callmonitor_small".
                      Code:
                      {% macro callmonitor_small(id, gad_event, gad_direction, gad_last_caller, gad_last_call_date, gad_duration) %}
                          {% import "basic.html" as basic %}
                          {% set uid = uid(page, id) %}
                      
                          <div id="{{ uid }}">
                              <div style="float:left">
                              {{ basic.symbol(id~'ring', gad_event, '', icon1~'phone_ring.png', 'ring') }}
                              {{ basic.symbol(id~'call', gad_event, '', icon1~'phone_call_out.png', 'call') }}
                              {{ basic.symbol(id~'connect', gad_event, '', icon1~'phone_call.png', 'connect') }}                        
                              {{ basic.symbol(id~'disconnect', gad_event, '', 'icons/ws/phone_call_end.svg', 'disconnect') }}    
                              </div>
                              {{ basic.symbol(id~'phone_status.fritz.call_incoming_0', gad_incoming_call, '', 'icons/ws/phone_missed_in.svg', 0) }}
                              {{ basic.symbol(id~'phone_status.fritz.call_incoming_1', gad_incoming_call, '', 'icons/gn/phone_call_in.png') }}
                              {{ basic.value(id~'phone_status.fritz.last_caller', gad_last_caller)}},
                              {{ basic.value(id~'phone_status.fritz.last_call_date', gad_last_call_date)}}<br/>          
                              Dauer: {{ basic.value(id~'gad_duration', gad_duration)}} Sekunden
                          </div>
                      {% endmacro %}
                      Zuletzt geändert von psilo; 07.04.2016, 14:14.

                      Kommentar


                        #26
                        danke, muss ich die nächsten Tage an der neue zugelegten FritzBox testen :-)

                        Kommentar


                          #27
                          Im develop-Bereich liegen jetzt einige Beispiel-Widgets
                          Zuletzt geändert von psilo; 07.04.2016, 15:53.

                          Kommentar


                            #28
                            ich konnte keiner Verbindung zur Box herstellen. Ich habe dazu in der Fritzbox einen user angelegt, password vergeben und dies auch in der plugin.conf eingetragen.
                            Weiters habe ich in der Fritzbox die "Anmeldung mit FRITZ!Box-Benutzernamen und Kennwort" aktiviert.

                            Muss ich in der Fritzbox noch etwas einstellen?
                            Mein smarthome.py läuft in Virtualbox unter debian32/jessie

                            PHP-Code:
                            016-04-07 22:24:50,154 DEBUG    Main         Pluginfb1 -- plugin.py:__init__:43
                            2016
                            -04-07 22:24:50,179 INFO     Main         Init AVM Plugin with identifier fritzbox_1 -- __init__.py:__init__:391
                            2016
                            -04-07 22:24:50,187 ERROR    Main         Plugin fb1 exception'LogRecord' object has no attribute 'message' -- plugin.py:__init__:57
                            Traceback 
                            (most recent call last):
                              
                            File "/usr/local/smarthome_dev/plugins/avm/__init__.py"line 76in connect
                                self
                            .conn.connect((self._hostself._port))
                            ConnectionRefusedError: [Errno 111Verbindungsaufbau abgelehnt

                            During handling of the above exception
                            another exception occurred:

                            Traceback (most recent call last):
                              
                            File "/usr/local/smarthome_dev/lib/plugin.py"line 53in __init__
                                plugin_thread 
                            Plugin(smarthomepluginclassnameclasspathargs)
                              
                            File "/usr/local/smarthome_dev/lib/plugin.py"line 82in __init__
                                exec
                            ("self.plugin = {0}.{1}(smarthome{2})".format(classpathclassnameargs))
                              
                            File "<string>"line 1in <module>
                              
                            File "/usr/local/smarthome_dev/plugins/avm/__init__.py"line 410in __init__
                                self
                            ._monitoring_service.connect()
                              
                            File "/usr/local/smarthome_dev/plugins/avm/__init__.py"line 80in connect
                                logger
                            .error("Cannot connect to"self._host,"on port:",str(self._port),"\nError:",e)
                              
                            File "/usr/lib/python3.4/logging/__init__.py"line 1303in error
                                self
                            ._log(ERRORmsgargs, **kwargs)
                              
                            File "/usr/lib/python3.4/logging/__init__.py"line 1409in _log
                                self
                            .handle(record)
                              
                            File "/usr/lib/python3.4/logging/__init__.py"line 1419in handle
                                self
                            .callHandlers(record)
                              
                            File "/usr/lib/python3.4/logging/__init__.py"line 1481in callHandlers
                                hdlr
                            .handle(record)
                              
                            File "/usr/lib/python3.4/logging/__init__.py"line 853in handle
                                self
                            .emit(record)
                              
                            File "/usr/local/smarthome_dev/bin/smarthome.py"line 104in emit
                                self
                            ._log.add([timestamprecord.threadNamerecord.levelnamerecord.message])
                            AttributeError'LogRecord' object has no attribute 'message' 
                            Gruß Ivan

                            Kommentar


                              #29
                              Zitat von psilo Beitrag anzeigen

                              PS: Bitte mal testen, ob die Version aus dem DEV jetzt geht..
                              vielen Dank für Deine Änderungen - ich habe keinen Fehler mehr im Log und die Verbindung zur Fritzbox wird hergestellt. Allerdings kann ich mit sh.fritzbox_1.BEFEHL keine Befehle im interaktiven Modus auslösen:
                              PHP-Code:
                              ERROR    Main         Unhandled exception'SmartHome' object has no attribute 'fritzbox_1'
                              <class 'AttributeError'>
                               -- 
                              smarthome.py:_excepthook:513 
                              vielleicht habe ich die Syntax in der Readme auch falsch verstanden?

                              Kommentar


                                #30
                                Schau in die neue readme im DEV. Da war noch ein Fehler. Anstatt fritzbox_1 muss halt das stehen, was in der plugin.conf in den [...] steht. Im Beispiel glaube ich fb1 anstatt fritzbox_1

                                Gib zudem mit dem cycle acht, das alte Plugin hatte hier 300 Sec stehen. Evtl werden ältere Boxen durch zu kurze Taktraten überlastet und knicken temporär ein mit der Requestannahme. Mit allen meinen Items schiebt man halt fast 3mal so viel gegen die FB als früher. Und das obwohl ich Request-Antworten, die mehrfach benötigt werden, pro cycle cache. Wenn die CPU also am Limit ist auf der Box, lieber Cycle hochdrehen oder nicht benötigte Items entfernen.

                                Kommentar

                                Lädt...
                                X