Ankündigung

Einklappen
Keine Ankündigung bisher.

Home Assistant

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

    Home Assistant

    Nutzt hier irgendwer Home Assistant?
    Open-source home automation platform running on Python 3. Track and control all devices at home and automate control. Installation in less than a m...

    #2
    Bin gerade dabei, mich darin einzuarbeiten. Gefällt mir ganz gut. Die Doku ist nicht so prall, aber da der Code sehr modular ist, kann man schnell mal im Quelltext nachschauen.
    KNX ist nicht unterstützt, sollte aber kein grosses Problem sein, das zu implementieren. Ein Stück Python-Code dafür habe ich eh schonmal entwickelt, das sollte sich ganz gut einbinden lassen. Ich muss aber erstmal noch etwas genauer die Architektur verstehen.

    Kommentar


      #3
      Schön dass sich noch wer darauf stürzt Ich hatte leider wenig Zeit die letzten Monaten.

      Offiziell gibt es bereits ein Feature Request. Es gab aber mal wer der etwas programmiert hatte, habe ich aber leider nie getestet wegen fehlender Zeit und Dokumentation. Bei mir ist auch noch erste Baustelle die Architektur besser zu verstehen.

      Kommentar


        #4
        So, die erste Version is verfügbar zum Testen:
        https://github.com/usul27/home-assistant

        Konfiguration wie folgt (Beispiel)

        knx:
        host: 192.168.1.128
        port: 3671

        switch 2:
        name: KNX Switch
        platform: knx
        address: 0/0/1
        state_address: 0/0/3

        switch 3:
        name: KNX Switch (Timer)
        platform: knx
        address: 0/0/2
        state_address: 0/0/3

        Kommentar


          #5
          Habe gestern auch damit angefangen aber auf Basisvon der python knx lib :-)

          Werde mir deinen Code ansehen...

          Denkst du daran dies Upstream zu commiten? wenn Ja dann lass ich meines gleich fallen

          Kommentar


            #6
            Ja, ist vorgesehen, das ins offizielle zu integrieren. Die bestehenden Python KNX libs hatten alle das Problem, dass sie auf eibd/knxd aufsetzen - aus meiner Sicht ist das überflüssig, wenn man ein KNX IP interface hat.

            Kommentar


              #7
              Danke für die Info werde mir deinen Code mal ansehen und dann deinen fork ziehen, toll wären noch States zu integrieren anhand von knx telegrammen und Sensoren

              Werde das mal mit meiner KNX Wetterstation ausprobieren.

              Kommentar


                #8
                Im Prinzip kannst du jede Gruppenadresse einfach als "Sensor" einbinden, ein Beispiel für einen binary sensor ist schon drin, das auf 1-4 byte-Werte auszubauen sollte recht einfach sein.
                Meine KNX Bibliothek überwacht generell alles, was auf dem Bus läuft und merkt sich den Status. Damit ist auch für das Abfragen des Wertes einer Gruppenadresse oft kein Zugriff auf den Bus notwendig. Wenn es Dinge gibt, die den Status ändern, ohne eine Nachricht auf den Bus zu schreiben, geht das auch, dann muss einfach "cache=No" gesetzt werden (habe ich aber noch nicht getestet).

                Kommentar


                  #9
                  So richtig funktionieren tut es bei mir nicht. Sobald ich Switche einfüge funktioniert es nicht mehr richtig:
                  Code:
                  knx:
                    host: 172.16.178.171
                    port: 3671
                  
                  switch 1:
                    platform: knx
                    name: Living light
                    address: 0/1/4
                  #  state_address: 0/1/4
                  
                  switch 2:
                    platform: knx
                    name: Hall wall light
                    address: 0/1/7
                  #  state_address: 0/1/7

                  Code:
                  16-06-13 11:25:10 INFO (MainThread) [homeassistant.core] Bus:Handling <Event service_registered[L]: service=turn_off, domain=homeassistant>
                  16-06-13 11:25:10 INFO (MainThread) [homeassistant.core] Bus:Handling <Event service_registered[L]: service=turn_on, domain=homeassistant>
                  16-06-13 11:25:10 INFO (MainThread) [homeassistant.core] Bus:Handling <Event service_registered[L]: service=toggle, domain=homeassistant>
                  16-06-13 11:25:10 INFO (MainThread) [homeassistant.bootstrap] Home Assistant core initialized
                  16-06-13 11:25:10 INFO (MainThread) [homeassistant.loader] Loaded switch from homeassistant.components.switch
                  16-06-13 11:25:10 INFO (MainThread) [homeassistant.loader] Loaded sun from homeassistant.components.sun
                  16-06-13 11:25:10 INFO (MainThread) [homeassistant.loader] Loaded notify from homeassistant.components.notify
                  16-06-13 11:25:10 INFO (MainThread) [homeassistant.loader] Loaded automation from homeassistant.components.automation
                  16-06-13 11:25:10 INFO (MainThread) [homeassistant.loader] Loaded group from homeassistant.components.group
                  16-06-13 11:25:10 INFO (MainThread) [homeassistant.loader] Loaded mqtt from homeassistant.components.mqtt
                  16-06-13 11:25:10 INFO (MainThread) [homeassistant.loader] Loaded knx from homeassistant.components.knx
                  16-06-13 11:25:11 INFO (MainThread) [homeassistant.loader] Loaded sensor from homeassistant.components.sensor
                  16-06-13 11:25:11 INFO (MainThread) [homeassistant.loader] Loaded history from homeassistant.components.history
                  16-06-13 11:25:11 INFO (MainThread) [homeassistant.loader] Loaded recorder from homeassistant.components.recorder
                  16-06-13 11:25:11 INFO (MainThread) [homeassistant.loader] Loaded http from homeassistant.components.http
                  16-06-13 11:25:11 INFO (MainThread) [homeassistant.loader] Loaded frontend from homeassistant.components.frontend
                  16-06-13 11:25:11 INFO (MainThread) [homeassistant.loader] Loaded api from homeassistant.components.api
                  16-06-13 11:25:11 INFO (MainThread) [homeassistant.core] Bus:Handling <Event component_loaded[L]: component=recorder>
                  16-06-13 11:25:11 INFO (MainThread) [homeassistant.loader] Loaded switch.knx from homeassistant.components.switch.knx
                  16-06-13 11:25:11 INFO (MainThread) [homeassistant.components.knx] KNX IP tunnel to 192.168.1.1:3671 established
                  16-06-13 11:25:11 INFO (MainThread) [homeassistant.core] Bus:Handling <Event component_loaded[L]: component=knx>
                  16-06-13 11:25:14 INFO (Thread-5) [homeassistant.core] Bus:Handling <Event knx_frame_received[L]: [10241, [29, 178]]>
                  16-06-13 11:25:40 INFO (Thread-6) [homeassistant.core] Bus:Handling <Event knx_frame_received[L]: [13568, [0]]>
                  16-06-13 11:25:43 INFO (Thread-7) [homeassistant.core] Bus:Handling <Event knx_frame_received[L]: [10242, [29, 95]]>
                  16-06-13 11:25:45 INFO (Thread-8) [homeassistant.core] Bus:Handling <Event knx_frame_received[L]: [10241, [30, 47]]>
                  16-06-13 11:25:54 INFO (Thread-9) [homeassistant.core] Bus:Handling <Event knx_frame_received[L]: [13568, [1]]>
                  16-06-13 11:25:55 INFO (Thread-10) [homeassistant.core] Bus:Handling <Event knx_frame_received[L]: [12544, [0]]>
                  16-06-13 11:25:56 INFO (Thread-11) [homeassistant.core] Bus:Handling <Event knx_frame_received[L]: [10240, [12, 142]]>
                  16-06-13 11:25:56 INFO (Thread-12) [homeassistant.core] Bus:Handling <Event knx_frame_received[L]: [10240, [20, 59]]>
                  ....
                  Wenn ich dann mit CTRL-C versuche Home Assistant zu stoppen kommt beim ersten mal:
                  Code:
                  ^C16-06-13 11:28:35 ERROR (MainThread) [homeassistant.components.knx] Unable to read from KNX address: 260
                  Traceback (most recent call last):
                    File "/opt/homeassitant/lib/python3.5/site-packages/homeassistant-0.22.0.dev0-py3.5.egg/homeassistant/components/knx.py", line 190, in update
                      use_cache=self.cache)
                    File "/opt/homeassitant/lib/python3.5/site-packages/knxip-0.2-py3.5.egg/knxip/ip.py", line 317, in group_read
                      res = self.result_queue.get()
                    File "/usr/lib/python3.5/queue.py", line 164, in get
                      self.not_empty.wait()
                    File "/usr/lib/python3.5/threading.py", line 293, in wait
                      waiter.acquire()
                  KeyboardInterrupt
                  16-06-13 11:28:36 INFO (Thread-64) [homeassistant.core] Bus:Handling <Event knx_frame_received[L]: [10241, [31, 124]]>
                  16-06-13 11:28:44 INFO (Thread-65) [homeassistant.core] Bus:Handling <Event knx_frame_received[L]: [4362, [0]]>
                  16-06-13 11:28:46 INFO (Thread-66) [homeassistant.core] Bus:Handling <Event knx_frame_received[L]: [4864, [0]]>
                  16-06-13 11:29:03 INFO (Thread-67) [homeassistant.core] Bus:Handling <Event knx_frame_received[L]: [6144, [43, 29, 2]]>
                  16-06-13 11:29:10 INFO (Thread-68) [homeassistant.core] Bus:Handling <Event knx_frame_received[L]: [10752, [86, 77]]>
                  16-06-13 11:29:11 INFO (Thread-69) [homeassistant.core] Bus:Handling <Event knx_frame_received[L]: [4096, [0]]>
                  16-06-13 11:29:19 INFO (Thread-70) [homeassistant.core] Bus:Handling <Event knx_frame_received[L]: [4364, [12, 111]]>
                  16-06-13 11:29:37 INFO (Thread-71) [homeassistant.core] Bus:Handling <Event knx_frame_received[L]: [10241, [31, 249]]>
                  ....
                  Weiter wird aber auf dem Bus gelauscht. Beim zweiten CTRL-C kommt dann:
                  Code:
                  ^C16-06-13 11:30:33 ERROR (MainThread) [homeassistant.components.knx] Unable to read from KNX address: 260
                  Traceback (most recent call last):
                    File "/opt/homeassitant/lib/python3.5/site-packages/homeassistant-0.22.0.dev0-py3.5.egg/homeassistant/components/knx.py", line 190, in update
                      use_cache=self.cache)
                    File "/opt/homeassitant/lib/python3.5/site-packages/knxip-0.2-py3.5.egg/knxip/ip.py", line 317, in group_read
                      res = self.result_queue.get()
                    File "/usr/lib/python3.5/queue.py", line 164, in get
                      self.not_empty.wait()
                    File "/usr/lib/python3.5/threading.py", line 293, in wait
                      waiter.acquire()
                  KeyboardInterrupt
                  16-06-13 11:30:33 INFO (MainThread) [homeassistant.core] Bus:Handling <Event state_changed[L]: new_state=<state switch.living_light=off; friendly_name=Living light @ 2016-06-13T11:30:33.642894+02:00>, old_state=None, entity_id=switch.living_light>
                  16-06-13 11:30:33 INFO (MainThread) [homeassistant.core] Bus:Handling <Event state_changed[L]: new_state=<state group.all_switches=unknown; hidden=True, auto=True, friendly_name=all switches, entity_id=[], order=0 @ 2016-06-13T11:30:33.648913+02:00>, old_state=None, entity_id=group.all_switches>
                  16-06-13 11:30:33 INFO (MainThread) [homeassistant.core] Bus:Handling <Event state_changed[L]: new_state=None, old_state=<state group.all_switches=unknown; hidden=True, auto=True, friendly_name=all switches, entity_id=[], order=0 @ 2016-06-13T11:30:33.648913+02:00>, entity_id=group.all_switches>
                  16-06-13 11:30:33 INFO (MainThread) [homeassistant.core] Bus:Handling <Event state_changed[L]: new_state=<state group.all_switches=off; hidden=True, auto=True, friendly_name=all switches, entity_id=('switch.living_light',), order=0 @ 2016-06-13T11:30:33.661028+02:00>, old_state=None, entity_id=group.all_switches>
                  16-06-13 11:30:38 INFO (Thread-78) [homeassistant.core] Bus:Handling <Event knx_frame_received[L]: [4866, [12, 85]]>
                  16-06-13 11:30:41 INFO (Thread-79) [homeassistant.core] Bus:Handling <Event knx_frame_received[L]: [10242, [30, 5]]>
                  16-06-13 11:30:47 INFO (Thread-80) [homeassistant.core] Bus:Handling <Event knx_frame_received[L]: [4610, [12, 70]]>
                  16-06-13 11:30:47 INFO (Thread-81) [homeassistant.core] Bus:Handling <Event knx_frame_received[L]: [10241, [31, 41]]>
                  ....
                  Weiter werden events vom Bus empfangen, bei weiteren zwei mal CTRL-C kommt eine Meldung Unable to read from KNX address: 263 und anschliessend fährt Home Assistant dann hoch. Lampen ein-/ausschalten funktioniert allerdings nicht.

                  Wenn ich Switch 1 und Switch 2 weglasse startet Home Assistant ganz normal.

                  Kommentar


                    #10
                    Ok, da muss ich mal überlegen, wie man das am schlauesten debuggen kann. Generell scheint die Verbdinung zum Bus ja zu funktionieren. Was für ein KNX/IP interface benutzt du?

                    Kommentar


                      #11
                      Noch eine Frage: Was ist welche Geräte sind mit dieser Gruppenadresse verbunden?

                      Kommentar


                        #12
                        Gestern Abend bis in die Morgenstunden beim selbigen Problem eine debugging session eingelegt wie bei knxmfbp

                        sieht irgendwie so aus als wenn die socket threadsvon deinem pknx den mainthread nicht weiter arbeiten lässt und er daher die anderen Components nicht laden kann

                        hatte das phenomän auch schon bei einem test code nur mit dem pknx module..

                        Werd das heute abend weiter debuggen...

                        Habe auch das Weinzierl 730 Modul

                        Kommentar


                          #13
                          Ich glaube ich kenne die Ursache. Bei einem Read wird ein Read auf den Bus geschickt, wenn dann nichts zurück kommt, blockiert der Read. Ich werde da mal einen Timeout einbauen.

                          Kommentar


                            #14
                            Wenn du das meinst das du auf den tunnel ack wartest
                            Code:
                            self.control_socket.sendto(bytes(p), (self.remote_ip, self.remote_port))
                            #TODO: non-blocking receive
                            
                            received = self.control_socket.recv(1024) if sys.version_info[0] < 3: received = map(ord,received)
                            
                            # Check if the response is an TUNNELING ACK r_sid = received[2]*256+received[3]
                            das ist es denk ich nicht, bin aber noch ein neuling in python :-)

                            Denn wenn das passiert bekomm ich auch einen callback von
                            received_message und daher auch die knx daten

                            Kommentar


                              #15
                              Sorry habe deinen Post falsch interpretiert usul Ja das könnte es sein, denn wenn ich alle switches aus der hass config rausnehem laded er weiter.
                              und du beim group_read then thread blockierst

                              Wäre eine art Pre Queue sinvoll vieleicht, damit ein anderer Thread nicht abhängig ist.

                              Kommentar

                              Lädt...
                              X