<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Ecovacs Deebot mit dynamischer Karte]]></title><description><![CDATA[<p dir="auto">Habe für meine Deebots eine dynamische  Karte entwickelt da es für den Ecovacs Adapter dieses leider nicht gibt:<br />
<img src="/assets/uploads/files/1787988456241-435d8a1a-e7c9-4f65-b06a-6c2bfeed4f7d-image.jpeg" alt="435d8a1a-e7c9-4f65-b06a-6c2bfeed4f7d-image.jpeg" class=" img-fluid img-markdown" /><br />
Eine Fahrspur ersccheint auch wenn der Sauger losfährt<br />
Ihr könnt auf der Karte die Räume aussuchen die ihr reinigen wollt. Die restlichen Buttons müsst ihr selbst erstellen:<br />
<img src="/assets/uploads/files/1787988534092-f608add8-ad08-4860-9ef9-67e0647c6e1b-image.jpeg" alt="f608add8-ad08-4860-9ef9-67e0647c6e1b-image.jpeg" class=" img-fluid img-markdown" /><br />
Das sind nur Beispiele.</p>
<p dir="auto">Die Baumstruktur sieht ungefähr so aus:<br />
<img src="/assets/uploads/files/1787989942232-916b4732-759c-41f3-94be-d09c29765840-image.jpeg" alt="916b4732-759c-41f3-94be-d09c29765840-image.jpeg" class=" img-fluid img-markdown" /><br />
Anleitung:<br />
</p><section class="spoiler-wrapper"><button class="spoiler-control btn btn-default">Spoiler</button><section style="display:none" class="spoiler-content"><p></p>
<pre><code>ECOVACS ioBroker UNIVERSAL v7.3
KOMPLETTE INSTALLATIONSANLEITUNG FÜR EIN FREMDES / NEUES SYSTEM
================================================================

ZIEL
====

Dieses Paket ist für eine komplett andere ioBroker-Installation gedacht.

Es ist NICHT auf bestimmte Namen wie Luna oder Sky fest programmiert.
Es versucht automatisch alle vorhandenen Ecovacs-Instanzen zu erkennen.

Unterstützte Instanznamen sind zum Beispiel:

   ecovacs-deebot.0
   ecovacs-deebot.1
   ecovacs-deebot.2

Die Instanznummer ist egal.


DAS PAKET ENTHÄLT
=================

1. 01_Ecovacs_Universal_Setup_v7.3.js
2. 02_Ecovacs_Universal_Runtime_v7.3.js
3. 03_Ecovacs_Universal_VIS_v7.3.js
4. KURZANLEITUNG.txt



VORAUSSETZUNGEN
===============

Auf dem Zielsystem müssen vorhanden sein:

- ioBroker
- JavaScript-Adapter
- Ecovacs-Deebot-Adapter
- mindestens ein eingerichteter Ecovacs-Sauger

Der Ecovacs-Adapter muss bereits funktionieren.

Unter:

   Objekte

sollten Datenpunkte sichtbar sein, die mit:

   ecovacs-deebot.

beginnen.


BEISPIEL
========

Das kann z.B. so aussehen:

   ecovacs-deebot.0
   ecovacs-deebot.1

oder:

   ecovacs-deebot.2

Die Scripts erkennen automatisch, welche Instanzen vorhanden sind.


WICHTIG
=======

Jede .js-Datei wird als eigenes JavaScript-Skript in ioBroker angelegt.

Nicht diese Anleitung oder eine README in ein JavaScript-Skript kopieren.


============================================================
SCHRITT 1 - DREI JAVASCRIPT-SKRIPTE ANLEGEN
============================================================

In ioBroker:

   Skripte -&gt; JavaScript

drei neue JavaScript-Skripte anlegen.

Zum Beispiel:

   Ecovacs - Setup
   Ecovacs - Runtime
   Ecovacs - VIS


In "Ecovacs - Setup" den kompletten Inhalt von:

   01_Ecovacs_Universal_Setup_v7.3.js

einfügen.


In "Ecovacs - Runtime" den kompletten Inhalt von:

   02_Ecovacs_Universal_Runtime_v7.3.js

einfügen.


In "Ecovacs - VIS" den kompletten Inhalt von:

   03_Ecovacs_Universal_VIS_v7.3.js

einfügen.


============================================================
SCHRITT 2 - NUR DAS SETUP STARTEN
============================================================

Zuerst:

   Setup   = AN
   Runtime = AUS
   VIS     = AUS


Das Setup durchsucht automatisch alle:

   ecovacs-deebot.*

Instanzen.


Es versucht automatisch zu erkennen:

- Gerätename
- Adapter-Prefix
- Map-ID
- Räume / spotAreas


Danach wird unter:

   0_userdata.0.Sauger

für jeden gefundenen Sauger eine eigene Struktur angelegt.


BEISPIEL
========

Das kann zum Beispiel werden:

   0_userdata.0.Sauger.Deebot_T20

oder:

   0_userdata.0.Sauger.Sauger_1

oder der tatsächlich vom Adapter gelieferte Gerätename.


============================================================
SCHRITT 3 - PRÜFEN, OB DAS SETUP ERFOLGREICH WAR
============================================================

Unter:

   Objekte -&gt; 0_userdata -&gt; 0 -&gt; Sauger

sollte mindestens ein Sauger erscheinen.


Darin sollten unter anderem vorhanden sein:

   name
   deebotPrefix
   mapId
   Runtime
   Map
   Rooms
   VIS


Wenn das vorhanden ist:

   Setup = AUS


Das Setup muss im normalen Betrieb NICHT laufen.


============================================================
SCHRITT 4 - RUNTIME STARTEN
============================================================

Jetzt:

   Runtime = AN


Das Runtime-Skript enthält zusammen:

1. Kartenquellen-Erkennung
2. Position
3. Fahrspur
4. Raum-Auswahl-Synchronisierung
5. automatische Raumflächen-Erkennung
6. automatische AutoBounds-Berechnung pro Sauger


Das Runtime-Skript verarbeitet automatisch ALLE Sauger unter:

   0_userdata.0.Sauger.*.deebotPrefix


============================================================
SCHRITT 5 - VIS STARTEN
============================================================

Jetzt:

   VIS = AN


Das VIS-Skript erzeugt pro Sauger:

   0_userdata.0.Sauger.&lt;Name&gt;.VIS.html


Beispiel:

   0_userdata.0.Sauger.Deebot_T20.VIS.html


============================================================
SCHRITT 6 - VIS-WIDGET EINRICHTEN
============================================================

In ioBroker VIS:

   Basic -&gt; String (unescaped)

verwenden.


Als Objekt-ID direkt eintragen:

   0_userdata.0.Sauger.&lt;Name&gt;.VIS.html


Beispiel:

   0_userdata.0.Sauger.Deebot_T20.VIS.html


WICHTIG
=======

Keine geschweiften Klammern verwenden.


RICHTIG:

   0_userdata.0.Sauger.Deebot_T20.VIS.html


FALSCH:

   {0_userdata.0.Sauger.Deebot_T20.VIS.html}


============================================================
RESPONSIVE KARTENGRÖSSE
============================================================

Die Karte passt sich automatisch an die Größe des VIS-Widgets an.

Du musst KEINE Breite und Höhe in Datenpunkten einstellen.


Einfach im VIS-Editor das String-(unescaped)-Widget:

- breiter ziehen
- schmaler ziehen
- höher ziehen
- niedriger ziehen


Die komplette Darstellung skaliert automatisch mit:

- Raumflächen
- Fahrspur
- Roboterposition


Das interne Koordinatensystem bleibt:

   540 x 231


Für eine proportionale Darstellung ungefähr dieses Verhältnis beibehalten.


Beispiele:

   540 x 231
   720 x 308
   900 x 385
   1080 x 462


Wenn das Widget stark anders proportioniert wird, wird die Darstellung gestreckt.


============================================================
RAUM AUSWÄHLEN
============================================================

Einfach direkt auf die farbige Raumfläche klicken.


Beim Klick wird intern der passende Ecovacs-State geschaltet:

   ecovacs-deebot.x.map.&lt;mapId&gt;.spotAreas.&lt;id&gt;.markForNextSpotAreaCleaning


Ein ausgewählter Raum wird stärker dargestellt.


Es gibt keine zusätzlichen Auswahlbuttons mehr.


============================================================
MEHRERE RÄUME AUSWÄHLEN
============================================================

Mehrere Raumflächen können nacheinander angeklickt werden.

Die Auswahl wird direkt im Ecovacs-Adapter gesetzt.


============================================================
MEHRERE SAUGER
============================================================

Das Paket ist nicht auf einen einzelnen Sauger begrenzt.


Wenn mehrere Instanzen vorhanden sind:

   ecovacs-deebot.0
   ecovacs-deebot.1
   ecovacs-deebot.2


werden sie automatisch getrennt verarbeitet.


Jeder Sauger bekommt:

- eigene Map-ID
- eigene Räume
- eigene Raumflächen
- eigene AutoBounds
- eigene Position
- eigene Fahrspur
- eigenes VIS.html


============================================================
AUTOMATISCHE RAUMFLÄCHEN
============================================================

Die Runtime sucht pro Raum automatisch nach Geometriedaten.

Gesucht wird zum Beispiel nach:

   polygon
   boundary
   boundaries
   coordinates
   coords
   points
   vertices
   outline
   contour
   rect
   bounds


Wenn passende Geometrie gefunden wird:

   Rooms.&lt;id&gt;.polygonPoints

wird gefüllt.


Die VIS zeichnet daraus die farbige Raumfläche.


============================================================
AUTOMATISCHE AUTOBOUNDS
============================================================

Für jeden Sauger werden die Raumgrenzen automatisch berechnet.


Datenpunkte:

   0_userdata.0.Sauger.&lt;Name&gt;.Map.AutoBounds.minX
   0_userdata.0.Sauger.&lt;Name&gt;.Map.AutoBounds.maxX
   0_userdata.0.Sauger.&lt;Name&gt;.Map.AutoBounds.minY
   0_userdata.0.Sauger.&lt;Name&gt;.Map.AutoBounds.maxY
   0_userdata.0.Sauger.&lt;Name&gt;.Map.AutoBounds.valid


Damit ist die Raumdarstellung nicht mehr auf feste Kartenkoordinaten eines
bestimmten Saugers angewiesen.


============================================================
POSITION UND FAHRSPUR
============================================================

Wenn vorhanden, wird verwendet:

   ecovacs-deebot.x.map.deebotPosition


Daraus werden erzeugt:

   Map.pixelXcss
   Map.pixelYcss
   Map.rotateCss
   Map.trailPoints


Die Roboterposition wird zusammen mit den automatisch erkannten AutoBounds
auf die aktuelle Raumkarte angepasst.


Die Fahrspur wird bei einem neuen Reinigungsvorgang zurückgesetzt.


============================================================
KARTENQUELLEN-ERKENNUNG
============================================================

Die Runtime sucht außerdem automatisch nach Kartenquellen.


Bevorzugt wird:

   ecovacs-deebot.x.map.&lt;mapId&gt;.map64


Diagnose:

   0_userdata.0.Sauger.&lt;Name&gt;.Map.Source.type
   0_userdata.0.Sauger.&lt;Name&gt;.Map.Source.state
   0_userdata.0.Sauger.&lt;Name&gt;.Map.Source.image
   0_userdata.0.Sauger.&lt;Name&gt;.Map.Source.status


Hinweis:

Die aktuelle VIS v7.3 verwendet absichtlich KEIN Kartenbild als Hintergrund.

Dargestellt werden nur:

- Raumflächen
- Fahrspur
- Roboterposition


============================================================
DATENSTRUKTUR
============================================================

Beispiel:

0_userdata.0.Sauger.&lt;Name&gt;
|
+-- name
+-- deebotPrefix
+-- mapId
|
+-- Runtime
|   +-- statusText
|   +-- positionName
|
+-- Map
|   +-- pixelXcss
|   +-- pixelYcss
|   +-- rotateCss
|   +-- trailPoints
|   |
|   +-- AutoBounds
|   |   +-- minX
|   |   +-- maxX
|   |   +-- minY
|   |   +-- maxY
|   |   +-- valid
|   |
|   +-- Config
|   |   +-- minX
|   |   +-- maxX
|   |   +-- minY
|   |   +-- maxY
|   |   +-- imgW
|   |   +-- imgH
|   |
|   +-- Source
|       +-- type
|       +-- state
|       +-- image
|       +-- status
|
+-- Rooms
|   +-- &lt;Raum-ID&gt;
|       +-- id
|       +-- name
|       +-- selected
|       +-- geometryState
|       +-- geometryType
|       +-- polygonPoints
|       +-- rawGeometry
|       +-- geometryStatus
|
+-- VIS
   +-- html


============================================================
NEUEN SAUGER SPÄTER HINZUFÜGEN
============================================================

Wenn später ein weiterer Ecovacs-Sauger hinzukommt:

1. neuen Sauger im Ecovacs-Adapter vollständig einrichten

2. Setup kurz AN

3. warten, bis der neue Sauger unter:

      0_userdata.0.Sauger

  erscheint

4. Setup wieder AUS

5. Runtime einmal neu starten

6. VIS einmal neu starten


Danach wird der neue Sauger automatisch mit verarbeitet.


============================================================
FEHLERSUCHE
============================================================

1. SAUGER WIRD NICHT ANGELEGT
-----------------------------

Prüfen:

- läuft der Ecovacs-Adapter?
- existieren ecovacs-deebot.* Datenpunkte?
- Setup kurz AN?


2. KEINE RÄUME
--------------

Prüfen, ob unter:

   ecovacs-deebot.x.map.&lt;mapId&gt;.spotAreas

Räume vorhanden sind.


Wenn der Adapter keine spotAreas liefert, kann das Paket keine Räume erzeugen.


3. RAUM WIRD NICHT GEZEICHNET
-----------------------------

Prüfen:

   0_userdata.0.Sauger.&lt;Name&gt;.Rooms.&lt;id&gt;.geometryStatus

   0_userdata.0.Sauger.&lt;Name&gt;.Rooms.&lt;id&gt;.geometryState

   0_userdata.0.Sauger.&lt;Name&gt;.Rooms.&lt;id&gt;.polygonPoints


Wenn dort keine Geometrie gefunden wird, liefert das Modell / die Adapterversion
für diesen Raum keine verwertbaren Raumkoordinaten.


4. NUR EIN KLEINER STREIFEN DER KARTE SICHTBAR
-----------------------------------------------

Prüfen:

   Map.AutoBounds.valid

sollte:

   true

sein.


Außerdem prüfen:

   Map.AutoBounds.minX
   Map.AutoBounds.maxX
   Map.AutoBounds.minY
   Map.AutoBounds.maxY


v7.3 berechnet diese Werte pro Sauger automatisch.


5. KEINE ROBOTERPOSITION
------------------------

Prüfen:

   ecovacs-deebot.x.map.deebotPosition


Wenn dieser State nicht vorhanden ist, kann keine Live-Position dargestellt werden.


6. FAHRSPUR FEHLT
-----------------

Prüfen:

   0_userdata.0.Sauger.&lt;Name&gt;.Map.trailPoints


Außerdem muss:

   ecovacs-deebot.x.map.deebotPosition

regelmäßig neue Werte liefern.


7. VIS BLEIBT LEER
------------------

Prüfen:

- Runtime = AN?
- VIS = AN?
- String (unescaped) Widget verwendet?
- richtige Objekt-ID?
- VIS.html hat einen Inhalt?


8. RAUM LÄSST SICH NICHT AUSWÄHLEN
----------------------------------

Prüfen, ob dieser State vorhanden ist:

   ecovacs-deebot.x.map.&lt;mapId&gt;.spotAreas.&lt;id&gt;.markForNextSpotAreaCleaning


Dieser State muss vom Ecovacs-Adapter bereitgestellt werden.


9. FALSCHE RAUMNAMEN
--------------------

Prüfen unter:

   0_userdata.0.Sauger.&lt;Name&gt;.Rooms.&lt;id&gt;.name


Die Namen werden beim Setup automatisch aus dem Adapter übernommen, sofern
der Adapter einen Namen bereitstellt.






Setup nur erneut starten, wenn:

- ein neuer Sauger hinzukommt
- neue Setup-Datenpunkte gebraucht werden
- die Struktur neu aufgebaut werden soll


============================================================
NORMALBETRIEB
============================================================

Nach erfolgreicher Installation:

   Setup   = AUS
   Runtime = AN
   VIS     = AN


============================================================
KURZFASSUNG FÜR EIN FREMDES SYSTEM
============================================================

1. Ecovacs-Deebot-Adapter installieren und Sauger einrichten

2. Drei JavaScript-Skripte anlegen

3. Dateien einfügen:
  - Setup
  - Runtime
  - VIS

4. Nur Setup AN

5. Prüfen:
      0_userdata.0.Sauger

6. Setup AUS

7. Runtime AN

8. VIS AN

9. In VIS:
      Basic -&gt; String (unescaped)

10. Objekt-ID:
      0_userdata.0.Sauger.&lt;Name&gt;.VIS.html

11. Widget einfach mit der Maus auf gewünschte Größe ziehen

12. Räume direkt in der Karte anklicken


FERTIG
======

Normalbetrieb:

   Setup   = AUS
   Runtime = AN
   VIS     = AN

</code></pre>
<p dir="auto"></p></section></section><br />
Hier die Dateien:<br />
<a href="/assets/uploads/files/1787990204326-01_ecovacs_universal_setup_v7.3.js">01_Ecovacs_Universal_Setup_v7.3.js</a><br />
<a href="/assets/uploads/files/1787990211299-02_ecovacs_universal_runtime_v7.3.js">02_Ecovacs_Universal_Runtime_v7.3.js</a><br />
<a href="/assets/uploads/files/1787990218868-03_ecovacs_universal_vis_v7.3.js">03_Ecovacs_Universal_VIS_v7.3.js</a><br />
<a href="/assets/uploads/files/1787990225251-kurzanleitung.txt">KURZANLEITUNG.txt</a><p></p>
<p dir="auto">Viel Spaß</p>
]]></description><link>https://forum.iobroker.net/topic/85253/ecovacs-deebot-mit-dynamischer-karte</link><generator>RSS for Node</generator><lastBuildDate>Sat, 29 Aug 2026 11:29:22 GMT</lastBuildDate><atom:link href="https://forum.iobroker.net/topic/85253.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 29 Aug 2026 07:35:09 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Ecovacs Deebot mit dynamischer Karte on Sat, 29 Aug 2026 08:23:18 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/helfi9999" aria-label="Profile: helfi9999">@<bdi>helfi9999</bdi></a></p>
<p dir="auto">Schaut schon besser aus. <img src="https://forum.iobroker.net/assets/plugins/nodebb-plugin-emoji/emoji/android/1f44d.png?v=35736c58901" class="not-responsive emoji emoji-android emoji--+1" style="height:23px;width:auto;vertical-align:middle" title=":+1:" alt="👍" /></p>
<p dir="auto"><img src="/assets/uploads/files/1787991670700-f154b5a5-95b9-465c-81e4-04643607a00d-image.jpeg" alt="f154b5a5-95b9-465c-81e4-04643607a00d-image.jpeg" class=" img-fluid img-markdown" /></p>
<p dir="auto">Wie kann ich beim Hintergrund die Farbe ändern bzw. auf transparent?</p>
]]></description><link>https://forum.iobroker.net/post/1352799</link><guid isPermaLink="true">https://forum.iobroker.net/post/1352799</guid><dc:creator><![CDATA[sigi234]]></dc:creator><pubDate>Sat, 29 Aug 2026 08:23:18 GMT</pubDate></item><item><title><![CDATA[Reply to Ecovacs Deebot mit dynamischer Karte on Sat, 29 Aug 2026 07:59:11 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/sigi234" aria-label="Profile: sigi234">@<bdi>sigi234</bdi></a> schau mal habe gerade gemerkt das man die Karte über das Widget nicht vergrößern kann und habe alles etwas komprimiert so das jetzt nur 3 Skripte übrig sind. Schau mal bitte nach ob soweit alles klappt. Habe vor 2 Minuten die Skripte aktualisiert</p>
<p dir="auto">Gruß Helfi9999</p>
]]></description><link>https://forum.iobroker.net/post/1352792</link><guid isPermaLink="true">https://forum.iobroker.net/post/1352792</guid><dc:creator><![CDATA[helfi9999]]></dc:creator><pubDate>Sat, 29 Aug 2026 07:59:11 GMT</pubDate></item><item><title><![CDATA[Reply to Ecovacs Deebot mit dynamischer Karte on Sat, 29 Aug 2026 07:50:05 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/helfi9999" aria-label="Profile: helfi9999">@<bdi>helfi9999</bdi></a></p>
<p dir="auto">Hallo, brauche ich jetzt nicht mehr 6 Skripte?</p>
]]></description><link>https://forum.iobroker.net/post/1352791</link><guid isPermaLink="true">https://forum.iobroker.net/post/1352791</guid><dc:creator><![CDATA[sigi234]]></dc:creator><pubDate>Sat, 29 Aug 2026 07:50:05 GMT</pubDate></item></channel></rss>