Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Neato Botvac Connected Adapter

    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

    Neato Botvac Connected Adapter

    This topic has been deleted. Only users with topic management privileges can see it.
    • E
      esche last edited by

      Hallo Pman,

      vielen Dank für diesen Adapter. Installation und Einrichtung haben ohne Probleme bei mir funktioniert.

      Leider ist für mich die Handhabung nicht ganz selbsterklärend. Vielleicht könntest du mir hierbei weiterhelfen?

      Wenn ich den Zustand von "botvac.0.<name>.commands.clean" auf "true" stelle, beginnt der Botvac wie erwartet mit der Reinigung.

      Welche Befehle bzw. Zustände müsste ich jetzt ändern, wenn ich den Reinigungsvorgang abbrechen und dien Roboter wieder zurück zur Ladestation schicken möchte?

      Müssen hierbei mehrere Zustände nacheinander verändert werden?

      Danke und Gruß

      Esche</name>

      1 Reply Last reply Reply Quote 0
      • P
        Pman last edited by

        @esche:

        Wenn ich den Zustand von "botvac.0.<name>.commands.clean" auf "true" stelle, beginnt der Botvac wie erwartet mit der Reinigung.

        Welche Befehle bzw. Zustände müsste ich jetzt ändern, wenn ich den Reinigungsvorgang abbrechen und dien Roboter wieder zurück zur Ladestation schicken möchte?</name> `

        Ob man direkt aus Reinigungsmodus zurück zur Base fahren kann weiß ich grade garnicht so genau (status.canGoToBase). Auf jeden Fall müsste ein commands.pause oder commands.stop, gefolgt von commands.gotoBase funktionieren. Welche Commands aktuell möglich sind kannst du jeweils unter status (canPause, canStop, canGoToBase usw.) sehen, andere Commands nimmer er nicht an. Diese Logik habe ich nicht erfunden, die ist fest im Botvac verankert und kann nicht umgangen werden. Grundvorraussetzung für ein goToBase ist, dass dockHasBeenSeen auf true steht. Der Botvac muss immer erst etwas im Raum rumfahren bevor die Base wieder "sieht", danach merkt er sich die Position der Base für diesen Reinigungsvorgang.

        Bugs in meiner Implementierung sind natürlich auch möglich, falls also etwas nicht funktioniert einfach nochmal die Situation genau schildern und dann versuche ich das bei mir nachzustellen.

        1 Reply Last reply Reply Quote 0
        • J
          jack77 last edited by

          Ich habe eine Frage zum Datenpunkt Error.

          Hier werden Werte wie ui_alert_invalid und ui_error_dust_bin_full ausgespuckt. Den für Bürste reinigen kenne ich gerade nicht.

          Kann man mit einem Widget (welches?) oder in javascript (wie sollte da aussehen?) daraus z.B. Kein Fehler bzw. Filter und Staubbehälter reinigen ausgeben lassen?

          1 Reply Last reply Reply Quote 0
          • P
            Pman last edited by

            @jack77:

            Ich habe eine Frage zum Datenpunkt Error.

            Hier werden Werte wie ui_alert_invalid und ui_error_dust_bin_full ausgespuckt. Den für Bürste reinigen kenne ich gerade nicht.

            Kann man mit einem Widget (welches?) oder in javascript (wie sollte da aussehen?) daraus z.B. Kein Fehler bzw. Filter und Staubbehälter reinigen ausgeben lassen? `
            Das sind die Codes, wie sie von der Botvac API ausgegeben werden. Ich weiß nicht welche Fehlercodes es alle gibt und unter welchen Umständen diese auftreten können, daher ist es im Moment noch nicht sinnvoll einen entsprechenden Datenpunkt zu machen.

            Du kannst dir ein einfaches Script machen:

            createState('BotvacError', 'kein Fehler');
            
            var codesToMessage = {
              'ui_alert_invalid': 'kein Fehler',
              'ui_error_dust_bin_full': 'Staubbehälter voll',
            };
            
            on('botvac.0.Rick.status.error', function (obj) {
              if (codesToMessage.hasOwnProperty(obj.state.val)) {
                setState('BotvacError', codesToMessage[obj.state.val], true);
              }  else {
                setState('BotvacError', obj.state.val);
              }
            });
            
            

            Vorsicht: nicht getestet!

            1 Reply Last reply Reply Quote 0
            • J
              jack77 last edited by

              Geht nicht. Ich war mir sicher, dass Dein Script funktioniert. Muss ich das Script dem Widget zuweisen, eigentlich nicht, oder? Habe die ID im Script mit mener Ersetzt.

              1 Reply Last reply Reply Quote 0
              • P
                Pman last edited by

                Du erstellst das Skript unter "Skripte" im Adminadapter? Den Datenpunkte findest du dann unter "javascript.0.BotvacError".

                1 Reply Last reply Reply Quote 0
                • J
                  jack77 last edited by

                  Hab ich gemacht.

                  Mein Script:

                  createState('BotvacError', 'Kein Fehler');
                  
                  var codesToMessage = {
                    'ui_alert_invalid': 'Alles in Ordnung',
                    'ui_error_dust_bin_full': 'Staubbehälter voll',
                  };
                  
                  on('botvac.0.Sam.status.error', function (obj) {
                    if (codesToMessage.hasOwnProperty(obj.state.val)) {
                      setState('BotvacError', codesToMessage[obj.state.val], true);
                    }  else {
                      setState('BotvacError', obj.state.val);
                    }
                  });
                  

                  Nur zeigt mir das Script immer "ui_error_brush_stuck" an obwohl der error status "ui_alert_invalid" ist. (siehe Foto)

                  1220_2016-08-30_10_00_33-iobroker.admin.png

                  1 Reply Last reply Reply Quote 0
                  • P
                    Pman last edited by

                    Vielleicht ist das Skript nicht an? Oder es war beim letzten update des Fehlercodes nicht an? Log mal ein wenig mit:

                    createState('BotvacError', 'Kein Fehler');
                    
                    var codesToMessage = {
                      'ui_alert_invalid': 'Alles in Ordnung',
                      'ui_error_dust_bin_full': 'Staubbehälter voll',
                    };
                    
                    on('botvac.0.Sam.status.error', function (obj) {
                      log(obj.state.val);
                      if (codesToMessage.hasOwnProperty(obj.state.val)) {
                        log('->' + codesToMessage[obj.state.val]); 
                        setState('BotvacError', codesToMessage[obj.state.val], true);
                      }  else {
                        setState('BotvacError', obj.state.val);
                      }
                    });
                    
                    1 Reply Last reply Reply Quote 0
                    • J
                      jack77 last edited by

                      Hab das Log eingetragen. Wo sehe ich das Log, im Admin unter Log Tab?

                      Ich hätte erwartet, dass durch das Script in botvac.0.Sam.status.error und javascript.0.BotvacError das selbe steht.

                      createState('BotvacError', 'Kein Fehler');
                      
                      var codesToMessage = {
                        'ui_alert_invalid': 'Alles in Ordnung',
                        'ui_error_dust_bin_full': 'Staubbehälter voll',
                        'ui_error_brush_stuck': 'Bürste verklemmt',
                      };
                      
                      on('botvac.0.Sam.status.error', function (obj) {
                          log(obj.state.val);
                        if (codesToMessage.hasOwnProperty(obj.state.val)) {
                            log('->' + codesToMessage[obj.state.val]); 
                          setState('BotvacError', codesToMessage[obj.state.val], true);
                        }  else {
                          setState('BotvacError', obj.state.val);
                        }
                      });
                      
                      1 Reply Last reply Reply Quote 0
                      • P
                        Pman last edited by

                        Ja unter Log im Admin Tab oder direkt im Skripttab.

                        Das Skript reagiert aber nur auf Änderung des Error States, du kannst das testen, indem du einfach manuell etwas in botvac.0.Sam.status.error einträgst.

                        1 Reply Last reply Reply Quote 0
                        • J
                          jack77 last edited by

                          @Pman:

                          indem du einfach manuell etwas in botvac.0.Sam.status.error einträgst. `
                          …das war ein guter Tip. Scheint zu funktionieren:

                          Log:

                          javascript-0	2016-08-30 13:19:56.645	info	script.js.Test.Neato: ->Alles in Ordnung
                          javascript-0	2016-08-30 13:19:56.643	info	script.js.Test.Neato: ui_alert_invalid
                          javascript-0	2016-08-30 13:19:31.034	info	script.js.Test.Neato: ->Bürste verklemmt
                          javascript-0	2016-08-30 13:19:31.032	info	script.js.Test.Neato: ui_error_brush_stuck
                          botvac-0	2016-08-30 13:19:31.030	warn	state change in unknown channel: status
                          javascript-0	2016-08-30 13:19:25.627	info	script.js.Test.Neato: ->Alles in Ordnung
                          javascript-0	2016-08-30 13:19:25.625	info	script.js.Test.Neato: ui_alert_invalid
                          javascript-0	2016-08-30 13:19:22.982	info	script.js.Test.Neato: ->Staubbehälter voll
                          javascript-0	2016-08-30 13:19:22.981	info	script.js.Test.Neato: ui_error_dust_bin_full
                          

                          was hat "botvac-0 2016-08-30 13:19:31.030 warn state change in unknown channel: status" zu bedeuten?

                          1 Reply Last reply Reply Quote 0
                          • P
                            Pman last edited by

                            Das ist die Standardausgabe für nicht unterstützte Stateänderungen, eigentlich sind die Status-States read-only.

                            Check mal dein pollInterval in den Adaptersettings, das habe ich von Millisekunden auf Sekunden geändert, vielleicht steht bei dir noch 60000 drin?

                            1 Reply Last reply Reply Quote 0
                            • J
                              jack77 last edited by

                              1220_2016-08-30_13_48_29-iobroker.admin.png

                              das sind aber 30000ms, wenn ich nämlich was in error manuell rein schreibe, ändert sich der Wert nach 30 Sekunden zurück.

                              Ich lass das mal so. Im Roboter Forum hat einer geschrieben, dass er in OpenHAB das Intervall runter gesetzt hat und vom Neato Server gesperrt wurde.

                              1 Reply Last reply Reply Quote 0
                              • P
                                Pman last edited by

                                Dann hast du noch nicht die aktuelle Version, da wird in Sekunden gemessen :lol:

                                Außerdem wurden die Anfragen an die Api reduziert.

                                1 Reply Last reply Reply Quote 0
                                • J
                                  jack77 last edited by

                                  Bin jetzt auf 0.5.0.

                                  da steht immer noch Poll Interval (ms) 30000

                                  1 Reply Last reply Reply Quote 0
                                  • S
                                    Schatn last edited by

                                    Hallo! Bei mir werden im ioBroker.admin die Werte alle korrekt angezeigt aber im VIS wird nur "null" oder "false" angezeigt. Habe den Adapter schon deinstalliert und neu installiert, iobroker neu gestartet, aber leider hat sich dadurch nichts geändert. Woran könnte das liegen? Danke

                                    1 Reply Last reply Reply Quote 0
                                    • M
                                      Matzes last edited by

                                      Hallo Pman,

                                      wäre klasse wenn du den Adapter um den Vorwerk VR200 erweitern könntest.

                                      Für FHEM wurde dies schon vorgenommen. Als Basis hat ebenfalls die Arbeit vn Kangguru gedient.

                                      https://raw.githubusercontent.com/vuffi … _BOTVAC.pm

                                      Gruß,

                                      Matze

                                      1 Reply Last reply Reply Quote 0
                                      • eric2905
                                        eric2905 last edited by

                                        Moin,

                                        mein Neato Botvac Connected ist heute gekommen und lädt gerade 😄

                                        Adapter ließ sich ohne Probleme installieren und bekommt auch die Daten vom Staubsauger.

                                        Werde berichten, wie es damit klappt.

                                        Gruß,

                                        Eric

                                        1 Reply Last reply Reply Quote 0
                                        • eric2905
                                          eric2905 last edited by

                                          Hi ho,

                                          der Neato gefällt mir bis dato sehr gut.

                                          Ich habe mir die Scripte in diesem Thread mal angesehen und ein wenig die angegebenen Links ausgekundschaftet … und noch einige Infos gefunden.

                                          Daraus habe ich zwei modifizierte Scripte gebaut, die einmal die Fehler auslesen, in "sinnige" Angaben übersetzen und in einem neuen Datenpunkt ablegen (quasi hier geklaut und um weitere Fehlermeldungen erweitert).

                                          Dann habe ich noch eine Liste mit Codes gefunden, die den action-Datenpunkt erklären (keine Garantie auf Richtigkeit - wie gesagt, gefunden). Daraus habe ich ein zweites Script gebaut, welches die Actions als "sinnige" Angabe in einem weiteren Datenpunkt ablegt.

                                          Hier die beiden Scripte:

                                          <u>NeatoBotvacErrors</u>

                                          ! createState('Neato.BotvacError', 'Kein Fehler'); ! var codesToMessage = { 'ui_alert_invalid': 'Alles in Ordnung', 'ui_error_dust_bin_full': 'Staubbehälter voll', 'ui_error_brush_stuck': 'Bürste verklemmt', 'ui_alert_recovering_location' : 'Ermittle meinen Standort', 'ui_error_picked_up' : 'Wurde angehoben!', 'ui_error_stuck' : 'Ich hänge fest!', 'ui_error_dust_bin_emptied' : 'Staubbehälter wurde geleert!', 'ui_error_dust_bin_missing' : 'Staubbehälter fehlt!', 'ui_error_navigation_falling' : 'Bitte Weg freiräumen!', 'ui_error_navigation_noprogress' : 'Bitte Weg freiräumen!' }; ! on("botvac.0.flusi.status.error"/*error*/, function (obj) { log(obj.state.val); if (codesToMessage.hasOwnProperty(obj.state.val)) { log('->' + codesToMessage[obj.state.val]); setState('Neato.BotvacError', codesToMessage[obj.state.val], true); } else { setState('Neato.BotvacError', obj.state.val); } }); !

                                          <u>NeatoBotvacAction</u>

                                          ! createState('Neato.BotvacAction', 'Nichts'); ! var codesToMessage = { '0' : "Keine Aktion", '1' : "Haus-Reinigung", '2' : "Spot-Reinigung", '3' : "Manuelle Reinigung", '4' : "Docking", '5' : "User Menu aktiv", '6' : "Reinigung ausgesetzt", '7' : "Updating", '8' : "Logs kopieren", '9' : "Position ermitteln", '10' : "IEC Test", }; ! on("botvac.0.flusi.status.action"/*action*/, function (obj) { log(obj.state.val); if (codesToMessage.hasOwnProperty(obj.state.val)) { log('->' + codesToMessage[obj.state.val]); setState('Neato.BotvacAction', codesToMessage[obj.state.val], true); } else { setState('Neato.BotvacAction', obj.state.val); } }); !

                                          Vielleicht kann es ja jemand gebrauchen.

                                          Gruß,

                                          Eric

                                          stephan1827 1 Reply Last reply Reply Quote 0
                                          • P
                                            Phteven last edited by

                                            Hallo,

                                            habe auch einen VR200 und seit er ins wlan integrierbar ist den Wunsch ihn über iobroker zu steuern.

                                            Da der Adapter von Pman den VR200 noch nicht integriert, habe ich die Funktionalität auf den Vendor Vorwerk für meine Zwecke modifiziert.

                                            Hier für die, die es interessiert was man tun kann damit der Adapter für Vorwerk VR200 funktioniert:

                                            In "client.js", line 6 modifizieren zu: this._baseUrl = 'https://vorwerk-beehive-production.herokuapp.com';

                                            In "robot.js", line 5 modifizieren zu: this._baseUrl = 'https://nucleo.ksecosys.com/vendors/vorwerk/robots/';

                                            Ich habe ein cert für den VR200 in anderen Foren gefunden und habe es im Adapter in den Ordner cert mit dem Inhalt des dort existierenden ersetzt. (Das cert ist anbei)

                                            Habe dann eine Fehlermeldung über "Hostname/IP doesn't match certificate's altnames" bekommen.

                                            Diese lies sich für mich beheben indem ich, in "api.js" das rot markeirte hinzugefügt habe.

                                            var options = {

                                            method: method === 'GET' ? 'GET' : 'POST',

                                            url: url,

                                            rejectUnauthorized: false, headers: {

                                            'Accept': 'application/vnd.neato.nucleo.v1'

                                            }

                                            };

                                            Das Ganze sollte natürlich besser und direkt im Adapter gelöst werden, z.B. mit einer zusätzlichen Eingabe "Vendor". Vielleicht hat Pman ja Zeit dafür, dass für uns zu tun 🙂

                                            Trotzdem wollte ich die Info mit euch teilen und hoffe es hilft jemandem.

                                            Gruß
                                            1073_neatocloud.com.crt.7z

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            407
                                            Online

                                            31.8k
                                            Users

                                            80.0k
                                            Topics

                                            1.3m
                                            Posts

                                            39
                                            152
                                            33629
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo