[98_ROOWIFI] Neues Modul für iRobot Roomba mit RooWifi Modul

Begonnen von jmike, 03 April 2016, 20:25:23

Vorheriges Thema - Nächstes Thema

jmike

Hallo.

Da es für meinen Roomba 772 wohl kein ThinkingCleaner Modul geben wird, habe ich mir ein RooWifi (v2) besorgt (Danke an hermannj!).
Das war dann auch der langersehnte Startschuss um ein eigenes FHEM Modul zu schreiben ( aktuell gibt es wohl nur ein ThinkingCleaner Modul und eine Konfig für HTTPMOD).

Daher hier, mein erstes Modul, erste Version!

Eigentlich war geplant komplett auf das CPAN Perl Modul von Michael Ratliff, modifiziert von daduke, zu setzen aber leider lassen sich die (80!) Sensoren die man dort bekommt nicht ohne wakeup abrufen.
Heisst, für jedes Update der Sensoren hätte der Roomba gepiepst.
Daher kommen die Sensoren/Readings aus dem roomba.json.

Hier die Fakten, v0.93:
    Perl module (die möglicherweise fehlen z.B. mit #> cpan -i <packet> nachinstallieren):
        YAML::Tiny
        LWP::Simple

    Installation:
        Beide Files in /FHEM kopieren, dann reload 98_ROOWIFI ausführen
        Bei update auch "reload Roowifi.pm" ausführen!

    Define:
        define <devicename> ROOWIFI <IP> [update-interval]
   
    Features:
        Batterie in Prozent
        automatisches Aufwecken sollte Roomba einschlafen
        Credentials von RooWifi Modul werden unterstützt (optional auch leer wenn im RooWifi auch leer)
        konfigurierbares Update Interval (default 120sek)
        konfigurierbare Fahrdistanz für leaveDock
        ChargingState mit Text
        Internal mit Zeitstempel des letzten Reinigungslaufs (LASTCLEAN)
        default attr verbose 1 & event-on-change-reading *
        Kommunikation non-blocking
       
    Set/Commands:
        "clean"           - started das normale Clean Programm
        "stop"            - stoppt den Roomba da wo er ist
        "dock"            - lässt Roomba nach dem Dock suchen
        "leaveDock"       - fährt den Roomba zurück, und damit aus dem Dock, Distanz per Attribut konfigurierbar
        "update"          - aktualisiert Sensoren (Readings) und status
       
    Readings:
        Angle           
        BumpsWheeldrops
        Buttons         
        Capacity       
        Charge         
        ChargingState   
        CliffFrontLeft 
        CliffFrontRight
        CliffLeft       
        CliffRight     
        Current         
        DirtDetector-Left
        DirtDetector-Right
        Distance       
        MotorOvercurrents
        RemoteOpcode   
        Temperature     
        VirtualWall     
        Voltage         
        Wall           
        batteryPercent 
        state       
       
    State:
        "Initialized"   - modul initialisiert
        "disabled"      - device disabled
        "offline"       - Roowifi Modul offline / timeout
        "error"         - Modulfehler, sollte nicht passieren
        "cleaning"      - Roomba ist gerade am saugen
        "searchingDock" - Roomba sucht sein Dock (mag beim nächsten Sensor update cleaning/idle werden)
        "leaveDock"     - Roomba ist dabei sein Dock zu verlassen bzw. hat sein Dock verlassen (wird zu idle beim nächsten update)
        "idle"          - Roomba ist nicht im Dock aber saugt auch nicht
        "charging"      - Roomba ist in seiner Ladestation, siehe Reading ChargingState für Details
        "sleeping"      - Roomba ist unterwegs eingeschlafen (Zombie)
        "jsonError"      - sollte roomba.json unvollständig sein

    custom Attribute:
        "user"          - user für RooWifi
        "password"      - password für RooWifi
        "leaveDock"     - Entfernung für set <devive> leavedock, mm/s
        "disable"       - device deaktivieren
        "preCleanCmd"       - optional, zwei Werte, wie weit der Roomba zurückfährt & Verzögerung in Sekunden. Default "80 2"


Mein RooWifi Modul habe ich ins innere verfrachtet. Wenn Interesse besteht teile ich gern die Bilder und Details vom Umbau die ich gemacht habe.

Wäre schön wenn ein paar Roomba Piloten das Modul testen würden.
Ein Grund das umfassende Perl Modul zu nehmen, anstatt nur die Urls zum Bedienen, war die Tatsache dass sich zukünfigt komplexere Fahrten abbilden lassen.
Als Idee z.b. per Attribute komplexere Fahrten definieren (30 rückwärts, 20° links, 40rückwärts usw) die der Roomba dann auf Kommando absolviert um zum Beispiel unterm Schrank hervorzukommen oder eine Rampe über eine Treppenstufe hinweg zu finden etc.
Also immer her mit euren Ideen :)

