Ankündigung

Einklappen
Keine Ankündigung bisher.

Xiaomi / Roboroc Baustein 19001929

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    sipiyou: Hier mal die verschiedenen Saug/Wisch-Modes für den S7 MaxV und die zugehöriges Command Codes:

    S7Max-Vac-Mop-Modes.png

    Vielleicht hilft dir das bei der Umsetzung, falls du sie nicht schon hattest ...

    Kommentar


      Hallo Nima,

      wo du gerade an dem LBS am werkeln bist, gibt es die Möglichkeit (analog zur App) dem Sauger den Befehl mitzugeben, dass er einen Raum 1, 2 oder 3 mal reinigen soll?

      Gruß André
      ...and I thought my jokes were bad!

      Kommentar


        jonofe ok, also ist das refresh doch das Problem.

        Der LBS sollte nicht sekündlich getriggert werden, das ist zuviel, das könnte auch dazu führen, dass der vorherige Aufruf noch nicht beendet ist.

        probier das mal bitte mit folgendem Code:

        Also, die Zeile hier entfernen

        logic_setVar($id, 12, time() + 15); // Refresh cleaningmaps in 15 seconds v1.01b

        und folgendes einfügen:

        set_time_limit(40);
        sleep(15);
        $refreshCleaningMap = 1;

        Ich schau mir den Rest die Tage an, lass uns erstmal die Bugs fixen.

        eXec: hab ich mir auf die todo liste gepackt, schau ich mir dann auch an. Das muss einstellbar sein, würde ich aber dann über die Visu lösen, d.h. da klickt man eben 3x auf den Raum und dann weiss der, dass dort 3x gesaugt werden soll.

        Bei 4x klick ist dann der Raum wieder deselektiert - oder so ähnlich.
        Zuletzt geändert von sipiyou; 24.06.2022, 20:42.

        Kommentar


          Zitat von sipiyou Beitrag anzeigen
          [.

          eXec: hab ich mir auf die todo liste gepackt, schau ich mir dann auch an. Das muss einstellbar sein, würde ich aber dann über die Visu lösen, d.h. da klickt man eben 3x auf den Raum und dann weiss der, dass dort 3x gesaugt werden soll.

          Bei 4x klick ist dann der Raum wieder deselektiert - oder so ähnlich.
          darf ich den wunsch äußern das auch über Eingänge zu lösen. hab keine visu
          vorher mit dem.gen1 war immer nur saugen. jetzt würd ich Raum 1 gerne nur wischen raum 2 wischen saugen etc.
          lg
          Jean-Luc Picard: "Things are only impossible until they are not."

          Kommentar


            Wie, du hast keine Visu ?!

            Die Visu gibt auch nur Kommandos an die Eingänge, d.h. dann gehts auch. Ich werds entsprechend dokumentieren.

            jonofe
            Da ich eh gerade am PC werkle, bau ich gleich noch fix die mop und custom-modes schonmal ein. D.h. es gibt 2 weitere Eingänge und über die Visu müsstest du dann entsprechende Buttons machen, die die Werte setzen. Ich denke so ist der Baustein flexibler oder was meinst du ?

            Kommentar


              Zitat von sipiyou Beitrag anzeigen
              Also, die Zeile hier entfernen

              logic_setVar($id, 12, time() + 15); // Refresh cleaningmaps in 15 seconds v1.01b

              und folgendes einfügen:

              set_time_limit(40);
              sleep(15);
              $refreshCleaningMap = 1;
              Okay werde ich testen. Wird das Auswirkungen haben, wenn während der Wartezeit weitere Trigger an den LBS kommen, also z.B: als Sequenz
              Map=1
              custom_mode=101
              water_vox_custom_mode=201
              mop_mode=301

              Zitat von sipiyou Beitrag anzeigen
              Da ich eh gerade am PC werkle, bau ich gleich noch fix die mop und custom-modes schonmal ein. D.h. es gibt 2 weitere Eingänge und über die Visu müsstest du dann entsprechende Buttons machen, die die Werte setzen. Ich denke so ist der Baustein flexibler oder was meinst du ?
              Ja, das würde auf jeden Fall funktionieren.

              Du könntest das auch über den bestehenden Eingang E24 machen, d.h. dort 3 mit Komma getrennte Werte annehmen. Das hätte den Vorteil, dass die Einstellung in einem Schritt gemacht werden kann und es nicht zu Timing Problemen kommen kann, wenn in schneller Sequenz 3 Einstellungen vorgenommen werden.

              Alternativ könnten auch alle Werte einzeln über den bestehende Eingang E24 verarbeitet werden, da ja an der Zahl erkennbar ist, welcher Mode gesetzt werden soll. Damit wären die notwendigen Anpassungen minimal. (>=300 => mop_mode, >=200 && <300 => water_bax_custom_mode, >=100 && <200 => custom_mode)

              Ich kann nicht beurteilen wie kritisch das Timing ist, wenn der LBS zu schnell über verschiedene Eingänge getriggert wird. Falls das kritisch ist, dann wäre vermutlich das Beste die Trigger perspektivisch über logic_setInputsQueued (LBS) und logic_getInputsQueued (EXEC) zu kommunizieren. Dann würde ganz sicher kein Trigger verlorengehen und der EXEC könnte weiter als terminierendes Skript arbeiten, aber mit einer While-Schleife, die so lange läuft, wie Daten in der Queue sind. Damit könnte man jederzeit triggern und es gäbe immer nur eine EXEC Instanz, die erst dann terminiert, wenn alle Befehle abgearbeitet sind. Beim nächsten Trigger wird dann eine neue EXEC Instanz gestartet. Vielleicht was für Version 2.0

              Kommentar


                jonofe
                Ok, bitte nochmal testen. Hier ist die Delay-Funktion auch jetzt drin.

                E25 = 3 Byte Eingang, siehe Hilfe. E24 bleibt für die anderen Roboter bestehen, da der S7 auch andere Kommandos hat. Hättest du die Tabelle oben als Text ? Dann muss ich nicht die Varianten abtippen und kann die in der Hilfe entsprechend einbinden.

                Ich hab gesehen, dass man auch die jeweiligen Status-Meldungen (Wisch /Mop-Status) vom Roboter abrufen kann.
                Hast du am Wochenende abends Zeit, mich per Teamviewer an den Roboter zu lassen ? Würde gerne noch den aktuellen Status abrufen, hier brauche ich aber ein "lebendes Objekt" Schick mir sonst eine E-Mail oder PN. Müsste dann per ssh auf den Edomi-Host um den LBS in der Shell auszuführen und einen editor in der shell.
                Zuletzt geändert von sipiyou; 25.06.2022, 14:01.

                Kommentar



                  So, hier die nächste Beta für das LBS und auch VSE:

                  https://www.dropbox.com/sh/cnnn22fw2...Rgw2MqENa?dl=0

                  eXec

                  trollmar :

                  Ich hab jetzt auch ein neues Visuelement mit dem Button für die Häufigkeit. Über design lässt sich streiten, ich wollte da etwas "lebendiges".
                  Die Farbe für den Button kommt aktuell vom ersten Eintrag der ausgewählten Color-Map. Weiss nicht, ob der Wunsch da ist, dass man dort die Farbe im VSE festlegt.

                  Der Parameter an E20 kennt jetzt ein ";". Das, was dort angegeben ist, wird dann für die Anzahl der Reinigungen genommen. Ich habe dort absichtlich keine Beschränkung rein, falls die Roboter irgendwann auch 4/5x unterstützten.

                  Im Visuelement wird auch die Zahl bei Neuaufruf der Seite immer auf 1x zurückgesetzt - wie in der App auch.

                  Kommentar


                    erstmal danke Sipiyou fürs schnelle umsetzten.

                    Kurze frage zu E20.
                    Sind Segmente = Räume in der Xiaomi app ? Und sind die IDs die Raumnummern aus der App?
                    Sorry hatte vorher nie räume mit dem gen1 ;-)

                    LG
                    Jean-Luc Picard: "Things are only impossible until they are not."

                    Kommentar


                      Zitat von sipiyou Beitrag anzeigen
                      Ich hab gesehen, dass man auch die jeweiligen Status-Meldungen (Wisch /Mop-Status) vom Roboter abrufen kann.
                      Hast du am Wochenende abends Zeit, mich per Teamviewer an den Roboter zu lassen ? Würde gerne noch den aktuellen Status abrufen, hier brauche ich aber ein "lebendes Objekt" Schick mir sonst eine E-Mail oder PN. Müsste dann per ssh auf den Edomi-Host um den LBS in der Shell auszuführen und einen editor in der shell.
                      Ich bin dieses Wochenende unterwegs, aber zugegebener Maßen auch etwas paranoid mit Zugang zu meinem Netz.

                      Aber vermutlich reicht Dir schon die Info über den Status, den ich empfange und im Log sehe.

                      Hier die Keys des Status Arrays (Werte wie oben in der Tabelle; gezippte Excel Tabelle im Anhang):

                      Saugmodus: fan_power (10X)
                      Wischmodus: water_box_mode (20X)
                      Wischart: mop_mode (30X)

                      Hier mal das komplette Status-Log:

                      miIO.Info:array(16) {[LF] ["life"]=>[LF] int(65923)[LF] ["uid"]=>[LF] int(15855#####)[LF] ["model"]=>[LF] string(19) "roborock.vacuum.a27"[LF] ["token"]=>[LF] string(32) "59654c4f4f##########69576e39596d"[LF] ["ipflag"]=>[LF] int(1)[LF] ["miio_ver"]=>[LF] string(5) "0.0.9"[LF] ["mac"]=>[LF] string(17) "B0:4A:##:##:##:##"[LF] ["fw_ver"]=>[LF] string(10) "4.1.5_4676"[LF] ["hw_ver"]=>[LF] string(5) "Linux"[LF] ["miio_client_ver"]=>[LF] string(5) "4.1.5"[LF] ["VmPeak"]=>[LF] int(333348)[LF] ["VmRSS"]=>[LF] int(2136)[LF] ["MemFree"]=>[LF] int(7412)[LF] ["ap"]=>[LF] array(4) {[LF] ["ssid"]=>[LF] string(8) "#####IOT"[LF] ["bssid"]=>[LF] string(17) "02:0c:##:##:##:##"[LF] ["rssi"]=>[LF] string(3) "-46"[LF] ["freq"]=>[LF] int(0)[LF] }[LF] ["netif"]=>[LF] array(3) {[LF] ["localIp"]=>[LF] string(11) "10.#.##.###"[LF] ["mask"]=>[LF] string(13) "255.255.255.0"[LF] ["gw"]=>[LF] string(9) "10.###.###.###"[LF] }[LF] ["miio_times"]=>[LF] array(4) {[LF] [0]=>[LF] int(65922)[LF] [1]=>[LF] int(18)[LF] [2]=>[LF] int(0)[LF] [3]=>[LF] int(65902)[LF] }[LF]}[LF]

                      Info_Status:array(42) {[LF] ["msg_ver"]=>[LF] int(2)[LF] ["msg_seq"]=>[LF] int(1215)[LF] ["state"]=>[LF] int(8)[LF] ["battery"]=>[LF] int(100)[LF] ["clean_time"]=>[LF] float(38.566666666667)[LF] ["clean_area"]=>[LF] float(32.4325)[LF] ["error_code"]=>[LF] int(0)[LF] ["map_present"]=>[LF] int(1)[LF] ["in_cleaning"]=>[LF] int(0)[LF] ["in_returning"]=>[LF] int(0)[LF] ["in_fresh_state"]=>[LF] int(1)[LF] ["lab_status"]=>[LF] int(3)[LF] ["water_box_status"]=>[LF] int(1)[LF] ["back_type"]=>[LF] int(-1)[LF] ["wash_phase"]=>[LF] int(0)[LF] ["wash_ready"]=>[LF] int(0)[LF] ["fan_power"]=>[LF] int(102)[LF] ["dnd_enabled"]=>[LF] int(1)[LF] ["map_status"]=>[LF] int(3)[LF] ["is_locating"]=>[LF] int(0)[LF] ["lock_status"]=>[LF] int(0)[LF] ["water_box_mode"]=>[LF] int(202)[LF] ["water_box_carriage_status"]=>[LF] int(1)[LF] ["mop_forbidden_enable"]=>[LF] int(1)[LF] ["camera_status"]=>[LF] int(391)[LF] ["is_exploring"]=>[LF] int(0)[LF] ["home_sec_status"]=>[LF] int(0)[LF] ["home_sec_enable_password"]=>[LF] int(1)[LF] ["adbumper_status"]=>[LF] array(3) {[LF] [0]=>[LF] int(0)[LF] [1]=>[LF] int(0)[LF] [2]=>[LF] int(0)[LF] }[LF] ["water_shortage_status"]=>[LF] int(0)[LF] ["dock_type"]=>[LF] int(1)[LF] ["dust_collection_status"]=>[LF] int(0)[LF] ["auto_dust_collection"]=>[LF] int(1)[LF] ["avoid_count"]=>[LF] int(98)[LF] ["mop_mode"]=>[LF] int(300)[LF] ["debug_mode"]=>[LF] int(0)[LF] ["collision_avoid_status"]=>[LF] int(1)[LF] ["switch_map_mode"]=>[LF] int(0)[LF] ["dock_error_status"]=>[LF] int(0)[LF] ["charge_status"]=>[LF] int(1)[LF] ["unsave_map_reason"]=>[LF] int(0)[LF] ["unsave_map_flag"]=>[LF] int(0)[LF]}[LF]
                      Angehängte Dateien

                      Kommentar


                        Zitat von sipiyou Beitrag anzeigen
                        Also, die Zeile hier entfernen

                        logic_setVar($id, 12, time() + 15); // Refresh cleaningmaps in 15 seconds v1.01b

                        und folgendes einfügen:

                        set_time_limit(40);
                        sleep(15);
                        $refreshCleaningMap = 1;
                        Damit funktioiniert das Update an A13 leider nicht. Die vorherige Variante war da zuverlässiger.

                        Könnte man nicht alle 3 Sekunden (max. 10 mal) $roboroc->Info_Status->getActiveMapIndex() aufrufen, bis E18==$roboroc->Info_Status->getActiveMapIndex(), also sowas wie:

                        PHP-Code:

                        $i
                        =0;
                        while (
                        $E[18]['value'] != $roboroc->Info_Status->getActiveMapIndex() && $i<10)
                        {
                           
                        sleep(3);
                           
                        $i++

                        Kommentar


                          trollmar: Ja, die Segment-ID's sind die Raum-ID's.


                          jonofe : Danke für die Informationen, die hab ich in der Tat gebraucht. Per Teamviewer siehst du, was jemand bei dir auf deinem PC macht. Das macht mir das Leben einfacher, weil ich dann gleich sehe, was passiert. Aber so passt es in diesem Fall auch.

                          So, hab die Dateien in der Dropbox nochmal erneuert. Sprich: Hilfe um die Tabelle angepasst und auch die Ausgabe A8 ergänzt.
                          Bitte testen und um Rückmeldung.

                          Was die Map-Updates angeht, so ist es verwunderlich, denn die time()+15 ist nichts anderes als sleep (15).

                          Schau mal bitte, ob ein sleep 20 /25/30 besser funktioniert.
                          Zuletzt geändert von sipiyou; 26.06.2022, 20:15.

                          Kommentar


                            sipiyou Danke, das sieht sehr gut aus. Vielleicht gibt es noch Möglichkeiten den Button für die Anzahl an eine andere Position zu verschieben?

                            jonofe mir geht es prinzipiell auch so mit meinem Netzwerk, allerdings habe ich schon eine Session mit Nima gemacht (parallel zum Teamviewer waren wir im Videochat). Waren zwei sehr interessante und amüsante Stunden gewesen!
                            ...and I thought my jokes were bad!

                            Kommentar


                              eXec: freut mich, dass ich in guter Erinnerung geblieben bin - und jetzt weiss ich auch, dass ich noch die Heizungsregelung umstellen wollte ...

                              Was empfindest du als Sinnvoll ? 2 Koordinaten oder eher Auswahl "oben, mitte, unten" und dann "links, mitte, rechts" ?

                              Kommentar


                                Zitat von sipiyou Beitrag anzeigen
                                eXec: freut mich, dass ich in guter Erinnerung geblieben bin - und jetzt weiss ich auch, dass ich noch die Heizungsregelung umstellen wollte ...

                                Was empfindest du als Sinnvoll ? 2 Koordinaten oder eher Auswahl "oben, mitte, unten" und dann "links, mitte, rechts" ?
                                Das klingt doch schon mal sehr gut! Prinzipiell kann dann jeder entscheiden. Bei mir wäre es vermutlich oben oder unten rechts, was natürlich vom Aufbau der Visu abhängt.

                                vG André
                                ...and I thought my jokes were bad!

                                Kommentar

                                Lädt...
                                X