Modul für Irobot Roomba 980

Begonnen von kukamee, 22 Februar 2017, 02:34:53

Vorheriges Thema - Nächstes Thema

kukamee

Hi Leute,

da ich es immer häufiger lese, dass jemand auf der Suche nach einem Modul für den Irobot Roomba 980 ist, möchte ich hier mal die Library dorita980 ins spiel bringen.
https://www.npmjs.com/package/dorita980

Kenne mich leider nicht aus und kann genau so wenig programmieren...
Aber evtl. ist das eine Grundlage für ein neues Modul bzw. kann jemand damit etwas anfangen.
Würde mich jedenfalls sehr über ein Modul für den 966 oder 980er freuen  ;)


Danke und Viele Grüße
Kukamee

Markus-L

Hallo,
ich interessiere mich ebenfalls dafür und habe auch schon angefangen damit rum zu spielen.

Das größte Problem wird sein, dass ich von Perl ebenfalls nicht allzuviel Ahnung habe :-)
(von JavaScript ebenfalls nicht - nur so am Rande) :o

Mein Lieblingsfeature ist hierbei natürlich das zeichnen einer Map...  ;D

Was bisher funktioniert:
Ich habe es geschafft NodeJs auch für den fhem Benutzer (raspi umgebung) in einer anständigen Version zu installieren und über die fhem weboberfläche ein nodejs script aufzurufen, dass die aktuelle Position in mein Hauptlogfile schreibt.

=> Damit könnte man relativ einfach die kontroller über den Roomba übernehmen. Also Start, Stop, Pause, Homebase Befehle sollten damit eigentlich schon funktionieren. Hab ich jetzt noch nicht getestet - aber der getMission Befehl kommt ja auch an.

Ich stelle mir das Map zeichnen im ersten Schritt erst einmal so vor, dass ein notify zyklisch (alle 0,5s bis 1s) den getMission Befehl aufruft, und die Rückgabewerte in ein Logfile schreibt.
Aus dem Logfile sollte man dann über die x und y Punkte eine Map zeichnen können.

Mein derzeitiges Hauptproblem ist, dass ich keine Ahnung habe wie ich von Perl heraus auf Variablen/Rückgabe werte von meinem NodeJs script zugreifen kann.
Kann mir dabei jemand helfen?

Das nodeJS script sieht zur Zeit so aus:

var dorita980 = require('dorita980');

var myRobotViaLocal = new dorita980.Local('meineBid', 'meinPW','meineIP');

myRobotViaLocal.on('connect', function () {
  myRobotViaLocal.getMission().then((mission_data) => {
    console.log(mission_data)
    myRobotViaLocal.end();
  }).catch((err) => {
    console.log(err);
  });
});



aufrufen konnte ich es dann einfach über
{system("node getMission.js")}









Det20

Daran wäre ich auch sehr interessiert.

Markus-L

Hallo Zusammen,
ich habe in der zwischen Zeit ein wenig weiter gemacht:
Nachdem ich etwas gelesen habe ist es wohl am leichtesten die Kommunikation zwischen JavaScript und fhem über telnet zu machen.

Folgendes ist der aktuelle Stand:

Die Daten schreibe ich in fhem dann einfach in ein dummy.
Das hier ist die entsprechende fhem.cfg

define roomba dummy
attr roomba readingList x y theta bin_present bin_full error initiator CycleTimeActive CycleTimeInactive
attr roomba room Roomba
attr roomba setList x y theta bin_present bin_full error initiator CycleTimeActive CycleTimeInactive

define FileLog_Roomba FileLog ./log/Roomba-%Y-%m.log roomba
attr FileLog_Roomba room Roomba


define telnetPort telnet 7073 global
define allowed_telnetPort allowed
attr allowed_telnetPort globalpassword DeinSuperTelnetPw
attr allowed_telnetPort validFor telnetPort



Dazu habe ich mir dann ein Wrapper geschrieben, der die Kommunikation zwischen dorita980 und fhem leistet.
Im Prinzip gibt es eine zyklische Funktion die immer wieder schaut ob der Roomba gerade aktiv ist und dementsprechend die Zykluszeit anpasst.
Die Zykluszeiten können aus fhem heraus (über die readings CycleTimeActive CycleTimeInactive) vorgegeben werden.

Sobald dorita980 dann einen "Mission" Info meldet schreibt das Skript einfach über telnet den dummy.

Unten gibts dann noch einige Funktionen für die Kommunikation mit Fhem (z.b. lesen eines Readings über telnet).

Ich musste für die funktion leider dorita980 (bin/v2/local.js)etwas modifizieren.
Die Funktionalität die zykluszeit zu ändern war vorher nicht drinnen...

Damit kommen die Daten (zumindest bei mir  ;D) zur zeit relativ zuverlässig nach fhem.

Ich wollte mich jetzt mal drum kümmern die Daten in Fhem auch irgendwie darzustellen.






Det20

Bin sehr spannend drauf, wie es weitergeht ...

