Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Thirty8763

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    T
    • Profile
    • Following 0
    • Followers 0
    • Topics 4
    • Posts 12
    • Best 2
    • Groups 1

    Thirty8763

    @Thirty8763

    Starter

    2
    Reputation
    10
    Profile views
    12
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    Thirty8763 Follow
    Starter

    Best posts made by Thirty8763

    • RE: Ecovacs Deebot Adapter: Status und Feedback

      @thirty8763

      Ich konnte das Vorhaben dank deiner Unterstützung umsetzen.
      Hier der erste Wurf meines Javascripts, vl kanns ja jemand brauchen:

      /* -------------------------------------------------------------------------------- */
      /* global status variables */
      var m_moveCommands = [];
      var m_cleanCommands = [];
      var m_forceNextCommand = false;
      var m_timeout = 0;
      
      
      /* -------------------------------------------------------------------------------- */
      /* trigger point to go back to charging */
      on({id: '0_userdata.0.Staubsauger.myCharge'}, function (obj) {
          console.log('myCharge Start');
      
          m_moveCommands = [];
          m_cleanCommands = [];
          
          setState('ecovacs-deebot.0.control.charge', "1");
      });
      
      
      /* -------------------------------------------------------------------------------- */
      /* trigger point to start a cleaning */
      on({id: '0_userdata.0.Staubsauger.mySpotArea'}, function (obj) {
          console.log('mySpotArea Start');
      
          /* clear old cleaning program */
          m_moveCommands = [];
          m_cleanCommands = [];
      
          /* get the input information where to clean */
          var cleanInput = getState('0_userdata.0.Staubsauger.mySpotArea').val.toString();
      
          /* parse the input */
          var cleanCommands = [];
          if (cleanInput.includes(","))
          {
              cleanCommands = cleanInput.split(",");
          }
          else
          {
              cleanCommands[0] = cleanInput.toString();
          }
      
          /* add the move commands if needed */
      
          /* Schlafzimmertüre */
          if (cleanCommands.includes("2"))    /* Schlafzimmer */
          {
              /* move to Schlafzimmertüre */
              m_moveCommands[m_moveCommands.length] = "304,-1037";
          }
      
          /* Vorzimmertüre */
          if (cleanCommands.includes("3") ||  /* Vorzimmer */
              cleanCommands.includes("4") ||  /* WC */
              cleanCommands.includes("6") ||  /* Badezimmer */
              cleanCommands.includes("7"))    /* Kammer */
          {
              /* move to Vorzimmertüre */
              m_moveCommands[m_moveCommands.length] = "-2012,2126";
          }
      
          /* WC Türe */
          if (cleanCommands.includes("4"))    /* WC */
          {
              /* move to WC Türe */
              m_moveCommands[m_moveCommands.length] = "-3368,1542";
          }
      
          /* Badezimmertüre */
          if (cleanCommands.includes("6"))    /* Badezimmer */
          {
              /* move to Badezimmer Türe */
              m_moveCommands[m_moveCommands.length] = "-5203,1354";
          }
      
          /* Kammer Türe */
          if (cleanCommands.includes("7"))    /* Kammer */
          {
              /* move to Kammer Türe */
              m_moveCommands[m_moveCommands.length] = "-5698,2844";
          }
      
          /* set the global clean commands variable */
          m_cleanCommands = cleanCommands;
      
          // force the continuation to start the next program step
          m_forceNextCommand = true;
      
          // print program
          console.log("New Cleaning Programm:");
          console.log(m_moveCommands);
          console.log(m_cleanCommands);
      });
      
      
      /* -------------------------------------------------------------------------------- */
      /* cyclicly check if the the next command shall be triggered */
      schedule('* * * * * *', function () {
      
          /* handle the timeout function */
          /* wait a moment to become the program active */
          if (0 < m_timeout)
          {
              if ("idle" != getState('ecovacs-deebot.0.info.cleanstatus').val)
              {
                  m_timeout = 0;
                  return;
              }
              
              m_timeout = m_timeout - 1;
              return;
          }
          
          /* find out if the robot is still busy or if we force the continuation */
          if ("idle" != getState('ecovacs-deebot.0.info.cleanstatus').val &&
              false == m_forceNextCommand) 
          {
              // console.log("Busy detected.");
              return;
          }
      
          m_forceNextCommand = false;
      
          // console.log("Continue with next step if available.");
          
          /* print program */
          // console.log(m_moveCommands);
          // console.log(m_cleanCommands);
      
          /* execute next move command if needed */
          if (0 != m_moveCommands.length)
          {
              /* get next move command parameter */
              const s_move = m_moveCommands.shift();
      
              console.log("goToPostion " + s_move);
      
              /* start the move command */
              setState("ecovacs-deebot.0.control.extended.goToPosition", s_move);
      
              m_timeout = 10;
      
              /* stop the execution of this loop */
              return;
          }
      
          /* execute next clean command if needed */
          if (0 != m_cleanCommands.length)
          {
              /* get next clean command parameter */
              var s_clean = "";
              for (var i = 0; i < m_cleanCommands.length; i++)
              {
                  s_clean = s_clean + m_cleanCommands[i] + ",";
              }
              s_clean.substring(0, s_clean.length - 1);
      
              /* remove the commands that will be processed */
              m_cleanCommands = [];
      
              console.log("spotArea " + s_clean);
      
              /* start the move command */
              setState("ecovacs-deebot.0.control.spotArea", s_clean);
      
              /* stop the execution of this loop */
              return;
          }
      });
      
      posted in Entwicklung
      T
      Thirty8763
    • RE: Ecovacs Deebot Adapter: Status und Feedback

      @mrbungle64 said in Ecovacs Deebot Adapter: Status und Feedback:

      @thirty8763

      Löst das so schon Dein eigentliches Problem mit der als Wand behandelten Tür?

      Absolut!

      Funktioniert nun perfekt.
      Unabhängig ob bei der letzten Fahrt die Türen offen waren oder nicht, findet der Staubsauger immer in die Räume.

      Ich überlege jetzt noch, dass ich das ganze mit Türsensoren kombiniere und automatisch die nicht zugänglichen Räume im Reinigungsprogramm ausspare. Ist aber wahrscheinlich nicht nötig. Früher oder später gibt er ja eh auf, wenn er nicht in einen Raum findet. Er fährt halt dann nur wirr herum und sucht nach einen Zugang zum Raum. Das könnte man sich damit ersparen.

      posted in Entwicklung
      T
      Thirty8763

    Latest posts made by Thirty8763

    • ioBroker und seine Icons

      Ich versuche mich gerade im Bau der ersten halbwegs sauberen Visualisierung. Irgendwie beschleicht mich aber immer wieder das Gefühl, dass ich etwas vom Grundkonzept vom ioBroker noch nicht ganz begriffen habe.

      Meine Wahl fiel bisher auf den Adapter "HABPanel".

      Dort gibt es schon einige Icons integriert mit den Namen "Freepik Household", "Freepik Gadgets", "Freepik House Things", "Smart Home Set" und "Eclipse SmartHome Classic".
      Diese unterscheiden sich teils drastisch im Stil. "Smarthome Classic" sind die Icons überhaupt in Farbe.
      Die Freepik sind ganz ansprechend aber aus meiner Sicht nicht ausreichend. Es fehlen mir Grundlegende Icons die man z.B. in den Material Design Icons (MDI) finden würde.
      Daher hab ich mal wild zusätzliche Adapter installiert:
      Unter anderen: icons-material-svg, icons-mfd-svg, ...

      Soweit so gut, die URLs zu den zusätzlichen Icons konnte ich auch noch rausfinden.
      Dann die Überraschung. Irgendwie wird im HABPanel alles ein wenig anders dargestellt, je nach dem aus welchen Icon Pack die Icons kommen. Ich will die Icons als Hintergrund verwenden.

      Als Beispiel:
      45d3841c-ff99-4a7b-b342-abf83fe89670-image.png

      "Charging status" ist ein Icon aus einem nachinstallieren PNG Pack. Die Icons scheinen Weiß auf Transparent zu sein und das Icon wurde scheinbar gestreckt. Die Farbe wird als ein helleres Braun angezeigt.

      "Clean status" hat ein SVG Icon. Hier wird nicht gestreckt. Das Icon ist Schwarz und wird als Hintergrund auch dunkler angezeigt.

      "Zurück Nachhause" ist ein Standard Icon. Diese werden deutlich größer angezeigt und haben eine leicht bläuliche Färbung.

      "Wohnzimmer" ist wieder ein weißes SVG. Wieder deutlich sichtbar, dass die Darstellung kleiner ist als bei den mitgelieferten Icons. Und im Vergleich zum "Küchenvorraum" sieht man auch, dass die Farbe anders ist.

      Ich seh auch noch keine einfache Möglichkeit, wie ich auf die Größe und die Darstellungsfarbe Einfluss üben kann.

      Dann noch das Schmankerl. Ich hab mich mit den Raumdefinitionen gespielt, und da sind ja teils noch bessere Icons vorhanden:
      1bc94ecc-037e-4836-a333-ddcbeea58373-image.png

      Keine Ahnung wo ich diese Icons finden kann. Rechte Maustaste geht nicht, um den Pfad rausfinden zu können. Der Stil wirkt ähnlich wie in den Freepik Packs aber dort sind sie dann doch wieder nicht vorhanden.

      Ok, ich sollte vl eine Frage formulieren:
      Welche Icons verwendet ihr, dass alles halbwegs sauber und einheitlich aussieht?
      Was hat es mit den unterschiedlichen Farben der Hintergrundicons von HABPanel auf sich?
      Warum sind die Icons teils unterschiedlich groß dargestellt?
      Wo liegen die cooleren Icons, die z.B. in den Raumaufzählungen verwendet werden?

      Ich bin jetzt schon etwas gefrustet... Zuerst dachte ich, cool da kann man ja schnell was zam basteln, aber jetzt bin ich schon fast soweit, dass ich alle Icons selber überarbeite, was Farbe und Größe betrifft und dann manuell hochlade und per URL einsetze. Aber das kann es ja auch nicht sein...

      Oder liegt es mehr an HABPanel und seinen Widgets und ich sollte besser ein anderes Tool verwenden? Prinzipiell würde mir der Aufbau und die Einfachheit eigentlich ganz gut gefallen.

      Danke.

      posted in Visualisierung
      T
      Thirty8763
    • RE: Beste Wahl für Türsensor Fenstersensor

      @bananajoe
      @hansmeier

      Danke für eure Nachrichten.

      Zigbee scheint also Sinn zu machen, allein schon wegen der Batteriesparsamkeit.
      Aber auch die Verfügbarkeit von non Cloud Lösungen ist scheinbar einfacher.

      Einzig ich habe gelesen, dass Zigbee kein vollständiger Standard ist und es passieren kann, dass sich unterschiedliche Hersteller nicht kombinieren lassen. Könnt ihr dazu auch irgendwas sagen?

      lG

      posted in ioBroker Allgemein
      T
      Thirty8763
    • Beste Wahl für Türsensor Fenstersensor

      Hallo,

      Bin derzeit auf der Suche nach einer guten Hardwarelösung für Türsensoren bzw Fenstersensoren.
      Meine derzeitigen Geräte sind alle Tasmota kompatibel und hauptsächlich Sonoff switches. (Wifi Lichtschalter und Steckerschalter).

      Zuerst habe ich mich schon gefreut, dass es auch Wifi Türsensoren von Sonoff gibt aber angeblich kann man die Geräte nicht mehr mit Tasmota flashen. Auf der Tasmota Website gibt es auch eine Liste von kompatiblen Geräten.
      https://templates.blakadder.com/sensors.html
      Leider steht bei jedem der 5 "Contact Sensors" eine ähnliche Einschränkung dabei, dass sie seit ca. Anfang 2022 nicht mehr flashbar sind.

      Jetzt bin ich ratlos.

      Ich möchte eigentlich nicht überall mit Reed-Relais und Kabeln arbeiten müssen.

      Und einfach auf gut Glück was von ChinaExpress bestellen scheint mir auch ein großes Risiko zu sein, da scheinbar fast alle entsprechenden Geräte jetzt mit dem CB3S (BK7231N) bestückt sind und damit nicht flashbar sind.

      Ich hoffe auf Empfehlungen.
      Bevorzugt Tasmota flashbar, oder halt nur ioBroker Kompatibel ohne Cloud.

      Danke!

      PS: Alternativ könnte Zigbee noch eine Möglichkeit sein. Habe aber noch keine Erfahrungen mit Zigbee und auch keinen Zigbee Router.
      433 MHz wär auch noch eine Alternative. Dazu fehlt mir aber auch noch ein "Lesegerät", das den Status an den ioBroker weitergeben kann. Außerdem ist 433MHz wahrscheinlich am wenigsten verlässlich bzw. leicht manipulierbar?

      posted in ioBroker Allgemein
      T
      Thirty8763
    • RE: Ecovacs Deebot Adapter: Status und Feedback

      @mrbungle64 said in Ecovacs Deebot Adapter: Status und Feedback:

      @thirty8763

      Löst das so schon Dein eigentliches Problem mit der als Wand behandelten Tür?

      Absolut!

      Funktioniert nun perfekt.
      Unabhängig ob bei der letzten Fahrt die Türen offen waren oder nicht, findet der Staubsauger immer in die Räume.

      Ich überlege jetzt noch, dass ich das ganze mit Türsensoren kombiniere und automatisch die nicht zugänglichen Räume im Reinigungsprogramm ausspare. Ist aber wahrscheinlich nicht nötig. Früher oder später gibt er ja eh auf, wenn er nicht in einen Raum findet. Er fährt halt dann nur wirr herum und sucht nach einen Zugang zum Raum. Das könnte man sich damit ersparen.

      posted in Entwicklung
      T
      Thirty8763
    • RE: Ecovacs Deebot Adapter: Status und Feedback

      @thirty8763

      Ich konnte das Vorhaben dank deiner Unterstützung umsetzen.
      Hier der erste Wurf meines Javascripts, vl kanns ja jemand brauchen:

      /* -------------------------------------------------------------------------------- */
      /* global status variables */
      var m_moveCommands = [];
      var m_cleanCommands = [];
      var m_forceNextCommand = false;
      var m_timeout = 0;
      
      
      /* -------------------------------------------------------------------------------- */
      /* trigger point to go back to charging */
      on({id: '0_userdata.0.Staubsauger.myCharge'}, function (obj) {
          console.log('myCharge Start');
      
          m_moveCommands = [];
          m_cleanCommands = [];
          
          setState('ecovacs-deebot.0.control.charge', "1");
      });
      
      
      /* -------------------------------------------------------------------------------- */
      /* trigger point to start a cleaning */
      on({id: '0_userdata.0.Staubsauger.mySpotArea'}, function (obj) {
          console.log('mySpotArea Start');
      
          /* clear old cleaning program */
          m_moveCommands = [];
          m_cleanCommands = [];
      
          /* get the input information where to clean */
          var cleanInput = getState('0_userdata.0.Staubsauger.mySpotArea').val.toString();
      
          /* parse the input */
          var cleanCommands = [];
          if (cleanInput.includes(","))
          {
              cleanCommands = cleanInput.split(",");
          }
          else
          {
              cleanCommands[0] = cleanInput.toString();
          }
      
          /* add the move commands if needed */
      
          /* Schlafzimmertüre */
          if (cleanCommands.includes("2"))    /* Schlafzimmer */
          {
              /* move to Schlafzimmertüre */
              m_moveCommands[m_moveCommands.length] = "304,-1037";
          }
      
          /* Vorzimmertüre */
          if (cleanCommands.includes("3") ||  /* Vorzimmer */
              cleanCommands.includes("4") ||  /* WC */
              cleanCommands.includes("6") ||  /* Badezimmer */
              cleanCommands.includes("7"))    /* Kammer */
          {
              /* move to Vorzimmertüre */
              m_moveCommands[m_moveCommands.length] = "-2012,2126";
          }
      
          /* WC Türe */
          if (cleanCommands.includes("4"))    /* WC */
          {
              /* move to WC Türe */
              m_moveCommands[m_moveCommands.length] = "-3368,1542";
          }
      
          /* Badezimmertüre */
          if (cleanCommands.includes("6"))    /* Badezimmer */
          {
              /* move to Badezimmer Türe */
              m_moveCommands[m_moveCommands.length] = "-5203,1354";
          }
      
          /* Kammer Türe */
          if (cleanCommands.includes("7"))    /* Kammer */
          {
              /* move to Kammer Türe */
              m_moveCommands[m_moveCommands.length] = "-5698,2844";
          }
      
          /* set the global clean commands variable */
          m_cleanCommands = cleanCommands;
      
          // force the continuation to start the next program step
          m_forceNextCommand = true;
      
          // print program
          console.log("New Cleaning Programm:");
          console.log(m_moveCommands);
          console.log(m_cleanCommands);
      });
      
      
      /* -------------------------------------------------------------------------------- */
      /* cyclicly check if the the next command shall be triggered */
      schedule('* * * * * *', function () {
      
          /* handle the timeout function */
          /* wait a moment to become the program active */
          if (0 < m_timeout)
          {
              if ("idle" != getState('ecovacs-deebot.0.info.cleanstatus').val)
              {
                  m_timeout = 0;
                  return;
              }
              
              m_timeout = m_timeout - 1;
              return;
          }
          
          /* find out if the robot is still busy or if we force the continuation */
          if ("idle" != getState('ecovacs-deebot.0.info.cleanstatus').val &&
              false == m_forceNextCommand) 
          {
              // console.log("Busy detected.");
              return;
          }
      
          m_forceNextCommand = false;
      
          // console.log("Continue with next step if available.");
          
          /* print program */
          // console.log(m_moveCommands);
          // console.log(m_cleanCommands);
      
          /* execute next move command if needed */
          if (0 != m_moveCommands.length)
          {
              /* get next move command parameter */
              const s_move = m_moveCommands.shift();
      
              console.log("goToPostion " + s_move);
      
              /* start the move command */
              setState("ecovacs-deebot.0.control.extended.goToPosition", s_move);
      
              m_timeout = 10;
      
              /* stop the execution of this loop */
              return;
          }
      
          /* execute next clean command if needed */
          if (0 != m_cleanCommands.length)
          {
              /* get next clean command parameter */
              var s_clean = "";
              for (var i = 0; i < m_cleanCommands.length; i++)
              {
                  s_clean = s_clean + m_cleanCommands[i] + ",";
              }
              s_clean.substring(0, s_clean.length - 1);
      
              /* remove the commands that will be processed */
              m_cleanCommands = [];
      
              console.log("spotArea " + s_clean);
      
              /* start the move command */
              setState("ecovacs-deebot.0.control.spotArea", s_clean);
      
              /* stop the execution of this loop */
              return;
          }
      });
      
      posted in Entwicklung
      T
      Thirty8763
    • RE: Ecovacs Deebot Adapter: Status und Feedback

      @mrbungle64
      Ahhh... Der goToPosition Datenpunkt war nicht sicher weil "Einige weitere experimentelle Features ("control.extended" Kanal)" nicht aktiv gesetzt war.
      Ich dachte das ist mit " Native "goToPosition" Funktion benutzen (z.B. T8/T9/N8/X1 Serie)" erledigt aber scheinbar muss man beide experimentellen Features aktivieren.

      Super, damit kann ich arbeiten, dann werde ich versuchen immer vorher die entsprechenden Türpositionen anzufahren und erst dann direkt von dort die Reinigung aufnehmen.

      Die nächste Ausbaustufe könnte sein, auch noch Türsensoren anzubringen. Wenn eine Türe verschlossen ist braucht er es nicht mehr versuchen den/die dahinterliegenden Räume anzufahren.

      posted in Entwicklung
      T
      Thirty8763
    • RE: Ecovacs Deebot Adapter: Status und Feedback

      Hallo zusammen,

      Habe ein generelles Problem mit meinem T8 AIVI und Türen und ich versuche es derzeit mit diesem tollen Adapter zu lösen.

      Ihr kennt es bestimmt:
      Man schickt den Staubsauger in das Gangzimmer und lässt manche Türen lieber zu. Dies verringert die Lärmbelästigung.
      Der Roboter aktualisiert aber blöderweise die Karte und zeichnet dort, wo die Türe geschlossen war nun eine Wand ein.
      Bei der nächsten Reinigung findet der Roboter nicht mehr in den Raum hinter der Türe. Er versucht nicht mal in die Nähe zu fahren, um vl nachzusehen ob die Türe schon offen ist. Auch wenn man zusätzlich das Gangzimmer auch noch ins Reinigungsprogramm aufnimmt bringt das manchmal nichts weil die Karte scheinbar erst nach einener erfolgreichen Reinigung aktualisiert wird.

      Nun meine Gedanken:

      1. Kann man nicht irgendwie den Zustand einer Karte speichern und vor jedem Start auf diesen Stand zurücksetzen? Damit könnte man den Zustand mit offenen Türen immer wieder wiederherstellen.
      2. Ich suche vergeblich noch immer einen "Move" Befehl. Mit ihm würde ich vor der Reinigung vor die Türe fahren. Damit schnallt er hoffentlich, dass die Türe offen ist und ich könnte das eigentliche Reinigungsprogramm ausführen. Die Abfolge ließe sich vl mit einem Javascript durch Statuspolls und entspechende Reaktionscommands implementieren.
      3. Weil es ja keinen "Move" Befehl gibt könnte man statt Move auch z.B. eine 1x1m Bereichsreinigung vor der Türe ausführen. Sobald sich der Roboter auf den Heimweg machen will wird dann das eigentliche Programm ausgeführt, das den Raum hinter der Türe reinigt.

      Was meint ihr?
      Könnt ihr das Problem nachvollziehen?
      Ist einer der Lösungsansätze umsetzbar?

      posted in Entwicklung
      T
      Thirty8763
    • RE: Im HABPanel base64 codierte PNG Daten anzeigen

      @mrbungle64
      Super, hab mir die aktuellste alpha geholt und funktioniert einwandfrei.
      Bild ist nun da und konnte eingebunden werden ins HABPanel.

      Jetzt hab ich testweise versucht das Bild alle paar Sekunden zu aktualisieren aber dabei festgestellt, dass der Roboter scheinbar ein wenig überfordert ist damit. So eine live view ist die sich automatisch aktualisiert ist also wahrscheinlich nicht möglich. Egal. man kann zumindest manuell die Karte generieren, wenn man den Roboter mal sucht.

      Super Software!

      posted in Visualisierung
      T
      Thirty8763
    • RE: Im HABPanel base64 codierte PNG Daten anzeigen

      @mrbungle64
      Hmmm...
      Ich bin auf 1.4.8 .
      Kann es sein, dass die 1.4.9 noch nicht als stable released ist?

      posted in Visualisierung
      T
      Thirty8763
    • RE: Ist ein Win User gerade aktiv?

      @bernd33-1
      Super, das alles ist mir eine große Hilfe.
      Dankeschön!

      posted in ioBroker Allgemein
      T
      Thirty8763
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo