Neues Modul: BOTVAC (für Neato BotVac Connected)

Begonnen von vuffiraa, 02 April 2016, 22:12:29

Vorheriges Thema - Nächstes Thema

Schlimbo

#240
Hallo zusammen,
kurze Rückmeldung zum D7 und der damit eingeführten Karten Reinigung und noGo Bereichen:
Habe das Modul jetzt um diese Funktionen erweitert, werde es noch ein paar Tage bei mir testen und dann hier zur Verfügung stellen.
Es ist dann möglich verschiedene No-Go Bereiche in einem Attribut zu hinterlegen und dann vor einer Reinigung zu setzen.
Bin gerade noch am testen, in wie weit es damit möglich ist, über die No-Go Linien den Bereich der Wohnung so einzuschränken, dass nur ein schmaler Weg von der Ladestation zu den unterschiedlichen Räumen freigegeben wird, somit könnte man mit unterschiedlichen No-Go Einstellungen den Sauger direkt in einen vorgegebenen Raum schicken (siehe Bild im Anhang).
Gruß Schlimbo

Nachtrag:
Über die No-Go Linien in einen bestimmten Raum zu Navigieren klappte bei mir leider nicht wie erhofft.
Bei einem zu schmalen Kanal kommt er nicht klar und bringt ständig die Meldung "Ich stecke fest".
Bei einem breiten Kanal, reinigt er viel zu umständlich erst den Kanal ab (im zickzack, quer zum Kanal), bevor er dann irgendwann im Zimmer ankommt.

vuffiraa

Zitat von: Schlimbo am 29 April 2018, 09:13:02
Hallo zusammen,
kurze Rückmeldung zum D7 und der damit eingeführten Karten Reinigung und noGo Bereichen:
Habe das Modul jetzt um diese Funktionen erweitert, werde es noch ein paar Tage bei mir testen und dann hier zur Verfügung stellen.
Es ist dann möglich verschiedene No-Go Bereiche in einem Attribut zu hinterlegen und dann vor einer Reinigung zu setzen.
Bin gerade noch am testen, in wie weit es damit möglich ist, über die No-Go Linien den Bereich der Wohnung so einzuschränken, dass nur ein schmaler Weg von der Ladestation zu den unterschiedlichen Räumen freigegeben wird, somit könnte man mit unterschiedlichen No-Go Einstellungen den Sauger direkt in einen vorgegebenen Raum schicken (siehe Bild im Anhang).
Gruß Schlimbo

Cool  :)
Ich selber habe eine Version in der Entwicklung, in der ich versuche, die Unterschiede zwischen den Modellen besser einzufangen. Außerdem verschwindet dann das Passwort aus dem Modul und unterschiedliche Intervalle werden möglich sein. An den No-Go Linien habe ich noch nicht gearbeitet, da fehlt mir der passende Neato...
Willst du im Github einen eigenen Branch haben? Wenn deine Erweiterung dann funktioniert, würde ich sie in den Hauptzweig mergen.

Gruß Vuffiraa
FHEM 5.8 auf Cubietruck, Raspi B+

Weinzierl KNX IP BAOS 770, Homematic, EnOcean

Schlimbo

#242
Hallo Vuffiraa.
das sind ja gute Neuigkeiten. :)
Mit Git habe ich mich noch nicht so beschäftigt, muss ich mich erst mal etwas einlesen.

Im Anhang mal meine Version, würde mich freuen wenn du dies in den Modul mit aufnehmen könntest.
Edit: Version ist mittlerweile im Master Branch übernommen.

Hier eine Auflistung meiner Änderungen:

Erweiterung des Kommandos "startCleaning": Als Parameter kann die Cleaning category (map|house) angegeben werden (Default: house)
set <name> startCleaning [map|house]

Folgende Redings haben jetzt einen Text anstelle des Zahlencodes:

  • event<Nr>day (Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday)
  • cleanCategory (manual|house|spot|map)
  • cleanMode (eco|turbo)
  • cleanModifier (normal|double)

Die Textliste "GetActionText" wurde erweitert.

Das reading "error" wird jetzt geleert, wenn kein Fehler mehr ansteht.

Neue "set" Befehle:

  • dismissCurrentAlert
    Zurücksetzen einer anstehenden Warnmeldung

  • findMe
    Startet eine Melodie (findMe Sound) am Roboter

  • statusRequest
    Holt den aktuellen Status vom Roboter

  • setBoundaries <name|{JSON String}>
    Setzt die angegebene Begrenzungslinien (No-Go Bereich).
    Als Parameter wird entweder ein Name angegeben (muss vorher im Attribut "boundaries" angelegt werden) oder alternativ direkt als JSON String übergeben.
    Syntax Beschreibung unter: https://developers.neatorobotics.com/api/robot-remote-protocol/maps

    z.B.
    set <name> setBoundaries Bad
    set <name> setBoundaries {"type":"polyline","vertices":[[0.710,0.6217],[0.710,0.6923]],"name":"Bad","color":"#E54B1C","enabled":true}

