Roomba Staubsaugerroboter

Begonnen von Prof. Dr. Peter Henning, 10 September 2020, 16:40:34

Vorheriges Thema - Nächstes Thema

loetmeister

Hallo Hermann,

bei dem E5 sind die MQTT Nachrichten auch anders strukturiert, ich hatte 99_RoombaUtils.pm etwas angepasst... Siehe https://forum.fhem.de/index.php/topic,114166.msg1120926.html#msg1120926, bzw. https://forum.fhem.de/index.php/topic,114166.msg1119270.html#msg1119270 und folgende.

99_RoombaUtils.pm must du manuell aktualisieren..

Gruß,
Thomas

Prof. Dr. Peter Henning

ZitatDa hat sich anscheinend ein Fehler in der Zeile 210 eingeschlichen.
Werde ich morgen ansehen - so etwas kann immer passieren, weil ich meine aktuelle Version (immerhin "work in progress") kurzerhand ins SVN geschickt habe.

Darum steht das ja auch im contrib, und nicht in der Hauptdistribution...

Heut bin ich nach eine schönen sonnigen Golfrunde nicht in Stimmung, morgen muss ich noch 40 Klausuren korrigieren, und dann kommt wieder Roomba dran.

LG

pah

gestein

kein Thema, Job und Privates gehen immer vor  ;)


hapege

Hi Thomas,

super, Danke! Die ifs habe ich auch schon mal testweise auseinandergezogen, aber mit den hashes / returns bin ich nicht zurechtgekommen. Über Deinen Post mit den Anpassungen habe ich tatsächlich drübergelesen, aber nicht erkannt - sorry.

Wird die Woche gleich ausprobiert!

"Manuell aktualisieren" - von hier: https://svn.fhem.de/fhem/trunk/fhem/contrib/Roomba/ ? Oder geht das nur über subversion?

Danke schon mal,

Hermann

Developer: 70_ESCVP21net.pm, 70_SVDRP.pm
Mitglied FHEM e.V.

delMar

Zitat von: hapege am 21 Februar 2021, 18:32:32
Somit kommt auch z. B. nie ein batPct an
Bei mir heißt das Reading "battery"

Zitat von: hapege am 21 Februar 2021, 18:32:32
Interpretiere ich das richtig? Wenn ja, wie müsste man das angehen, um die gesamte, große Nachricht zu parsen?
Du kannst in der Methode reading angeben, wie du die Readings verarbeiten willst (und welche du behalten willst).

Wenn du die ganz "rohen" Readings haben willst, kannst du im Attribut readingList anstatt $DEVICETOPIC:.* {roomba::reading($NAME,$EVENT)} nur $DEVICETOPIC:.* { json2nameValue($EVENT) } verwenden. Dann funktioniert aber auch zB die Kartenerstellung nicht mehr, und auch die interessanteren Readings (Akkustand, aktueller Status, etc) heißen dann anders.



Maintainer von: ZoneMinder, TA_CMI_JSON, ONKYO_AVR, DENON_AVR, CanOverEthernet, IPCAM.

Vielgenutzte Module sind die größte Motivation für Entwickler.
Bitte zumindest 'attr global sendStatistics onUpdate' setzen.
Denn: ohne 'sendStatistics' keine Zahlen.

dk3572

Zitat von: dk3572 am 19 Februar 2021, 09:37:41
Hallo,

ich habe meinen Roomba nach Anleitung aus dem Wiki in Fhem installiert.
Nach Abschluss eines Reinigungsauftrages erhalte ich nachstehende Meldung und Fhem ist nicht mehr erreichbar (eingefroren).

2021.02.19 06:21:15.973 1: [RoombaUtils] Device Roomba_neu phase transition stop -> charge
2021.02.19 06:37:07.045 1: [RoombaUtils] transition charge -> run should start intialization
2021.02.19 06:37:07.046 1: [RoombaUtils] Initialization of map for device Roomba_neu
2021.02.19 06:37:13.933 1: [RoombaUtils] pausing run -> stop
2021.02.19 06:37:16.967 1: [RoombaUtils] transition stop -> hmUsrDock should start finalization
2021.02.19 06:37:16.967 1: [RoombaUtils] Finalization of map for device Roomba_neu
2021.02.19 06:37:16.968 1: PERL WARNING: Use of uninitialized value in subtraction (-) at /usr/share/perl5/Math/ConvexHull.pm line 88.


Kann mir hier jemand weiterhelfen?

Vielen Dank im Voraus und schönes Wochenende schon mal.
Dieter

Hallo,

ist hier evtl. einer so nett und hilft mir weiter?
Wir würde schon eine Erklärung reichen, wie ich die Erstellung der Karten deaktivieren kann.

Vielen Dank und Gruß
Dieter

delMar

#231
Hi Dieter,

Zitat von: dk3572 am 23 Februar 2021, 15:15:47
Wir würde schon eine Erklärung reichen, wie ich die Erstellung der Karten deaktivieren kann.

Das wurde in einem Vorpost mal so beantwortet:
Zitat von: Prof. Dr. Peter Henning am 29 Januar 2021, 04:43:35
Es reicht, das Attribut SVG_room zu löschen.

Ich gehe davon aus, dass das jetzt immer noch so ist.

Ansonsten hilft wohl Löschen und Neu einrichten vom Device laut Anleitung. Den Teil mit Kartenerstellung dann einfach weglassen :-)

LG
Martin
Maintainer von: ZoneMinder, TA_CMI_JSON, ONKYO_AVR, DENON_AVR, CanOverEthernet, IPCAM.

Vielgenutzte Module sind die größte Motivation für Entwickler.
Bitte zumindest 'attr global sendStatistics onUpdate' setzen.
Denn: ohne 'sendStatistics' keine Zahlen.

dk3572

Zitat von: delMar am 23 Februar 2021, 18:56:18
Hi Dieter,

Das wurde in einem Vorpost mal so beantwortet:
Ich gehe davon aus, dass das jetzt immer noch so ist.

Ansonsten hilft wohl Löschen und Neu einrichten vom Device laut Anleitung. Den Teil mit Kartenerstellung dann einfach weglassen :-)

LG
Martin

Hallo Martin,

danke für deine Unterstützung.

Wie im Vorpost auch zu lesen ist, gibt es das Attribut SVG_room bei mir nicht, da ich den Teil mit Kartenerstellung erst gar nicht hinzugefügt habe.

Hast du noch einen weiteren Tipp?
Evtl. in der 99_RoombaUtils.pm etwas aus kommentieren?

Danke und VG
Dieter

delMar

Zitat von: dk3572 am 23 Februar 2021, 19:57:16
Wie im Vorpost auch zu lesen ist, gibt es das Attribut SVG_room bei mir nicht, da ich den Teil mit Kartenerstellung erst gar nicht hinzugefügt habe.

Hast du noch einen weiteren Tipp?
Evtl. in der 99_RoombaUtils.pm etwas aus kommentieren?
Also ich hab das mit der Kartenerstellung ja auch nicht mit drin, und da blockiert dann auch nix bei mir.
Als ich sie drin hatte, ging der FHEM Perl-Prozess schon auch auf 100% CPU-Last, aber mit dem Entfernen des Attributs wie beschrieben war dann wieder alles gut bei mir.
Und für genauere Analysen hatte ich noch keine Zeit.

Ganz generisches Fehlersuchmuster: bist du dir sicher, dass es die Kartenerstellung ist, die blockiert?
Der Log-Eintrag, der unmittelbar vorm Einfrieren da sein müsste, wäre sowas wie "[RoombaUtils] Finalization of map for device ...". Auf Log-Level 1. Also bitte sicherstellen, dass global verbose auf 1 steht. Eine Änderung im Device selber ändert in einer Utils-Methode nix (würde sie vielleicht, aber hier wird Log statt Log3 verwendet, was aufs globale log-level geht - wohl, weil es sich ohnehin um Utility Methoden handelt)

Wenn es die Kartenerstellung ist, dann sollte das Auskommentieren der Zeile #612 diesen Aufruf (finalizemap) entfernen. Dann is aber immer noch fraglich, warum das überhaupt eintritt, wenn es das Attribut nicht gibt. Vielleicht einer dieser feinen Unterschiede zwischen den Produktreihen, die dann unterschiedliches Verhalten bewirken... wurde hier schon ein- zwei mal erwähnt.

Jo, mehr fällt mir dazu auch nicht ein.
Viel Glück

schöne Grüße
Martin


Maintainer von: ZoneMinder, TA_CMI_JSON, ONKYO_AVR, DENON_AVR, CanOverEthernet, IPCAM.

Vielgenutzte Module sind die größte Motivation für Entwickler.
Bitte zumindest 'attr global sendStatistics onUpdate' setzen.
Denn: ohne 'sendStatistics' keine Zahlen.

marboj

Habe mal ne kurze Frage zum Roomba.

Habe ihn erfolgreich in FHEM integriert. Habe auch schon rausgefunden, dass immer dann, wenn sich dem MQTT2-Client connected, das MQTT2-Device des Roomba neue Readings übertragen bekommt.

Bei mir passiert diese Aktualisierung gefühlt zweimal am Tag. Kann man die Häufigkeit ändern? Wie wird überhaupt das Aktualisieren angestoßen?

Gruß
Marco
meine FHEM-Konfiguration: Raspberry Pi4, BT-Dongle, CUL868, CeeBee II

delMar

#235
Zitat von: marboj am 26 Februar 2021, 11:13:37
Kann man die Häufigkeit ändern? Wie wird überhaupt das Aktualisieren angestoßen?

Wenn du am IODevice vom Roomba (also am MQTT2-Client device, nicht direkt am Roomba-Device) ein connect machst, werden die Readings automatisch aktualisiert.
So würde das zB alle 15 Minuten passieren:

define atRoombaUpdate at *00:15 set iRobotRoombaClient connect

Der Disconnect erfolgt dann ohnehin automatisch nach einigen Sekunden.

schöne Grüße
Martin
Maintainer von: ZoneMinder, TA_CMI_JSON, ONKYO_AVR, DENON_AVR, CanOverEthernet, IPCAM.

Vielgenutzte Module sind die größte Motivation für Entwickler.
Bitte zumindest 'attr global sendStatistics onUpdate' setzen.
Denn: ohne 'sendStatistics' keine Zahlen.

marboj

ok. An den at-Befehl habe ich auch gedacht. Ich hatte gedacht, es gibt beim Device eine Art "refresh".

Nun gut, so mache ich das, allerdings besser so:

define atRoombaUpdate at +*00:15 set iRobotRoombaClient connect

Damit es sich wiederholt ;-)
meine FHEM-Konfiguration: Raspberry Pi4, BT-Dongle, CUL868, CeeBee II

marboj

#237
Eine Anfängerfrage noch zu den 99_RoombaUtils.pm:

Habe gem. Wiki-Eintrag das stateformat wie folgt definiert: attr Roomba_E5 stateFormat cmPhaseE (battery %)

Readingslist auch : readingList $DEVICETOPIC:.* {roomba::reading($NAME,$EVENT)}

Die 99_RoombaUtils.pm in den entsprechenden Ordner /opt/fhem/FHEM kopiert.

FHEM neu gestartet.

Leider wird der Status immer noch so angezeigt: cmPhaseE (battery %)

Wie werden denn die "neuen" Readings erstellt? Was muss ich noch tun?

Hier mein Device:

defmod Roomba_E5_Device MQTT2_DEVICE 3167072470415630
attr Roomba_E5_Device IODev Roomba_E5
attr Roomba_E5_Device devicetopic 3XXXXXXXXXX0
attr Roomba_E5_Device icon vacuum_top
attr Roomba_E5_Device readingList $DEVICETOPIC:.* {roomba::reading($NAME,$EVENT)}
attr Roomba_E5_Device room 10_Wohnzimmer
attr Roomba_E5_Device setList start cmd {"command": "start", "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"}
attr Roomba_E5_Device stateFormat cmPhaseE (battery %)
attr Roomba_E5_Device webCmd start:dock:resume:pause


Hier das Log:

2021.02.26 12:56:53 1: ERROR evaluating my $CID=   $evalSpecials->{'%CID'};my $DEVICETOPIC=   $evalSpecials->{'%DEVICETOPIC'};my $EVENT=   $evalSpecials->{'%EVENT'};my $EVTPART0=   $evalSpecials->{'%EVTPART0'};my $JSONMAP=   $evalSpecials->{'%JSONMAP'};my $NAME=   $evalSpecials->{'%NAME'};my $TOPIC=   $evalSpecials->{'%TOPIC'};{roomba::reading($NAME,$EVENT)}: Undefined subroutine &roomba::reading called at (eval 2644) line 1.

2021.02.26 12:56:53 1: ERROR evaluating my $CID=   $evalSpecials->{'%CID'};my $DEVICETOPIC=   $evalSpecials->{'%DEVICETOPIC'};my $EVENT=   $evalSpecials->{'%EVENT'};my $EVTPART0=   $evalSpecials->{'%EVTPART0'};my $JSONMAP=   $evalSpecials->{'%JSONMAP'};my $NAME=   $evalSpecials->{'%NAME'};my $TOPIC=   $evalSpecials->{'%TOPIC'};{roomba::reading($NAME,$EVENT)}: Undefined subroutine &roomba::reading called at (eval 2645) line 1.

2021.02.26 12:56:53 1: ERROR evaluating my $CID=   $evalSpecials->{'%CID'};my $DEVICETOPIC=   $evalSpecials->{'%DEVICETOPIC'};my $EVENT=   $evalSpecials->{'%EVENT'};my $EVTPART0=   $evalSpecials->{'%EVTPART0'};my $JSONMAP=   $evalSpecials->{'%JSONMAP'};my $NAME=   $evalSpecials->{'%NAME'};my $TOPIC=   $evalSpecials->{'%TOPIC'};{roomba::reading($NAME,$EVENT)}: Undefined subroutine &roomba::reading called at (eval 2646) line 1.

2021.02.26 12:56:53 1: ERROR evaluating my $CID=   $evalSpecials->{'%CID'};my $DEVICETOPIC=   $evalSpecials->{'%DEVICETOPIC'};my $EVENT=   $evalSpecials->{'%EVENT'};my $EVTPART0=   $evalSpecials->{'%EVTPART0'};my $JSONMAP=   $evalSpecials->{'%JSONMAP'};my $NAME=   $evalSpecials->{'%NAME'};my $TOPIC=   $evalSpecials->{'%TOPIC'};{roomba::reading($NAME,$EVENT)}: Undefined subroutine &roomba::reading called at (eval 2647) line 1.

2021.02.26 12:56:53 1: ERROR evaluating my $CID=   $evalSpecials->{'%CID'};my $DEVICETOPIC=   $evalSpecials->{'%DEVICETOPIC'};my $EVENT=   $evalSpecials->{'%EVENT'};my $EVTPART0=   $evalSpecials->{'%EVTPART0'};my $JSONMAP=   $evalSpecials->{'%JSONMAP'};my $NAME=   $evalSpecials->{'%NAME'};my $TOPIC=   $evalSpecials->{'%TOPIC'};{roomba::reading($NAME,$EVENT)}: Undefined subroutine &roomba::reading called at (eval 2648) line 1.

2021.02.26 12:56:53 1: ERROR evaluating my $CID=   $evalSpecials->{'%CID'};my $DEVICETOPIC=   $evalSpecials->{'%DEVICETOPIC'};my $EVENT=   $evalSpecials->{'%EVENT'};my $EVTPART0=   $evalSpecials->{'%EVTPART0'};my $EVTPART1=   $evalSpecials->{'%EVTPART1'};my $JSONMAP=   $evalSpecials->{'%JSONMAP'};my $NAME=   $evalSpecials->{'%NAME'};my $TOPIC=   $evalSpecials->{'%TOPIC'};{roomba::reading($NAME,$EVENT)}: Undefined subroutine &roomba::reading called at (eval 2649) line 1.

2021.02.26 12:56:53 1: ERROR evaluating my $CID=   $evalSpecials->{'%CID'};my $DEVICETOPIC=   $evalSpecials->{'%DEVICETOPIC'};my $EVENT=   $evalSpecials->{'%EVENT'};my $EVTPART0=   $evalSpecials->{'%EVTPART0'};my $EVTPART1=   $evalSpecials->{'%EVTPART1'};my $JSONMAP=   $evalSpecials->{'%JSONMAP'};my $NAME=   $evalSpecials->{'%NAME'};my $TOPIC=   $evalSpecials->{'%TOPIC'};{roomba::reading($NAME,$EVENT)}: Undefined subroutine &roomba::reading called at (eval 2651) line 1.

2021.02.26 12:56:53 1: ERROR evaluating my $CID=   $evalSpecials->{'%CID'};my $DEVICETOPIC=   $evalSpecials->{'%DEVICETOPIC'};my $EVENT=   $evalSpecials->{'%EVENT'};my $EVTPART0=   $evalSpecials->{'%EVTPART0'};my $EVTPART1=   $evalSpecials->{'%EVTPART1'};my $JSONMAP=   $evalSpecials->{'%JSONMAP'};my $NAME=   $evalSpecials->{'%NAME'};my $TOPIC=   $evalSpecials->{'%TOPIC'};{roomba::reading($NAME,$EVENT)}: Undefined subroutine &roomba::reading called at (eval 2652) line 1.

