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

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

Vorheriges Thema - Nächstes Thema

Mikka

Zitat von: abc2006 am 25 Oktober 2018, 16:42:21
PS: kann mir jemand helfen, wie ich bei einem *nicht* über update erhaltenen modul die commandref neu baue?

Evtl. so: cd /opt/fhem/
/usr/bin/perl contrib/commandref_join.pl
Habe es aber nicht probiert ... 8)

vuffiraa

Zitat von: abc2006 am 25 Oktober 2018, 16:42:21
Ähm.. hups.
Ich glaube ich habe in deinen Github jetzt meinen Teil der (ungeprüften) commandref gepostet. Kann das sein?
War das der richtige Weg?

Grüße,
Stephan


PS: kann mir jemand helfen, wie ich bei einem *nicht* über update erhaltenen modul die commandref neu baue?
Hallo Stephan,

Alles gut! Du hast nur einen Pull-Request in meinem Repository erzeugt. Das ist genau der richtige Weg. Ich schau mir die Änderungen an und kann sie dann in meiner nächsten Version übernehmen.

Bei der Commandref weiß ich auch nicht wirklich weiter, aber Mikka hatte da schon einen guten Vorschlag gemacht. Probier vielleicht mal, ob die ,,Device specific help" unten im Gerät hilft.

Gruß Vuffiraa
FHEM 5.8 auf Cubietruck, Raspi B+

Weinzierl KNX IP BAOS 770, Homematic, EnOcean

Schlimbo

#317
Hallo Zusammen,

habe das Modul etwas erweitert:
Für den NEATO D7 wird jetzt die "Multi Floor Plan Funktion" unterstützt.
Die No-Go-Linien (Boundaries) können jetzt auf verschieden Grundrisse angewandt werden.

Neue Readings:

  • floorplan_<floor plan>_id
    ID der "Persistent"-Map für den jeweiligen Floor Plan (diese Karte wird für MapCleaning verwendet; Boundaries werden auf diese Karte angewendet)
  • floorplan_<floor plan>_name
    Name der "Persistent"-Map für den jeweiligen Floor Plan
  • floorplan_<floor plan>_boundaries
    Aktuell eingestellte No-Go Bereiche (kann als Vorlage für das Attribut "boundaries" verwendet werden)

Neue set commands:
  • setBoundariesOnFloorplan_<floor plan> <name|{JSON String}>
    Setzt die angegebene Begrenzungslinien (No-Go Bereich) im entsprechenden Floor Plan.
    Als Parameter wird entweder ein Name angegeben (muss vorher im Attribut "boundaries" angelegt werden) oder alternativ direkt als JSON String übergeben. (Es können auch mehrere Namen, durch Komma getrennt, angegeben werden)
    Syntax Beschreibung unter: https://developers.neatorobotics.com/api/robot-remote-protocol/maps

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

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 "setBoundariesOnFloorplan_<floor plan>" verwendet. Es können auch mehrere Boundaries mit dem selben Namen gespeichert werden, ein "setBoundariesOnFloorplan_<floor plan> <name>" sendet alle Boundaries mit diesem Namen.

Die alten Readings (boundaries & map_persistent_id) werden nicht mehr benötigt und können gelöscht werden
deletereading <name> boundaries
deletereading <name> map_persistent_id


@vuffiraa: Habe auf Git hierzu gerade einen pull Request erstellt.
Würde mich freuen, wenn du es in denen Branch übernehmen würdest.

Gruß
Schlimbo

vuffiraa

Hallo,

Im Git habe ich eure Änderungen übernommen und dann Version 0.4.8 daraus gemacht.
Mein Perl (v5.18.2) hatte an 2 Stellen Probleme:
      if (defined($option) and ref($option) eq "HASH" ) {
        if (defined(%$option{reqId})){;
          $reqId = %$option{reqId};
        }
      }
...
        if (defined(%$cmdOption{reqId})){;
          $cmdReqId = %$cmdOption{reqId};
          $newReqId = "true" if ($reqId ne $cmdReqId);
        }
      }


Meine Alternativen:
      if (defined($option) and ref($option) eq "HASH" ) {
        if (defined($option->{reqId})) {
          $reqId = $option->{reqId};
        }
      }
...
      if (defined($cmdOption) and ref($cmdOption) eq "HASH" ) {
        if (defined($cmdOption->{reqId})) {
          $cmdReqId = $cmdOption->{reqId};
          $newReqId = "true" if ($reqId ne $cmdReqId);
        }
      }


Das sollte doch das gleiche Verhalten zeigen oder?

Ansonsten habe ich die Doku gleich noch um die neuen Funktionen ergänzt.

Schönen Abend
VuffiRaa
FHEM 5.8 auf Cubietruck, Raspi B+

Weinzierl KNX IP BAOS 770, Homematic, EnOcean

Schlimbo

Super, danke.
Zitat von: vuffiraa am 02 November 2018, 20:44:53
Das sollte doch das gleiche Verhalten zeigen oder?
Ja, so ist es sauberer.

Saranger

Hallo zusammen,

seit dem Update der Vorwerk App funktioniert der Befehl "send to base" nicht mehr. Man muss in der App immer erst Pause ankliken eh man "send to base" auswählen kann. Pause gibt es aber in dem Modul ja nicht, hat da jemand eine Idee?

vuffiraa

Zitat von: Saranger am 11 November 2018, 14:09:34
Hallo zusammen,

seit dem Update der Vorwerk App funktioniert der Befehl "send to base" nicht mehr. Man muss in der App immer erst Pause ankliken eh man "send to base" auswählen kann. Pause gibt es aber in dem Modul ja nicht, hat da jemand eine Idee?