Neue Readings:

  • boundaries
    Aktuell eingestellte No-Go Bereiche (kann als Vorlage für das Attribut "boundaries" verwendet werden)
  • alert
    Aktuell anstehende Warnmeldung
  • cleanNavigationMode
    Navigation Mode, der bei der letzten Reinigen verwendet wurde (normal|extra care|deep)
  • map_status
    Status der aktellen Karte (complete|incomplete|canceled)
  • map_persistent_id
    ID der letzten "Persistent"-Map (diese Karte wird für MapCleaning verwendet; Boundaries werden auf diese Karte angewendet)
  • event<Nr>mode
    Reinigungs Modus für Zeitprogramm (eco|turbo)

Das Reading "cleanCategorie" habe ich in "cleanCategory" umbenannt.
Das Reading "version" habe ich entfernt da das sowieso immer auf 1 steht (aus API Doku: "The current version of the protocol. Only 1 is supported")

Neue Attribute:

  • boundaries
    Leerzeichen getrennte Boundaries Einträge im JSON Format:
    z.B.
    {"type":"polyline","vertices":[[0.710,0.6217],[0.710,0.6923]],"name":"Bad","color":"#E54B1C","enabled":true}
    {"type":"polyline","vertices":[[0.7139,0.4101],[0.7135,0.4282],[0.4326,0.3322],[0.4326,0.2533],[0.3931,0.2533],[0.3931,0.3426],[0.7452,0.4637],[0.7617,0.4196]],"name":"Kueche","color":"#000000","enabled":true}
    Syntax Beschreibung unter: https://developers.neatorobotics.com/api/robot-remote-protocol/maps
    Der Wert für Parameter "name" wird als setListe für "setBoundaries" verwendet. Es können auch mehrere Boundaries mit dem selben Namen gespeichert werden, ein "setBoundaries <name>" sendet alle Boundaries mit diesem Namen.

Wichtig:
Beim Senden der Parametern hatte bei dir das Komma zwischen den Parametern gefehlt, dass hatte den D7 nicht gefallen und er hat den Befehl nicht angenommen.
Habe es deshalb so abgeändert:
      if (defined($params) and ref($params) eq "HASH") {
        $data .= ",\"params\":{";
        foreach( keys %$params ) {

          $data .= "\"$_\":$params->{$_},";
        }
        my $tmp = chop($data);  #remove last ","
        $data .= "}";
      }


Für Fragen und Anregungen stehe ich natürlich gerne zur Verfügung.

Gruß
Schlimbo

vuffiraa

Hallo Schlimbo,

ich kann deine Erweiterungen leider wegen meiner alten Hardware nicht alle testen, aber sonst sieht es ganz gut aus.
Ich habe deine Version ins Git übernommen. Es gibt jetzt einen extra Zweig "d7". Wenn ich mit meiner Version fertig bin, übernehme ich deine Änderungen in den Hauptzweig.

Gruß Vuffiraa
FHEM 5.8 auf Cubietruck, Raspi B+

Weinzierl KNX IP BAOS 770, Homematic, EnOcean

Schlimbo

Hallo Vuffiraa,
wenn ich in der D7 Version noch Änderungen mache, kann ich das irgendwie direkt ins Git laden, oder soll ich die Datei hier wieder anhängen?
Gruß Schlimbo

vuffiraa

Zitat von: Schlimbo am 09 Mai 2018, 21:28:25
Hallo Vuffiraa,
wenn ich in der D7 Version noch Änderungen mache, kann ich das irgendwie direkt ins Git laden, oder soll ich die Datei hier wieder anhängen?
Gruß Schlimbo

Hallo Schlimbo,

ja, dafür ist der Zweig "d7" da. Dort solltest du deine Version weiterentwickeln können. Wenn du da Probleme hast, kannst du mir die Datei auch gerne schicken, und ich lade sie dann ins Git.

Gruß Vuffiraa
FHEM 5.8 auf Cubietruck, Raspi B+

Weinzierl KNX IP BAOS 770, Homematic, EnOcean

Schlimbo

Okay, habe meine Änderung gerade eingecheckt, hoffe das passt so, schau es dir bitte mal an.

vuffiraa

Zitat von: Schlimbo am 09 Mai 2018, 23:31:30
Okay, habe meine Änderung gerade eingecheckt, hoffe das passt so, schau es dir bitte mal an.

Passt, hab es in den Zweig d7 übernommen.
FHEM 5.8 auf Cubietruck, Raspi B+

Weinzierl KNX IP BAOS 770, Homematic, EnOcean

vuffiraa

Hallo,

ich habe eine neue Version 0.3.0 ins Git hochgeladen. Zur Zeit ist das eine Parallelentwickung zu der Version von Schlimbo. Mein Plan ist es, die Änderungen beider Versionen so schnell wie möglich wieder zu vereinen.

