Beiträge von sensormann

    Hallo liebe Community,


    ich habe einen Feuchtigkeitssensor, dessen Messwert in einer Textdatei steht. Ich nutze das recht simple Plugin homebridge-humidity-file, um den Wert auszulesen und in HomeKit anzuzeigen. Das funktioniert auch tadellos. Nun habe ich versucht, das Plugin zu ergänzen, sodass der Sensor um einen Kontaktsensor erweitert wird, der je nach Über-/Unterschreiten eines definierten Grenzwertes geschlossen bzw. geöffnet ist.


    Das darum ergänzte Plugin liest weiterhin korrekt die Messwerte aus, zeigt mir auch den Kontaktsensor an, der ist nun aber unabhängig vom definierten Grenzwert immer geschlossen. Der Fehler dürfte darin liegen, dass ich in der Bedingung this.getState.bind(this) benutze. Ich kenne mich leider überhaupt nicht mit dieser ganzen JS/Node/HomeBridge-Logik aus, vermute aber, dass das nicht den puren Messwert zurückspielt und man daher immer in die Else-Anweisung reinläuft.



    Was muss ich stattdessen schreiben?


    Vielen Dank für eure Hilfe!

    Hi zusammen,


    ich bin noch recht neu im Thema Smart Home unterwegs, wenn euch also was auffällt, ich irgendwo unnötig kompliziert vorgegangen bin, lasst es mich wissen. Aber ich würde das Ergebnis stundenlangen Googlens und Ausprobierens an dieser Stelle gern teilen, weil vielleicht der ein oder die andere an etwas ähnlichem interessiert sind:


    Ich möchte meinem Saugroboter von Xiaomi aus Gründen des Datenschutzes keinen Zugang zum Internet gewähren, ihn aber dennoch über HomeKit zumindest rudimentär steuern können (ihn starten und zurück in die Station fahren lassen). Zum Rooten und Entclouden habe ich mich an diese Anleitung gehalten, das Auslesen des Tokens hat bei mir nur über den iBackup Viewer geklappt.


    Gern hätte ich anschließend das Plugin homebridge-xiaomi-roborock-vacuum genutzt, um den Saugroboter via Homebridge in mein HomeKit einzubinden. Aber wie ich vor ein paar Monaten hier im Forum schon mal geschildert habe, hat das nicht funktioniert: Wenn alles frisch eingerichtet ist, funktioniert das Plugin mit dem gerooteten Roborock für ein paar Minuten, danach nicht mehr. Ich vermute, die deaktivierte Internetverbindung ist schuld.


    Ich habe nun eine Alternative gefunden, denn der gerootete Saugroboter lässt sich durchaus per Kommandozeile steuern. Die entsprechenden Befehle kommen mit der Python-Bibliothek python-miio. Dafür installiert ihr zuerst, falls noch nicht geschehen, Python und dessen Package-Installer:


    sudo apt install -y python3 python3-pip

    pip3 install --upgrade pip


    Dann sind die Bibliothek und ihre Voraussetzungen dran:


    sudo pip3 install python-miio

    sudo pip3 install -U setuptools

    sudo apt-get install libffi-dev libssl-de


    Jetzt ist es möglich, den Saugroboter aus der Kommandozeile zu steuern und bspw. seinen Status auszulesen: mirobo --ip=192.168.XXX.XX --token=xxxxxxxxxxxxxxxxxxxxxxx status. Am Ende könnt ihr status durch die verschiedenen möglichen Befehle ersetzen (etwa start, home oder find).


    Anschließend habe ich das Plugin homebridge-cmdswitch2 installiert und zwei An/Aus-Schalter definiert. Werden sie betätigt, führt das Plugin die entsprechenden Kommandozeilen-Befehle aus, die den Saugroboter starten bzw. in die Station zurückfahren lassen (erster Schalter) und die ihn orten (zweiter Schalter):



    Für beide Schalter wird regelmäßig der Status ermittelt. Der An/Aus-Schalter gilt als „an“, wenn der Saugroboter den Status „Cleaning“ zurück gibt. In jedem anderen Zustand gilt er als „aus“. Der Schalter zum Orten springt automatisch immer wieder auf „aus“.


    Ich hoffe, es finden sich ein paar Leute, die mit dieser Anleitung was anfangen können. :)


    Schönen Gruß

    Hallo zusammen. Vielen Dank für das Plugin! Ich habe zwei Sensoren. Binde ich nur eines in die config.json ein, startet Homebridge normal. Binde ich aber beide ein, kommt diese Fehlermeldung:


    MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 stateChange listeners added. Use emitter.setMaxListeners() to increase limit.


    Im Ergebnis wird mir keiner der Sensoren in Homekit angezeigt. Wie kann ich damit umgehen?

    Nein, aber die möchte ich auch nicht verwenden. Der Saugroboter soll nur über Homekit gesteuert werden. Wie gesagt, über die Kommandozeile kann ich ihn schon starten, den Status auslesen usw. Nur via Homebridge-Plugin klappt es jetzt nicht mehr. Fragt das Plugin evt. Informationen an, die nur über Xiaomis Cloud verfügbar sind?

    Ich habe es mit dieser Anleitung geschafft, die Firmware des Saugroboters zu überschreiben. Er hängt jetzt wieder in meinem WLAN, ist über die Kommandozeile ansteuerbar (z.B. mirobo --ip=192.168.xxx.xxx --token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx status) und meckert nicht mehr über die fehlende Internet-Verbindung. Allerdings kann das Plugin homebridge-xiaomi-roborock-vacuum keine Verbindung mehr herstellen. Jemand eine Idee?

    Hallo zusammen.

    <p>für das plugins muss der staubsauger einer dauerhafte internetverbindung haben oder? zumindest habe ich den eindruck, dass bei jedem homebridge neustart dass dies die bedingung ist. danach funktioniert er bis zum nächster restart.</p>
    <br><p>(habe die internetverbindung für den sauger deaktiviert. nur bei firmware updates darf er ins netz)</p>

    Genau das frage ich mich auch. Ich möchte den Sauger nicht ins Internet lassen. Lässt es sich verhindern, dass er nach einem Homebridge-Neustart in diesen Fehler reinläuft, wenn ich ihn per Router-Einstellung offline halte?


    ERROR, miio.device, next try in 2 minutes | Error: Could not connect to device, token might be wrong


    edit: Nicht nur nach einem Neustart von Homebridge, auch nach einer Weile der Inaktivität kommt die Fehlermeldung und man muss dem Saugroboter am Router wieder Zugang zum Internet gewähren. Die technische Notwendigkeit hierfür will sich mir nicht erschließen.