Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Entwicklung
  4. Ecovacs Deebot Vacuum //NPM Package Verfügbar! Python Library

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.5k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.0k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    2.7k

Ecovacs Deebot Vacuum //NPM Package Verfügbar! Python Library

Geplant Angeheftet Gesperrt Verschoben Entwicklung
9 Beiträge 2 Kommentatoren 1.8k Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • A Offline
    A Offline
    abn0rm
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen,

    ich bräuchte mal Unterstützung/Schützenhilfe eines Profis. Es geht im speziellen um Python, wovon ich leider nicht all zu viel verstehe. Ich fühle mich eher bei den Frontend-technologien heimisch.

    Seit ein paar Wochen bin ich stolzer Besitzer eines Ecovacs Deebot Saugers. Ziel ist es, den Saugers in ioBroker einzubinden, sowie sämtliche Daten des Saugers auszulesen. Der Sauger verfügt über eine Wlan Schnittstelle und eine dazugehörige App. Mittels dieser App kann ich den Saugern steuern, Zeiten definieren, sowie den Zustand der Komponenten (Bürsten & Filter) einsehen. Außerdem bekomme ich das Reininungsprotokoll angezeigt.

    Daraufhin begann ich mit meiner Recherche. Ich fand ein paar Mitstreiter von Übersee, die eine Python Library für den Sauger entwickelten. Zusätzlich wurde ein CLI für die "einfache" Steuerung entwickelt. Ich kann den Saugern also mittels Shell Execute steuern. Ich hatte Kontakt mit dem Entwickler aufgenommen, der mir sagte, dass ich mittels der Library ebenfalls sämtliche Daten (Akku-Status, Laufzeit, aktuellem Status, etc.) auslesen könnte. Allerdings stoße ich hier an meine Grenzen, was das Verständnis von Python angeht. Mein Wunsch wäre es, die Daten nach einem Aufruf (bspw. via shell oder einfachem URL GET) als response zu erhalten. Die Weiterverarbeitung in ioBroker würde ich mir dann doch noch selbst zutrauen.

    Gibt es hier Mitstreiter, die mir den Weg-(anfang) pflastern könnten? Was muss ich bedenken? Wie müsste meine Datei bzw. mein Code dafür aussehen?

    Hier ein Verweis zu einem ähnlichen Forum: https://community.smartthings.com/t/eco … -n79/93410

    Und der Verweis aufs GIT der aktuellen Library: https://github.com/wpietri/sucks

    Ich danke euch vielmals für eure Bemühungen! :-)

    Beste Grüße und ein schönes Wochenende..

    Adrian

    1 Antwort Letzte Antwort
    0
    • A Offline
      A Offline
      abn0rm
      schrieb am zuletzt editiert von
      #2

      Hallo zusammen,

      ich möchte das Thema mal wieder aus der Versenkung holen:

      Durch Zufall habe ich mitbekommen, das es mittlerweile auch ein NPM Package der Library gibt. (https://www.npmjs.com/package/sucks)

      Doch leider hielt sich mein Erfolg damit zu hantieren wieder einmal Stark in Grenzen.

      Ich bin recht einfach vorgegangen: Sucks, node-machine-id sowie xmpp als zusätzliche NPM Pakete im JS Adapter angegeben. Anschließend ein neues Script angelegt und mit folgendem Code befüllt und auch angepasst:

      
      const sucks = require('sucks')
          , EcoVacsAPI = sucks.EcoVacsAPI
          , VacBot = sucks.VacBot
          , nodeMachineId = require('node-machine-id')
          , http = require('http')
          , countries = sucks.countries;
      
      let account_id = "email@domain.com"
          , password = "a1b2c3d4"
          , password_hash = EcoVacsAPI.md5(password)
          , device_id = EcoVacsAPI.md5(nodeMachineId.machineIdSync())
          , country = null
          , continent = null;
      
      httpGetJson('http://ipinfo.io/json').then((json) => {
          country = json['country'].toLowerCase();
          continent = countries[country.toUpperCase()].continent.toLowerCase();
      
          let api = new EcoVacsAPI(device_id, country, continent);
      
          api.connect(account_id, password_hash).then(() => {
              api.devices().then((devices) => {
                  let vacuum = devices[0];
                  let vacbot = new VacBot(api.uid, EcoVacsAPI.REALM, api.resource, api.user_access_token, vacuum, continent);
                  vacbot.on("ready", (event) => {
                      vacbot.run("batterystate");      
      
                      vacbot.on("BatteryInfo", (battery) => {
                          console.log("Battery level: %d\%", Math.round(battery*100));
                      });
                  });
                  vacbot.connect_and_wait_until_ready();
              });
          }).catch((e) => {
              console.error("Failure in connecting!");
          });
      });
      
      function httpGetJson(url) {
          return new Promise((resolve, reject) => {
              http.get(url, (res) => {
                  res.setEncoding('utf8');
                  let rawData = '';
                  res.on('data', (chunk) => { rawData += chunk; });
                  res.on('end', function(){
                      try {
                          const json = JSON.parse(rawData);
                          resolve(json);
                      } catch (e) {
                          reject(e);
                      }
                  });
              }).on('error', (e) => {
                  reject(e);
              });
          });
      }
      
      

      Doch leider bekam ich lediglich diverse Fehlermeldungen sowie einen ewig neustartenden JS-Adapter. Bei Bedarf kann ich die Logs gerne mal posten.

      1 Antwort Letzte Antwort
      0
      • AlCalzoneA Offline
        AlCalzoneA Offline
        AlCalzone
        Developer
        schrieb am zuletzt editiert von
        #3

        @abn0rm:

        Doch leider bekam ich lediglich diverse Fehlermeldungen sowie einen ewig neustartenden JS-Adapter. Bei Bedarf kann ich die Logs gerne mal posten. `
        Das wäre vermutlich hilfreicher, vielleicht ist es ja nur eine Kleinigkeit die hier fehlt.

        Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

        1 Antwort Letzte Antwort
        0
        • A Offline
          A Offline
          abn0rm
          schrieb am zuletzt editiert von
          #4

          Soo - nun kann ich auch ein paar weitere Infos liefern ;-)

          Anbei zwei Screenshots - einmal die NPM Pakete, sowie einmal der Log nachdem ich das Skript habe einmal durchlaufen lassen.

          Installiert ist übrigens Node 6.13.0.

          3583_js.jpg

          3583_log.jpg

          Beste Grüße und vielen Dank!

          1 Antwort Letzte Antwort
          0
          • AlCalzoneA Offline
            AlCalzoneA Offline
            AlCalzone
            Developer
            schrieb am zuletzt editiert von
            #5

            Puhh, das sieht nach einer Inkompatibilität eines der 3rd-party-Module mit der installierten NodeJS-Version aus - oder ein Bug in NodeJS selbst?!

            Bei Google taucht der Fehler hier und da auf, aber bisher bin ich nicht besonders schlau geworden.

            Edit: Ok, hier ist das Problem:

            https://github.com/joostth/sucks.js/blo … ex.js#L464

            domain scheint eine reservierte Eigenschaft der EventEmitter-Klasse zu sein.

            Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

            1 Antwort Letzte Antwort
            0
            • AlCalzoneA Offline
              AlCalzoneA Offline
              AlCalzone
              Developer
              schrieb am zuletzt editiert von
              #6

              Hab dort mal ein Issue & PR erstellt: https://github.com/joostth/sucks.js/issues/2

              Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

              1 Antwort Letzte Antwort
              0
              • A Offline
                A Offline
                abn0rm
                schrieb am zuletzt editiert von
                #7

                Wow! Herzlichen Dank für deine Bemühungen! :-)

                Na, da bin ich ja mal gespannt :)

                1 Antwort Letzte Antwort
                0
                • AlCalzoneA Offline
                  AlCalzoneA Offline
                  AlCalzone
                  Developer
                  schrieb am zuletzt editiert von
                  #8

                  Der PR wurde soeben gemerged, jetzt heißt es auf eine neue Version des Pakets zu warten.

                  Edit:
                  > Thanks for posting the issue and providing the related fix in the pull request. Fix is included in v0.0.4 now available on npm.

                  Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                  1 Antwort Letzte Antwort
                  0
                  • A Offline
                    A Offline
                    abn0rm
                    schrieb am zuletzt editiert von
                    #9

                    Super - ich werde heute Nachmittag direkt mal testen.

                    Herzlichen dank für eine Bemühungen! :-)

                    1 Antwort Letzte Antwort
                    0
                    Antworten
                    • In einem neuen Thema antworten
                    Anmelden zum Antworten
                    • Älteste zuerst
                    • Neuste zuerst
                    • Meiste Stimmen


                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    792

                    Online

                    32.4k

                    Benutzer

                    81.4k

                    Themen

                    1.3m

                    Beiträge
                    Community
                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                    ioBroker Community 2014-2025
                    logo
                    • Anmelden

                    • Du hast noch kein Konto? Registrieren

                    • Anmelden oder registrieren, um zu suchen
                    • Erster Beitrag
                      Letzter Beitrag
                    0
                    • Home
                    • Aktuell
                    • Tags
                    • Ungelesen 0
                    • Kategorien
                    • Unreplied
                    • Beliebt
                    • GitHub
                    • Docu
                    • Hilfe