Und über Kritik & Feedback zum Modul würde ich mich auch freuen da es mein erstes FHEM Modul ist (auch wenn unsere Developer sicher besseres zu tun haben als Code-reviews).

grüße
Mike

Danke an:
- daduke für Input via PN/Email
- herrmannj für das RooWifi Modul
- Rudolf und dem restlichen Core-Team für FHEM

90;98-3 PM-5
91;98-23 PM-31

franky08

Und ich sitze seit Tagen an einem Modul für den Roomba, hätte ich früher wissen sollen  8)

VG
Frank
Debian Wheezy auf ZBOX nano/ Debian Bullseye auf 2.ter ZBOX nano F2F an 2x RaspiB
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu ,fhem5.8, CCU2,
ECMD an AVR-NET-IO mit DAC u. ADC an Junkers Stetigregelung, Siemens LOGO!8, JeeLink uvm...

franky08

Funktioniert! Hat natürlich auch das Defizit das der Roomba nicht sofort startet, sondern erst geweckt werden muss. Ich hatte bei mir ein sleep 3 und dann den cleaning Befehl noch mal gesendet. In´s Modul hab ich heute nicht mehr gesehen, habe die letzten 4 Tage dran gesessen und kann iMo keine subs mehr sehen  ;)

VG
Frank
Debian Wheezy auf ZBOX nano/ Debian Bullseye auf 2.ter ZBOX nano F2F an 2x RaspiB
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu ,fhem5.8, CCU2,
ECMD an AVR-NET-IO mit DAC u. ADC an Junkers Stetigregelung, Siemens LOGO!8, JeeLink uvm...

franky08

Loggt gerne:

ROOWIFI: (Roomba) internal interval timer set to call GetUpdate again in 60 seconds
2016.04.03 23:22:34 3: ROOWIFI: (Roomba) is charging


VG
Frank
Debian Wheezy auf ZBOX nano/ Debian Bullseye auf 2.ter ZBOX nano F2F an 2x RaspiB
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu ,fhem5.8, CCU2,
ECMD an AVR-NET-IO mit DAC u. ADC an Junkers Stetigregelung, Siemens LOGO!8, JeeLink uvm...

jmike

Hi Frank.

Hab leider den anderen Thread nicht genug verfolgt während Ich am coden war, sonst hätte ich schon vorher angekündigt. Sorry!
Um ehrlich zu sein wollte Ich noch 2-3 Wochen testen. Habe aber dann gestern gesehen dass gerade viel zu RooWifi geschrieben wird und mich für ein "early-release" entschieden, genau um sowas zu vermeiden.


Ich habe die Version oben noch mal aktualisiert (0.0.6).
- Commands sollten einen tick schneller gehen wobei sich ein kleines wakeup-delay nicht vermeiden lässt.
- logging mit Abhängigkeit zum Modul und nicht global (bei ist wohl global:verbose > 1)
- default Attribute für verbose und event-on-change-reading

Damit sollte es etwas schneller sein und by-default weniger "talky".

Grüße,
Mike

franky08

#5
Hatte mir das Modul gerade mal vorgenommen, teste jetzt mit der neuen Version weiter. Bei mir hatte ich das wecken über ein GetFileFomURL gemacht.

P.S. hast du die neue Version oben, im ersten Post?

VG
Frank
Debian Wheezy auf ZBOX nano/ Debian Bullseye auf 2.ter ZBOX nano F2F an 2x RaspiB
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu ,fhem5.8, CCU2,
ECMD an AVR-NET-IO mit DAC u. ADC an Junkers Stetigregelung, Siemens LOGO!8, JeeLink uvm...

jmike

Hi Frank.

