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

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

Vorheriges Thema - Nächstes Thema

Schlimbo

#525
Perl 5.24.1
Neato D7
FVERSION   70_BOTVAC.pm:?/2019-04-21 UNSTABLE
2019-04-21 13:27:42   isCharging      0
2019-04-21 13:27:42   isDocked        1

the ratman

#526
also ich hab nen neato botvac d7, niegelnagelneu

verbose 5, stautsrequest des bots2019.04.21 13:33:00 1: logfile wurde gelöscht
2019.04.21 13:33:08 5: BOTVAC tatortreiniger: called function Set()
2019.04.21 13:33:08 2: BOTVAC set tatortreiniger statusRequest
2019.04.21 13:33:08 4: BOTVAC tatortreiniger: Read password from file
2019.04.21 13:33:08 5: BOTVAC tatortreiniger: called function SendCommand()
2019.04.21 13:33:08 4: BOTVAC tatortreiniger: REQ messages/getRobotState
2019.04.21 13:33:08 4: BOTVAC tatortreiniger: successors 0: messages,getSchedule
2019.04.21 13:33:08 5: BOTVAC tatortreiniger: POST https://nucleo.neatocloud.com:4443/vendors/neato/robots/GPC04519-F8369B28420D/messages ({"reqId":"0","cmd":"getRobotState"})
2019.04.21 13:33:08 5: BOTVAC tatortreiniger: header Accept: application/vnd.neato.nucleo.v1
Content-Type: application/json
Date: Sun, 21 Apr 2019 11:33:08 GMT
Authorization: NEATOAPP xxx
2019.04.21 13:33:08 5: BOTVAC tatortreiniger: called function Set()
2019.04.21 13:33:08 5: BOTVAC tatortreiniger: called function Set()
2019.04.21 13:33:08 5: BOTVAC tatortreiniger: called function Get()
2019.04.21 13:33:09 5: BOTVAC tatortreiniger: called function Set()
2019.04.21 13:33:09 5: BOTVAC tatortreiniger: called function ReceiveCommand() rc: HASH(0x557c893628c0) err:  data: {"version":1,"reqId":"0","result":"ok","data": {},"error":null,"alert":null,"state":1,"action":0,"cleaning": {"category":4,"mode":1,"modifier":1,"navigationMode":1,"mapId":"","spotWidth":0,"spotHeight":0},"details": {"isCharging":false,"isDocked":true,"isScheduleEnabled":false,"dockHasBeenSeen":false,"charge":98},"availableCommands": {"start":true,"stop":false,"pause":false,"resume":false,"goToBase":false},"availableServices": {"findMe":"basic-1","generalInfo":"basic-1","houseCleaning":"basic-4","IECTest":"advanced-1","logCopy":"basic-1","manualCleaning":"basic-1","maps":"basic-2","preferences":"basic-1","schedule":"basic-2","softwareUpdate":"basic-1","spotCleaning":"basic-3","wifi":"basic-1"},"meta": {"modelName":"BotVacD7Connected","firmware":"4.4.0-72"}}
2019.04.21 13:33:09 4: BOTVAC tatortreiniger: RCV messages/getRobotState
2019.04.21 13:33:09 4: BOTVAC tatortreiniger: successors 0: messages,getSchedule
2019.04.21 13:33:09 4: BOTVAC tatortreiniger: RES messages/getRobotState - {"version":1,"reqId":"0","result":"ok","data": {},"error":null,"alert":null,"state":1,"action":0,"cleaning": {"category":4,"mode":1,"modifier":1,"navigationMode":1,"mapId":"","spotWidth":0,"spotHeight":0},"details": {"isCharging":false,"isDocked":true,"isScheduleEnabled":false,"dockHasBeenSeen":false,"charge":98},"availableCommands": {"start":true,"stop":false,"pause":false,"resume":false,"goToBase":false},"availableServices": {"findMe":"basic-1","generalInfo":"basic-1","houseCleaning":"basic-4","IECTest":"advanced-1","logCopy":"basic-1","manualCleaning":"basic-1","maps":"basic-2","preferences":"basic-1","schedule":"basic-2","softwareUpdate":"basic-1","spotCleaning":"basic-3","wifi":"basic-1"},"meta": {"modelName":"BotVacD7Connected","firmware":"4.4.0-72"}}
2019.04.21 13:33:09 4: BOTVAC tatortreiniger: Read password from file
2019.04.21 13:33:09 5: BOTVAC tatortreiniger: called function SendCommand()
2019.04.21 13:33:09 4: BOTVAC tatortreiniger: REQ messages/getSchedule
2019.04.21 13:33:09 5: BOTVAC tatortreiniger: POST https://nucleo.neatocloud.com:4443/vendors/neato/robots/GPC04519-F8369B28420D/messages ({"reqId":"0","cmd":"getScheduleEvents"})
2019.04.21 13:33:09 5: BOTVAC tatortreiniger: header Accept: application/vnd.neato.nucleo.v1
Content-Type: application/json
Date: Sun, 21 Apr 2019 11:33:09 GMT
Authorization: NEATOAPP xxx
2019.04.21 13:33:10 5: BOTVAC tatortreiniger: called function ReceiveCommand() rc: HASH(0x557c888e50b0) err:  data: {"version":1,"reqId":"0","result":"ok","data": {"enabled":false,"events": []}}
2019.04.21 13:33:10 4: BOTVAC tatortreiniger: RCV messages/getScheduleEvents
2019.04.21 13:33:10 4: BOTVAC tatortreiniger: RES messages/getScheduleEvents - {"version":1,"reqId":"0","result":"ok","data": {"enabled":false,"events": []}}



lach:
"isCharging":false,
isCharging 0

aber vielleicht is das ja morgen mit der neuen version auch weg?
→do↑p!dnʇs↓shit←

Schlimbo

Sauger: called function ReceiveCommand() rc: HASH(0x560f3e030be8) err:  data: {"version":1,"reqId":"0","result":"ok","data": {},"error":null,"alert":null,"state":1,"action":0,"cleaning": {"category":4,"mode":2,"modifier":1,"navigationMode":1,"mapId":"","spotWidth":0,"spotHeight":0},"details": {"isCharging":false,"isDocked":true,"isScheduleEnabled":false,"dockHasBeenSeen":false,"charge":96},"availableCommands": {"start":true,"stop":false,"pause":false,"resume":false,"goToBase":false},"availableServices": {"findMe":"basic-1","generalInfo":"basic-1","houseCleaning":"basic-4","IECTest":"advanced-1","logCopy":"basic-1","manualCleaning":"basic-1","maps":"basic-2","preferences":"basic-1","schedule":"basic-2","softwareUpdate":"basic-1","spotCleaning":"basic-3","wifi":"basic-1"},"meta": {"modelName":"BotVacD7Connected","firmware":"4.4.0-72"}}
Vom D7 kommt bei mir auch true und false, in den Readings erscheint aber 0 und 1.

Kann das evtl an decode_json liegen?

vuffiraa

Zitat von: Schlimbo am 21 April 2019, 14:00:00
Sauger: called function ReceiveCommand() rc: HASH(0x560f3e030be8) err:  data: {"version":1,"reqId":"0","result":"ok","data": {},"error":null,"alert":null,"state":1,"action":0,"cleaning": {"category":4,"mode":2,"modifier":1,"navigationMode":1,"mapId":"","spotWidth":0,"spotHeight":0},"details": {"isCharging":false,"isDocked":true,"isScheduleEnabled":false,"dockHasBeenSeen":false,"charge":96},"availableCommands": {"start":true,"stop":false,"pause":false,"resume":false,"goToBase":false},"availableServices": {"findMe":"basic-1","generalInfo":"basic-1","houseCleaning":"basic-4","IECTest":"advanced-1","logCopy":"basic-1","manualCleaning":"basic-1","maps":"basic-2","preferences":"basic-1","schedule":"basic-2","softwareUpdate":"basic-1","spotCleaning":"basic-3","wifi":"basic-1"},"meta": {"modelName":"BotVacD7Connected","firmware":"4.4.0-72"}}
Vom D7 kommt bei mir auch true und false, in den Readings erscheint aber 0 und 1.

Kann das evtl an decode_json liegen?

Soweit sehe ich das bei mir auch. Ich bin mir auch fast sicher, dass das schon immer so war.
decode_json kommt aus dem Paket libjson-perl. Meine Version des Paketes ist 2.90-1. Vielleicht hat sich da etwas geändert...
FHEM 5.8 auf Cubietruck, Raspi B+

Weinzierl KNX IP BAOS 770, Homematic, EnOcean

Schlimbo

 Bei mir ist es 2.90:
root@bf73063c928a:/opt/fhem# cpan -D JSON
Loading internal null logger. Install Log::Log4perl for logging messages
Reading '/root/.cpan/Metadata'
  Database was generated on Sun, 21 Apr 2019 10:17:03 GMT
JSON
-------------------------------------------------------------------------
        (no description)
        I/IS/ISHIGAKI/JSON-4.02.tar.gz
        /usr/share/perl5/JSON.pm
        Installed: 2.90
        CPAN:      4.02  Not up to date
        Kenichi Ishigaki (ISHIGAKI)
        ishigaki@cpan.org

the ratman

#530
wegen true und false (nach die alte version von gestern):

hab meinen bot jetzt n bissi rumfahren lassen
mal wird ein und das selbe reading true, mal wirds 1 - ein muster kann ich allerdings auch nach ca. 20 testfahrten nicht erkennen

