NEWS
Adapter mihome-vacuum anpassungen
-
@oranggila
Tatsache die map lädt auch bei mir nicht, scheint also mit der Firmware zu tun zu haben.
Was meinst du mit mapindex? Ich verstehe gerade nicht was das sein soll bzw wo der her kommt -
Die Karte wird in/durch die App in Räume aufgeteilt. Dabei bekommt jeder Raum eine fortlaufende Nummer. Da man in der Regel dann drei Karten hat (incl Backup), ist man bei der aktuellen dann irgendwann bei 3 x Räume. Ich vermute zumindest, dass der Index daher kommt. Da hilft dann nur ausprobieren und den Sauger einfach mal irendwo hinschicken, zb. nach 10 per customcommand app_segment_clean;10. Wenn du dann einen Treffer hast, kannst du per addRoom die 10 einegebn und er legt dir den Raum an.
-
@dirkhe sagte in Adapter mihome-vacuum anpassungen:
Ich hatte das Roomhandling in eine eigene Klasse verschoben. Dabei hatte ich einen Typo mit Groß und Kleinschreibung... Zusätzlich hatte ich aber direkt beim Start abgefragt, ob schon Raumobjekte existieren, dann hatte ich das alles schon initialisiert, bevor die Antwort vom Robi kam.
Ist jetzt gefixtJa, jetzt passt es, danke! Die Räume werden angelegt.
Noch eine Verständnisfrage, wie starte ich den multiRoomClean? Ich habe im Objekt "multiRoomClean" die Räume angegeben, aber wie starte ich jetzt den Saugvorgang des multiRoomCleans?
-
hallo,
was trage ich denn unter map index ein.
die Zone?:[[25158,26325,29108,31325,1]]??
oder was genau?
-
@Meistertr sagte in Adapter mihome-vacuum anpassungen:
@dirkhe die installation klappt ja, dann würde ich im code ein anfrage mit einbauen das canvas nur bei 64 bit genutzt wird und bei 32 nicht..
Ich habe jetzt mal Valetudo optional eingebunden, sprich nur wenn es enabled ist, wird der code geladen. Ich wußte nicht, ob man ggf. nur einen Teil benutzten kann oder nicht, dass müsstest du dir dann mal anschauen, ggf, das optionale loading eine Ebene tiefer legen
-
@mumurik hast du den einzelnen Räumen auch einen IObroker Raum zugewiesen?
Was er genberell, auch bei den Timern macht, ist, dass er ausgehend von den ioBroker Räumen(die du bei Multi Clean zugewiesen hast) den entsprechenden mapIndex Eintrag sucht, der diesem Raum zugewiesen ist. Diesen mapIndex (oder halt auch mehrere) sendet er dann an den Robi -
@xADDRx siehe meinen Kommentar von oben
@dirkhe sagte in Adapter mihome-vacuum anpassungen:
Die Karte wird in/durch die App in Räume aufgeteilt. Dabei bekommt jeder Raum eine fortlaufende Nummer. Da man in der Regel dann drei Karten hat (incl Backup), ist man bei der aktuellen dann irgendwann bei 3 x Räume. Ich vermute zumindest, dass der Index daher kommt. Da hilft dann nur ausprobieren und den Sauger einfach mal irendwo hinschicken, zb. nach 10 per customcommand app_segment_clean;10. Wenn du dann einen Treffer hast, kannst du per addRoom die 10 einegebn und er legt dir den Raum an.
-
@dirkhe Muss man den Raum dem Knoten (Ordner) zuweisen so dass er automatisch rekursiv den 3 Kind Objekte zugeordnet wird oder auch direkt dem "clean Room" Objekt?
Ich hatte nur die Knoten mit Raum versehen und mein Testtimer eben hat zwar lt. Log ausgelöst, aber es wurde kein Raum gesaugt. Danach habe ich bei den zwei Räumen den Raum zusätzlich noch dem "clean Room" gegeben und dann aber den Timer manuell angestoßen weil ich keine 15 Minuten warten wollte. Das hat dann funktioniert und der Sauger ist losgezogen.
Kann nun an der Änderung des Raumes beim Objekt liegen oder am manuellen Starten des Timers.Variante 1, 2 oder 3?
Könntest du die Auswahl der Minuten beim Timer in 5 Minuten Schritten machen? Nur alle 15 Minuten ist zu unflexibel.
-
@Diginix der Raum braucht den Raum nicht, normalerweise nur der mapIndex. Ich habe das der einfachheitshalber am ganzen channel(Raum) gemacht.
@Diginix sagte in Adapter mihome-vacuum anpassungen:
Könntest du die Auswahl der Minuten beim Timer in 5 Minuten Schritten machen? Nur alle 15 Minuten ist zu unflexibel.
erledigt, lade ich gleich mal hoch
-
@dirkhe Ok, mit Raum beim mapindex hat der Timer soeben korrekt gestartet. Allerdings immer fast 1 Minute verzögert. Also erst 21:45 und 56 Sekunden sprang der Timer an.
Für mich wäre es auch ok wenn die Stunden/Minuten im Adapter freie Eingaben wären. Dann könnte man jede Minute wählen wie auch in der MiHome App. Auch produktiv fände ich minimal alle 5 Minuten gut. So oft sieht man die Liste ja dann auch nicht. -
@Diginix sagte in Adapter mihome-vacuum anpassungen:
@dirkhe Ok, mit Raum beim mapindex hat der Timer soeben korrekt gestartet. Allerdings immer fast 1 Minute verzögert. Also erst 21:45 und 56 Sekunden sprang der Timer an.
Für mich wäre es auch ok wenn die Stunden/Minuten im Adapter freie Eingaben wären. Dann könnte man jede Minute wählen wie auch in der MiHome App. Auch produktiv fände ich minimal alle 5 Minuten gut. So oft sieht man die Liste ja dann auch nicht.Ich habe es ja schon eingebaut, und das verzögerte... Da bin aktuell dran. Das liegt daran, dass ich mich an das pingintervall hänge. Muß dann bischen früher reagieren....
-
@dirkhe Die Verzögerung ist mir egal. Das habe ich ja nur gemerkt weil ich die Funktionalität gerade genau prüfe.
Hätte ja auch sein können, dass es ein lokales "Problem" bei mir ist.
Ansonsten danke für die super Überarbeitung des Adapters!Wann planst du den PR in die offizielle Version damit man ihn regulär beziehen und aktualisieren kann?
-
@Diginix sagte in Adapter mihome-vacuum anpassungen:
Wann planst du den PR in die offizielle Version damit man ihn regulär beziehen und aktualisieren kann?
Ich hatte gedacht, dass mal am WE anzugehen. Ich weiss auch nicht, wer den mergt, ich nehme mal an @Meistertr ?
-
Minuten können jetzt auf alle 5 Minuten eingestellt werden und der timer geht auch pünktlich los
-
@dirkhe sagte in Adapter mihome-vacuum anpassungen:
@mumurik hast du den einzelnen Räumen auch einen IObroker Raum zugewiesen?
Was er genberell, auch bei den Timern macht, ist, dass er ausgehend von den ioBroker Räumen(die du bei Multi Clean zugewiesen hast) den entsprechenden mapIndex Eintrag sucht, der diesem Raum zugewiesen ist. Diesen mapIndex (oder halt auch mehrere) sendet er dann an den Robija, das hatte ich gemacht, jeder einzelner Raum ist einem IoBroker-Raum zugewiesen, wie bei dir im Screenshot. Im Object multiRoomClean sind die Räume angegeben, die mit multiClean angesteuert werden sollen.
Mir ist aber noch nicht klar, wie ich den Roboter starte, damit er die Räume ansteuert, die im multiRoomClean angegeben sind, einfach den Objekt multiRoomClean auf true setzen? Da passiert leider nichts, das habe ich bereits versucht... -
Ich habe es bei mir gerade nochmal getestet und es funktioniert. Es ist doch ein Button, da musst du draufdrücken, im Prinzip wird das auf true gesetzt, das stimmt.
Setzte den adapter mal auf debug und schaue mal in Log oder poste es hier -
@dirkhe danke, ne sieht so gut aus. danke.
-
@dirkhe sagte in Adapter mihome-vacuum anpassungen:
Minuten können jetzt auf alle 5 Minuten eingestellt werden und der timer geht auch pünktlich los
@dirkhe Kann ich bestätigen.
Der Channel vom Raum muss den ioBroker Raum haben, nicht nur das mapindex Objekt.
Ich hab eben 3 Testtimer gebraucht, bei denen anfangs nur der mapindex den Raum kannte und es wurde keine Reinigung gestartet. Nur der Logeintrag für die vermeintliche Reinigung kam zum richtigen Zeitpunkt.
Erst wenn der Channel den Raum kennt, weiß der Adapter wirklich welcher Raum gemeint ist.
Daher wäre es cool wenn im Log bei der Zeile "set nächster Timer" gleich noch die Räume+Index mit ausgegeben würden.
Bei den fehlgeschlagenen Tests ist vollkommen unbekannt was der Adapter an den Sauger gesendet hat.
Loglevel Debug hab ich nicht aktiv. Vermutlich war es ein leeres "app_segment_clean". -
Hmmm, ich habe gerade nochmal in den code geschaut. Also der TimerManager merkt sich nur die id des Timers. Wenn er dann dran ist, wird anhand des timers ermittelt, welche Räume daran gepflegt sind. Da wird überall die gleiche Funktion genutzt, ob du bei einem Timer sofort starten auswählst oder ob du multiroomclean drückst. mit den Räumen wird intern "cleanRooms" aufgerufen. Der mach dann folgendes
was soviel heißt, wie gib mir die mapIndex Einträge aller Räume meines Adapters.
Dabei werdnen dann auch sofort die Räume mit ausgelesen. Dann frage ich von jedem zurückgegeben (mapIndex-)Objekt die Räume ab und vergleiche die mit den angeforderten. Das wird dann an "cleanSegments" direkt oder indirekt (bei einnem Treffer) übergeben.
Darum schreibe ich ins log auch nur, wann der nächste Timer (incl dessen id) losgeht. Der Raum interessiert mich da noch nicht.
Ich könnte aber in den commands noch eine Warnung ausgeben, wenn diese ohne Parameter aufgerufen würden. Zusätzlich könnte ich auch noch in den Namen des Channels timer die TimerID reinschreibenIch habe das gerade auch nochmal ausprobiert und bei mir funktioniert das auch mit dem Raum nur an mapIndex.
-
Ich habe jetzt nochmal die Warnings bei leeren Räumen/mapIndex mit reingepackt und einen PR gestellt.