Neues Modul: THINKINGCLEANER (für iRobot Roomba 500/600)

Begonnen von d.schoen, 23 August 2015, 13:45:59

Vorheriges Thema - Nächstes Thema

raspklaus

Ich bekomme mit der letzten Version folgende Fehlermeldungen wenn ich set clean absende

2016.06.03 15:57:35 1: PERL WARNING: Use of uninitialized value $request{"type"} in concatenation (.) or string at ./FHEM/98_THINKINGCLEANER.pm line 565.
2016.06.03 15:57:35 1: PERL WARNING: Use of uninitialized value $request{"data"} in concatenation (.) or string at ./FHEM/98_THINKINGCLEANER.pm line 565.
2016.06.03 15:57:35 1: PERL WARNING: Use of uninitialized value $request{"header"} in concatenation (.) or string at ./FHEM/98_THINKINGCLEANER.pm line 565.
2016.06.03 15:57:35 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/98_THINKINGCLEANER.pm line 534.


und er tut nichts

Loredo

Hallo zusammen,


ich habe das Modul komplett neu geschrieben und dabei an die FHEM Standards angeglichen (setter, Readings, etc).
Es fehlt eigentlich nur noch die Doku und die Scheduler Change/Delete Funktion.


Tester sind herzlich willkommen, bevor ich das Modul die Tage ins SVN einchecke.



Gruß
Julian

Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

scooty

Hallo Loredo,

danke, dass Du Dich des Moduls angenommen hast.
:)
Auf die Schnelle:
- Funktionen on/off/dock/undock funktionieren gut
- in der Auswahlliste der Attribute gibt es statt "event-on-change-reading" ein Attribut "fhemBaseURLevent-on-change-reading"
- wäre es möglich noch ein Reading für  den relativ zurückgelegten Weg mit aufzunehmen (analog zu  hier)

Vielen Dank,
Andreas
Fhem auf Gigabyte Brix
CUL V3 HM / CUL V3 MAX / MaxCube aFW Homematic&MAX / ZWave.me ZME_UZB1 / SDuino 433 / Velux KLF200
Homematic / MAX / Logitech Hub / ZWave / Wifi LED / div. 433 Temperatursensoren / pywws WH10880 / IO Homecontrol

Loredo

#63
Beiliegende Version ist jetzt Feature Complete. Neu hinzugekommen:


- vollständige Steuerung der Scheduler (add, delete, modify)
- Webhook Unterstützung mit automatischer Registrierung (notwendige Attribute: webhookFWinstance und webhookHttpHostname)
- dynamisches Polling abhängig von Webhook und ob gerade gesaugt wird (beeinflussbar mit poll* Attributen)
- neues Reading cleaningTimeLast
- das Reading cleaningDistance wurde in cleaningDistanceTotal umbenannt
- das Reading cleaningDistance zeigt jetzt relativ zum Beginn der Saugsession die Distanz an (sobald Station verlassen wird)
- neue Readings cleaningDistanceLast (sobald Station wieder erreicht wird) und cleaningDistanceStart (Hilfsreading zur Berechnung)
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

scooty

Hallo Loredo,

danke für die weiteren Funktionalitäten.
Funktioniert soweit bei mir (benutze aber eigentlich auch nur on/off/undock/dock, die Laufwegs-Werte und den Staubbehälter-Status).

Eine Sache ist mir dabei jedoch noch aufgefallen,
Wenn der Roomba in der Docking Station steht und ich ihn zum Saugen starten möchte, reagiert er auf ein einfaches "on" nicht.
Aktuell sende ich erst ein "undock", und nach 10 Sekunden dann das "on". So startet er zuverlässig.
Kann jetzt nicht beurteilen, ob das ein Fehler ist oder von Dir so gewollt?

Könntest Du noch ein bisschen detaillierter erläutern, was die Attribute für Webhook und Polling beeinflussen? Oder vielleicht einfach kurz Vor-/Nachteile bei Verwendung erläutern?
Bisher habe ich nämlich keinerlei dieser Attribute in Benutzung und es funktioniert aus so.
:)

Nochmals vielen Dank,
Andreas
Fhem auf Gigabyte Brix
CUL V3 HM / CUL V3 MAX / MaxCube aFW Homematic&MAX / ZWave.me ZME_UZB1 / SDuino 433 / Velux KLF200
Homematic / MAX / Logitech Hub / ZWave / Wifi LED / div. 433 Temperatursensoren / pywws WH10880 / IO Homecontrol

Loredo

#65
Zitat von: scooty am 09 Oktober 2016, 09:40:15
Wenn der Roomba in der Docking Station steht und ich ihn zum Saugen starten möchte, reagiert er auf ein einfaches "on" nicht.


Hast du die Firmware soweit aktuell?
Ich schicke da einzig und allein ein Kommando "clean", da unterscheidet sich nichts zu dem bisherigen Modul hier. Es gibt da auch nichts was man ansonsten tun könnte. Bei mir reicht ein Clean-Kommando, um aus der Station zu fahren und dann loszulegen, eben genauso als wenn man auf den Knopf drückt (nichts anderes tut das ThinkingCleaner Board hier auch). Insofern wäre die Ursache eher bei dem ThinkingCleaner Board bzw. seiner Firmware ansich zu suchen. Ist es denn genauso, wenn du den Clean-Knopf über dessen Website schaltest?


Allgemein scheint auch die aktuellste Firmware ziemlich Buggy und voller Widersprüche zu sein. z.B. bekomme ich die Laufwerte ganz gewiss nicht in Kilometer, aber auch nicht in Meter. Unmöglich, dass nach 30min Fahrzeit schon 1.000 Kilometer abgegrast worden wären ;) (Meter wäre aber auch zu viel, Zentimeter natürlich zu wenig; keine Ahnung was das hier für ein Wert sein soll... taugt also nur zum relativen Vergleich). Oder es wechselt der deviceStatus auf "cleaning", aber der eigentliche cleaning-Indikator der nur "ja" oder "nein" macht und somit eine klare Aussage liefern sollte, steht anfänglich trotzdem noch auf "nein"... als solche Späße.


Auch die Webhook-Funktion ist sehr unlogisch. Mal schickt der Roboter einen Webhook, wenn man eine Taste drückt, dann wieder nicht. Wenn man nach Erhalt eines Webhooks dann instantan direkt die Werte neu vom Roomba liest sind sie noch auf einem alten Wert und spiegeln die zu erwartende Änderung (z.B. Taste gedrückt) noch gar nicht wieder, sondern man muss 5-6 Sekunden warten... alles sehr unlogisch. Von der Struktur und den Bezeichnungen der API Befehle will ich gar nicht anfangen - die hab ich soweit versucht im FHEM Modul einigermaßen zu vereinheitlichen und gerade zu rücken ;-)


Zitat von: scooty am 09 Oktober 2016, 09:40:15
Könntest Du noch ein bisschen detaillierter erläutern, was die Attribute für Webhook und Polling beeinflussen? Oder vielleicht einfach kurz Vor-/Nachteile bei Verwendung erläutern?


Die Webhook Funktion soll in der Theorie dafür sein, dass bei einer Statusänderung der Roboter von selbst bei FHEM bescheid sagt, dass man die Werte neu einlesen soll. Damit soll es eigentlich komplett überflüssig sein überhaupt regelmäßig alle X Sekunden den Roboter abzufragen. In der Praxis funktioniert es aber wie oben beschrieben überhaupt nicht so wie gedacht, es ist eher "Glück" wenn der Roboter mal von sich aus bescheid gibt. Auf ein Pollen kann man deshalb nicht gänzlich verzichten, es ist mit der jetzigen Firmware dann wohl nur als nette Zusatzfunktion zu sehen, bei der man "vielleicht" etwas Zeit gewinnt, wenn der Roboter doch mal bescheid sagt und man dann früher als beim regelmäßigen Polling-Interval die Werte abfragen kann, um eine Änderung zu bemerken.


Für den Webhook muss man im Roomba angeben unter welcher URL FHEM erreichbar ist. Das Modul macht es dabei sehr einfach. Über webhookFWinstance wählt man aus über welche FHEMWEB Instanz der Roomba FHEM erreichen kann. Nur die IP Adresse oder den Hostnamen kann das Modul nicht sinnvoll ermitteln, weshalb webhookHttpHostname noch entweder mit der IP Adresse oder dem Hostnamen von FHEM bestückt werden muss. Ist das passiert sieht man an den WEBHOOK_* Internals, ob die Registrierung geklappt hat (WEBHOOK_REGISTER=success). Wenn man FHEM nicht direkt erreichbar hat, sondern z.B. einen Reverse-Proxy o.ä. dazwischen hat, dann kann man optional einen abweichenden Port über webhookPort angeben.


