Ankündigung

Einklappen
Keine Ankündigung bisher.

Xiaomi / Roboroc Baustein 19001929

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

    Hallo meisterschaf,
    Super Vielen Dank! hat funktioniert.​

    Kommentar


      Seit etwa einer Woche etwa funktioniert der LBS (1.04) bei mir nicht mehr. Ich bekomme nach 20s nur den Fehler "Roboter reagiert nicht". Ich habe auch schon >24h den Baustein einmal deaktiviert, hat aber nicht geholfen.
      Da das ganze ja eigentlich über die Cloud funktioniert und damit über Internet (S8 mit aktueller Original-Firmware), wüsste ich nicht, was ich beeinflusst haben könnte, dass es nicht mehr funktioniert.

      Geht bei euch noch alles oder muss ich bei mir suchen?


      Viele Grüße
      Nils

      Kommentar


        Bei mir geht der Baustein noch. Hast du dich mal in der Cloud angemeldet?

        Kommentar


          Extra auf irgend einer Seite?
          Die App auf dem Smartphone nutzt die App und die funktioniert, aber neu angemeldet habe ich mich da bisher nicht.
          Ich wüsste auch nicht, dass ich im Browser mal irgendwo mich angemeldet hätte.


          Viele Grüße
          Nils

          Edit:
          Ich habe gerade eben in der App mal auf "Manage Devices" geklickt. Dafür muss ich das Passwort sicherheitshalber noch einmal eingeben. Ich habe dann vom Edomi-LBS das Passwort abgeschrieben, also eingetippt und das klappt. Daran hatte ich auch nichts geändert, aber er nimmt es an, wenn ich es nochmals eingebe.

          Edit 2:
          Ich bin nochmal einen Schritt weiter gegangen und habe die App gelöscht und neu installiert und mich neu angemeldet (Daten vom LBS abgeschrieben). Funktionierte gang normal.
          Zuletzt geändert von Marino; 26.09.2024, 17:45.

          Kommentar


            Der LBS läuft ganz normal und funktioniert wie es soll. Prüf mal die log.

            Kommentar


              Aus diesem habe ich dass er nicht reagiert. A10 gibt übrigens einen Token aus und ich habe nur einen einzigen Roborock und keine weiteren Geräte von Xiaomi.
              Debug steht auf 2.

              Eben einmal ausgelöst. Er soll er einen Raum saugen. Das hier ist davon dann die Ausgabe.
              Code:
              {EDOMI,CUSTOMLOG_LBS_XIAOMI_19001929_0.log,28.09.2024,15:37:36,654112,1904}{Zeitstempel,ms,PID,LogLevel,Meldung}
              2024-09-28 15:37:36 653620 1904 Debug Cloud-Daten aus Cache verwenden. Kein Login!
              2024-09-28 15:37:36 654835 1904 Debug V3=[hier-stand-die-Ausgabe-von-A10]
              2024-09-28 15:37:36 655122 1904 Debug cloud->isAccessible:Y-E10=-E11=
              2024-09-28 15:37:36 655333 1904 Debug RoborockMe:: ip = [IP-vom-Roborock]; token = [hier-stand-ein-token]; SequenceID: 0
              2024-09-28 15:37:41 257503 15499 Info Exec ist bereits aktiv. Aufruf Intervall prüfen
              2024-09-28 15:37:56 671641 1904 Debug roborocMe:: ok
              2024-09-28 15:37:56 672095 1904 Info Roboter reagiert nicht.
              2024-09-28 15:37:56 677620 1904 Debug Ausführungszeit: 20.028375148773 [s]
              ​

              Kommentar


                Schick bitte einmal die Beschattung vom LBS.

                A10 ist nur interessant, wenn du mehrere Roboter hast, sonst ist das zu ignorieren.

                Kommentar


                  Da ist nichts besonderes:
                  E1 (Abfragen): 1 (Ohne Logik, immer 1)
                  E2 (Xiaomi-Cloud user): Meine e-Mail-Adresse
                  E3 (Xiaomi-Cloud password): Mein Passwort
                  E4 (Xiaomi Server) : de
                  ​E5 (Xiaomi Geräte-ID) : 0 (Ich habe nur ein Gerät)
                  -----
                  E9 (Debug): 2
                  ​E12 (valetudo): 0
                  -----​
                  E14 (Steuer-Kommando):
                  E20 (Segment-Reinigung):
                  ​E25 (Saug,-Stufe, Wisch-Mpdus, Mop-Modus):
                  ​-----
                  E30 (Roboter automatisch befreien): 3
                  ​-----
                  E40 (Gültigkeit Statistiken): 24
                  ​-----
                  E41 (LiveMap Aktualisierungsintervall): 1

                  Die nicht genannten sind leer, also nichts eingetragen.


                  Wenn ich einen Raum saugen möchte, ist das eine Sequenz:
                  ​Hier z.B. Windfang:
                  ​E25 (Saug,-Stufe, Wisch-Mpdus, Mop-Modus): 104,200
                  5s Warten
                  E20 (Segment-Reinigung): 20

                  20 ist die RaumID vom Windfang. Das ganze nutze ich schon seit mehreren Monaten.

                  A10 (Xiaomi Cloud Token) hat immer eine Ausgabe
                  A34 (Baustein Aktiv) ist 20s 1 und danach wieder 0

                  Auch hier ansonsten keine Ausgabe


                  Viele Grüße
                  Nils

                  Kommentar


                    Bitte nicht falsch verstehen. Ich versuche Dir zu helfen, aber ich möchte Dir nicht alles aus der Nase ziehen.
                    D.h. bitte komplette Info - inkl. Aussagekräftigem Log, und worunter den Edomi genau läuft. Für die Log Edomi neu starten und vorher Debug auf höhste Stufe stellen.

                    Wenn in der Log steht, dass "Info Exec ist bereits aktiv. Aufruf Intervall prüfen" dann scheint irgendwo noch eine vorherige Abfrage aktiv zu sein. Laufzeit von 20 Sekunden ist auch sehr hoch, sicher, dass du kein VLAN oder ähnliches hast ? Geh per SSH shell auf deinem Edomi-Host und ping die IP vom Roboter an. Prüf in dem Zug auch, ob curl richtig funktioniert oder ob irgendwelche CA-Zertifikate bei deinem Edomi-Host abgelaufen sind. Könnte passieren, wenn du Edomi unter Centos hast.

                    Der LBS sollte übrigens mit einem Trigger laufen, ich habe Systemstart und alle 5 Minuten, damit die Daten entsprechend aktualisiert werden.

                    Kommentar


                      Ich fasse das nicht komisch auf, alles gut.

                      Log:
                      Da die Hilfe vom LBS sagt "E9 : Debug: [0..2], 0= aus, 2 = maximal" und ich ihn auf 2 habe, meinst Du wohl nicht das Log.
                      - Im Systemlog steht nichts
                      - Den Inhalt des Individuellen Log des Bausteines habe ich komplett geschickt (Post #531)
                      - Im PROC-KNX stehen nur TUNNELING_ACK und TUNNELING_REQUEST von PA's
                      In welches Log muss ich schauen?


                      Allgemeines:
                      Ich habe den S8 seit fast 18 Monaten. Ich bin mir sicher, dass er im VLAN ist und zwar seit Anfang an und ich habe ihn seither immer mit Edomi oder der Smartphone-App gesteuert. Keine andere Software steuert den S8 und es gibt nur eine Edomi-Instanz. Daran hat sich nichts geändert. Die einzige Änderung ist, dass Edomi den S8 seit ca. 1,5 Wochen auf einmal nicht mehr steuern kann.
                      - Roborock S8 (10.0.23.203) im IoT-Netzwerk (wie schon immer)
                      - Edomi (192.168.20.50) als Docker (Rocky Linux von Starwarsfan)
                      - Router ist eine Unifi Dream Machine Pro

                      Ping vom Edomi-Docker aus zum Roborock:
                      Code:
                      [root@1e3e0a9939d3 /]# ping 10.0.23.203
                      PING 10.0.23.203 (10.0.23.203) 56(84) bytes of data.
                      64 bytes from 10.0.23.203: icmp_seq=1 ttl=253 time=0.677 ms
                      64 bytes from 10.0.23.203: icmp_seq=2 ttl=253 time=0.539 ms
                      64 bytes from 10.0.23.203: icmp_seq=3 ttl=253 time=0.697 ms​
                      Curl zum S8:
                      Bei anderen Seiten bekomme ich auch ganz viele Infos und keine Fehlermeldungen.
                      Code:
                      [root@1e3e0a9939d3 /]# curl 10.0.23.203
                      <html>
                      <head>
                          <script type="text/javascript" src="js/utility.js">
                          </script>
                          <script type="text/javascript" src="js/storage.js">
                          </script>
                          <script type="text/javascript" src="js/bigint.js">
                          </script>
                          <script type="text/javascript" src="js/encrypt.js">
                          </script>
                          <script type="text/javascript" src="js/ajax.js">
                          </script>
                          <script type="text/javascript" src="js/login.js">
                          </script>
                          <script type="text/javascript" src="js/pagecommon.js">
                          </script>
                          <script type="text/javascript" language="javascript">
                              function Initialize() {
                                  //update communication channel encrypt flag:
                                  var sEncryptFlag = document.body.getAttribute("comm_channel_encrypt_flag");
                                  var iEncryptFlag = parseInt(sEncryptFlag);
                                  if (isNaN(iEncryptFlag))
                                      iEncryptFlag = 0;
                                  LocalStorage.Instance().Set("logo_comm_channel_encrypt_flag", iEncryptFlag);
                      
                                  //local storage test:
                                  var sResultValue;
                                  var sTestKey = "local_storage_test";
                                  var sTestValue = sTestKey + "_value";
                                  try {
                                      LocalStorage.Instance().Set(sTestKey, sTestValue);
                                      sResultValue = LocalStorage.Instance().Get(sTestKey);
                                  }
                                  catch (e) {
                                      //do nothing.
                                  }
                                  if (sResultValue != sTestValue) {
                                      var sErrorInfo = document.body.getAttribute("local_storage_test_fail");
                                      if (sErrorInfo)
                                          alert(sErrorInfo)
                                      else
                                          alert("local storage is disabled, please enable it.");
                                  }
                      
                                  var bAutoLoginSuccessfully = false;
                                  if (LocalStorage.Instance().Get("logo_current_autologin")) {
                                      //auto login:
                                      var sPublicKey1 = document.body.getAttribute("logo_public_key1");
                                      var sPublicKey2 = document.body.getAttribute("logo_public_key2");
                                      var sPassword = LocalStorage.Instance().Get("logo_current_password");
                                      //if(sPublicKey1 && sPublicKey2)
                                      {
                                          LocalLogin(sPublicKey1, sPublicKey2, sPassword, true, LocalStorage.Instance().Get("logo_current_logto_customized_site"));
                                          bAutoLoginSuccessfully = true;
                                      }
                                  }
                                  if (!bAutoLoginSuccessfully) {
                                      //try to navigate to real start page:
                                      var iCurLanguage = LocalStorage.Instance().Get("logo_current_language");
                                      if (typeof iCurLanguage == "undefined" || iCurLanguage == null)
                                          iCurLanguage = 1;
                                      window.location.replace("/logo_login.shtm?!App-Language=" + iCurLanguage);
                                  }
                              }
                          </script>
                      </head>
                      <body onload="Initialize();" comm_channel_encrypt_flag="0" logo_ms_state="0"
                          local_storage_test_fail="Local storage is disabled. Please enable it.">
                      </body>
                      </html>​
                      Trigger hatte ich seit Anbeginn einach nur eine 1. Er hat ja Daten geschickt, wenn er einen Befehl bekam und war immer an der Ladestation. Da in der Hilfe steht, einfach eine 1 und keine komplizierte Logik, nicht zurücksetzen... habe ich daran bisher auch nichts geändert. Lief immer.


                      Ich weiß nur leider noch nicht, welche Log Du genau meinst. Zertifikate muss ich mir mal anschauen, aber da weiß ich gerade nicht wie und muss nun leider für meine Knie-OP Sachen packen. Wenn ich Ende der Woche (hoffentlich) wieder zu Hause bin, kann ich dann weiter schauen.
                      Ein abgelaufenes Zertifikat könnte halt erklären, warum es schlagartig nicht mehr funktioniert, aber da muss ich mich vorher mal kurz einlesen, wie und wo ich das prüfen kann.


                      Viele Grüße
                      Nils

                      Kommentar


                        So, nun liege ich nach meiner Knie-OP flach und habe mich mal weiter gekümmert. Zu allererste: Es funktioniert wieder. Aus dem "Warum" werde ich aber nicht schlau.

                        Edomi und der Roborock waren immer schon in unterschiedlichen VLAN's mit entsprechenden Firewall-Regeln, mehr nicht. Es funktionierte immer.
                        Nun habe ich eine Edomi-Testinstallation im IoT-Netzwerk installiert, wo der Roborock beheimatet ist, und es funktionierte auf Anhieb. Diese habe ich dann in das Netzwerk geschoben, was das produktive Edomi läuft und schon ging es nicht mehr.
                        Firewall-Regeln habe ich die letzten Tage alle komplett neu erstellt. Keine Altlasten. War also gerade im Thema.
                        Durch die neue Installation des LBS habe ich nochmal die Hilfe durchgelesen und sah unten das Masquerading. Habe ich vorher noch nie gemacht und da war auch nichts eingetragen. Habe ich definitiv vorher nicht genutzt.

                        Nun habe ich ein zusätzlich zu den Firwall-Regeln ein Masquerading von Edomi (IP) zum Roborock (IP) hinzugefügt (UDP, Port 54321) und es funktioniert wieder.

                        Zusammenfassung:
                        Edomi und Roborock in verschiednen VLAN's (immer schon)
                        Vorher für 1,5 Jahre: Firewallregeln, kein Masquerading
                        Jetzt (plötzlich) Masquerading notwendig, von Edomi IP auf Roborock IP mit Port 54321 (UDP)


                        Router ist ein Unifi Dream Machine Pro. Ich weiß nicht, warum es ohne Firewall-Regel und ausschließlich mit Masquerading die ganze Zeit funktioniert, aber das war definitiv nicht eingerichtet vorher. Bis vorhin wusste ich nicht einmal, was Masquerading überhaupt ist.
                        Wahrscheinlich ging es nach einem Firmwareupdate (Roborock und/oder Dream Machine Pro) nicht mehr, was ich aber trotzdem sehr merkwürdig finde.


                        Vielen Dank auf jeden Fall für die Hilfe.


                        Viele Grüße
                        Nils

                        Falls es jemand gebrauchen kann, habe ich einmal 3 Bilder angehängt. Firewall-Regeln und Masquerade.
                        Masquerade (Network v. 8.5.6): Settings > Routing > NAT...
                        Angehängte Dateien

                        Kommentar


                          So, für alle, die nach einem Neustart von Edomi festgestellt haben, dass der Roboter nicht mehr geht, gibt es jetzt ein Update.

                          Herzlichen Dank an dieser Stelle auch an Philipp​ , der mir mit dem Bugfix zuvorgekommen ist. Die Version 1.21 hab ich jetzt hochgeladen.

                          Kommentar


                            So, Xiaomi scheint da nochmal was geändert zu haben. Ich habs jetzt wieder angepasst, dass es geht. (SW 1.22)

                            Die Frage ist aber, wie lange das jetzt hält.

                            Langfristig wird es wahrscheinlich nicht mehr ohne die 2FA gehen, mit Captcha Eingabe. Die Funktion hab ich im LBS schon eingebunden, aber irgendwie funktioniert es nicht, wenn der LBS erneut damit gestartet wird. Müsste ich ganz tief mit dem debuggen einsteigen, aber momentan fehlt mir die Zeit dafür.

                            Anleitung für die "Zukunft", falls es nur noch mit 2FA mit captcha gehen sollte:

                            Variante 1 - mit Maps aus der Cloud usw.

                            Der LBS gibt am A10 den Cloud-Token aus. Diesen einfach über eine Klemme ausgeben lassen und in einer remanenten Variable in Edomi speichern.

                            Beim Neustart des LBS muss dieser Token dann an E7 übergeben werden.


                            Variante 2 - ohne Maps, nur Robotersteuerung:

                            Log-Level auf 2 hochsetzen. Nachdem erfolgreichen Login in der Cloud schreibt der LBS die IP und auch den Token des Roboters in die Log-Datei.

                            Diese Werte dann an E10 (IP) und E11 (Token) übergeben. Dann lässt sich der Roboter ohne cloud steuern.

                            Kommentar

                            Lädt...
                            X