sagts: wärs nicht am einfachsten, im modul 0/1 false/true abzufangen und was eigenes raus zu schreiben?


NACHTRAG:

hab mal doch das module aus der svn probiert.
rennt, aber das 0/1-problem bleibt
derzeit nur bei "dockHasBeenSeen   0", die restlichen readings sind nun auch bei mir ture/false (soweit ich das mal auf die schnelle beurteilen kann)

NACHTRAG 2:
hab mir mal die stats angesehen - wenn die jetzt html mit table hätten ... *träum*
ich denke aber, die letzten beiden zeilen sind so nicht gewollt, weil ich hab nen besseren bot!Manufacturer Specification
Vorwerk VR220(VR300), battery 84 Wh, eco (90 min, 120 qm, power 65 W), turbo (60 min, 90 qm, power 85 W)
→do↑p!dnʇs↓shit←

Ellert

Zitat von: the ratman am 21 April 2019, 16:04:23
wegen true und false (nach die alte version von gestern):

hab meinen bot jetzt n bissi rumfahren lassen
mal wird ein und das selbe reading true, mal wirds 1 - ein muster kann ich allerdings auch nach ca. 20 testfahrten nicht erkennen

sagts: wärs nicht am einfachsten, im modul 0/1 false/true abzufangen und was eigenes raus zu schreiben?


NACHTRAG:

hab mal doch das module aus der svn probiert.
rennt, aber das 0/1-problem bleibt
derzeit nur bei "dockHasBeenSeen   0", die restlichen readings sind nun auch bei mir ture/false (soweit ich das mal auf die schnelle beurteilen kann)

NACHTRAG 2:
hab mir mal die stats angesehen - wenn die jetzt html mit table hätten ... *träum*
ich denke aber, die letzten beiden zeilen sind so nicht gewollt, weil ich hab nen besseren bot!Manufacturer Specification
Vorwerk VR220(VR300), battery 84 Wh, eco (90 min, 120 qm, power 65 W), turbo (60 min, 90 qm, power 85 W)

Ich könnte mir vorstellen, wenn Du die Spezifikation des Herstellers deines Staubsaugers postest, könnten sie dort auch erscheinen, aber Neato hält sich da bedekt. Ich habe auf der Website und in deren Bedienungsanleitung nichts gefunden. Wenn man der Abbildung des Akkus glaubt, sind für den D7 als Hochleistungsakkus 64 Wh verbaut. Ich hab noch 3 Wochen Rückgaberecht, überzeuge mich ;)

Ellert

Zitat von: vuffiraa am 21 April 2019, 13:23:08
Also ich habe bei mir Perl in den Versionen 5.18.2 und 5.22.1 zu laufen.
Kann es sein, das ihr beide Vorwerks habe und Schlimbo und ich Neatos?
Könnte ich da mal ein verbose5-Log von der Statusabfrage sehen?
Zitat2019.04.21 16:40:06.269 5: BOTVAC VR300: called function ReceiveCommand() rc: HASH(0x40202b8) err:  data: {"version":1,"reqId":"0","result":"ok","data": {},"error":null,"alert":null,"state":1,"action":0,"cleaning": {"category":2,"mode":1,"modifier":1,"navigationMode":1,"spotWidth":0,"spotHeight":0},"details": {"isCharging":false,"isDocked":false,"isScheduleEnabled":false,"dockHasBeenSeen":false,"charge":88},"availableCommands": {"start":true,"stop":false,"pause":false,"resume":false,"goToBase":false},"availableServices": {"findMe":"basic-1","generalInfo":"basic-1","houseCleaning":"basic-3","IECTest":"advanced-1","logCopy":"basic-1","manualCleaning":"basic-1","maps":"advanced-1","preferences":"basic-1","schedule":"basic-1","softwareUpdate":"basic-1","spotCleaning":"basic-1","wifi":"basic-1"},"meta": {"modelName":"VR220","firmware":"4.2.5-166"}}

vuffiraa

Also die Statistik in HTML werde ich mal angehen.

Bei true/false glaube ich fast der Status unterscheidet sich manchmal, z.B. "isCharging":false zu "isCharging":"false" im JSON. Wenn mir das einer nachweisen kann, werde ich es im Modul abfangen. Noch zur Erklärung, der Status wird bei einigen Befehlen als Antwort geliefert, als nicht nur bei der direkten Abfrage. Daher könnte ich mir schon vorstellen, dass das nicht ganz konsistent ist. Also mal ein Log über die 20 Testfahrten machen ;-)
FHEM 5.8 auf Cubietruck, Raspi B+

Weinzierl KNX IP BAOS 770, Homematic, EnOcean

the ratman