Das Attribut pollInterval ersetzt die Angabe in Sekunden für die regelmäßige Statusabfrage, die sonst im define-Befehl mit angegeben wurde. Der Standardwert ist 45 Sekunden und kann hier angepasst werden.


Das eigentliche Polling-Interval wird jedoch dynamisch verändert. Z.B. wird während des Saugvorgangs öfter abgefragt, dafür wird der pollInterval Wert mit einem Faktor multipliziert, welcher über webhookMultiplierCleaning angepasst werden kann und dessen Standardwert bei 0.5 liegt. Es wird also während des Saugens dann doppelt so häufig abgefragt.


Ansonsten wird bei aktiviertem Webhook (und nur dann!) das Polling-Interval während der Ruhephase verdoppelt. Das dafür genutzte Attribut webhookMultiplierWebhook nutzt dafür also den Standardwert 2. Wenn man Webhook nicht konfiguriert hat, dann bleibt es beim Standardinterval aus pollInterval bzw. dessen Standardwert von 45 Sekunden.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

Loredo

Ich habe noch einige Änderungen bei der Berechnung des state-Readings vorgenommen und das Modul gerade zusammen mit der CommandRef eingecheckt. Es wird ab morgen per Update verteilt.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

scooty

Hallo Loredo,

vielen herzlichen Dank für sie super Erklärungen, nun habe sogar ich verstanden, was es mit einem Webhook auf sich hat und die möglichen Anpassungen bezüglich Polling/"Webhooking" finde ich klasse gelöst.
:)

Und noch eine gute Nachricht, mit heutigem Stand des Moduls reagiert mein Roomba nun auch (wieder) auf ein einfaches "on", also alles gut!

Viele Grüße,
Andreas

Fhem auf Gigabyte Brix
CUL V3 HM / CUL V3 MAX / MaxCube aFW Homematic&MAX / ZWave.me ZME_UZB1 / SDuino 433 / Velux KLF200
Homematic / MAX / Logitech Hub / ZWave / Wifi LED / div. 433 Temperatursensoren / pywws WH10880 / IO Homecontrol

scooty

#68
Hallo Loredo,

nach heutigem Update ist bei mir das Attribut "event-on-change-reading" ist nicht mehr auswählbar/setzbar

@raspklaus:
Mit dem Ton hatte ich auch nach Umstellung auf das neue Modul.
Es lag bei mir aber daran, dass ich, so glaube ich mich zu erinnern, in DOIFs oder notifys noch auf alte Readings geprüft/getriggert hatte und so unsinnige und häufige Befehle an den Roomba gesendet habe, die durch den Roomba mit kurzen Tönen quittiert wurden. Vielleicht ist das ja bei Dir auch der Fall?
[EDIT]: Antwort bezieht sich auf eine von raspklaus zwischenzeitlich gelöschte Frage, warum der Roomba bei Verwendung des neuen Moduls ab und zu einen Ton von sich gibt.

Viele Grüße,
Andreas
Fhem auf Gigabyte Brix
CUL V3 HM / CUL V3 MAX / MaxCube aFW Homematic&MAX / ZWave.me ZME_UZB1 / SDuino 433 / Velux KLF200
Homematic / MAX / Logitech Hub / ZWave / Wifi LED / div. 433 Temperatursensoren / pywws WH10880 / IO Homecontrol

Loredo

Zitat von: scooty am 11 Oktober 2016, 09:37:39
nach heutigem Update ist bei mir das Attribut "event-on-change-reading" ist nicht mehr auswählbar/setzbar


Da ist mir wohl ein Leerzeichen am Ende der Zeile 60 vor dem Anführungszeichen durchgerutscht. Hab ich korrigiert.
Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

raspklaus

Mit dem neuen Modul bekomme ich keine Meldungen vom Roomba mehr bzw er ist nicht mehr ansprechbar. Mit dem alten Modul hat der funktioniert.

Hier das List:

Internals:
   CFGFN
   CHANGED
   DEF        192.200.200.163
   DeviceName 192.200.200.163
   INTERVAL   15
   INTERVAL_MULTIPLIER 0.5
   NAME       roomba
   NR         2715
   STATE      absent
   TYPE       THINKINGCLEANER
   WEBHOOK_COUNTER 0
   WEBHOOK_PORT 80
   WEBHOOK_REGISTER sent
   WEBHOOK_URI /fhem/THINKINGCLEANER
   WEBHOOK_URL http://192.200.100.163:80/fhem/THINKINGCLEANER
   Readings:
     2016-10-11 09:29:52   power           off
     2016-10-11 09:29:52   presence        absent
     2016-10-11 09:29:52   state           absent
   Fhem:
     infix      THINKINGCLEANER
Attributes:
   cmdIcon    on-max:text_max on-spot:refresh on-delayed:time_timer dock:measure_battery_50 locate:rc_SEARCH
   devStateIcon on-delayed:rc_STOP@green:off on-max:rc_BLUE@green:off on-spot:rc_GREEN@red:off on.*:rc_GREEN@green:off dock:rc_GREEN@orange:off off:rc_STOP:on standby|remote:rc_YELLOW:on locate:rc_YELLOW .*:rc_RED
   icon       scene_cleaning
   pollInterval 30
   room       ToDo,Wohnzimmer
   webhookFWinstance WEB
   webhookHttpHostname 192.200.100.163
   webhookPort 80

Loredo

Ist 192.200.200.163 die IP deines Roomba (das wäre nämlich eine Public-IP, sicher dass es nicht 192.168.200.163 heißen muss)? Wenn nein, dann hast du das define falsch gesetzt und du musst dort die IP korrigieren.


Wenn doch, dann hört diese IP nicht auf Port 80 und FHEM bekommt ein Timeout bei der Abfrage von http://192.200.200.163. Außerdem ist dann ist webhookHttpHostname falsch gesetzt. Dort gehört die IP Adresse hinein, über die FHEM im Netzwerk für den Roomba erreichbar ist, die muss also anders sein als jene im define. Diese Einstellung ist aber erstmal unabhängig von der Erreichbarkeit und Steuerbarkeit des Roomba ansich.

Hat meine Arbeit dir geholfen? ⟹ https://paypal.me/pools/c/8gDLrIWrG9

Maintainer:
FHEM-Docker Image, https://github.com/fhem, Astro(Co-Maintainer), ENIGMA2, GEOFANCY, GUEST, HP1000, Installer, LaMetric2, MSG, msgConfig, npmjs, PET, PHTV, Pushover, RESIDENTS, ROOMMATE, search, THINKINGCLEANER

raspklaus

Danke für´s Aufwecken  ;)

Die IP ist natürlich 192.200.100.163

Kaum macht man es richtig schon funktioniert es  ;)

scooty

Zitat von: Loredo am 11 Oktober 2016, 09:49:16
Da ist mir wohl ein Leerzeichen am Ende der Zeile 60 vor dem Anführungszeichen durchgerutscht. Hab ich korrigiert.
Danke für den schnellen Fix, event-on-change-reading ist wieder da und funktioniert.

Viele Grüße,
Andreas
Fhem auf Gigabyte Brix
CUL V3 HM / CUL V3 MAX / MaxCube aFW Homematic&MAX / ZWave.me ZME_UZB1 / SDuino 433 / Velux KLF200
Homematic / MAX / Logitech Hub / ZWave / Wifi LED / div. 433 Temperatursensoren / pywws WH10880 / IO Homecontrol

GregPac

Hallo zusammen,
ich nutze das Modul schon von Anfang an und es läuft sehr gut. Habe jetzt das Update vom Oktober gesehen. Im Vergleich zu meinem Modul hat es unter "Set" mehr Auswahlmöglichkeiten/Befehle. Wenn ich die Datei manuell in FHEM einbinden bleibt die kleine Auswahl!?!
Über das FHEM Update erhalte ich die 74_THINKINGCLEANER.pm 12401 2016-10-22.
Ist das die aktuelle? Und wenn ja, warum erhalte ich nicht die "große" Set Auswahl. Habe nur On Off Spot Clean und Dock.
FHEM Raspberry, CUL V3 868 // FS-20 Aktoren, div. Funksteckdosen, Homebridge