Ja, werde das Modul immer im ersten Post plegen (bis es ins SVN kommt falls erwünscht). Ist wohl gang und gäbe hier :)

lg
mike

franky08

#7
Joh, richtig :)

Zitat(bis es ins SVN kommt falls erwünscht)
Ich denke das es einige interessierte User gibt und das Modul schon ins SVN sollte.

VG
Frank
Debian Wheezy auf ZBOX nano/ Debian Bullseye auf 2.ter ZBOX nano F2F an 2x RaspiB
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu ,fhem5.8, CCU2,
ECMD an AVR-NET-IO mit DAC u. ADC an Junkers Stetigregelung, Siemens LOGO!8, JeeLink uvm...

Gerhard

FB6890LTE, cubietruck, orangePi, raspberry 2/3/4, HM/HMIP, shelly > 50, etc.

jmike

Hi.

Habe gerade einen Bug behoben wenn das Device disabled ist und einen weiteren Error-Catch eingebaut.

Ich teste das Modul auf 2 FHEM Installationen gleichzeitig und das RooWifi Modul ist eben offline gegangen (Ursache unbekannt).
Auf einer Installation ging das Device "offline" wie erwartet, die andere warf einen JSON Fehler. Vermutlich war der HTTP request unvollständig.

Damit er zukünftig nicht stolpert gibts ein "try-catch" für diese Randbedingung und einen neuen State "jsonError".

lg
mike

franky08

ZitatRooWifi Modul ist eben offline gegangen (Ursache unbekannt)

Passiert bei mir auch ab und zu. Das Modul hat Version 2.

VG
Frank
Debian Wheezy auf ZBOX nano/ Debian Bullseye auf 2.ter ZBOX nano F2F an 2x RaspiB
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu ,fhem5.8, CCU2,
ECMD an AVR-NET-IO mit DAC u. ADC an Junkers Stetigregelung, Siemens LOGO!8, JeeLink uvm...

daduke

ich hatte das früher auch immer wieder. Hab nun den reset-Taster abgelötet und seither ist es seit 5 Wochen permament am Netz...

-d
fhem auf pcengines apu, Philips Hue, MAX!, div. HomeMatic, Spark Core, panstamp, div. eigene Hardware

franky08

Eine kurze Frage zu dem Attr "leaveDock - leave the dock for a given distance", Angabe in cm oder m?

ZitatHab nun den reset-Taster abgelötet

Ich habe den "Bügel" vom Roomba in Verdacht, der liegt ja genau auf dem Button.

VG
Frank
Debian Wheezy auf ZBOX nano/ Debian Bullseye auf 2.ter ZBOX nano F2F an 2x RaspiB
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu ,fhem5.8, CCU2,
ECMD an AVR-NET-IO mit DAC u. ADC an Junkers Stetigregelung, Siemens LOGO!8, JeeLink uvm...

jmike

#13
Hi Frank.

Gute Frage, ich habe aus der Doku die "mm/s" übernommen (siehe erster Post).
ZitatMoves robot in reverse at $velocity in (mm/s).

Der Default Wert (100) fährt ca 20cm.  :o

Ich nehm es mal als doc-bug auf und versuche korrekte Werte zu ermitteln und die "Device Help"  entsprechend zu korrigieren/erweitern.

Zum offline-Thema: Bei mir ging es dann einfach wieder nachdem ich den "CLEAN" Knopf 1x gedrückt habe. Ich musste das Modul nicht neu konfigurieren, schliesse einen "echten" Reset daher aus (und das Modul ist bei mir eingebaut, da kommt an den Reset Knopf nix ran).

lg
mike

franky08

OT

ZitatIch musste das Modul nicht neu konfigurieren, schliesse einen "echten" Reset daher aus

Richtig, das Verhalten von meinem Modul war genau so, ich musste auch nichts neu konfigurieren, aufgefallen ist es mir nur weil die LED nicht mehr geblinkt hat und der Plot für den Akku abgerissen war.

VG
Frank
Debian Wheezy auf ZBOX nano/ Debian Bullseye auf 2.ter ZBOX nano F2F an 2x RaspiB
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu ,fhem5.8, CCU2,
ECMD an AVR-NET-IO mit DAC u. ADC an Junkers Stetigregelung, Siemens LOGO!8, JeeLink uvm...