Modul für Irobot Roomba 980

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

Vorheriges Thema - Nächstes Thema

Dracolein

#315
Kurze Rückmeldung,
ich habe mich heute abend nochmal probiert und musste folgendes Paket nachinstallieren
sudo apt-get install libmodule-pluggable-perl
nachdem ich zunächst diese Logfile Fehlermeldung beim define-Versuch erhielt

Zitat
2019.12.18 18:35:22 1: reload: Error:Modul 42_Roomba980 deactivated:
Can't locate Module/Pluggable.pm in @INC (you may need to install the Module::Pluggable module) (@INC contains: . /etc/perl /usr/local/lib/arm-linux-gnueabihf/perl/5.28.1 /usr/local/share/perl/5.28.1 /usr/lib/arm-linux-gnueabihf/perl5/5.28 /usr/share/perl5 /usr/lib/arm-linux-gnueabihf/perl/5.28 /usr/share/perl/5.28 /usr/local/lib/site_perl /usr/lib/arm-linux-gnueabihf/perl-base ./FHEM ./FHEM/lib) at FHEM/lib/Net/MQTT/Message.pm line 9.
BEGIN failed--compilation aborted at FHEM/lib/Net/MQTT/Message.pm line 9.
Compilation failed in require at ./FHEM/42_Roomba980.pm line 79.
BEGIN failed--compilation aborted at ./FHEM/42_Roomba980.pm line 79.

Danach verlief der Installationsprozess entsprechend der Github Anleitung.

Achso, vielleicht ein Hinweis noch:
In der Anleitung steht nicht, dass man dem Roomba im Dock stehen haben muss. NUr so konnte ich die Wifi-Lampe zum blinken bringen (durch gleichtzeitiges Drücken beider kleiner Tasten auf dem Gerät)

Gibt es eigentlich bei Euch noch FHEM Abstürze oder ähnliches? Ich habe die 22 Seiten des Threads inzwischen grob überflogen und bin halbwegs im Bilde.
Bei mir läuft fhem auf einem raspberry pi 4 und ich habe einen Roomba 980.


edit:
gibts schon Beispiele, wie Ihr das in Tablet UI eingebunden habt?
Auf die Schnelle habe ich zumindest mal 2 simple Switch Schalter eingebunden, die funktionieren. Aber das muss besser gehen

<div data-type="switch" data-device="myRoomba" data-fhem-cmd="set myRoomba start" data-icon="fa-play"></div>
<div data-type="switch" data-device="myRoomba" data-fhem-cmd="set myRoomba stop" data-icon="fa-stop"></div>
Raspberry Pi 4 mit FHEM; FTUI Dashboard auf Asus 15,6" VT168H Touchscreen; ZigBee mit ConBee2 USB-Stick; div. Shelly 2.5; integr. Gaszähler mit ESP8266 & ESPEasy;

Lippie

Hi,
Danke für die Rückmeldung.
Das mit der Ladestation muss noch als Hinweis ergänzt werden, habe ich übersehen.
Abstürze hatte ich bisher keine mehr.
Ich selbst nutze noch kein Tablet UI.

Viele Grüße
Sebastian

Dracolein

Ich werde mich am Wochenende mal mit den paar Tasten beschäftigen und selbige etwas verbessern.

Gibts eine Referrenzquelle, was die ganzen Readings zu bedeuten haben?
Auch würde mich grob die technische Funktion von connect / disconnect im Modul interessieren; schaltet man damit das Modul  sozusagen offline? Gestern abend konnte ich - und das wurde in diesem Thread bereits thematisiert - im Sekundentakt aktualisierte Readings erkennen, zumeist über die Signalstärke. Nach dem "Disconnect" stoppten sämtliche Readingaktualisierungen.

Die gängigen set-Befehle wären interessant zu wissen, was selbige bewirken (sollen)
- binPause
-carpetboost
- dock (vermutlich Befehl zum Heimfahren ins Dock)
-evac
- train
-twoPass
...

Muss gestehen, dass ich mich mit dem Roomba seit Anschaffung vor 2 Jahren nicht mehr nennenswert beschäftigt habe und wir auch die App gar nicht nutzen. Das Ding wird i.d.R. platziert, auf "Los" gedrückt und es verrichtet seinen Job.
Raspberry Pi 4 mit FHEM; FTUI Dashboard auf Asus 15,6" VT168H Touchscreen; ZigBee mit ConBee2 USB-Stick; div. Shelly 2.5; integr. Gaszähler mit ESP8266 & ESPEasy;

Lippie

Hallo,
das connect/disconnect ist tatsächlich dafür da, dass sich das Modul vom Roomba offline schaltet bzw. wieder verbindet.
das Problem, dass die Readings viel zu oft aktualisiert werden, hatten wir schon einmal.
Werden alle Readings aktualisiert oder nur die Signalstärke, bzw. welche noch?
Kannst Du bitte deine aktuell gesetzten Attribute posten?
viele Grüße.

Dracolein

Wenn connection = connected, aktualisieren sich die Readings signal-rssi und signal-snr sekündlich. Mehr konnte ich gestern abend noch nicht testen.
Ich antworte Euch gern auf weitere Fragen (mit dem Hinweis, dass ich Laie bin  ::) )

Meine Idee für Touch UI und im Hinblick auf eine zu managende Datenflut würde ich probieren, vor jeden Steuerbefehl zunächst den Befehl zum connecten zu setzen und nach Abschluss eines Saugvorgangs o.ä. den Befehl zum Disconnect zu geben.

Zitat
Internals:
   CFGFN     
   DEF        192.168.178.39:8883
   DeviceName 192.168.178.39:8883
   FUUID      5dfa648e-f33f-4dec-1cb2-74342860d0adbb9f
   NAME       myRoomba
   NR         56
   SSL        1
   STATE      opened
   TYPE       Roomba980
   buf       
   checkInterval 60
   ping_received 1
   reconnect_timer 60
   robotseries R980040
   timeout    60
   DiscRoombas:
     Roomba:
       blid       3145C60491410740
       host       192.168.178.39:8883
   READINGS:
     2019-12-18 20:46:10   Schedule-Time-Fri 0:00
     2019-12-18 20:46:10   Schedule-Time-Mon 0:00
     2019-12-18 20:46:10   Schedule-Time-Sat 0:00
     2019-12-18 20:46:10   Schedule-Time-Sun 0:00
     2019-12-18 20:46:10   Schedule-Time-Thu 0:00
     2019-12-18 20:46:10   Schedule-Time-Tue 0:00
     2019-12-18 20:46:10   Schedule-Time-Wed 0:00
     2019-12-18 20:46:10   Schedule-on-Fri none
     2019-12-18 20:46:10   Schedule-on-Mon none
     2019-12-18 20:46:10   Schedule-on-Sat none
     2019-12-18 20:46:10   Schedule-on-Sun none
     2019-12-18 20:46:10   Schedule-on-Thu none
     2019-12-18 20:46:10   Schedule-on-Tue none
     2019-12-18 20:46:10   Schedule-on-Wed none
     2019-12-18 20:46:10   audio-active    0
     2019-12-18 20:46:10   batPct          77
     2019-12-18 20:46:10   batteryType     lith
     2019-12-18 20:46:10   bbchg-aborts    [4,4,4]
     2019-12-18 20:46:10   bbchg-nChgOk    401
     2019-12-18 20:46:10   bbchg-nLithF    0
     2019-12-18 20:46:10   bbchg3-avgMin   173
     2019-12-18 20:46:10   bbchg3-estCap   12311
     2019-12-18 20:46:10   bbchg3-hOnDock  14850
     2019-12-18 20:46:10   bbchg3-nAvail   2896
     2019-12-18 20:46:10   bbchg3-nDocks   164
     2019-12-18 20:46:10   bbchg3-nLithChrg 402
     2019-12-18 20:46:10   bbchg3-nNimhChrg 0
     2019-12-18 20:46:10   bbmssn-aCycleM  23
     2019-12-18 20:46:10   bbmssn-aMssnM   23
     2019-12-18 20:46:10   bbmssn-nMssn    645
     2019-12-18 20:46:10   bbmssn-nMssnC   227
     2019-12-18 20:46:10   bbmssn-nMssnF   52
     2019-12-18 20:46:10   bbmssn-nMssnOk  366
     2019-12-18 20:46:10   bbnav-aExpo     65
     2019-12-18 20:46:10   bbnav-aGain     20
     2019-12-18 20:46:10   bbnav-aMtrack   52
     2019-12-18 20:46:10   bbnav-nGoodLmrks 6
     2019-12-18 20:46:10   bbpanic-panics  [8,11,8,8,8]
     2019-12-18 20:46:10   bbpause-pauses  [15,14,0,15,16,0,15,15,6,14]
     2019-12-18 20:46:10   bbrstinfo-causes 0000
     2019-12-18 20:46:10   bbrstinfo-nMobRst 0
     2019-12-18 20:46:10   bbrstinfo-nNavRst 203
     2019-12-18 20:46:10   bbrun-hr        321
     2019-12-18 20:46:10   bbrun-min       12
     2019-12-18 20:46:10   bbrun-nCBump    0
     2019-12-18 20:46:10   bbrun-nCliffsF  28195
     2019-12-18 20:46:10   bbrun-nCliffsR  6769
     2019-12-18 20:46:10   bbrun-nMBStll   9
     2019-12-18 20:46:10   bbrun-nPanics   272
     2019-12-18 20:46:10   bbrun-nPicks    8550
     2019-12-18 20:46:10   bbrun-nScrubs   1026
     2019-12-18 20:46:10   bbrun-nStuck    147
     2019-12-18 20:46:10   bbrun-nWStll    0
     2019-12-18 20:46:10   bbrun-sqft      1393
     2019-12-18 20:46:10   bbswitch-nBumper 18248
     2019-12-18 20:46:10   bbswitch-nClean 2059
     2019-12-18 20:46:10   bbswitch-nDock  164
     2019-12-18 20:46:10   bbswitch-nDrops 1822
     2019-12-18 20:46:10   bbswitch-nSpot  119
     2019-12-18 20:46:10   bbsys-hr        15509
     2019-12-18 20:46:10   bbsys-min       32
     2019-12-18 20:46:10   bin-full        0
     2019-12-18 20:46:10   bin-present     1
     2019-12-18 20:46:10   binPause        1
     2019-12-18 20:46:10   bootloaderVer   4042
     2019-12-18 20:46:10   cap-binFullDetect 1
     2019-12-18 20:46:10   cap-carpetBoost 1
     2019-12-18 20:46:10   cap-eco         1
     2019-12-18 20:46:10   cap-edge        1
     2019-12-18 20:46:10   cap-langOta     1
     2019-12-18 20:46:10   cap-maps        1
     2019-12-18 20:46:10   cap-multiPass   2
     2019-12-18 20:46:10   cap-ota         2
     2019-12-18 20:46:10   cap-pose        1
     2019-12-18 20:46:10   cap-pp          1
     2019-12-18 20:46:10   cap-svcConf     1
     2019-12-18 20:46:10   carpetBoost     0
     2019-12-18 20:46:10   cleanMissionStatus-cycle none
     2019-12-18 20:46:10   cleanMissionStatus-error 0
     2019-12-18 20:46:10   cleanMissionStatus-expireM 0
     2019-12-18 20:46:10   cleanMissionStatus-initiator localApp
     2019-12-18 20:46:10   cleanMissionStatus-mssnM 0
     2019-12-18 20:46:10   cleanMissionStatus-nMssn 645
     2019-12-18 20:46:10   cleanMissionStatus-notReady 0
     2019-12-18 20:46:10   cleanMissionStatus-phase stop
     2019-12-18 20:46:10   cleanMissionStatus-rechrgM 0
     2019-12-18 20:46:10   cleanMissionStatus-sqft 0
     2019-12-18 20:46:10   cleanSchedule-cycle ["none","none","none","none","none","none","none"]
     2019-12-18 20:46:10   cleanSchedule-h [0,0,0,0,0,0,0]
     2019-12-18 20:46:10   cleanSchedule-m [0,0,0,0,0,0,0]
     2019-12-18 20:46:07   cloudEnv        prod
     2019-12-18 19:05:46   connected       1
     2019-12-18 20:47:42   connection      disconnected
     2019-12-18 20:46:07   country         DE
     2019-12-18 18:53:07   discoveredRoomba Roomba 192.168.178.39:8883 3145C60491410740
     2019-12-18 20:46:10   dock-known      0
     2019-12-18 20:46:10   ecoCharge       0
     2019-12-18 20:46:10   hardwareRev     2
     2019-12-18 20:46:10   langs           [{"en-UK":0},{"fr-FR":1},{"es-ES":2},{"it-IT":3},{"de-DE":4},{"ru-RU":5}]
     2019-12-18 20:46:10   language        4
     2019-12-18 20:46:10   lastCommand-command stop
     2019-12-18 20:46:10   lastCommand-initiator localApp
     2019-12-18 20:46:10   lastCommand-time 2019-12-18 20:15:39
     2019-12-18 20:46:10   localtimeoffset 60
     2019-12-18 20:46:07   mac             40:9f:38:4d:0f:1e
     2019-12-18 20:46:10   mapUploadAllowed 1
     2019-12-18 20:46:10   mobilityVer     5806
     2019-12-18 20:46:10   name            Roomba
     2019-12-18 20:46:10   navSwVer        01.12.01#1
     2019-12-18 20:46:07   netinfo-addr    192.168.178.39
     2019-12-18 20:46:07   netinfo-bssid   f4:06:8d:7b:08:f5
     2019-12-18 20:46:07   netinfo-dhcp    1
     2019-12-18 20:46:07   netinfo-dns1    217.237.151.205
     2019-12-18 20:46:07   netinfo-dns2    217.237.149.161
     2019-12-18 20:46:07   netinfo-gw      192.168.178.1
     2019-12-18 20:46:07   netinfo-mask    255.255.255.0
     2019-12-18 20:46:07   netinfo-sec     4
     2019-12-18 20:46:10   noAutoPasses    1
     2019-12-18 20:46:10   noPP            0
     2019-12-18 20:46:10   openOnly        0
     2019-12-18 20:46:10   pose-point-x    -40
     2019-12-18 20:46:10   pose-point-y    -24
     2019-12-18 20:46:10   pose-theta      0
     2019-12-18 20:46:10   schedHold       0
     2019-12-18 20:47:37   signal-rssi     -45
     2019-12-18 20:47:37   signal-snr      44
     2019-12-18 20:46:10   sku             R980040
     2019-12-18 20:46:10   softwareVer     v2.4.6-3
     2019-12-18 20:46:10   soundVer        32
     2019-12-18 20:46:07   state           opened
     2019-12-18 20:46:07   svcEndpoints-svcDeplId v011
     2019-12-18 20:46:10   timezone        Europe/Berlin
     2019-12-18 20:46:10   twoPass         0
     2019-12-18 20:46:10   tz-events       [{"dt":1564675200,"off":120},{"dt":1572138001,"off":60},{"off":120,"dt":1585443601}]
     2019-12-18 20:46:10   tz-ver          7
     2019-12-18 20:46:10   uiSwVer         4582
     2019-12-18 20:46:10   umiVer          6
     2019-12-18 20:46:10   utctime         2019-12-18 20:46:00
     2019-12-18 20:46:10   vacHigh         0
     2019-12-18 20:46:10   wifiSwVer       20992
     2019-12-18 20:46:07   wifistat-cloud  1
     2019-12-18 20:46:07   wifistat-uap    0
     2019-12-18 20:46:07   wifistat-wifi   1
     2019-12-18 20:46:07   wlcfg-sec       7
     2019-12-18 20:46:07   wlcfg-ssid      FBI_SURVEILLANCE_VAN_236e
Attributes:
   room       Roomba
   verbose    0
   widgetOverride Schedule-on-Sun:iconRadio,808080,none,general_aus,start,general_an Schedule-on-Mon:iconRadio,808080,none,general_aus,start,general_an Schedule-on-Tue:iconRadio,808080,none,general_aus,start,general_an Schedule-on-Wed:iconRadio,808080,none,general_aus,start,general_an Schedule-on-Thu:iconRadio,808080,none,general_aus,start,general_an Schedule-on-Fri:iconRadio,808080,none,general_aus,start,general_an Schedule-on-Sat:iconRadio,808080,none,general_aus,start,general_an
Raspberry Pi 4 mit FHEM; FTUI Dashboard auf Asus 15,6" VT168H Touchscreen; ZigBee mit ConBee2 USB-Stick; div. Shelly 2.5; integr. Gaszähler mit ESP8266 & ESPEasy;

Jewe

Hallo,

habe angefangen den Robbie ist Tablet UI zu integrieren. Anbei der aktuelle Stand der mangels Zeit nicht Fertig wurde.

Jens

Hier habe ich mir mal die interessanten Readings und die möglichen Werte notiert:
cleanMissionStatus-phase : run, stop, charge,
cleanMissionStatus-cycle : none, quick,

cleanMissionStatus-sqft : Fläche ?
cleanMissionStatus-mssnM : Minuten ?  56

bbrun-hr : Stunden
bbrun-min : Minuten

bbrun-sqft : Fläche Gesamt ? 273

bbmssn-nMssn : Anzahl der Reinigungsaufgaben Gesamt 102
bbrun-nScrubs : Schmutzereigniszähler 96

dock-known : Basis Position bekannt
connection : active


Aufruf des templates:
<!-- ========= Saugroboter Wohnzimmer =============== -->
<div data-template="templates//template_roboter.html" data-parameter='{"Name":"Wohnzimmer Saugroboter","Device":"Robbie"}'></div>


template:
<header class="headerTransparent"><font color="#008200" size="2">Name</font></header>
<table border="1">
<tr>
<td rowspan="2">
<div>
 
</div>
</td>
<td>
<div>
<div><font class="large">Akku:</font></div>
<div class="top-space"></div>
</div>
<div data-type="level"
data-device="Device"
data-get="batPct"
data-min="0"
data-max="100"
data-height="15"
data-width="150"
data-limits='["0","30","70"]'
data-colors='["red","yellow","green"]'
class="large horizontal">
</div>
<div>
   <div data-type="label"
data-device="Device"
data-get="batPct"
data-unit="%%0A"
class="large">
   </div>
</div>

</div>
</td>

<td colspan="6" width="540px">
<div
  >  </div>
</td>
<td>
<div
  >  </div>
</td>
</tr>

<tr>
<td>
   <div data-type="label"
data-device="Device"
data-get="cleanMissionStatus-phase"
class="smaller">
</div>
    <div data-type="label"
data-device="Device"
data-get="cleanMissionStatus-cycle"
class="smaller">
</div>
   <div data-type="label"
data-device="Device"
data-get="state"
class="smaller">
</div>
</td>

<td>
<div data-type="switch"
   data-on-color="#008200"
   data-off-color="#181818"
   data-on-background-color="#808080"
   data-off-background-color="#808080"
   data-icon="fa-play"
   data-device="Device"
   data-set="start"
   class="class small">
</div>
</div>
</td>

<td> <div data-type="switch"
data-device="Device"
data-set="stop"
data-on-color="#008200"
data-off-color="#181818"
data-on-background-color="#808080"
data-off-background-color="#808080"
data-icon="fa-stop"
class="class small">
</div>
</td>

<td>
<!--<div data-type="switch"
data-device="Device"
data-set="pause"
data-on-color="#008200"
data-off-color="#181818"
data-on-background-color="#808080"
data-off-background-color="#808080"
data-icon="fa-pause"
class="class small">
</div>-->
<div data-type="switch"
data-device="Device"
data-get="cleanMissionStatus-phase"
data-states='["run","stop","stop"]'
data-set-states='["pause","resume","resume"]'
data-background-icon="fa-circle-thin"
data-background-colors='["#808080","#808080","#808080"]'
data-colors='["#808080","#808080","#808080"]'
data-icons='["fa-pause","fa-play","fa-play"]'
class="class small">
</div>
</td>

        <td> <div data-type="switch"
data-device="Device"
data-set="dock"
data-on-color="#008200"
data-off-color="#181818"
data-on-background-color="#808080"
data-off-background-color="#808080"
data-icon="fa-plug"
class="class small">
</div>
</td>

<td> <div data-type="switch"
data-device="Device"
data-get="bin-full"
data-on-color="#008200"
data-off-color="#181818"
data-on-background-color="#808080"
data-off-background-color="#808080"
data-icon="fa-trash"
data-get-on="1"
data-get-off="0"
class="class small">
</div>
</td>

<td> <div data-type="switch"
data-device="Device"
data-get="vacHigh"
data-set="vacHigh"
data-on-color="#008200"
data-off-color="#181818"
data-on-background-color="#808080"
data-off-background-color="#808080"
data-icon="fa-check-circle"
data-get-on="true"
data-get-off="false"
data-set-on="true"
data-set-off="false"
class="class small">
</div>

</td>

<td>
<div data-type="popup" class="inline" data-width="250px" data-height="300px" >
<div data-type="push"
data-icon="fa-list"
class="class small center">
</div>

