Xiaomi Produkte in Loxone einbinden

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

    #16
    Was erledigt?

    Kommentar

    • topoff
      Smart Home'r
      • 16.09.2016
      • 47

      #17
      Moinsen - dachte das Phyton Skript schickt keine UDPs raus und hatte ellenlange Problembeschreibung gepostet....... -> hat sich dann aber herausgestellt dass die Komonentennamen im Skript auf die neuen Komponenten angepasst werden müssen also von von "motion" auf "sensor_motion.aq2" und schon läuft das Skript einwandfrei!

      Von BW Melder und Fensterkontakt bin ich positiv überrascht - funktioniert einwandfrei - bin lediglich bzgl. Batterielaufzeit etwas skeptisch - hat hier wer schon Erfahrungswerte?

      Gruß
      Tom

      Kommentar


      • Sebastian
        Sebastian kommentierte
        Kommentar bearbeiten
        Hi,

        kannst du nicht vorher einen Taster verwenden?

      • Gast
        Gast kommentierte
        Kommentar bearbeiten
        Das Problem, es wird der Eingang auch nicht mehr auf 0 zurückgesetzt, somit sollte ein Taster auch nichts bringen, wenn der Eingang ständig auf 1 ist

      • Sebastian
        Sebastian kommentierte
        Kommentar bearbeiten
        ---
        Zuletzt geändert von Sebastian; 06.01.2021, 13:24. Grund: Bullshit
    • topoff
      Smart Home'r
      • 16.09.2016
      • 47

      #18
      Hi

      wollte gerade das Skript in den Autostart legen - diese Variante: https://webnist.de/python-script-auf...tisch-starten/

      wäre dann
      Code:
      python3 /usr/local/bin/run-mihome_loxwiki.py &
      -> funktioniert einwandfrei und meiner meinung nach einfacher wie in der Anleitung beschrieben....
      Gruß
      Tom
      Zuletzt geändert von topoff; 15.01.2018, 15:25.

      Kommentar

      • Clubsport
        MS Profi
        • 11.01.2018
        • 602

        #19
        Hallo zusammen,

        als absoluter Python-Depp versuche ich grade auf meinem Mac das Skript zum Laufen zu bekommen, wenn ich versuche über das Terminal das Skript zu starten bekomme ich aber immer folgende Fehlermeldung:

        "ImportError: No module named mihome.connector"

        Kann mir jemand helfen, wo ich da den Fehler habe.....?



        EDIT: Okay, über "pip3 install mihome" habe ich zumindest das Problem lösen können.... Aber: Wenn ich das Skript nun starte, kommt:

        Traceback (most recent call last):

        File "/Users/dasbinich/bin/run-mihome.py", line 3, in <module>

        from mihome.connector import XiaomiConnector

        File "/Users/dasbinich/bin/mihome/__init__.py", line 1, in <module>

        from mihome.connector import XiaomiConnector

        File "/Users/dasbinich/bin/mihome/connector.py", line 1, in <module>

        from past.builtins import basestring

        ImportError: No module named past.builtins

        Was ist das nun wieder.....?




        Danke & Grüße,

        Martin
        Zuletzt geändert von Clubsport; 19.01.2018, 17:18.

        Kommentar

        • topoff
          Smart Home'r
          • 16.09.2016
          • 47

          #20
          mit welchem Befehl startest Du das script?

          Kommentar

          • Chris8519
            Extension Master
            • 19.12.2015
            • 106

            #21
            Tach zusammen ... habe meinen Loxberry mal neu aufgesetzt und mit den Plugins nochmal was rum gebastelt .... hab nicht wirklich einen plan vom programmieren aber hab das Plugin zum laufen gebracht ... Das einzige war vorher erledigt werden muss ist die run-mihome.py anzupassen im ordner /data /scripts ..... vielleicht kann ja jemand helfen wie man de ip des miniservers da automatisch rein bekommt. Gestartet wird über den dienst supervisor

            Einfaches Plugin zum Auslesen der Sensoren. Contribute to chris3600410/Loxberry-Plugin-Mihome development by creating an account on GitHub.
            Loxberry-Plugin-Mihome - Einfaches Plugin zum Auslesen der Sensoren

            Kommentar

            • topoff
              Smart Home'r
              • 16.09.2016
              • 47

              #22
              Hoy

              in der run-mihome_loxwiki.py steht's doch oben drin



              Code:
              from mihome.connector import XiaomiConnector
              
              #Loxone address and port
              UDP_IP = '192.?.?.?'
              UDP_PORT = 56666
              Gruß
              Tom

              Kommentar


              • Chris8519
                Chris8519 kommentierte
                Kommentar bearbeiten
                Ich meinte eher die abfrage von loxberry wie die miniserveradresse ist und diese in die runmihome.py schreibt

                oder anders gesagt wie bekomme ich es hin das das die datei run-mihome.py aus der config(mihome.cfg) IP und Port ausliest
                Zuletzt geändert von Chris8519; 16.02.2018, 10:49.
            • Chris8519
              Extension Master
              • 19.12.2015
              • 106

              #23
              So habe die oberfläche des Plugins soweit fertig das über den Loxberry die Ip des Miniservers und der Port in die mihome.cfg geschrieben werden kann. Nur bekomme das immer noch nicht in die run-mihome.py. Vielleicht kann ja jemand helfen. Mfg

              Code:
              #!/usr/bin/python3
              # encoding=utf-8
              
              import configparser
              import socket
              import sys
              import time
              
              
              from mihome.connector import XiaomiConnector
              
              # ---------------------------------------------
              # Global variables
              # ---------------------------------------------
              separator = ";"
              
              # ---------------------------------------------
              # Parse PlugIn config file
              # ---------------------------------------------
              pluginconfig = configparser.ConfigParser()
              pluginconfig.read("REPLACEBYBASEFOLDER/config/plugins/REPLACEBYSUBFOLDER/mihome.cfg")
              
              enabled = pluginconfig.get('MIHOME', 'ENABLED')
              localtime = pluginconfig.get('MIHOME', 'ENABLED')
              miniservername = pluginconfig.get('MIHOME', 'MINISERVER')
              UDP_PORT = int(pluginconfig.get('MIHOME', 'UDPPORT'))
              
              # ---------------------------------------------
              # Parse Loxberry config file
              # ---------------------------------------------
              loxberryconfig = configparser.ConfigParser()
              loxberryconfig.read("REPLACEBYBASEFOLDER/config/system/general.cfg")
              
              UDP_IP = loxberryconfig.get(miniservername, 'IPADDRESS')
              
              
              # Open socket connection
              sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
              
              # List of supported models
              class MODEL:
                CUBE = 'cube'
                GATEWAY = 'gateway'
                MAGNET = 'magnet'
                MOTION = 'motion'
                SENSOR_HT = 'weather.v1'
                SMOKE = 'smoke'
                SWITCH = '86sw1'
                WATER_LEAK = 'sensor_wleak.aq1'
              
              # Supported values
              class VALUE:
                ALARM = 'alarm'
                DENSITY = 'density'
                HUMIDITY = 'humidity'
                ILLUMINATION = 'illumination'
                STATUS = 'status'
                TEMPERATURE = 'temperature'
                CHANNEL_0 = 'channel_0'
                ROTATE = 'rotate'
                VOLTAGE = 'voltage'
              
              # Matrix that links values for models, conversion added
              MODEL_VALUES_MATRIX = {
                MODEL.CUBE: {VALUE.STATUS: (dict, {'flip90': 'flip90',
                                                   'flip180': 'flip180',
                                                   'free_fall': 'free_fall',
                                                   'move': 'move',
                                   'rotate': 'rotate',
                                                   'shake_air': 'shake_air',
                                                   'tap_twice': 'tap_twice'},
                                            ),
                             VALUE.VOLTAGE: (int, 1000),
                        # VALUE.ROTATE: (int, replace(',','')),
                             },
                MODEL.GATEWAY: {VALUE.ILLUMINATION: (int, 1),
                                },
                MODEL.MAGNET: {VALUE.STATUS: (dict, {'close': '0',
                                                     'open': '1'}),
                               VALUE.VOLTAGE: (int, 1000),
                               },
                MODEL.MOTION: {VALUE.STATUS: (dict, {'motion': '1'}),
                               VALUE.VOLTAGE: (int, 1000),
                               },
                MODEL.SENSOR_HT: {VALUE.HUMIDITY: (int, 100),
                                  VALUE.TEMPERATURE: (int, 100),
                                  VALUE.VOLTAGE: (int, 1000),
                                  },
                MODEL.SMOKE: {VALUE.ALARM: (int, 1),
                              VALUE.DENSITY: (int, 1),
                              VALUE.VOLTAGE: (int, 1000),
                              },
                MODEL.SWITCH: {VALUE.STATUS: (dict, {'click': ('click', '1'),
                                                     'long_click_press': ('press', '1'),
                                                     'long_click_release': ('press', '0')}),
                       VALUE.CHANNEL_0: (dict, {'click': ('click', '1'),
                                                     'long_click_press': ('press', '1'),
                                                     'long_click_release': ('press', '0')}),
                               VALUE.VOLTAGE: (int, 1000),
                               },
                MODEL.WATER_LEAK: {VALUE.STATUS: (dict, {'no_leak': '0',
                                                         'leak': '1'}),
                                   VALUE.VOLTAGE: (int, 1000),
                                   }
              
                }
              
              def cb(model, sid, cmd, data):
                # Focus only on report event, ignore heartbeats
                #if cmd != 'report':
                #  return
                # Find device
                if model in MODEL_VALUES_MATRIX:
                  # Read it's data values
                  for k, v in (data or {}).items():
                    # Check data values one by one and if known then prepare package
                    if k in MODEL_VALUES_MATRIX.get(model):
                      packet = None
                      type, conv = MODEL_VALUES_MATRIX.get(model).get(k)
              
                      # Integer value
                      if type == int:
                        packet = '%s %s %s %.2f' % (model, sid, k, type(v) / (conv or 1.0))
              
                      # Dictionary
                      if type == dict and v in conv:
                        # Change key
                        if isinstance(conv[v], tuple) and len(conv[v]) >= 2:
                          packet = '%s %s %s %s' % (model, sid, conv[v][0], conv[v][1])
                        # No conversion
                        else:
                          packet = '%s %s %s %s' % (model, sid, k, conv[v])
              
                      # Send packet to Loxone
                      if packet:
                        sock.sendto(bytes(packet, 'utf-8'), (UDP_IP, UDP_PORT))
              
              connector = XiaomiConnector(data_callback=cb)
              
              while True:
                  connector.check_incoming()

              Kommentar

              • Gast

                #24
                Hallo Zusammen,

                habe jetzt auch mal das Plugin installiert, alle nötigen Änderungen vorgenommen und das python skript mit "python3 run-mihome.py".
                Leider bekomme ich dann folgenden Fehler ausgeworfen:

                loxberry@loxberry:~/data/plugins/mihome/scripts $ python3 run-mihome.py
                Traceback (most recent call last):
                File "run-mihome.py", line 111, in <module>
                connector = XiaomiConnector(data_callback=cb)
                File "/opt/loxberry/.local/lib/python3.5/site-packages/mihome/connector.py", line 21, in __init__
                self.socket = self._prepare_socket()
                File "/opt/loxberry/.local/lib/python3.5/site-packages/mihome/connector.py", line 29, in _prepare_socket
                sock.bind(("0.0.0.0", self.MULTICAST_PORT))
                OSError: [Errno 98] Address already in use

                Komme leider nicht ganz dahinter was mir der PI damit versucht zu sagen
                Mich würe da mal Interessieren wie das Plugin die Verbindung zu. Xiaomi Gateway aufbaut, man gibt ja nirgends die IP Adresse des Gateway an oder die Zeichenfolge die man über Umwege unter About im Xiaomi Gateway bekommt (Ich glaube für den Homekit zugriff?!).

                Wenn hier jemand weiter weiss bezüglich der Fehlermeldung oben würde ich mich über Rückmeldung freuen .

                Kommentar

                • Gast

                  #25
                  Zitat von DG1912

                  sock.bind(("0.0.0.0", self.MULTICAST_PORT))

                  Komme leider nicht ganz dahinter was mir der PI damit versucht zu sagen
                  So wie ich das verstehe, versucht das Skript den Multicast Port 9898 auf der Netzwerkkarte zu belegen, was nicht klappt, weil schon ein anderes Programm auf diesem Port lauscht.
                  Probier mal am Pi folgenden Befehl um das Programm zu finden:

                  netstat -tulpn | grep :9898

                  Zitat von DG1912
                  Mich würe da mal Interessieren wie das Plugin die Verbindung zu. Xiaomi Gateway aufbaut, man gibt ja nirgends die IP Adresse des Gateway an
                  Das Plugin baut die Verbindung gar nicht auf. Das Gateway verschickt (nach Konfiguration in der Mi-App) eine "Rundnachricht" ins gesamte Netz mit den Informationen, die das Plugin "sieht", auswertet und weiterverarbeitet.
                  Zuletzt geändert von Gast; 08.03.2018, 23:37.

                  Kommentar

                  • Gast

                    #26
                    Hallo zusammen,

                    wie sieht es mir Reichweite aus bzw. ist es möglich mehrere gateways (gateway 1-->OG, gateway 2--> zusammen zu betreiben. Bin am überlegen bei meinem Haus Fensterkontakte mit xiaomi zu realisieren.

                    Kommentar


                    • Gast
                      Gast kommentierte
                      Kommentar bearbeiten
                      Moin JJe,
                      das Thema scheint keine große Anhängerschaft zu haben. :-)
                      Zur Reichweite kann ich dir sagen, dass ich das Gateway in der Mitte des Hauses (200m2, EG & OG) plaziert habe und bisher in keiner Ecke ein Problem habe. Hab leider nur eins davon, kann dir also nicht sagen ob man mehrere betreiben kann. Dem Skript sollte es egal sein. Beim Anlernen könnte es Schwierigkeiten bezüglich der Zugehörigkeit geben, da man es nicht aussuchen kann. Müsstest wahrscheinlich eins davon vom Netz nehmen. :-)
                  • Clubsport
                    MS Profi
                    • 11.01.2018
                    • 602

                    #27
                    So würde ich das nicht sagen, dass es keine Anhängerschaft gibt 😉
                    Ich habe bei uns sämtliche Fenster- und Türsensoren, sowie die Temperatur- und Luftfeuchtigkeiterfassung in allen Räumen über Xiaomi gemacht, alles läuft absolut einwandfrei! Wir haben knappe 130qm, allerdings alles auf einer Ebene, und benötigen daher nur ein Gateway.
                    Deshalb kann ich leider zu der Fragestellung direkt nichts beitragen. 😉

                    Grüße, Martin

                    Kommentar

                    • philox
                      LoxBus Spammer
                      • 16.06.2016
                      • 280

                      #28
                      Zitat von JJe
                      Hallo zusammen,

                      wie sieht es mir Reichweite aus bzw. ist es möglich mehrere gateways (gateway 1-->OG, gateway 2--> zusammen zu betreiben. Bin am überlegen bei meinem Haus Fensterkontakte mit xiaomi zu realisieren.
                      Ich kann mir nicht vorstellen wieso das nicht gehen sollte. Die Geräte werden ja einem Gateway fest zugewiesen. Was bestimmt nicht geht ist das diese dann, auf Xiaomi Ebene, miteinander kommunizieren. Aber sobald man diese in Loxone holt geht das.

                      Gesendet von meinem Aquaris X Pro mit Tapatalk

                      Kommentar

                      • Gast

                        #29
                        Danke für die Antworten,

                        werde dann ausprobieren wenn ich so weit mit Bau bin.

                        Viele Grüße

                        Jakob

                        Kommentar

                        • Gast

                          #30
                          Liebe Community.
                          Ich habe alles mit dem Arduino gemacht und habe jetzt mehrere Taster, Fenstersensoren und Temperatur/Feuchtigkeitssensoren verbaut. Alles läuft einwandfrei. Leider ist es aber so, dass es jeweils nach ca. 1 Tag nicht mehr funktioniert. Es werden zwar noch alle aktuellen Werte in der Mi App angezeigt (also habe ich das Gateway noch mit WLAN etc.) aber es kommt nichts mehr zu Loxone. Hat jemand dieselbe Erfahrung gemacht? Ich bin nicht sicher, ob eventuell mein Xiaomi Gateway einen "Knall" hat oder nicht.
                          Vielen Dank für Eure Unterstützung
                          Andreas

                          Kommentar

                          Lädt...