Thorsten Pferdekaemper

Hi,
wir haben jetzt auch so ein Teil und auf dorita980 bzw. rest980 bin ich auch schon gestoßen. Bisher habe ich es aber noch nicht geschafft, den Kram zu installieren und auch zum Laufen zu bringen.
Wenn man das ganze in FHEM integriert, dann ware es eigentlich schöner, gleich ein richtiges Modul zu haben und dann direct zu kommunizieren. Hat jemand mal herausgefunden, wie die Kommunikation mit dem Ding wirklich aussieht?
Außerdem: Anscheinend ist die Firmware 2.x ganz anders. Im Gegensatz zu 1.x soll sie per MQTT kommunizieren, wofür es in FHEM ja schon ein Modul gibt.
Gruß,
   Thorsten 
FUIP

Markus-L

Hi,
die Idee mit fhem über die mqtt Schnittstelle direkt mit dem roomba zu kommunizieren halte ich für sehr gut!

Die Gehversuche das über die Dorita Schnittstelle sind schon auch recht umständlich.
Viele Dinge haben auch nicht auf Anhieb so funktioniert wie ich es mir vorgestellt habe. Evtl. Auch weil ich es nicht wirklich verstanden habe...  :-X

Thorsten Pferdekaemper

Zitat von: Markus-L am 28 Februar 2017, 18:38:04die Idee mit fhem über die mqtt Schnittstelle direkt mit dem roomba zu kommunizieren halte ich für sehr gut!
Tja, mir ist nur nicht so ganz klar, ob alle mit der Zeit auf die 2.x Firmware gebracht werden (meiner ist auf 1.-irgendwas), oder ob nur die Minor-Versionsnummern "wachsen". Welche Firmware-Versionen haben Eure ?
Gruß,
   Thorsten
FUIP

Markus-L

Zitat von: Thorsten Pferdekaemper am 28 Februar 2017, 18:48:56
Welche Firmware-Versionen haben Eure ?
Meiner hat am 31.01.17 die 2.0.0-34 bekommen. Da hatte ich ihn grad etwa eine Woche...

Thorsten Pferdekaemper

Meiner hat noch 1.6.4. Mal ein paar Tage warten. Wahrscheinlich lohnt es sich nicht, etwas für die "alte" Schnittstelle zu bauen.
Es lohnt sich übrigens meiner Meinung nach, zusätzlich zu dorita980 noch rest980 zu installieren. Vor Allem http://<hostname>:3000/map ist lustig.
Gruß,
   Thorsten
FUIP

Det20

An dem Dorita980 habe ich mich auch einige Male versucht, es aber irgendwie nie hinbekommen und dann aufgegeben.
Mein 980 hat ebenfalls die 2.0.0-34

carlos

Also ich habe mal rest980 installiert dann läst sich mit HTTPMOD schon einiges machen.
Preferences und sys z.b. kann man direkt mit json parsen.
Da sollt  doch ein modul darus zu machen sein.
Gruß

Carlos
FHEM svn auf Intel NUC mit proxmox,1 UDOO, 3 Raspberry Pi, signalduino, nanoCUL, div. Homematic Komponenten, toom Baumarkt Funksteckdosen, einige sonoffs, hue, shelly

Thorsten Pferdekaemper

Zitat von: carlos am 28 Februar 2017, 22:33:28
Also ich habe mal rest980 installiert dann läst sich mit HTTPMOD schon einiges machen.
Preferences und sys z.b. kann man direkt mit json parsen.
Da sollt  doch ein modul darus zu machen sein.
Klar, aber das ist schon hässlich. Man muss erst dorita980 und rest980 installieren, wofür man auf einem RasPi sogar noch von wegen nodejs tricksen muss. Dann das ganze konfigurieren, von wegen Blid und Passwort. Dann muss man auch noch json in Perl parsen... Also naja.
Ich warte jetzt mal ab, ob meiner sich auf 2.0 updated und dann versuche ich mal per MQTT.
Gruß,
   Thorsten 
FUIP

carlos

Wie soll das mit MQTT gehen? Dann würde ich das mal testen.
Meiner ist schon auf 2.0.0-34 und einen MQTT server habe ich auch schon am laufen.
Gruß

Carlos
FHEM svn auf Intel NUC mit proxmox,1 UDOO, 3 Raspberry Pi, signalduino, nanoCUL, div. Homematic Komponenten, toom Baumarkt Funksteckdosen, einige sonoffs, hue, shelly

Thorsten Pferdekaemper

Zitat von: carlos am 28 Februar 2017, 23:58:21
Wie soll das mit MQTT gehen?
Keine Ahnung, ich kenne mich mit MQTT nicht aus. Wenn ich in die Commandref schaue, dann scheint man eine IP-Adresse und einen Port zu brauchen. Die IP-Adresse dürfte klar sein. Port weiß ich nicht, vielleicht mal im Sourcecode von dorita980 nachschauen.
Gruß,
   Thorsten
FUIP