<div class="dialog bg-popupgreen">
<header style="background-color:#050505"><font color="#719e5a">
<div data-type="joinedlabel"
data-device="Device"
data-get='["Name"]'
data-mask="Status [$1]"
class="inline"></div></header>
<div class="top-space-10 ">
<div>
<div class="large middle inline"><font color="#050505">Sensoren:</font></div>
<div data-type="label"
data-device="Device"
data-get="consumables_sensors_h"
class="bigger">
</div>
<div data-type="level"
data-device="Device"
data-get="consumables_sensors"
data-min="0"
data-max="100"
data-height="15"
data-width="150"
data-limits='["0","10","30"]'
data-colors='["red","yellow","green"]'
class="large horizontal">
</div>
<div class="dialog">
<header class="big">Sensoren</header>
<div data-type="link"
data-width="320"
data-height="60"
data-color="white"
data-background-color="red"
data-icon="fa-recycle"
data-device="Device"
data-set="reset_consumable sensors"
onclick="$('.dialog-close').trigger('click');"
class="round centered bigger">Rücksetzen
</div>
</div>
</div>
<div>
<div class="large middle inline"><font color="#050505">Filter:</font></div>
   <div data-type="label"
data-device="Device"
data-get="consumables_filter_h"
class="bigger">
   </div>
   <div data-type="level"
data-device="Device"
data-get="consumables_filter"
data-min="0"
data-max="100"
data-height="15"
data-width="150"
data-limits='["0","10","30"]'
data-colors='["red","yellow","green"]'
class="large horizontal">
   </div>
   <div class="dialog">
<header class="big">Filter</header>
<div data-type="link"
data-width="320"
data-height="60"
data-color="white"
data-background-color="red"
data-icon="fa-recycle"
data-device="Device"
data-set="reset_consumable filter"
onclick="$('.dialog-close').trigger('click');"
class="round centered bigger">Rücksetzen
</div>
   </div>
</div>

<div>
<div class="large middle inline"><font color="#050505">Seitenbürste:</font></div>
   <div data-type="label"
data-device="Device"
data-get="consumables_side_brush_h"
class="bigger">
   </div>
   <div data-type="level"
data-device="Device"
data-get="consumables_side_brush"
data-min="0"
data-max="100"
data-height="15"
data-width="150"
data-limits='["0","10","30"]'
data-colors='["red","yellow","green"]'
class="large horizontal">
   </div>
   <div class="dialog">
<header class="big">Seitenbürste</header>
<div data-type="link"
data-width="320"
data-height="60"
data-color="white"
data-background-color="red"
data-icon="fa-recycle"
data-device="Device"
data-set="reset_consumable sidebrush"
onclick="$('.dialog-close').trigger('click');"
class="round centered bigger">Rücksetzen
</div>
   </div>
</div>

<div>
<div class="large middle inline"><font color="#050505">Bürste:</font></div>
   <div data-type="label"
data-device="Device"
data-get="consumables_main_brush_h"
class="bigger">
   </div>
   <div data-type="level"
data-device="Device"
data-get="consumables_main_brush"
data-min="0"
data-max="100"
data-height="15"
data-width="150"
data-limits='["0","10","30"]'
data-colors='["red","yellow","green"]'
class="large horizontal">
   </div>
   <div class="dialog">
<header class="big">Bürste</header>
<div data-type="link"
data-width="320"
data-height="60"
data-color="white"
data-background-color="red"
data-icon="fa-recycle"
data-device="Device"
data-set="reset_consumable mainbrush"
onclick="$('.dialog-close').trigger('click');"
class="round centered bigger">Rücksetzen
</div>
   </div>
</div>
<div>
<div class="large middle"><font color="#050505">Akku:</font></div>
<div data-type="level"
data-device="Device"
data-get="batPct"
data-min="0"
data-max="100"
data-height="15"
data-width="150"
data-limits='["0","30","70"]'
data-colors='["red","yellow","green"]'
class="large horizontal">
</div>

<div data-type="label"
data-device="Device"
data-get="batPct"
data-unit="%%0A"
class="smaller">
</div>
</div>
</div>
</div>
</div>
  </td>
</tr>
</tr>
</table>

Lippie

#321
Zitat von: Dracolein am 19 Dezember 2019, 15:04:03
Wenn connection = connected, aktualisieren sich die Readings signal-rssi und signal-snr sekündlich. Mehr konnte ich gestern abend noch nicht testen.
Ich antworte Euch gern auf weitere Fragen (mit dem Hinweis, dass ich Laie bin  ::) )

Meine Idee für Touch UI und im Hinblick auf eine zu managende Datenflut würde ich probieren, vor jeden Steuerbefehl zunächst den Befehl zum connecten zu setzen und nach Abschluss eines Saugvorgangs o.ä. den Befehl zum Disconnect zu geben.

Das aktualisieren der Readings signal-rssi und signal-snr kommt vom Roomba selbst. Der sendet offensichtlich so oft. Solange alle anderen Readings weniger oft aktualisieren, ist das Verhalten i.O.
Du kannst es mal mit event-min-interval probieren, um die "unnütze" Datenflut in den Griff zu bekommen.
Die Reconnectfunktion (disconnect -> warten-> connect) ist per default inaktiv, da die Roomba9xx das nicht benötigen, während die 6xx .. 8xx Roombas u.U. nie wieder etwas anderes außer signal-rssi und signal-snr senden und somit Infos wie der Ladezustand ausbleiben.

Wenn Du dennoch ein zyklisches automatisches Trennen und Verbinden nutzen möchtest, kannst Du das entsprechend konfigurieren.
Hier meine Konfiguration:
alwaysconnected = 0    -> aktiviert den zyklischen reconnect
checkInterval = 30     -> Trennen nach Ablauf von checkInterval Sekunden
reconnecttime = 870    -> Warten für die Dauer von reconnecttime Sekunden und anschließendes Wiederherstellen der Verbindung
timeout = 30           -> sollte nicht größer als checkInterval sein

Damit frage ich im 15 Minten-Takt alle Readings ab und halte die Verbindung für max. 30s aufrecht.

Wie gesagt, ich würde erstmal versuchen eine pfiffige Einstellung mit event-min-interval, event-on-change-reading und event-on-update-reading zu finden.

Bzgl. der Readings wäre mein Vorschlag, das Attribut substitute einzuführen und per Default zu initialisieren.
Damit sollte die Veständlichkeit auf Dauer besser werden. Für entsprechende Vorschläge bin ich offen  ;D

VG
Sebastian

Lippie

Hi,
habe das attr substitute eingebaut.
anbei die Vorabversion zum Testen im Anhang.

Hier noch meine Konfiguration für substitute und userReadings als Beispiel:

substitute bbmssn-nMssn:Anzahl_Reinigungsaufgaben!none;bbrun-nScrubs:Anzahl_Schmutzereignisse!none
userReadings Betriebsdauer {return ReadingsVal($name,"bbrun-hr","00") . ":" . sprintf("%#.2u",ReadingsVal($name,"bbrun-min","00")) }


Damit kann man sich zumindest Readings sinnvoll benennen oder wie im Beispiel gezeigt, auch selber welche erzeugen.

Wenns überzeugt, können wir es ja in die offizielle Version übertragen.

VG
Sebastian

Thorsten Pferdekaemper

Zitat von: Dracolein am 18 Dezember 2019, 19:08:59
ich habe mich heute abend nochmal probiert und musste folgendes Paket nachinstallieren
sudo apt-get install libmodule-pluggable-perl
nachdem ich zunächst diese Logfile Fehlermeldung beim define-Versuch erhielt

Danach verlief der Installationsprozess entsprechend der Github Anleitung.

Achso, vielleicht ein Hinweis noch:
In der Anleitung steht nicht, dass man dem Roomba im Dock stehen haben muss.
Ich habe jetzt beides ins Readme auf Github geschrieben.
Gruß,
   Thorsten
FUIP

Thorsten Pferdekaemper

Zitat von: Lippie am 20 Dezember 2019, 13:51:27
habe das attr substitute eingebaut.
Ich glaube, dass das nicht wirklich viel bringt. Das Hauptproblem ist doch eher, dass es keine Doku für die "hunderte" von Readings gibt. Klar, wenn man das hätte, dann könnte man die Readings schöner benennen, aber selbst dann wird es Missverständnisse geben.
Ich habe jetzt mal meine bisherige Liste ins Git geladen:
https://github.com/ThorstenPferdekaemper/FHEM-Roomba980/blob/master/Roomba980Fields.xlsx
Falls jemand weitere Beiträge dazu hat, bitte Bescheid geben, dann nehme ich das auf.
Gruß,
   Thorsten
FUIP

Jewe

Zitat von: Lippie am 20 Dezember 2019, 13:51:27
Hi,
habe das attr substitute eingebaut.
anbei die Vorabversion zum Testen im Anhang.

Hier noch meine Konfiguration für substitute und userReadings als Beispiel:

substitute bbmssn-nMssn:Anzahl_Reinigungsaufgaben!none;bbrun-nScrubs:Anzahl_Schmutzereignisse!none
userReadings Betriebsdauer {return ReadingsVal($name,"bbrun-hr","00") . ":" . sprintf("%#.2u",ReadingsVal($name,"bbrun-min","00")) }