Neuerungen der Version 0.3.0


  • Das Passwort wird in Fhem gespeichert. Somit ergibt sich:

    • define <name> BOTVAC <email> [<vendor>] [<poll-interval>]
    • set <name> password <password>
    • Das Passwort muss natürlich nur einmal gesetzt werden. Falls es in der Definition noch vorkommt, wird es daraus übernommen und kann dann dort entfernt werden.
  • Geänderte Readings

    • Die srv_*-Readings sind in ein Internal überführt, da passen diese Infos besser.
    • Der Präfix clean wurde in cleaning umbenannt.
    • Aufräumen per
      Zitatdeletereading <name> srv_.*
      deletereading <name> clean[MSC].*
  • Neue Attribute

    • actionInterval - Poll-Interval für den aktiven Betrieb (Busy/Paused)
    • cleaningMode - wird bei Starten der nächsten Reinigung verwendet: eco,turbo
    • cleaningModifier - wird bei Starten der nächsten Reinigung verwendet: normal,double
    • cleaningNavigationMode - wird bei Starten der nächsten Reinigung verwendet: normal,extra care,deep
    • cleaningSpotWidth - wird bei Starten der nächsten Reinigung verwendet: 100,200,300,400
    • cleaningSpotHeight - wird bei Starten der nächsten Reinigung verwendet: 100,200,300,400
    • Die Attribute werden zum Saugertyp passend angeboten. Dadurch sind die Startbefehle für die Reinigung parameterlos. Einzige Ausnahme beim D7 ist set <name> startCleaning <house|map>
    • Wenn die cleaning-Attribute nicht definiert sind, werden die Werte der letzten Reinigung aus dem Reading genommen.

Tests sind willkommen, da ich das nicht für alle Typen testen kann.
@Schlimbo: Hast du noch Änderungen für deine Version? Ansonsten würde ich deinen Zweig wieder in den Master-Zweig überführen.

Gruß Vuffiraa
FHEM 5.8 auf Cubietruck, Raspi B+

Weinzierl KNX IP BAOS 770, Homematic, EnOcean

Schlimbo

Vielen dank für die neuen Features :)

Zitat von: vuffiraa am 13 Mai 2018, 21:18:38
@Schlimbo: Hast du noch Änderungen für deine Version? Ansonsten würde ich deinen Zweig wieder in den Master-Zweig überführen.
Nein, habe momentan keine weiteren Änderungen und freue mich schon auf's testen der der vereinten Version.

vuffiraa

Hallo,

Version 0.4.0 im Git ist die zusammengeführte Version der Module von Schlimbo und mir. Damit sollte alles wieder vereinheitlicht sein.

Gruß Vuffiraa
FHEM 5.8 auf Cubietruck, Raspi B+

Weinzierl KNX IP BAOS 770, Homematic, EnOcean

Fixel2012

Vielleicht eine nervige Frage, aber wie sieht es denn aus, dass Modul mal als offizielles Fhem Modul anzubieten?  :)

Was fehlt dafür noch? Stabil laufen tut es ja!
Fhem 5.8 auf Raspi 3, HMLAN und 868MHz CUL mit einigen Komponenten, Z-Wave Rollladenaktoren, Tablet UI, 433 MHz CUL mit Baumarktsteckdosen und Temp Sensoren, Amazon Echo, Echo Dot, 2x SONOS  play1, 1x SONOS Connect AMP,  presence, HUE, Lightify

vuffiraa

Zitat von: Fixel2012 am 18 Mai 2018, 11:02:11
Vielleicht eine nervige Frage, aber wie sieht es denn aus, dass Modul mal als offizielles Fhem Modul anzubieten?  :)

Was fehlt dafür noch? Stabil laufen tut es ja!

Naja, das Übliche, die Doku ist etwas dünn  ;)
Sollte ich aber mal angehen, da ich auch gerade wieder einen guten Überblick habe, wie das Modul tickt.
FHEM 5.8 auf Cubietruck, Raspi B+

Weinzierl KNX IP BAOS 770, Homematic, EnOcean

iamandy

Von mir kommt auch ein: Läuft total stabil (vr200) und als offizielles Modul wäre es ganz wunderbar.  ;)

Schlimbo

#254
Hallo vuffiraa,

Vielen Danke für die neue Version.
Mir ist aufgefallen, dass die neue Funktion "setDevAttrList", die Attribute "disable,actionInterval,boundaries,$readingFnAttributes" überschreibt.

Desweiteren stimmt die Uhrzeit im Reading "map_date" wieder nicht.
Da die API "map_date" mit "Greenwich Mean Time" ausgibt, hatte ich in meiner Version zum umrechnen auf die Lokale Zeit "FmtDateTime(str2time($map->{generated_at}))" eingefügt.
Mit der neuen Version bekomme ich aber wieder die GMT Zeit: Hatte heute um 15:14 eine beendete Reinigung, das Reading "map_date" zeigt mir aber "2018-05-18 13:14:21" an.

Gruß
Schlimbo

Edit: Und das "Eco" im webCmd wird jetzt nicht mehr benötigt  ;)