Autor Thema: Roomba Staubsaugerroboter  (Gelesen 29336 mal)

Offline carlos

  • Developer
  • Full Member
  • ****
  • Beiträge: 417
Antw:Roomba Staubsaugerroboter
« Antwort #15 am: 14 September 2020, 13:19:31 »
Habe ich schon probiert, geht auch nicht nicht.
Im übrigen gehen als HTTPMod und JsonMod (nur status) angelegte devices hervorragend.
FHEM svn auf Intel NUC mit proxmox,1 UDOO, 3 Raspberry Pi, signalduino, nanoCUL, div. Homematic Komponenten, toom Baumarkt Funksteckdosen, einige sonoffs, hue, shelly

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 15809
Antw:Roomba Staubsaugerroboter
« Antwort #16 am: 14 September 2020, 13:25:27 »
@carlos:
Die anonymisierte ClientID ist hoffentlich eine andere als die, die der Sauger intern verwendet? Sonst verwirft der "on-Board-Broker" vermutlich den Verbindungsversuch auch deswegen... (Es kann nur jeweils einen Client/Broker mit derselben ClientID geben, daher die häufiger anzutreffenden "random"-ClientID's).
Server: HP-T620@Debian 10, aktuelles FHEM + ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn:MySensors, Weekday-&RandomTimer, Twilight,  AttrTemplate {u.a. mqtt2, mysensors, zwave}

Offline Otto123

  • Tester
  • Hero Member
  • ****
  • Beiträge: 19529
  • schon mal restore trainiert?
    • Otto's Technik Blog
Antw:Roomba Staubsaugerroboter
« Antwort #17 am: 14 September 2020, 13:35:50 »
und irgendwo hatte ich gelesen, dass der oBB ;) sowieso nur eine gleichzeitige Verbindung akzeptiert!? Aber ich rede nur theoretisch ...
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7490+7412,WRT1900ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 15809
Antw:Roomba Staubsaugerroboter
« Antwort #18 am: 14 September 2020, 13:41:20 »
@pah wg. der setList:
Magst du mal ein RAW (bzw. die readingList) von dem aktuellen MQTT2_DEVICE liefern? Die Zusammensetzung des cmd-Pfads scheint uU. auch den Namen zu beinhalten, zumindest sieht mir die Funktion ab hier so aus: https://github.com/NickWaterton/Roomba980-Python/blob/76d7f512891b49f8e2ba79e6e90e5886e6c47ce4/build/lib.linux-x86_64-2.7/roomba/roomba.py#L401 Das Script scheint irgendeine Art Indirektion vorzunehmen...

@Otto:
Das würde dann bedeuten, dass man entweder das script nehmen kann oder MQTT2_CLIENT, oder?
Server: HP-T620@Debian 10, aktuelles FHEM + ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn:MySensors, Weekday-&RandomTimer, Twilight,  AttrTemplate {u.a. mqtt2, mysensors, zwave}

Offline carlos

  • Developer
  • Full Member
  • ****
  • Beiträge: 417
Antw:Roomba Staubsaugerroboter
« Antwort #19 am: 14 September 2020, 13:42:12 »
Aber PAH schreibt doch:

Zitat
Nötig dafür war im Client sowohl den username als auch die clientId auf die BLID aus dem Roboter zu setzen, sowie bei sslargs SSL_version:SSLv23 einzusetzen.
deswegen habe ich beides auf die BLID gesetzt.

@Otto123 Habe ich auch gelesen, aber meine beiden (HTTPMod und JsonMod) funktionieren gleichzeitig.
FHEM svn auf Intel NUC mit proxmox,1 UDOO, 3 Raspberry Pi, signalduino, nanoCUL, div. Homematic Komponenten, toom Baumarkt Funksteckdosen, einige sonoffs, hue, shelly

Offline Otto123

  • Tester
  • Hero Member
  • ****
  • Beiträge: 19529
  • schon mal restore trainiert?
    • Otto's Technik Blog
Antw:Roomba Staubsaugerroboter
« Antwort #20 am: 14 September 2020, 13:44:35 »
Hatte ich hier gelesen: https://intranet-der-dinge.de/smarthome/haus/roomba/
Wie immer das wirklich gemeint ist? Ich wollte es nur in die Runde werfen, ich kann es nicht prüfen.
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7490+7412,WRT1900ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 15809
Antw:Roomba Staubsaugerroboter
« Antwort #21 am: 14 September 2020, 13:52:54 »
Hmm,

ich kann da nur die Theorie ausführen. Kann schon sein, dass die ClientID "freigehalten" wird und intern eine andere genutzt wird für "firmware<->Broker". Als zusätzliches Begrenzungsmittel das Zugriffst wäre das logisch, als Ursache für Verbindungsabbrüche, falls da was intern schief läuft auch (kann sein, dass mosquitto/paho da früher nicht so empfindlich war und das (mit) die Ursache dafür ist, dass das Modul nicht mehr geht)...

Betr. jsonMod+HTTPMOD: Machen die nicht eine Verbindung auf, holen die Daten und machen die Verbindung dann wieder zu? Nacheinander sollte es dann auch "miteinander" gehen...
Server: HP-T620@Debian 10, aktuelles FHEM + ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn:MySensors, Weekday-&RandomTimer, Twilight,  AttrTemplate {u.a. mqtt2, mysensors, zwave}
Zustimmung Zustimmung x 1 Liste anzeigen

Offline Prof. Dr. Peter Henning

  • Developer
  • Hero Member
  • ****
  • Beiträge: 8135
Antw:Roomba Staubsaugerroboter
« Antwort #22 am: 14 September 2020, 14:06:38 »
Zitat
wieder zu? Nacheinander sollte es dann auch "miteinander" gehen...
So isses.

Die readingList wurde durch das autocreate angelegt, ich habe nur etwas manuell optimiert:

31xx80:.* { json2nameValue($EVENT) }
31xx80:wifistat:.* { json2nameValue($EVENT) }
31xx80:.*aws/things/31xx80/shadow/update:.* { json2nameValue($EVENT) }

(31xx80 ist die natürlich längere BLID). Ich habe wirklich systematisch rund 50 Kombinationen aus BLID, Name (das Teil heißt "Feger"), "cmd", "command" etc. für die setList durchprobiert

Zitat
Gibt's denn nirgends eine Beschreibung der MQTT-API?

Keine, die ich gefunden hätte.

LG

pah
« Letzte Änderung: 14 September 2020, 16:22:07 von Prof. Dr. Peter Henning »

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 15809
Antw:Roomba Staubsaugerroboter
« Antwort #23 am: 14 September 2020, 14:30:15 »
(Da ist noch eine vollst. BID drin)
Ansonsten habe ich auch keine wirkliche Idee, was der cmd-Pfad anderes als der "cmd" sein sollte; ein sich dynamisch ändernder cmd-Topic macht ja keinen Sinn... Vermutlich ist die Payload irgendwie JSON-verpackt, aber das ist ohne API-Beschreibung auch ziemliche Kaffeesatzleserei aus den diversen Implementierungen. Unschön...
Server: HP-T620@Debian 10, aktuelles FHEM + ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn:MySensors, Weekday-&RandomTimer, Twilight,  AttrTemplate {u.a. mqtt2, mysensors, zwave}

Offline Prof. Dr. Peter Henning

  • Developer
  • Hero Member
  • ****
  • Beiträge: 8135
Antw:Roomba Staubsaugerroboter
« Antwort #24 am: 14 September 2020, 15:38:23 »
In dem Ding von Waterton lese ich
Command = OrderedDict()
        Command["command"] = command
        Command["time"] = self.totimestamp(datetime.datetime.now())
        Command["initiator"] = "localApp"
        myCommand = json.dumps(Command)
        self.log.info("Publishing Roomba Command : %s" % myCommand)
        self.client.publish("cmd", myCommand)

Das wäre also als json so etwas wie
{"command":"start","time":timestamp,"initiator":"localApp"}
Und tada ! So isses.
Mit einer setList
start cmd {"command": "start", "time": 1, "initiator": "localApp"}
stop cmd  {"command": "stop", "time": 1, "initiator": "localApp"}
dock cmd  {"command": "dock", "time": 1, "initiator": "localApp"}
resume cmd  {"command": "resume", "time": 1, "initiator": "localApp"}
pause cmd  {"command": "pause", "time": 1, "initiator": "localApp"}

kann die Kiste via MQTT gesteuert werden. Man benötigt also nicht einmal einen tatsächlichen Timestamp, die Zahl 1 genügt ...

LG

pah
« Letzte Änderung: 14 September 2020, 15:52:07 von Prof. Dr. Peter Henning »

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 15809
Antw:Roomba Staubsaugerroboter
« Antwort #25 am: 14 September 2020, 16:03:50 »
Mit einer setList
start cmd {"command": "start", "time": 1, "initiator": "localApp"}
stop cmd  {"command": "stop", "time": 1, "initiator": "localApp"}
dock cmd  {"command": "dock", "time": 1, "initiator": "localApp"}
resume cmd  {"command": "resume", "time": 1, "initiator": "localApp"}
pause cmd  {"command": "pause", "time": 1, "initiator": "localApp"}

kann die Kiste via MQTT gesteuert werden. Man benötigt also nicht einmal einen tatsächlichen Timestamp, die Zahl 1 genügt ...
Cool!

(Die BLID steht in der readingList oben immer noch absichtlich in voller Pracht?)

(Unter attrTemplate-Gesichtspunkten: Der nächste Schritt wäre jetzt, erst mal die setList ggf. zu optimieren oder zu erweitern (ggf. auch eine getList für Status-Abfragen zu erstellen, und dann nochmal kritisch zu checken, welche Infos eigentlich über welchen Topic kommen und ob sich das irgendwie besser sortieren läßt; "wifistat" scheint sowas wie LWT zu sein?
Bei Interesse müsste ich etwas mehr Infos haben, sonst gehe ich mal davon aus, dass du auch alleine klarkommst, ist ja kein Hexenwerk :) ).
Server: HP-T620@Debian 10, aktuelles FHEM + ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn:MySensors, Weekday-&RandomTimer, Twilight,  AttrTemplate {u.a. mqtt2, mysensors, zwave}

Offline Prof. Dr. Peter Henning

  • Developer
  • Hero Member
  • ****
  • Beiträge: 8135
Antw:Roomba Staubsaugerroboter
« Antwort #26 am: 14 September 2020, 16:23:32 »
Geht schon, bin ja nicht direkt ein Anfänger  8).

Setzen von Einstellungen geht auch, z.B. mit
carpetBoost delta {"state": {"carpetBoost": true}}
LG

pah

Offline Prof. Dr. Peter Henning

  • Developer
  • Hero Member
  • ****
  • Beiträge: 8135
Antw:Roomba Staubsaugerroboter
« Antwort #27 am: 14 September 2020, 17:16:27 »
@carlos: im Roboter darf nicht ecoCharge=true gesetzt werden, das verhindert die Verbindung mit dem MQTT2_CLIENT

LG

pah

Offline carlos

  • Developer
  • Full Member
  • ****
  • Beiträge: 417
Antw:Roomba Staubsaugerroboter
« Antwort #28 am: 14 September 2020, 18:13:18 »
Bei mir ist ecoCharge=0

Interessanerweise bekomme ich jetzt folgenden Fehler:

2020.09.14 18:09:02 5: HttpUtils url=https://192.168.178.62:8883/
2020.09.14 18:09:02 4: IP: 192.168.178.62 -> 192.168.178.62
2020.09.14 18:09:04 4: HttpUtils: https://192.168.178.62:8883/: Can't connect(2) to https://192.168.178.62:8883:  SSL connect attempt failed error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small

Könntest du bitte mal ein LIST on deinem Client hier reinstellen zum Vergleich.
Danke und 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

Offline Prof. Dr. Peter Henning

  • Developer
  • Hero Member
  • ****
  • Beiträge: 8135
Antw:Roomba Staubsaugerroboter
« Antwort #29 am: 14 September 2020, 18:15:55 »
OK, tut alles fast wie gewünscht.

Woran ich noch knobele:
- Manche RegExps scheinen für den Parser bei readingList etwas zu kompliziert zu sein
- Das jsonMap Attribut ist viel zu umständlich. Hier müsste es die Möglichkeit geben, per Wildcard einfach eine ganze Gruppe von Readings auszuschließen.
- Mir fehlt noch eine Möglichkeit, bei "set <Device> CarpetBoost true" den Parameter true in das generierte JSON mit aufzunehmen. Zwar soll laut CommandRef die Verwendung von Perl-Ausdrücken in der setList möglich sein. Das ist aber nicht gut dokumentiert und funktioniert auch nicht einfach so. Abgesehen vom zu setzenden Parameterwert (true in diesem Fall) sollte auch statt der nackten "1" bei der Timestamp die richtige Zeit verwendet werden, dafür brauche ich aber einen Perl-Aufruf im Innern des JSON-Ausdrucks. Es gibt natürlich auch den umgekehrten Weg, das ganze JSON aus Perl heraus zu generieren. Mal sehen, heute nicht mehr.