Damit kann man sich zumindest Readings sinnvoll benennen oder wie im Beispiel gezeigt, auch selber welche erzeugen.

Wenns überzeugt, können wir es ja in die offizielle Version übertragen.

VG
Sebastian

Hey, habe diese Version mal ausprobiert und im Moment aber das attr Substitude noch nicht eingegeben. Seit dem bekomme ich folgende Meldungen (ca. alle 6s) im Log:
2019.12.28 19:55:17 2: Could not substitute Text-Reading:
2019.12.28 19:55:17 2: Could not substitute Text-Reading:
2019.12.28 19:55:23 5: MQTT Robbie message received: [3] Publish/at-most-once wifistat
  7b 22 73 74 61 74 65 22 3a 7b 22 72 65 70 6f 72  {"state":{"repor
  74 65 64 22 3a 7b 22 73 69 67 6e 61 6c 22 3a 7b  ted":{"signal":{
  22 72 73 73 69 22 3a 2d 34 34 2c 22 73 6e 72 22  "rssi":-44,"snr"
  3a 34 35 7d 7d 7d 7d                             :45}}}}
2019.12.28 19:55:23 2: Could not substitute Text-Reading:
2019.12.28 19:55:23 2: Could not substitute Text-Reading:
2019.12.28 19:55:29 5: MQTT Robbie message received: [3] Publish/at-most-once wifistat
  7b 22 73 74 61 74 65 22 3a 7b 22 72 65 70 6f 72  {"state":{"repor
  74 65 64 22 3a 7b 22 73 69 67 6e 61 6c 22 3a 7b  ted":{"signal":{
  22 72 73 73 69 22 3a 2d 34 34 2c 22 73 6e 72 22  "rssi":-44,"snr"
  3a 34 36 7d 7d 7d 7d         


Gruß Jens


Gesendet von iPhone mit Tapatalk

JonnyS

Hi zusammen,
nachdem ich einigige Fehler ausgemerz hatte, läuft das Modul Roomba980 bei mir auch. Aber scheinbar klappt der discovermode bei mir nicht. Ich habe einen roomba767 ist da was zu machen? pwd auslesen mit dorita980 klappt einwandfrei.

{
  ver: '3',
  hostname: 'Roomba-3192891C71527850',
  robotname: 'heini',
  ip: '192.168.1.43',
  mac: 'DC:F5:05:42:36:FB',
  sw: '3.3.47',
  sku: 'R676040',
  nc: 0,
  proto: 'mqtt',
  cap: { ota: 1, eco: 1, svcConf: 1 },
  blid: 'xxxxxxxxxxxxxxxxxxxxxxx'
}
Password=> xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx <= Yes, all this string.


Umgebung:
fhem.pl                     21056 2020-01-26
42_Roomba980.pm                10 2018-03-26 17:00:00Z ThorstenPferdekaemper (update vom git)
-----------------------------------------------------------------------
fhem@debian sonoff, MAX und eigenbau

KAGS

Hallo
Das scheint bei mir auch nicht zu funktionieren.
Ich lasse allerdings Fhem auf DOCKER laufen.

Muss da ein Port geöffnet werden?

hyper2910

Wie zeigt ihr euren Robbie den in fhem,

Zeigt doch mal eure webCmd, overrides etc.
Cubietruck mit FHEM, CUL V3 443MHz, 2 x CULV3 868MHz, Milights, Max Heizungssteuerung, Homematic, IT,

Mirko_2013

Hallo zusammen,

Ich hatte in der Vergangenheit erfolgreich meinen Roomba über Fhem laufen
Damals mit dorita980 eingebunden.
Nach neuaufsetzen von FHEM wollte ich das ganze jetzt mit dem Roomba9801 Modul versuchen.
Bei mir liest er das Password aus, jedoch nicht "Blid und Username".
Beim Versuch ein connect aufzubauen, habe ich jede sekunde mehrfache disconnect / connected meldungen.
Ich vermude mal das es an dem fehlenden Usernamen / Blid liegt.
Meine Frage: muss ich auch mit dem Roomba980 Modul die dorita980 Installation durchführen, oder wie komme ich sonst an die Daten?

Danke für die Hilfe.
Gruß
Mirko
HP Microserver Gen8; fhem-5.8; CUL868 - V1.66; CUL868 - V1.61; CUL433 - V1.61; CUNX - V2.67; eBus Koppler USB