2021.02.26 12:56:53 1: ERROR evaluating my $CID=   $evalSpecials->{'%CID'};my $DEVICETOPIC=   $evalSpecials->{'%DEVICETOPIC'};my $EVENT=   $evalSpecials->{'%EVENT'};my $EVTPART0=   $evalSpecials->{'%EVTPART0'};my $EVTPART1=   $evalSpecials->{'%EVTPART1'};my $JSONMAP=   $evalSpecials->{'%JSONMAP'};my $NAME=   $evalSpecials->{'%NAME'};my $TOPIC=   $evalSpecials->{'%TOPIC'};{roomba::reading($NAME,$EVENT)}: Undefined subroutine &roomba::reading called at (eval 2653) line 1.

2021.02.26 12:56:53 1: ERROR evaluating my $CID=   $evalSpecials->{'%CID'};my $DEVICETOPIC=   $evalSpecials->{'%DEVICETOPIC'};my $EVENT=   $evalSpecials->{'%EVENT'};my $EVTPART0=   $evalSpecials->{'%EVTPART0'};my $JSONMAP=   $evalSpecials->{'%JSONMAP'};my $NAME=   $evalSpecials->{'%NAME'};my $TOPIC=   $evalSpecials->{'%TOPIC'};{roomba::reading($NAME,$EVENT)}: Undefined subroutine &roomba::reading called at (eval 2656) line 1.

2021.02.26 12:56:53 1: ERROR evaluating my $CID=   $evalSpecials->{'%CID'};my $DEVICETOPIC=   $evalSpecials->{'%DEVICETOPIC'};my $EVENT=   $evalSpecials->{'%EVENT'};my $EVTPART0=   $evalSpecials->{'%EVTPART0'};my $JSONMAP=   $evalSpecials->{'%JSONMAP'};my $NAME=   $evalSpecials->{'%NAME'};my $TOPIC=   $evalSpecials->{'%TOPIC'};{roomba::reading($NAME,$EVENT)}: Undefined subroutine &roomba::reading called at (eval 2658) line 1.

2021.02.26 12:56:53 1: ERROR evaluating my $CID=   $evalSpecials->{'%CID'};my $DEVICETOPIC=   $evalSpecials->{'%DEVICETOPIC'};my $EVENT=   $evalSpecials->{'%EVENT'};my $EVTPART0=   $evalSpecials->{'%EVTPART0'};my $JSONMAP=   $evalSpecials->{'%JSONMAP'};my $NAME=   $evalSpecials->{'%NAME'};my $TOPIC=   $evalSpecials->{'%TOPIC'};{roomba::reading($NAME,$EVENT)}: Undefined subroutine &roomba::reading called at (eval 2660) line 1.

2021.02.26 12:56:53 1: ERROR evaluating my $CID=   $evalSpecials->{'%CID'};my $DEVICETOPIC=   $evalSpecials->{'%DEVICETOPIC'};my $EVENT=   $evalSpecials->{'%EVENT'};my $EVTPART0=   $evalSpecials->{'%EVTPART0'};my $JSONMAP=   $evalSpecials->{'%JSONMAP'};my $NAME=   $evalSpecials->{'%NAME'};my $TOPIC=   $evalSpecials->{'%TOPIC'};{roomba::reading($NAME,$EVENT)}: Undefined subroutine &roomba::reading called at (eval 2661) line 1.

2021.02.26 12:56:53 1: ERROR evaluating my $CID=   $evalSpecials->{'%CID'};my $DEVICETOPIC=   $evalSpecials->{'%DEVICETOPIC'};my $EVENT=   $evalSpecials->{'%EVENT'};my $EVTPART0=   $evalSpecials->{'%EVTPART0'};my $EVTPART1=   $evalSpecials->{'%EVTPART1'};my $EVTPART2=   $evalSpecials->{'%EVTPART2'};my $EVTPART3=   $evalSpecials->{'%EVTPART3'};my $EVTPART4=   $evalSpecials->{'%EVTPART4'};my $EVTPART5=   $evalSpecials->{'%EVTPART5'};my $JSONMAP=   $evalSpecials->{'%JSONMAP'};my $NAME=   $evalSpecials->{'%NAME'};my $TOPIC=   $evalSpecials->{'%TOPIC'};{roomba::reading($NAME,$EVENT)}: Undefined subroutine &roomba::reading called at (eval 2663) line 1.

