Ankündigung

Einklappen
Keine Ankündigung bisher.

EDOMI und Velux Integra KLF 200

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

    #31
    Moin ,

    vielleicht kannst du mir helfen. Ich bekomme den Docker Container nicht ans fliegen. Vielleicht kannst Du mir einen Tip geben woran es liegen kann.
    Ich habe Docker und Docker-Compose auf dem Edomi Server installiert, sonst nichts weiter.
    Die cfg Datei habe ich konfiguriert auf /tmp/ abgelegt.

    Die compose.yml sieht so aus:

    PHP-Code:
    version'3'
    services:
    velux:
    imagephpmonkeys/vlx2mqtt:latest
    restart
    always
    volumes
    :
    - /
    tmp/vlx2mqtt.cfg:/tmp/vlx2mqtt.cfg 
    Anbei die Fehlermeldung
    bba36c284e21_tmp_velux_1 | File "/usr/local/lib/python3.8/site-packages/pyvlx/api_event.py", line 21, in do_api_call
    bba36c284e21_tmp_velux_1 | await self.send_frame()
    bba36c284e21_tmp_velux_1 | File "/usr/local/lib/python3.8/site-packages/pyvlx/api_event.py", line 33, in send_frame
    bba36c284e21_tmp_velux_1 | await self.pyvlx.send_frame(self.request_frame())
    bba36c284e21_tmp_velux_1 | File "/usr/local/lib/python3.8/site-packages/pyvlx/pyvlx.py", line 72, in send_frame
    bba36c284e21_tmp_velux_1 | await self.connect()
    bba36c284e21_tmp_velux_1 | File "/usr/local/lib/python3.8/site-packages/pyvlx/pyvlx.py", line 45, in connect
    bba36c284e21_tmp_velux_1 | await self.connection.connect()
    bba36c284e21_tmp_velux_1 | File "/usr/local/lib/python3.8/site-packages/pyvlx/connection.py", line 85, in connect
    bba36c284e21_tmp_velux_1 | self.transport, _ = await self.loop.create_connection(
    bba36c284e21_tmp_velux_1 | File "/usr/local/lib/python3.8/asyncio/base_events.py", line 986, in create_connection
    bba36c284e21_tmp_velux_1 | infos = await self._ensure_resolved(
    bba36c284e21_tmp_velux_1 | File "/usr/local/lib/python3.8/asyncio/base_events.py", line 1365, in _ensure_resolved
    bba36c284e21_tmp_velux_1 | return await loop.getaddrinfo(host, port, family=family, type=type,
    bba36c284e21_tmp_velux_1 | File "/usr/local/lib/python3.8/asyncio/base_events.py", line 825, in getaddrinfo
    bba36c284e21_tmp_velux_1 | return await self.run_in_executor(
    bba36c284e21_tmp_velux_1 | File "/usr/local/lib/python3.8/concurrent/futures/thread.py", line 57, in run
    bba36c284e21_tmp_velux_1 | result = self.fn(*self.args, **self.kwargs)
    bba36c284e21_tmp_velux_1 | File "/usr/local/lib/python3.8/socket.py", line 918, in getaddrinfo
    bba36c284e21_tmp_velux_1 | for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
    bba36c284e21_tmp_velux_1 | socket.gaierror: [Errno -2] Name does not resolve
    bba36c284e21_tmp_velux_1 | Traceback (most recent call last):
    bba36c284e21_tmp_velux_1 | File "/vlx2mqtt.py", line 247, in <module>
    bba36c284e21_tmp_velux_1 | LOOP.run_until_complete(main(LOOP))
    bba36c284e21_tmp_velux_1 | File "/usr/local/lib/python3.8/asyncio/base_events.py", line 616, in run_until_complete
    bba36c284e21_tmp_velux_1 | return future.result()
    bba36c284e21_tmp_velux_1 | File "/vlx2mqtt.py", line 163, in main
    bba36c284e21_tmp_velux_1 | await pyvlx.load_nodes()
    bba36c284e21_tmp_velux_1 | File "/usr/local/lib/python3.8/site-packages/pyvlx/pyvlx.py", line 85, in load_nodes
    bba36c284e21_tmp_velux_1 | await self.nodes.load(node_id)
    bba36c284e21_tmp_velux_1 | File "/usr/local/lib/python3.8/site-packages/pyvlx/nodes.py", line 70, in load
    bba36c284e21_tmp_velux_1 | await self._load_all_nodes()
    bba36c284e21_tmp_velux_1 | File "/usr/local/lib/python3.8/site-packages/pyvlx/nodes.py", line 86, in _load_all_nodes
    bba36c284e21_tmp_velux_1 | await get_all_nodes_information.do_api_call()
    bba36c284e21_tmp_velux_1 | File "/usr/local/lib/python3.8/site-packages/pyvlx/api_event.py", line 21, in do_api_call
    bba36c284e21_tmp_velux_1 | await self.send_frame()
    bba36c284e21_tmp_velux_1 | File "/usr/local/lib/python3.8/site-packages/pyvlx/api_event.py", line 33, in send_frame
    bba36c284e21_tmp_velux_1 | await self.pyvlx.send_frame(self.request_frame())
    bba36c284e21_tmp_velux_1 | File "/usr/local/lib/python3.8/site-packages/pyvlx/pyvlx.py", line 72, in send_frame
    bba36c284e21_tmp_velux_1 | await self.connect()
    bba36c284e21_tmp_velux_1 | File "/usr/local/lib/python3.8/site-packages/pyvlx/pyvlx.py", line 45, in connect
    bba36c284e21_tmp_velux_1 | await self.connection.connect()
    bba36c284e21_tmp_velux_1 | File "/usr/local/lib/python3.8/site-packages/pyvlx/connection.py", line 85, in connect
    bba36c284e21_tmp_velux_1 | self.transport, _ = await self.loop.create_connection(
    bba36c284e21_tmp_velux_1 | File "/usr/local/lib/python3.8/asyncio/base_events.py", line 986, in create_connection
    bba36c284e21_tmp_velux_1 | infos = await self._ensure_resolved(
    bba36c284e21_tmp_velux_1 | File "/usr/local/lib/python3.8/asyncio/base_events.py", line 1365, in _ensure_resolved
    bba36c284e21_tmp_velux_1 | return await loop.getaddrinfo(host, port, family=family, type=type,
    bba36c284e21_tmp_velux_1 | File "/usr/local/lib/python3.8/asyncio/base_events.py", line 825, in getaddrinfo
    bba36c284e21_tmp_velux_1 | return await self.run_in_executor(
    bba36c284e21_tmp_velux_1 | File "/usr/local/lib/python3.8/concurrent/futures/thread.py", line 57, in run
    bba36c284e21_tmp_velux_1 | result = self.fn(*self.args, **self.kwargs)
    bba36c284e21_tmp_velux_1 | File "/usr/local/lib/python3.8/socket.py", line 918, in getaddrinfo
    bba36c284e21_tmp_velux_1 | for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
    bba36c284e21_tmp_velux_1 | socket.gaierror: [Errno -2] Name does not resolve

    Kommentar


      #32
      Zitat von DJFalk Beitrag anzeigen
      Name does not resolve
      sieht nach DNS aus. In der CFG mal nur mit IPs verwenden - damit umgehst Du das DNS-Thema.

      Konntest du mit dem Script erfolgreich vom selben Server aus den KLF ansprechen? Darüber kann man übrigens die einzelnen Kanäle auch wunderbar umbenennen, um dann auch schön sprechende Topics zu haben
      Zuletzt geändert von saegefisch; 20.04.2021, 10:50.

      Kommentar


        #33
        Update: Vor 2 Tagen wurde ein altes DFF wegen eines Wasserschadens ausgetauscht; das neue direkt mit Velux MSL (Sonnenschutz-Markise Solar).
        Jetzt gerade den Taster zur MSL an KLF200 angelernt (nach KLF200-Anleitung). KLF200 neu gestartet. Docker VLX2MQTT angehalten (wichtig! Weil das Script sich sonst nicht konnektieren kann). Per Script (s.o.) den node umbenannt. Docker wieder gestartet. Danach war die neue MSL über den vergebenen Namen direkt per MQTT in edomi ansprechbar inkl. Positions-Rückmeldung. Das ganze hat ~ 10min gedauert. Weiterhin also geschmeidig und bislang verlässlich.

        Kommentar


          #34
          Ich bin zu doof für das ganze

          Habe einen Broker am laufen und ich kann auch problemlos subscriben und publishen.

          Die Config von vlx2mqtt habe ich angepasst. Als Host für den KLF habe ich die interne IP-Adresse des KLF angegeben und als Passwort das Wlan-Passwort.

          Wie finde ich jetzt grundsätzlich heraus, ob der vlx2mqtt wirklich mit dem Broker verbunden ist?

          Kommentar


            #35
            Hi Jann,

            irgendwann müssen wir mal ein Bierchen zusammen trinken - wir haben echt eine große Schnittmenge...

            Ich bin so vorgegangen:
            1. Die (mitgelieferten) homecontrol-io-Taster für die Velux-Objekte funktionieren. Ohne diese kann man den KLF-200 nicht anlernen. Dann endet die Anleitung hier.
            2. Anlernen der Taster auf die Kanäle des KLF-200 nach Anleitung. Mit den Kabelbrücken legt man den Kanal beim Anlernen fest. Danach können die Kabelbäumchen wieder in die Kiste verstaut werden, weil wir dann ja alles per API machen wollen
              1. Neustart KLF-200 - ohne hat es bei mir nicht funktioniert. Und ich musste den KLF jetzt schon 2x neu starten, weil irgend etwas verloren hat. Der kommt bei mir noch hinter einen Aktor, der ihn jede Woche mal kurz ausschaltet und gut. Mein grundig SAT>IP-Server ist genauso drauf (will regelmäßig neu starten) und steht direkt daneben.
            3. Mit dem Script (Siehe oben) auf irgend einer Linux-Kiste/VM. Hier kann auch VLAN ein Thema sein (Port)
              1. Technischer Durchstich, ob der KLF-200 überhaupt ansprechbar ist und mit welchen Parametern. Wenn man mit dem Script nicht verfahren kann, wird das andere vielleicht auch nicht funktionieren.
              2. Umbenennen der Objekte, damit die Topics später einfach sind, z.B. "AZ" oder "SZ2"..
              3. ACHTUNG: VLX2MQTT-Docher-Container muss angehalten werden, damit das Script sich verbinden kann mit KLF-200
            4. Danach habe ich den Docker-Container gestartet (mit den selben Zugangsdaten wie das Script zuvor). Das hat dann sofort funktioniert.
              1. Achtung. Anders als das CFG-File es vermuten lässt: Hinter den Zugangsdaten ist KEIN inline-Kommentar erlaubt. Die muss man löschen (es darf hinter den Werten also nichts mit # folgen. Das war anfangs irreführend, weil die Fehlermeldungen darauf nicht hindeuten
            5. Danach konnte ich mit dem MQTT-Explorer schon direkt verfahren und bekam die Positionen zurück
            6. Danach MQTT-Anschluss in edomi hat sofort funktioniert
            Noch mal mein Script in der aktuellen Fassung. Wenn Du die Ausführst, dann werden alle dem KLF angelernten Kanäle/Nodes ausgegeben. Danach musst Du nur die jeweils gewünschte Funktion im Mittelblock dekommentieren und anpassen, dann ausführen. Dann wieder auskommentieren.

            Code:
            #!/usr/bin/env python3
            
            """Nur ein Test f r den technischen Durchstich"""
            import asyncio
            import logging
            from pyvlx import PyVLX, PYVLXLOG, Position
            
            
            async def main(loop):
            """Log packets from Bus."""
            # Setting debug
            PYVLXLOG.setLevel(logging.DEBUG)
            stream_handler = logging.StreamHandler()
            stream_handler.setLevel(logging.DEBUG)
            PYVLXLOG.addHandler(stream_handler)
            
            """Demonstrate functionality of PyVLX."""
            print("Start...")
            pyvlx = PyVLX(host="192.168.xxx.yyy", password="<PW vom Aufkleber unter SSID, aber NICHT das web logon-PW>", loop=loop)
            print("load_nodes...")
            await pyvlx.load_nodes()
            
            for node in pyvlx.nodes:
            print("# ",node.name, node.position.position_percent)
            
            # Wenn CONNECT-ERROR: Erst Docker-Container VLX2mqtt stoppen!
            #
            # Ohne Befehl -> Ausgabe aller angelernter NODES
            #
            # Befeh: Position ueber NODE anfahren
            # await pyvlx.nodes[0].set_position(Position(position_percent=0)) # set position by node-number
            #
            # Befehl: NODES mit Namen versehen
            # await pyvlx.nodes[0].rename('SZ1') # rename node
            # await pyvlx.nodes[1].rename('SZ2') # rename node
            # await pyvlx.nodes[2].rename('AZ') # rename node
            #
            # Befehl: Position ueber Namen anfahren -> Noetig fuer edomi/MQTT!
            # await pyvlx.nodes['SZ2'].set_position(Position(position_percent=0))
            # await pyvlx.nodes['AZ'].set_position(Position(position_percent=0))
            
            
            print("diconnect...")
            await pyvlx.disconnect()
            print("disconnected!")
            
            
            if __name__ == '__main__':
            # pylint: disable=invalid-name
            LOOP = asyncio.get_event_loop()
            LOOP.run_until_complete(main(LOOP))
            # LOOP.run_forever()
            LOOP.close()
            Damit das Script auiich ausgeführt werden kann: Ausführbar machen, python3 + python-vlx-Bibliothek installieren. Dann ausführen (4. Zeile)
            Code:
            sudo chmod +x velux_klf200_script.py
            sudo apt-get install python3 python3-pip
            sudo pip3 install pyvlx
            python3 ./velux_klf200_script.py
            Zuletzt geändert von saegefisch; 08.05.2021, 04:03.

            Kommentar


              #36
              Jung, wann schläfst du noch?

              Probiere ich nachher direkt mal aus.....die Belegung mit den Kabeln habe ich natürlich klugerweise nicht gemacht gehabt

              Wenn ich nicht so sehr automatisieren wollen würde, wäre das Ding schon längst in der Tonne

              P.S.: Die Schnittmenge wird sich weiter erhöhen....baue gerade die PV aufs Dach, den Rest kannst dir denken
              Zuletzt geändert von Janncsi; 08.05.2021, 07:49.

              Kommentar


                #37
                Zitat von s01iD Beitrag anzeigen

                Wie gesagt, es funktioniert auch mit einem Jalousieaktor. Vorallem: STOP funktioniert auch, wenn Du nochmal ein Signal in die aktuelle Fahrtrichtung auslöst. Das ist nicht dokumentiert, funktioniert aber (übrigens auch beim KLF 050).
                Das Wissen dürfte Dir Deine Logik auch vereinfachen ...
                Also wenn ich das Signal während der Fahrt wiederhole, passiert einfach nichts. Er fährt bis zum Ende weiter. Wenn ich während der Fahrt in die andere Richtung schalte, wird die Fahrtrichtung sofort umgekehrt und er fährt bis zum entgegengesetzten Ende. STOP ist definitiv nur bei beide Richtungen gleichzeitig.

                Irgendeine Idee, wie das sein kein? Firmware-Version vielleicht?

                Kommentar


                  #38
                  Zitat von s01iD Beitrag anzeigen
                  Mein Jalousieaktor hat eine Laufzeitmessung und errechnet darüber die Position. Mit zwei Binärausgängen klappt das natürlich nicht.
                  Hallo, habe jetzt heute auch das KLF200 erhalten für eine Überdachung mit Faltdach und Senkrechtmarkise und LED Band.

                  Habe selbst den MDT Jalousieaktor mit Laufzeitmessung, frage mich aber wie dieser über das KLF200 die Laufzeit messen soll und stoppen?

                  oder hab ich Dich hier falsch verstanden?


                  danke im Voraus

                  Kommentar

                  Lädt...
                  X