Ankündigung

Einklappen
Keine Ankündigung bisher.

FritzBox Plugin 2.0

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

    #16
    Hallo Jörg,

    Zitat von KNXfriend Beitrag anzeigen
    Ein großer Wunsch ist die Unterstützung der "(Fritz) Smart Home" Funktion (heißt bei AVM auch Smarthome).
    Damit kann man die Fritz-Funksteckdose wie z.B. die Fritz!Dect200 schalten.

    Ließe sich etwas in diese Richtung machen?
    ja, wobei das nichts mit der Fritzbox und dem Plugin zu tun hat.
    Wenn ich die HW habe, kann ich sie unterstützen:
    http://www.amazon.de/registry/wishlist/2SK5IUYSYY0F5

    Bis bald

    Marcus

    Kommentar


      #17
      Zitat von 2ndsky Beitrag anzeigen
      Hast du dich mal mit der Telcfg Geschichte beschäftigt? Telcfg - Fritz!Box

      Darüber hat mein bisheriges Plugin kommuniziert. Nachteil: es wird nicht offiziell supported.
      ja, klar. Nachteil 2: die Antworten sind schlecht zu parsen. (Was Dein bisheriges Plugin ja aussen vor gelassen hat).

      Mal sehen, vllt. biete ich ein rudimentäres Interface für die 'alte' telcfg Schnittstelle an. Das ist dann nicht besonders schön und komfortabel aber man kann damit viel machen.

      Bis bald

      Marcus

      Kommentar


        #18
        Zitat von mknx Beitrag anzeigen
        Ich muss mal sehen, ob die Anrufsignalisierung auf Port 1012 noch funktioniert, dann sollte es möglich sein.
        Wenn nicht, ich habe noch ein rudimentäres SIP-Plugin entwickelt mit dem man zumindest noch eingehende Anrufe Monitoren könnte. Das würde aber noch ein bisschen brauchen. Und ausgehende Anrufe würde man nicht mitbekommen.
        Ein paar Zeilen Python später:

        Code:
        DEBUG:root:CallMonitor: connected to 192.168.2.1:1012
        ['17.02.14 22:38:05', 'CALL', '1', '10', '35', '32', 'SIP0', '']
        ['17.02.14 22:38:17', 'DISCONNECT', '1', '0', '']
        ['17.02.14 22:38:42', 'RING', '0', '33', '35', 'SIP0', '']
        ['17.02.14 22:38:51', 'DISCONNECT', '0', '0', '']
        Um nur mal einen Einblick zu geben wie schnell man zu einem Teilerfolg kommen kann. Folgende Zeilen sind dafür nötig:

        Code:
        import lib.connection
        
        class CallMonitor(lib.connection.Client):
            port = 1012
        
            def __init__(self, host='fritz.box'):
                lib.connection.Client.__init__(self, host, self.port, monitor=True)
        
            def found_terminator(self, data):
                print(data.decode().split(';'))
        
        if __name__ == '__main__':  # der Teil wird normalerweise von SH.py übernommen
            logging.basicConfig(level=logging.DEBUG)
            connections = lib.connection.Connections()
            cm = CallMonitor()
            connections.check()
            while True:
                connections.poll()
        Das war ja einfach...

        Bis bald

        Marcus

        Kommentar


          #19
          Hallo,

          Zitat von mknx Beitrag anzeigen
          ja, wobei das nichts mit der Fritzbox und dem Plugin zu tun hat.
          Wenn ich die HW habe, kann ich sie unterstützen:
          Amazon.de: Marcus Popp: Wunschzettel
          wow, das ging ja schnell! Danke schon mal.

          Bis bald

          Marcus

          Kommentar


            #20
            Zitat von mknx Beitrag anzeigen
            Hallo,
            wow, das ging ja schnell! Danke schon mal.

            Bis bald
            Marcus
            Gerne, die Funksteckdose sollte morgen bei Dir sein. Lg. Jörg.

            Kommentar


              #21
              Mein Wunsch

              Hallo Marcus,

              ich würde mir auch die folgenden Funktionen wünschen:
              • DECT AN/AUS
              • WLAN AN/AUS
              • Anrufbeantworter AN beim ersten klingeln/AN beim x-ten klingeln/AUS
              • DSL reconnect

              Dann ließe sich über einen "Haus-Verlassen"-Schalter das WLAN und DECT ausschalten und somit nen bisl Strom sparen, zusätzlich könnte der AB direkt angehen beim ersten Klingeln.

              Für viele ist bestimmt noch die Funktion des Gäste-WLANs ein-/ausschalten interessant (für mich nicht ).

              Kommentar


                #22
                Moin Marcus,

                Folgende Features wären auch schön - wenn wir schon bei "wünsch dir was" sind;-)

                - Rufumleitung Ein/Aus
                - Wecker 1,2, 3 Ein/Aus

                Gruß von der Küste
                Heiko

                Kommentar


                  #23
                  Bis das neue Plugin da ist, hab ich das alte mal angepasst das es mit Fritz!OS >=5.50 läuft

                  Ich brauchte das für meine Haustür Klingel

                  https://github.com/roggmaeh/smarthom...01ed7855aacfR5

                  Kommentar


                    #24
                    Hallo,

                    es ist soweit. Das neue Plugin ist in develop. (Ein Wechsel nach master von develop ist momentan eine Einbahnstraße, da das SQLite Plugin die DB konvertiert.)

                    Unter https://github.com/mknx/smarthome/tr...ugins/fritzbox
                    findet Ihr das aktualisierte Readme mit einer umfassenden item.conf.

                    Die gewünschten Funktionen sind, soweit möglich, umgesetzt.
                    Das ganze setzt auf eine neue Schnittstelle der FritzBox auf. Die alte wird weiterhin über die Funktion webcm unterstützt, damit geht es allerdings nicht so komfortabel.

                    Bitte gebt Feedback ob alles funktioniert.

                    Ich habe hier zwar eine Fritzbox, die ist aber nur teilweise an und hängt auch nicht direkt im Internet.

                    Bis bald

                    Marcus

                    Kommentar


                      #25
                      Hallo Marcus,

                      vielen Dank. Werde mir am WE mal ein Testsystem bauen und dann mal testen.

                      Danke und Gruß

                      JayKay

                      Kommentar


                        #26
                        Schade das der Callmonitor keine internen Anrufe anzeigen kann
                        Mit freundlichen Grüßen
                        Niko Will

                        Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
                        - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

                        Kommentar


                          #27
                          Ist Open Source wenn du das haben willst einfach einbauen.

                          Kommentar


                            #28
                            Zitat von sunnyhd Beitrag anzeigen
                            Ist Open Source wenn du das haben willst einfach einbauen.
                            Du sollst mit dem Zaunpfahl winken und mich nicht gleich erschlagen
                            Mit freundlichen Grüßen
                            Niko Will

                            Logiken und Schnittstelle zu anderen Systemen: smarthome.py - Visualisierung: smartVISU
                            - Gira TS3 - iPhone & iPad - Mobotix T24 - ekey - Denon 2313 - Russound C5 (RIO over TCP Plugin) -

                            Kommentar


                              #29
                              Konnte nicht wiederstehen.

                              Kommentar


                                #30
                                Hi Marcus
                                Zitat von mknx Beitrag anzeigen
                                es ist soweit. Das neue Plugin ist in develop.
                                Zunächst einmal vielen Dank, für das neue Plugin und dass Du auf die vielzahl Wünsche hier eingegangen bist.

                                Bitte gebt Feedback ob alles funktioniert.
                                Bitte sehr: Gerade habe ich auf meinem Entwicklungsrechner die develop installiert und erste Versuche mit meiner FritzBox (7270 v3, FRITZ!OS 05.54) gemacht. Dabei habe ich im wesentlichen die Konfiguration aus dem Readme übernommen und für smarthome einen gleichnamigen Benutzer auf der FritzBox angelegt.

                                So, wie ich die Logs interpretiere, funktioniert das Plugin, hat aber auch ein Problem:
                                * Call-Monitor funktioniert prima
                                * Die Items packets_sent, packets_received, bytes_sent, bytes_received, tam, wlan werden offensichtlich mit Werten befüllt.
                                * Nicht befüllt werden ip/connected/link/host

                                Im Debug-Log sehe ich einige Fehlermeldungen, vielleicht hängen die damit zusammen:

                                Code:
                                # etc/plugin.conf
                                
                                [fritzbox]
                                    class_name = FritzBox
                                    class_path = plugins.fritzbox
                                    username   = smarthome
                                    password   = <passwort entfernt>
                                    host       = fibo.local
                                    cycle      = 300
                                Code:
                                # etc/logic.conf
                                
                                [eg_system_fritz_callmon]
                                  filename        = eg_system_fritz_callmon.py
                                  fritzbox        = callmonitor
                                Code:
                                # items/eg_system_fritzbox.conf
                                [eg]
                                  [[system]]
                                    [[[fritz]]]
                                        [[[[ip]]]]
                                            type = str
                                            fritzbox = external_ip
                                        [[[[connected]]]]
                                            type = bool
                                            fritzbox = connected
                                        [[[[packets_sent]]]]
                                            type = num
                                            fritzbox = packets_sent
                                        [[[[packets_received]]]]
                                            type = num
                                            fritzbox = packets_received
                                        [[[[bytes_sent]]]]
                                            type = num
                                            fritzbox = bytes_sent
                                        [[[[bytes_received]]]]
                                            type = num
                                            fritzbox = bytes_received
                                        [[[[tam]]]]  # telephone answering machine
                                            type = bool
                                            fritzbox = tam # read only!
                                            fb_tam = 0
                                        [[[[tam2]]]]  # 2nd telephone answering machine
                                            type = bool
                                            fritzbox = tam # read only!
                                            fb_tam = 1
                                        [[[[wlan]]]]
                                            type = bool
                                            fritzbox = wlan
                                        [[[[wlan_2]]]]
                                            type = bool
                                            fritzbox = wlan
                                            fb_wlan = 2  # 5 GHz
                                        [[[[link]]]]
                                            type = bool
                                            fritzbox = link
                                        [[[[host]]]]
                                            type = bool
                                            fritzbox = host
                                            fb_mac = xx:yy:zz:aa:bb:cc
                                Datei: logics/eg_system_fritzbox.py
                                Code:
                                #!/usr/bin/env python
                                logger.info("CallMonitor: '{0}' = by '{1}' source: '{2}'  value: '{3}'"\
                                           .format(logic.name, trigger['by'], trigger['source'],trigger['value']))
                                Log-Ausgabe:
                                Code:
                                alex@core ~/src/smarthome $ bin/smarthome.py --debug
                                2014-03-07 18:58:47,422 INFO     Main         Start SmartHome.py 1.1-0 -- smarthome.py:__init__:231
                                2014-03-07 18:58:47,423 DEBUG    Main         Python 3.2.5 -- smarthome.py:__init__:232
                                2014-03-07 18:58:47,423 INFO     Main         Init Scheduler -- scheduler.py:__init__:86
                                2014-03-07 18:58:47,423 DEBUG    Scheduler    creating 5 workers -- scheduler.py:run:93
                                2014-03-07 18:58:47,423 INFO     Main         Init Plugins -- smarthome.py:start:277
                                2014-03-07 18:58:47,423 DEBUG    Main         Plugin: fritzbox -- plugin.py:__init__:43
                                2014-03-07 18:58:47,427 INFO     Main         Init Items -- smarthome.py:start:283
                                2014-03-07 18:58:47,429 DEBUG    Main         Item env.core: no type specified. -- item.py:__init__:242
                                2014-03-07 18:58:47,430 DEBUG    Main         Item env.location: no type specified. -- item.py:__init__:242
                                2014-03-07 18:58:47,430 DEBUG    Main         Item env.system: no type specified. -- item.py:__init__:242
                                2014-03-07 18:58:47,431 DEBUG    Main         Item env: no type specified. -- item.py:__init__:242
                                2014-03-07 18:58:47,432 DEBUG    Main         Item eg.system.fritz: no type specified. -- item.py:__init__:242
                                2014-03-07 18:58:47,432 DEBUG    Main         Item eg.system: no type specified. -- item.py:__init__:242
                                2014-03-07 18:58:47,432 DEBUG    Main         Item eg: no type specified. -- item.py:__init__:242
                                2014-03-07 18:58:47,432 INFO     Main         Items: 35 -- smarthome.py:start:315
                                2014-03-07 18:58:47,432 INFO     Main         Start Plugins -- plugin.py:start:65
                                2014-03-07 18:58:47,432 DEBUG    Main         Starting fritzbox Plugin -- plugin.py:start:67
                                2014-03-07 18:58:47,432 DEBUG    fritzbox     fb-cycle next time: 2014-03-07 18:58:49+01:00 -- scheduler.py:_next_time:301
                                2014-03-07 18:58:47,432 INFO     Main         Start Logics -- logic.py:__init__:33
                                2014-03-07 18:58:47,436 DEBUG    Main         Reading Logics from /home/alex/src/smarthome/lib/env/logic_conf -- logic.py:_read_logics:64
                                2014-03-07 18:58:47,437 DEBUG    Main         Reading Logics from /home/alex/src/smarthome/etc/logic.conf -- logic.py:_read_logics:64
                                2014-03-07 18:58:47,437 DEBUG    Main         Logic: eg_system_fritz_callmon -- logic.py:__init__:44
                                2014-03-07 18:58:47,438 DEBUG    Main         Logic: env_init -- logic.py:__init__:44
                                2014-03-07 18:58:47,438 DEBUG    Main         Logic: env_stat -- logic.py:__init__:44
                                2014-03-07 18:58:47,439 DEBUG    Main         env_stat next time: 2014-03-07 18:58:58+01:00 -- scheduler.py:_next_time:301
                                2014-03-07 18:58:47,439 DEBUG    Main         Logic: env_loc -- logic.py:__init__:44
                                2014-03-07 18:58:47,974 INFO     fritzbox     FritzBox: found the following AIN: <br><hr><b><pre>
                                Luacgi not readable filename=/webservices/homeautoswitch.lua real_filename=/usr/www/avm//webservices/homeautoswitch.lua
                                </pre></b><hr> -- __init__.py:run:118
                                2014-03-07 18:58:49,566 WARNING  fb-cycle     Problem fetching [URL]https://fibo.local:49443/upnp/control/wanipconnection1[/URL]: 500 Internal Server Error -- [URL="http://www.py:fetch_url:109"]www.py:fetch_url:109[/URL]
                                2014-03-07 18:58:49,683 WARNING  fb-cycle     Problem fetching [URL]https://fibo.local:49443/upnp/control/wanipconnection1[/URL]: 500 Internal Server Error -- [URL="http://www.py:fetch_url:109"]www.py:fetch_url:109[/URL]
                                2014-03-07 18:58:49,932 DEBUG    Scheduler    fb-cycle next time: 2014-03-07 19:03:49+01:00 -- scheduler.py:_next_time:301
                                2014-03-07 18:58:50,022 DEBUG    fb-cycle     Item eg.system.fritz.packets_sent = 11811190 via FritzBox None None -- item.py:__update:363
                                2014-03-07 18:58:50,188 DEBUG    fb-cycle     Item eg.system.fritz.packets_received = 1363323 via FritzBox None None -- item.py:__update:363
                                2014-03-07 18:58:50,351 DEBUG    fb-cycle     Item eg.system.fritz.bytes_sent = 1798320820 via FritzBox None None -- item.py:__update:363
                                2014-03-07 18:58:50,515 DEBUG    fb-cycle     Item eg.system.fritz.bytes_received = 257437440 via FritzBox None None -- item.py:__update:363
                                2014-03-07 18:58:50,817 DEBUG    fb-cycle     Item eg.system.fritz.tam = True via FritzBox None None -- item.py:__update:363
                                2014-03-07 18:58:52,035 WARNING  fb-cycle     Problem fetching [URL]https://fibo.local:49443/upnp/control/wancommonifconfig1[/URL]: 500 Internal Server Error -- [URL="http://www.py:fetch_url:109"]www.py:fetch_url:109[/URL]
                                2014-03-07 18:58:52,939 DEBUG    env_loc      Item env.location.sunrise = 2014-03-08 06:54:36.369922+01:00 via Logic None None -- item.py:__update:363
                                2014-03-07 18:58:52,940 DEBUG    env_init     Item env.core.version = 1.1-0 via Logic None None -- item.py:__update:363
                                2014-03-07 18:58:52,944 DEBUG    env_loc      Item env.location.sunset = 2014-03-08 18:21:09.343134+01:00 via Logic None None -- item.py:__update:363
                                2014-03-07 18:58:52,954 DEBUG    sh.gc        Garbage collector: collected 0 objects. -- smarthome.py:_garbage_collection:506
                                2014-03-07 18:58:52,954 DEBUG    env_init     Item env.core.start = 2014-03-07 18:58:52.954529+01:00 via Logic None None -- item.py:__update:363
                                2014-03-07 18:58:52,959 DEBUG    env_loc      Item env.location.moonrise = 2014-03-08 10:51:38.565785+01:00 via Logic None None -- item.py:__update:363
                                2014-03-07 18:58:52,964 DEBUG    sh.gc        Object references: 8353 -- smarthome.py:_maintenance:498
                                2014-03-07 18:58:52,967 DEBUG    env_loc      Item env.location.moonset = 2014-03-08 01:36:01.004309+01:00 via Logic None None -- item.py:__update:363
                                2014-03-07 18:58:52,968 DEBUG    env_loc      Item env.location.moonphase = 2 via Logic None None -- item.py:__update:363
                                2014-03-07 18:58:52,971 DEBUG    env_loc      Item env.location.night = True via Logic None None -- item.py:__update:363
                                2014-03-07 18:58:52,971 DEBUG    env_init     Item env.system.name = core via Logic None None -- item.py:__update:363
                                2014-03-07 18:58:52,972 DEBUG    env_init     Item env.system.start = 2014-03-07 07:29:12.972172+01:00 via Logic None None -- item.py:__update:363
                                2014-03-07 18:58:53,448 DEBUG    Scheduler    env_loc next time: 2014-03-07 19:28:53+01:00 -- scheduler.py:_next_time:301
                                2014-03-07 18:58:53,450 DEBUG    Scheduler    sh.gc next time: 2014-03-08 02:04:00+01:00 -- scheduler.py:_next_time:301
                                
                                2014-03-07 18:58:58,464 DEBUG    env_stat     Item env.core.threads = 7 via Logic None None -- item.py:__update:363
                                2014-03-07 18:58:58,465 DEBUG    env_stat     Item env.core.memory = 17260544 via Logic None None -- item.py:__update:363
                                2014-03-07 18:58:58,465 DEBUG    Connections  CallMonitor: connected to fibo.local:1012 -- connection.py:connect:392
                                2014-03-07 18:58:58,466 DEBUG    env_stat     Item env.system.load = 0.18 via Logic None None -- item.py:__update:363
                                2014-03-07 18:58:58,467 DEBUG    env_stat     Item env.location.moonlight = 42 via Logic None None -- item.py:__update:363
                                2014-03-07 18:58:58,956 DEBUG    Scheduler    env_stat next time: 2014-03-07 19:03:58+01:00 -- scheduler.py:_next_time:301
                                
                                2014-03-07 19:00:17,518 DEBUG    Main         Triggering eg_system_fritz_callmon - by: FritzBox source: XXXXXXXXXX dest: YYYYYY value: ['07.03.14 19:00:17', 'RING', '0', '0172 -- scheduler.py:trigger:162
                                2014-03-07 19:00:17,519 INFO     eg_system_fritz_callmon CallMonitor: 'eg_system_fritz_callmon' = by 'FritzBox' source: 'XXXXXXXXXX'  value: '['07.03.14 19:00:17', 'RING', '0', 'XXXXXXXXXX', 'YYYYYY', 'SIP1', '']' -- eg_system_fritz_callmon.py:<module>:3
                                2014-03-07 19:00:20,731 DEBUG    Main         Triggering eg_system_fritz_callmon - by: FritzBox source:  dest:  value: ['07.03.14 19:00:20', 'DISCONNECT', '0', -- scheduler.py:trigger:162
                                2014-03-07 19:00:20,732 INFO     eg_system_fritz_callmon CallMonitor: 'eg_system_fritz_callmon' = by 'FritzBox' source: ''  value: '['07.03.14 19:00:20', 'DISCONNECT', '0', '0', '']' -- eg_system_fritz_callmon.py:<module>:3
                                ^C2014-03-07 19:00:27,807 INFO     Main         Number of Threads: 7 -- smarthome.py:stop:353
                                2014-03-07 19:00:27,807 INFO     Main         Stop Plugins -- plugin.py:stop:71
                                2014-03-07 19:00:27,808 DEBUG    Main         Stopping fritzbox Plugin -- plugin.py:stop:73
                                2014-03-07 19:00:27,808 DEBUG    Main         CallMonitor: closing socket fibo.local:1012 -- connection.py:close:309
                                2014-03-07 19:00:28,733 INFO     Main         SmartHome.py stopped -- smarthome.py:stop:377
                                
                                alex@core ~/src/smarthome $
                                Habe ich etwas falsch konfiguriert oder liegt's an der 7270v3 / 05.54?

                                Viele Grüße,
                                Alex

                                PS: Da der CallMonitor so schön funktioniert, wäre es natürlich schön, wenn es eine Möglichkeit gäbe, auf die FritzBox-internen Telefonbücher zugreifen zu können, um damit eine Abbildung/Abfrage "Nummer" -> "Name" durchführen zu können, um den Namen des jeweiligen Anrufers z.B. in RTR-Displays bzw. der Visu anzeigen zu können. Wäre das denkbar?

                                Kommentar

                                Lädt...
                                X