Xiaomi Produkte in Loxone einbinden
Einklappen
X
-
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ß
TomKommentar
-
Hi
wollte gerade das Skript in den Autostart legen - diese Variante: https://webnist.de/python-script-auf...tisch-starten/
wäre dannCode:python3 /usr/local/bin/run-mihome_loxwiki.py &
Gruß
Tom
Zuletzt geändert von topoff; 15.01.2018, 15:25.Kommentar
-
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
-
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
Loxberry-Plugin-Mihome - Einfaches Plugin zum Auslesen der SensorenKommentar
-
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
TomKommentar
-
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 ausliestZuletzt geändert von Chris8519; 16.02.2018, 10:49.
-
-
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
-
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
-
Probier mal am Pi folgenden Befehl um das Programm zu finden:
netstat -tulpn | grep :9898
Zuletzt geändert von Gast; 08.03.2018, 23:37.Kommentar
-
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
-
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. :-)
-
-
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, MartinKommentar
-
Zitat von JJeHallo 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.
Gesendet von meinem Aquaris X Pro mit Tapatalk
Kommentar
-
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
AndreasKommentar
Kommentar