Modul für Irobot Roomba 980

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

Vorheriges Thema - Nächstes Thema

Lippie

#255
Hi,

das JSON::MaybeXS ist wohl reingerutscht.
Es wird nur encode_json verwendet. Das hat JSON::XS auch.
Update im Anhang.

Viele Grüße,
Sebastian

Jewe

Hallo,
kann mich Thorsten nur anschliessen und das hatte mich auch gewundert, dass ich ein neues Perl-Modul benötige. Werde nun die letzt Version laden und testen.
Danke fürs weiterentwickeln :-)

Jens

Lippie

Nachdem ich inzwischen die Funktion für DiscoverNewRoomba etwas überarbeitet habe, möchte ich gern die GetPassword-Funktion zum laufen bekommen.
Ich wollte mich an der dorita-function orientieren, komme aber nicht weiter.

hat von Euch evtl.jemand eine Idee, wie ich diesen JavaScriptCode in Perl umgesetzt bekomme:

  const packet = 'f005efcc3b2900';

  var client = tls.connect(8883, host, {rejectUnauthorized: false}, function () {

    client.write(new Buffer(packet, 'hex'));

  });


Ich dachte dabei an sowas:

my $FALSE = 1==0;

my $packet = 0xf005efcc3b2900;

my %msg = (message => $packet);

send_message($hash, message_type => MQTT_CONNECT, keep_alive_timer => $hash->{timeout},

                 rejectUnauthorized => $FALSE, protocol_name => "MQTT", protocol_version => 4);

return send_message($hash, message_type => MQTT_PUBLISH, %msg);


Leider bekomme ich noch nicht einmal eine Rückmeldung vom Roomba auf die connect-Anfrage.
Unterstützt die FHEM MQTT-Bibliothek überhaupt eine solche Anfrage?

viele Grüße
Sebastian

Jewe

Zitat von: Lippie am 31 Oktober 2019, 19:07:03
Da der Roomba immer fleißig leuchtet, wenn das Modul verbunden ist, bietet es sich an,
die reconnecttime auf zB 900 Sekunden zu setzen, und timeout und checkntervall auf 15 oder 30 Sekunden.
Dadurch wird der Roomba immer nur kurz aufgeweckt.

Beste Grüße.

Bei welchen Roombas ist das der Fall? Ich habe das bei meinem 966 habe ich das nicht beobachtet, dass da was Leucht (steht inzwischen allerding unter einem Schrank :-))
Wurde nun im Modul die Art des connects verändert ? Im Log sehe ich, dass nun alle 60s (oder 900s mit eingestellter reconnecttime) ein Eintrag kommt. Allerdings regiert der Roomba bei eingestellter reconnecttime (also Allways off) auch nur verzögert. Oder sollte das anders sein ?

Grüssle Jens

Lippie

Zitat von: Jewe am 03 November 2019, 09:34:50
Bei welchen Roombas ist das der Fall? Ich habe das bei meinem 966 habe ich das nicht beobachtet, dass da was Leucht (steht inzwischen allerding unter einem Schrank :-))
Wurde nun im Modul die Art des connects verändert ? Im Log sehe ich, dass nun alle 60s (oder 900s mit eingestellter reconnecttime) ein Eintrag kommt. Allerdings regiert der Roomba bei eingestellter reconnecttime (also Allways off) auch nur verzögert. Oder sollte das anders sein ?

Grüssle Jens

Hi,
die 800er Serie arbeitet etwas anders als die 900er Roombas. Ich habe einen Roomba 895 zum testen, der leuchtet bei aktiver Verbindung und sendet keine Updates seiner Daten.
In deinem Fall würde ich alwaysconnected auf 1 setzen. Damit ist auch checkInterval und reconnecttime nicht mehr relevant.
Der manuelle connect wird von reconnecttime nicht verzögert. Wenn das nicht so ist, muss ich mir das wohl nochmal anschauen :-)

Viele Grüße.
Sebastian

Thorsten Pferdekaemper

Zitat von: Lippie am 02 November 2019, 23:05:08
hat von Euch evtl.jemand eine Idee, wie ich diesen JavaScriptCode in Perl umgesetzt bekomme:
Ich glaube, dass der Javascript-Teil direkt auf die SSL-Schicht geht. Das ist gar kein MQTT, würde ich mal sagen. Außerdem schickst Du dem Teil wahrscheinlich die Ascii-Codes der Buchstaben "f", "0" usw. rüber und nicht wirklich die Bytes F0, 05, EF etc.
Gruß,
   Thorsten
FUIP

Lippie

Zitat von: Thorsten Pferdekaemper am 03 November 2019, 22:30:49
Ich glaube, dass der Javascript-Teil direkt auf die SSL-Schicht geht. Das ist gar kein MQTT, würde ich mal sagen. Außerdem schickst Du dem Teil wahrscheinlich die Ascii-Codes der Buchstaben "f", "0" usw. rüber und nicht wirklich die Bytes F0, 05, EF etc.

Ja, je länger ich mich damit befasst habe, um so mehr kam ich auch auf den Gedanken. Schon der Versuch den Befehl in hex zu pressen war wenig erfolgreich, da perl dann ein integer draus machen will, für den der Befehl zu lang ist. Da ich mich damit nicht wirklich auskenne, wird es noch eine Weile dauern, bis da etwas brauchbares rumkommt...

Lippie

Hi,

anbei ein Update von "42_Roomba980.pm".

Ich konnte an meinem Roomba erfolgreich das Passwort abfragen.
Leider scheint es nicht immer auf den ersten Versuch zu funktionieren, jedoch spätestens nach 2 bis 3 Aufrufen von "set getpass IP:8883".
Das Passwort wird als Reading "Roomba-PW" angelegt.
Im Reading "discoveredRoomba" wird die blid angeben.

Wer mag, bitte testen und kurz Rückmeldung geben.
Ich würde mich über kurzes Feedback freuen.

Beste Grüße
Sebastian

Thorsten Pferdekaemper

Hi,
das ist auf jeden Fall mal ein riesiger Fortschritt. Ich kann es gerade selbst nicht testen, aber es ist definitiv beeindruckend.
Gruß,
   Thorsten
FUIP

Lippie

Ja, es geht voran  ;D

Ich musste allerdings noch String::HexConvert einbinden.

Falls jemandem eine Alternative einfällt, bitte posten.


Thorsten Pferdekaemper

FUIP

Lippie

#266
Update: jetzt ohne String::HexConvert ...
Mir ist aufgefallen, dass die Passwortabfrage zwar meist funktioniert, jedoch ab und zu Die Anzeige des Readings nicht immer aktualisiert wird.
Scheint mit dem Neuladen der Website aufgrund des set-Befehlt zu tun haben, oder?
Umstellung auf get-Befehl?

Thorsten Pferdekaemper

Passiert das auch dann, wenn es das Reading schon vorher gab?
...ansonsten glaube ich, dass das relativ normal ist.
Gruß,
   Thorsten
FUIP

Lippie

Ja, das Reading ist bereits da. Ich vermute, das aktualisieren des Readings fällt genau in das Aktualisieren der gesamten Seite und geht damit verloren.
Kann man das Aktualisieren der gesamten Seite beim "set" unterbinden?
Gruß,
Sebastian

Thorsten Pferdekaemper

Hi,
versuch mal, in der sub Set explizit "return undef" am Ende zu machen.
Gruß,
   Thorsten
FUIP