Doch es gibt den Befehl Pause. Er ist aber nur auswählbar, wenn der Status den Befehl erlaubt. Also wenn der Bot, du hattest einen VR200?, läuft, sollte es auch Pause geben. Ansonsten würde mich von dieser Situation ein Log mit verbose 5 fürs Modul interessieren.

Gruß Vuffiraa
FHEM 5.8 auf Cubietruck, Raspi B+

Weinzierl KNX IP BAOS 770, Homematic, EnOcean

Saranger

Ja habe es gefunden. Ich muss ja den Befehl von Homematic an fehm übergeben. Aber es funktioniert nach dem Pause Signal Warte ich  fünf Sekunden u dann kommt der Befehl zurück zur Basis.

abc2006

Zitat von: vuffiraa am 25 Oktober 2018, 18:33:27
Hallo Stephan,

Alles gut! Du hast nur einen Pull-Request in meinem Repository erzeugt. Das ist genau der richtige Weg. Ich schau mir die Änderungen an und kann sie dann in meiner nächsten Version übernehmen.
Ich hab irgendwo ne Info bekommen, dass du die Commandref von mir übernnommen hättest... liege ich da richtig?

Weil ich mich mit Git noch nicht so auskenne: Wenn ich jetzt noch was ändere, kannst du das dann direkt übernehmen? Oder muss ich wieder so einen request erstellen?

Dann steht ja dem Checkin in FHEM nix mehr entgegen?

An der deutschen Übersetzung arbeite ich noch ...

Grüße,
Stephan
FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX

vuffiraa

Zitat von: abc2006 am 12 November 2018, 15:34:09
Ich hab irgendwo ne Info bekommen, dass du die Commandref von mir übernnommen hättest... liege ich da richtig?

Weil ich mich mit Git noch nicht so auskenne: Wenn ich jetzt noch was ändere, kannst du das dann direkt übernehmen? Oder muss ich wieder so einen request erstellen?

Dann steht ja dem Checkin in FHEM nix mehr entgegen?

An der deutschen Übersetzung arbeite ich noch ...

Grüße,
Stephan

Hallo Stephan,

du musst wieder so einen Request erstellen, damit ich die Änderungen bei mir übernehmen kann. Git unterstützt das aber ganz gut.

Vielen Dank für die Unterstützung und einen schönen Abend!
Vuffiraa
FHEM 5.8 auf Cubietruck, Raspi B+

Weinzierl KNX IP BAOS 770, Homematic, EnOcean

abc2006

Könntest du mal bitte testen, ob du den "Define"-Teil in deinem FHEM angezeigt bekommst?
Bei mir geht's nach der Einleitung direkt mit Get los, define ist nicht drin...

Grüße,
Stephan
FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX

JojoK

Hi,

erst mal vielen Dank für das letzte Update. Super, dass jetzt auch Multifloor unterstützt wird.

Ich habe nur folgendes Problem gerade. Beim setzen von "nextCleaningMode" crasht bei mir FHEM mit folgendem Error:

2018.11.18 16:20:23 2: BOTVAC set Henry nextCleaningMode eco
Can't use string ("Henry") as a HASH ref while "strict refs" in use at fhem.pl line 4428.


Weiß jemand Rat?

Gruß
JojoK

vuffiraa

Zitat von: JojoK am 18 November 2018, 16:28:10
Hi,

erst mal vielen Dank für das letzte Update. Super, dass jetzt auch Multifloor unterstützt wird.

Ich habe nur folgendes Problem gerade. Beim setzen von "nextCleaningMode" crasht bei mir FHEM mit folgendem Error:

2018.11.18 16:20:23 2: BOTVAC set Henry nextCleaningMode eco
Can't use string ("Henry") as a HASH ref while "strict refs" in use at fhem.pl line 4428.


Weiß jemand Rat?

Gruß
JojoK

Da hat sich doch tatsächlich ein Fehler eingeschlichen. Der ist aber mit der Version 0.4.9 behoben  :)

Schönen Abend
VuffiRaa
FHEM 5.8 auf Cubietruck, Raspi B+

Weinzierl KNX IP BAOS 770, Homematic, EnOcean

vuffiraa

Auch noch mal für alle anderen, ich habe eine neue Version 0.4.9 ins Git hochgeladen.
Änderungen sind:

  • die Setter für nextCleaning* funktionieren jetzt
  • die Cmdref ist in einer eigenen Datei ausgelagert. Damit können wir sie unabhängig von der Modulversion erweitern. Vielen Dank an Stephan für die Zuarbeit  :)
  • die aktuelle Version der Cmdref ist natürlich auch im Modul

Ansonsten hätte ich noch eine Frage in die Runde. Ich stelle das Modul gerade intern komplett um, damit es als eigenes Perl-Package läuft. Da gibt es im Entwicklerbereich im Fhem-Forum eine Diskussion. Außerdem gibt es ja jetzt eine Cmdref und einer offiziellen Integration in Fhem steht nix mehr im Weg. Und jetzt die Frage, ich finde den Modulnamen BOTVAC etwas sperrig und würde im Zuge des Umbaus und er Veröffentlichung auf Botvac umstellen. Was haltet ihr davon? Oder gibt es vielleicht auch komplett andere Vorschläge, um die beiden Linien Neato und Vorwerk einzufangen?

Einen schönen Abend
VuffiRaa
FHEM 5.8 auf Cubietruck, Raspi B+

Weinzierl KNX IP BAOS 770, Homematic, EnOcean

JojoK

Super, vielen Dank für die schnelle Reaktion.

Mit der neuen Version geht es wieder.  :)