2021.02.26 12:56:54 1: ERROR evaluating my $CID=   $evalSpecials->{'%CID'};my $DEVICETOPIC=   $evalSpecials->{'%DEVICETOPIC'};my $EVENT=   $evalSpecials->{'%EVENT'};my $EVTPART0=   $evalSpecials->{'%EVTPART0'};my $JSONMAP=   $evalSpecials->{'%JSONMAP'};my $NAME=   $evalSpecials->{'%NAME'};my $TOPIC=   $evalSpecials->{'%TOPIC'};{roomba::reading($NAME,$EVENT)}: Undefined subroutine &roomba::reading called at (eval 2666) line 1.


Es fehlen wohl noch perl-module:

Can't locate Math/Polygon/Calc.pm in @INC (you may need to install the Math::Polygon::Calc module) (@INC contains: ./lib ./FHEM . /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) at ./FHEM/99_RoombaUtils.pm line 45.
BEGIN failed--compilation aborted at ./FHEM/99_RoombaUtils.pm line 45.


Wie installiere ich die?
meine FHEM-Konfiguration: Raspberry Pi4, BT-Dongle, CUL868, CeeBee II

marboj

bin ein Stück weiter:

habe die folgenden Module installiert:

sudo apt-get install libmath-polygon-perl
sudo apt-get install libmath-convexhull-perl


Nun kommen zwar keine Hinweise auf fehlendes Perl, aber trotzdem sieht es nicht schön aus:

2021.02.26 13:34:37 1: PERL WARNING: "my" variable $name masks earlier declaration in same scope at ./FHEM/99_RoombaUtils.pm line 230.
2021.02.26 13:34:37 1: PERL WARNING: "my" variable $data masks earlier declaration in same scope at ./FHEM/99_RoombaUtils.pm line 230.
2021.02.26 13:34:37 1: PERL WARNING: "state" variable @_ masks earlier declaration in same scope at ./FHEM/99_RoombaUtils.pm line 230.
2021.02.26 13:34:37 1: PERL WARNING: "my" variable @evt masks earlier declaration in same scope at ./FHEM/99_RoombaUtils.pm line 231.
2021.02.26 13:34:37 1: PERL WARNING: "my" variable $cmd masks earlier declaration in same scope at ./FHEM/99_RoombaUtils.pm line 263.
2021.02.26 13:34:37 1: reload: Error:Modul 99_RoombaUtils deactivated:
syntax error at ./FHEM/99_RoombaUtils.pm line 210, near ""opened"{"
Global symbol "$cmd" requires explicit package name (did you forget to declare "my $cmd"?) at ./FHEM/99_RoombaUtils.pm line 214.
Global symbol "$cmd" requires explicit package name (did you forget to declare "my $cmd"?) at ./FHEM/99_RoombaUtils.pm line 214.
Global symbol "$cmd" requires explicit package name (did you forget to declare "my $cmd"?) at ./FHEM/99_RoombaUtils.pm line 215.
syntax error at ./FHEM/99_RoombaUtils.pm line 216, near "}"
Can't use global @_ in "my" at ./FHEM/99_RoombaUtils.pm line 219, near "= @_"
Global symbol "$name" requires explicit package name (did you forget to declare "my $name"?) at ./FHEM/99_RoombaUtils.pm line 220.
syntax error at ./FHEM/99_RoombaUtils.pm line 227, near "}"
Can't use global @_ in "my" at ./FHEM/99_RoombaUtils.pm line 230, near "= @_"
syntax error at ./FHEM/99_RoombaUtils.pm line 265, near "}"
./FHEM/99_RoombaUtils.pm has too many errors.


Was kann icht jetzt tun?
meine FHEM-Konfiguration: Raspberry Pi4, BT-Dongle, CUL868, CeeBee II

delMar

Zitat von: marboj am 26 Februar 2021, 13:40:06
Was kann icht jetzt tun?
Da ist noch ein Tippfehler im eingecheckten Code. Wird in einem Vorpost mal erwähnt. Du musst wo eine schließende Klammer dazugeben, wenn ich mich recht erinnere
Maintainer von: ZoneMinder, TA_CMI_JSON, ONKYO_AVR, DENON_AVR, CanOverEthernet, IPCAM.

Vielgenutzte Module sind die größte Motivation für Entwickler.
Bitte zumindest 'attr global sendStatistics onUpdate' setzen.
Denn: ohne 'sendStatistics' keine Zahlen.