Also, hier zum Ausprobieren die nackten Konfigurationsdaten für einen MQTT2_CLIENT und ein MQTT2_DEVICE
define RoombaFegerClient MQTT2_CLIENT 192.168.x.yy:8883
attr RoombaFegerClient SSL 1
attr RoombaFegerClient autocreate simple
attr RoombaFegerClient clientId 3.................80
attr RoombaFegerClient mqttVersion 3.1.1
attr RoombaFegerClient sslargs SSL_version:SSLv23
attr RoombaFegerClient username 3.................80
attr RoombaFegerClient verbose 1

define RoombaFeger MQTT2_DEVICE 3................80
attr RoombaFeger IODev RoombaFegerClient

attr RoombaFeger jsonMap state_reported_pose_point_x:position_x\
state_reported_pose_point_y:position_y\
state_reported_pose_theta:position_theta\
state_reported_lastCommand_initiator:lastCommandInitiator\
state_reported_lastCommand_command:lastCommand\
state_reported_lastCommand_time:0\
state_reported_localtimeoffset:0\
state_reported_mac:0\
state_reported_netinfo_addr:0\
state_reported_netinfo_bssid:\
state_reported_netinfo_dhcp:0\
state_reported_netinfo_dns1:0\
state_reported_netinfo_dns2:0\
state_reported_netinfo_gw:0\
state_reported_netinfo_mask:0\
state_reported_netinfo_sec:0\
state_reported_signal_rssi:signalRSSI\
state_reported_signal_snr:signalSNR\
state_reported_utctime:0\
state_reported_wifistat_cloud:0\
state_reported_wifistat_uap:0\
state_reported_wifistat_wifi:0\
state_reported_wlcfg_sec:0\
state_reported_wlcfg_ssid:0\
state_reported_cleanMissionStatus_cycle:cmCycle\
state_reported_cleanMissionStatus_error:cmError\
state_reported_cleanMissionStatus_expireM:cmExpireM\
state_reported_cleanMissionStatus_initiator:cmInitiator\
state_reported_cleanMissionStatus_mssnM:cmMMission\
state_reported_cleanMissionStatus_nMssn:cmNMission\
state_reported_cleanMissionStatus_notReady:cmNotReady\
state_reported_cleanMissionStatus_phase:cmPhase\
state_reported_cleanMissionStatus_rechrgM:cmRechargeM\
state_reported_cleanMissionStatus_sqft:cmSqft\
state_reported_binPause:sBinPause\
state_reported_carpetBoost:sCarpetBoost\
state_reported_openOnly:sOpenOnly\
state_reported_schedHold:sSchedHold\
state_reported_twoPass:sTwoPass\
state_reported_vacHigh:sVacHigh\

attr RoombaFeger readingList 3.......................80:wifistat:.* { json2nameValue($EVENT,'',$JSONMAP) }\
3..................80:.*aws/things/3...........................80/shadow/update.*Command.* { json2nameValue($EVENT,'',$JSONMAP) }

attr RoombaFeger room Unsorted

attr RoombaFeger setList start:noArg cmd {"command": "start", "time": 1, "initiator": "localApp"}\
stop:noArg cmd  {"command": "stop", "time": 1, "initiator": "localApp"}\
dock:noArg cmd  {"command": "dock", "time": 1, "initiator": "localApp"}\
resume:noArg cmd  {"command": "resume", "time": 1, "initiator": "localApp"}\
pause:noArg cmd  {"command": "pause", "time": 1, "initiator": "localApp"}\
CarpetBoostOn:noArg delta {"state": {"carpetBoost": true}}\
TwoPassOn:noArg delta {"state": {"twoPass": true}}\
VacHighOn:noArg delta {"state": {"vacHigh": true}}\
CarpetBoostOff:noArg delta {"state": {"carpetBoost": false}}\
TwoPassOff:noArg delta {"state": {"twoPass": false}}\
VacHighOff:noArg delta {"state": {"vacHigh": false}}

LG

pah
« Letzte Änderung: 14 September 2020, 18:30:15 von Prof. Dr. Peter Henning »

 

decade-submarginal