#534
Zitat..., wenn Du die Spezifikation des Herstellers deines Staubsaugers postest,...
ha, eh klar *g*. ja, ich hab den besten staubsaugerrobotter der welt - immerhin sind die akkus so derartig modern, dass sie noch nicht mal gebaut wurden. das reading beweist es: "batteryManufacturingDate   2035-10-13"
aber eventuell könnte man daten hier raus saugen? ich hab mich aber noch ned getraut: https://www.roboter-forum.com/filebase/index.php?file/26-neato-control-software-f%C3%BCr-neato-und-vorwerk-vr/
ZitatAlso mal ein Log über die 20 Testfahrten machen ;-)
du willst meinen tot? DAS ist nicht waf-freundlich *g*
→do↑p!dnʇs↓shit←

vuffiraa

Zitat von: the ratman am 21 April 2019, 19:10:22
ha, eh klar *g*. ja, ich hab den besten staubsaugerrobotter der welt - immerhin sind die akkus so derartig modern, dass sie noch nicht mal gebaut wurden. das reading beweist es: "batteryManufacturingDate   2035-10-13"
aber eventuell könnte man daten hier raus saugen? ich hab mich aber noch ned getraut: https://www.roboter-forum.com/filebase/index.php?file/26-neato-control-software-f%C3%BCr-neato-und-vorwerk-vr/du willst meinen tot? DAS ist nicht waf-freundlich *g*

Bei der Spezifikation habe ich mal alles ergänzt, was ich gefunden habe. Das ist bei Neato aber wirklich bescheiden. Ich würde ja schreiben, es kann ja jeder mal seinen Sauger aufschrauben und die Daten direkt vom Akku abschreiben. Das ist jetzt nicht ernst gemeint, aber vielleicht hat jemand durch Zufall das Gerät offen.

Wegen der Readings habe ich mal meine Datenbank durchsucht, ich habe für alle is*-Readings nur die Werte 0 und 1.

FHEM 5.8 auf Cubietruck, Raspi B+

Weinzierl KNX IP BAOS 770, Homematic, EnOcean

the ratman

also mit den readings mußt echt was machen. ich hab teilweise 0 und true in readings. wenn wenigstens alle immer gleich wären, wärs mir echt egal.

du erinnerst dich? gestern hab ich alle readings angepasst gehabt, weil bis auf eines alle true und false waren (mit der svn-version  deines moduls). einer der beiden werte war gestern 100% sicher true/false, der andere halb/halb.
heute schauts nach dem update wie im anhang aus 2 mal 0 (dockHasBeenSeen und isCharging) - und ich nehm mal an, du hast seit gestern nachmittag in deinem modul nicht viel umgestellt, oder?

das dumme is, dass ich das auch teilweise in doif's verwende (wav-freundliche ansagen, akkukontrolle vor der großreinigung, usw.) die dinger spinnen mir dann natürlich auch.
→do↑p!dnʇs↓shit←

Ellert

@the ratman: Setz ein userReadings drüber
laedEs {(ReadingsVal($name,"isCharging","weiss nicht") eq "true" or ReadingsVal($name,"isCharging","weiss nicht") == 1)?"ja":"nein"}

@vuffiraa: Die Statistik sieht jetzt eindeutig besser aus.

the ratman

#538
derzeit lös ichs in den doif's selber - ähnlich deinem userreading
ich wünsch uns nur, dass nicht all zu viele leute nen neato kaufen, sonst wird ein solches modulverhalten für viele, viele lange threads mit immer dem selben inhalt sorgen *fg*
habs aber jetzt auch nach deinen userreadings gmacht - is ja doch das einfachere.


btw - die tabelle wird echt schon lieb. wenn die jetzt noch per weblink oder so abrufbar wäre, zünd ich für dich ein kerzerl an *g*.
weil dann krieg ich den krempel auch in meinen floorplan rein. mit get wird das dort nix.
und ohne den angaben zu den bots unten wärs sicher auch lustiger, sonst muß ich immer die frage "was haben wir den eigentlich für einen?" beantworten ...
sag: gibst du bei der tabelle farben vor? ich krieg dein even/odd oder was das ist nicht weg per css. das ist designtechnisch noch verbesserungswürdig *g* sogar meine css werden überschrieben ... siehe anhang - mit deiner tabelle und ohne
→do↑p!dnʇs↓shit←

vuffiraa

Das mit stylesheets war mir auch schon unangenehm aufgefallen, da kann ich heute Abend noch durch eine neue Version Abhilfe schaffen.

Mal sehen, ob ich dabei von deinen Zusatzaufgaben gleich noch welche erledigen kann  ;)
FHEM 5.8 auf Cubietruck, Raspi B+

Weinzierl KNX IP BAOS 770, Homematic, EnOcean