<?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[ALEXA Einkaufsliste mit Marktzuordnung und Laufrouten]]></title><description><![CDATA[<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Aktuelle Test Version</th>
<th>x.x.x</th>
</tr>
</thead>
<tbody>
<tr>
<td>Veröffentlichungsdatum</td>
<td>xx.xx.xxxx</td>
</tr>
<tr>
<td>Github Link</td>
<td>https://github.com/xxx</td>
</tr>
</tbody>
</table>
<p dir="auto">ioBroker.shoppingroute<br />
ShoppingRoute logo</p>
<p dir="auto">Entwicklungsstand: 0.1.0-beta.2 – geschlossene Beta</p>
<p dir="auto"><strong>Wer Lust hat, Tester zu werden, meldet sich bitte bei mir. Voraussetzung ist ein wenig Programmiererfahrung und Lust, gefundene Fehler zu dokumentieren.</strong></p>
<p dir="auto">ioBroker.shoppingroute sortiert eine vorhandene Alexa-Einkaufsliste nach Einkaufsmarkt und dem individuellen Laufweg durch den jeweiligen Markt. Die originale Alexa-App bleibt die einzige App für den Einkauf und die Artikel werden dort weiterhin ganz normal abgehakt.</p>
<p dir="auto">Grundidee<br />
Alexa vergibt für jeden Listeneintrag eine ID und einen Erstellungszeitpunkt. Wenn die Alexa-App auf „Älteste bis neueste“ eingestellt ist, können diese vorhandenen IDs als feste Listenplätze verwendet werden.</p>
<p dir="auto">Der Adapter:</p>
<p dir="auto">liest ausschließlich die aktiven Einträge aus alexa2.x.Lists.&lt;LISTE&gt;.json,<br />
sortiert die vorhandenen IDs nach createdDateTime von alt nach neu,<br />
analysiert unabhängig davon die Artikelnamen,<br />
sortiert die Artikel nach Markt → Laufweg/Kategorie → Artikelname,<br />
schreibt ausschließlich die sichtbaren value-Texte auf die bereits vorhandenen IDs zurück.<br />
Harte Sicherheitsregel<br />
Der Adapter verwendet niemals:</p>
<p dir="auto">#New<br />
#delete<br />
completed<br />
Er legt also selbst keine Alexa-Listeneinträge an, löscht keine und hakt keine ab.</p>
<p dir="auto">Alexa-App vorbereiten<br />
In der Alexa-App für die Einkaufsliste einstellen:</p>
<p dir="auto">Sortieren nach → Älteste bis neueste</p>
<p dir="auto">Ohne diese Einstellung kann die App ihre eigene A–Z-Sortierung über die vom Adapter erzeugte Reihenfolge legen.</p>
<p dir="auto">Beispiele<br />
Markt explizit nennen<br />
Sprachbefehl sinngemäß:</p>
<p dir="auto">Alexa, setze Bananen von Aldi auf die Einkaufsliste.</p>
<p dir="auto">Der sichtbare Eintrag bleibt:</p>
<p dir="auto">Bananen von Aldi</p>
<p dir="auto">Intern erkennt der Adapter:</p>
<p dir="auto">Artikel: Bananen<br />
Markt: ALDI<br />
Kategorie: Obst/Gemüse<br />
Mengenangaben<br />
Auch folgende Einträge bleiben sichtbar unverändert:</p>
<p dir="auto">3 Bananen von Aldi<br />
2 Packungen Eier von Penny<br />
500 Gramm Hackfleisch von Lidl<br />
Die Menge wird nur für die Artikelerkennung ausgeblendet, niemals aus dem Alexa-Text entfernt.</p>
<p dir="auto">Prioritätsmarkt<br />
Optional kann ein Prioritätsmarkt festgelegt werden. Damit muss der bevorzugte Markt nicht bei jedem Artikel mitgesprochen werden.</p>
<p dir="auto">Beispiel mit Prioritätsmarkt = LIDL:</p>
<p dir="auto">Milch → LIDL<br />
Bananen → LIDL<br />
Cola von Rewe → REWE<br />
hat Katzenfutter im Artikelstamm den Standardmarkt ALDI → ALDI<br />
Die Reihenfolge der Marktentscheidung ist verbindlich:</p>
<p dir="auto">ausdrücklich genannter Markt → Artikel-Standardmarkt → Prioritätsmarkt → Fallback-Markt</p>
<p dir="auto">Der Prioritätsmarkt wird beim automatischen Lernen eines Artikels nicht als fester Standardmarkt gespeichert. Ein späterer Wechsel des Prioritätsmarkts wirkt dadurch auch auf bereits gelernte Artikel ohne eigenen Standardmarkt.</p>
<p dir="auto">Konfiguration<br />
Allgemein<br />
Alexa2-Instanz, z. B. alexa2.0<br />
Listenname, normalerweise SHOP<br />
Dry-Run<br />
unbekannte Artikel automatisch lernen<br />
Wartezeit nach Listenänderungen<br />
Pause zwischen Alexa-value-Updates<br />
Fallback-Hauptkategorie/Markt<br />
Prioritätsmarkt, z. B. LIDL (optional)<br />
Märkte / Hauptkategorien<br />
Beliebig viele Märkte können angelegt und in eine Reihenfolge gebracht werden.</p>
<p dir="auto">Beispiel:</p>
<p dir="auto">ALDI<br />
PENNY<br />
LIDL<br />
REWE<br />
Ohne Markt<br />
Aliase ermöglichen z. B. Aldi und Aldi Nord für denselben Markt.</p>
<p dir="auto">Produktgruppen<br />
Produktgruppen wie Obst/Gemüse, TK-Produkte, Milchprodukte oder Nonfood werden zentral in einem eigenen Reiter gepflegt. In Artikel und Laufwege werden Produktgruppen nicht mehr frei eingetippt, sondern aus dieser Liste per Pulldown ausgewählt. Nach Änderungen an den Produktgruppen die Konfiguration speichern, damit die Auswahllisten neu geladen werden.</p>
<p dir="auto">Laufwege<br />
Jeder Markt bekommt eine eigene Kategorienreihenfolge.</p>
<p dir="auto">Beispiel ALDI:</p>
<p dir="auto">Obst/Gemüse<br />
Brot/Gebäck<br />
Fleisch/Fisch<br />
Wurst/Salate/Teigwaren<br />
Milchprodukte<br />
Konserven<br />
Getränke<br />
TK-Produkte<br />
Nonfood<br />
PENNY kann eine vollständig andere Reihenfolge besitzen.</p>
<p dir="auto">Artikelstamm<br />
Pro Artikel können gepflegt werden:</p>
<p dir="auto">Name<br />
Aliase<br />
Kategorie<br />
Standardmarkt<br />
Ein ausdrücklich genannter Markt (Bananen von Penny) hat Vorrang vor dem Standardmarkt des Artikels.</p>
<p dir="auto">Unbekannte Artikel und automatisches Lernen<br />
Nicht im Artikelstamm vorhandene Artikel werden nicht blockiert. Ab 0.0.2 können sie automatisch in den Artikelstamm übernommen werden. Dabei wird eine Kategorie heuristisch vorgeschlagen; ein globaler Prioritätsmarkt wird nicht als fester Artikel-Standardmarkt gespeichert.</p>
<p dir="auto">Dry-Run verhindert ausschließlich Alexa-Schreibzugriffe. Das Lernen neuer Artikel darf weiterhin stattfinden, damit sich der Artikelstamm gefahrlos aufbauen lässt.</p>
<p dir="auto">Nicht automatisch gelernte unbekannte Artikel werden nach</p>
<p dir="auto">shoppingroute.0.info.unknownItems</p>
<p dir="auto">geschrieben. Neu gelernte Artikel stehen zusätzlich unter</p>
<p dir="auto">shoppingroute.0.info.lastLearnedItems.</p>
<p dir="auto">Ein unbekannter Text mit einem nicht erkannten Suffix wie 35 Sushi von Ukuhama wird aus Sicherheitsgründen nicht automatisch als Produkt Sushi von Ukuhama gelernt. Ukuhama könnte ein noch nicht angelegter Markt oder auch eine Marke sein. Solche Einträge übernehmen deshalb auch nicht den Prioritätsmarkt, sondern bleiben im Fallback-Markt und zur manuellen Klärung in info.unknownItems.</p>
<p dir="auto">Verhalten während des Einkaufs<br />
Wenn während einer laufenden Umsortierung ein Artikel hinzugefügt oder abgehakt wird, erkennt der Adapter die geänderte Menge aktiver IDs, bricht den aktuellen Durchlauf ab und berechnet die Liste anschließend neu.</p>
<p dir="auto">Es werden außerdem nur Plätze beschrieben, deren Text sich tatsächlich ändern muss.</p>
<p dir="auto">Datenpunkte<br />
info.connection<br />
info.activeItems<br />
info.lastSort<br />
info.lastError<br />
info.lastPlan<br />
info.unknownItems<br />
info.lastLearnedItems<br />
info.writeCapability<br />
info.compatibility<br />
info.lastCompatibilityTest<br />
control.enabled<br />
control.sortNow<br />
control.compatibilityTest<br />
info.lastPlan ist besonders für den Dry-Run gedacht und zeigt vor dem echten Schreiben exakt, welcher Text auf welche vorhandene Alexa-ID geschrieben würde.</p>
<p dir="auto">Dry-Run<br />
Neue Installationen starten standardmäßig mit Dry-Run = EIN.</p>
<p dir="auto">Damit wird die Sortierung vollständig berechnet und protokolliert, aber Alexa wird nicht verändert. Erst wenn das Ergebnis plausibel ist, sollte Dry-Run in der Adapterkonfiguration deaktiviert werden.</p>
<p dir="auto">Beta-Sicherheitsprüfung ab 0.1.0-beta.1<br />
Vor echten Alexa-Schreibzugriffen prüft die Beta den installierten Alexa2/alexa-remote2-Pfad auf den bekannten updateListItem-Fehler. Das Ergebnis steht in shoppingroute.0.info.writeCapability und ausführlich in shoppingroute.0.info.compatibility.</p>
<p dir="auto">Bei source-ok oder live-ok sind echte Sortier-Schreibzugriffe freigegeben. Bei known-bug, live-failed oder unknown werden sie blockiert; Dry-Run funktioniert weiterhin. Ist der Status unknown, kann mit mindestens einem aktiven Listeneintrag shoppingroute.0.control.compatibilityTest einmal auf true gesetzt werden. Der Test schreibt ausschließlich denselben sichtbaren value erneut und verändert den sichtbaren Artikelnamen nicht.</p>
<p dir="auto">Eine Schritt-für-Schritt-Anleitung für Tester steht in BETA_TESTING_DE.md.</p>
<p dir="auto">Aktueller Alexa2-Hinweis<br />
Während der Entwicklung im August 2026 wurde in einer verwendeten alexa-remote2-Version ein Fehler beim Aktualisieren von Listeneinträgen gefunden. In updateListItem war die Versions-Query als</p>
<p dir="auto">?version =${options.version}</p>
<p dir="auto">statt</p>
<p dir="auto">?version=${options.version}</p>
<p dir="auto">gebildet. In der Testinstallation musste dieser Fehler korrigiert werden, bevor value/completed-Updates von Amazon akzeptiert wurden.</p>
<p dir="auto">Für eine öffentliche Release-Version von shoppingroute ist ein upstream behobener Alexa2/alexa-remote2-Stand Voraussetzung. Nutzer sollen später keine Dateien in node_modules manuell verändern müssen.</p>
<p dir="auto">Entwicklungsinstallation<br />
Das Repository ist zunächst für Tests über GitHub vorgesehen. Nach dem Push auf GitHub kann es in ioBroker im Expertenmodus über die benutzerdefinierte GitHub-/URL-Installation installiert werden.</p>
<p dir="auto">Vor einem späteren offiziellen Release folgen mindestens:</p>
<p dir="auto">Test auf mehreren ioBroker-Systemen<br />
Prüfung der Admin-JSONConfig<br />
Kompatibilitätstest mit aktuellen Alexa2-Versionen<br />
npm-Veröffentlichung<br />
Antrag für das ioBroker-Latest-Repository<br />
Lizenz<br />
MIT © 2026 RaviniZib</p>
<p dir="auto">Admin-Oberfläche ab 0.0.4<br />
Fallback-Markt und Prioritätsmarkt werden als Pulldown aus den aktiven Märkten angeboten. Auch Standardmarkt im Artikelstamm und Markt im Laufweg sind Pulldowns. Dynamische Markt- und Produktgruppenlisten werden alphabetisch sortiert. Im Artikelstamm können die Spalten Artikel, Produktgruppe und Standardmarkt über den Spaltenkopf sortiert werden; innerhalb gleicher Gruppen bleibt die alphabetische Artikelreihenfolge erhalten.</p>
]]></description><link>https://forum.iobroker.net/topic/85135/alexa-einkaufsliste-mit-marktzuordnung-und-laufrouten</link><generator>RSS for Node</generator><lastBuildDate>Sun, 09 Aug 2026 05:02:24 GMT</lastBuildDate><atom:link href="https://forum.iobroker.net/topic/85135.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 07 Aug 2026 18:02:02 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to ALEXA Einkaufsliste mit Marktzuordnung und Laufrouten on Sat, 08 Aug 2026 15:09:38 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/homoran" aria-label="Profile: homoran">@<bdi>homoran</bdi></a></p>
<p dir="auto"><s>Da da kein Adapter veröffentlicht wird, bitte Beitrag  löschen.<br />
Ohne Repo kann niemand checken was da dahinter steht. Außerdem muss bei allen Adaptern mit kommerzieller Lizenz <a class="plugin-mentions-user plugin-mentions-a" href="/user/bluefox" aria-label="Profile: Bluefox">@<bdi>Bluefox</bdi></a> sein OK geben.</s></p>
<p dir="auto">EDIT:<br />
Dev hat das Repo nun auf Github freigeschaltet. Mal sehen ob er es auch hier veröffentlicht.</p>
]]></description><link>https://forum.iobroker.net/post/1350869</link><guid isPermaLink="true">https://forum.iobroker.net/post/1350869</guid><dc:creator><![CDATA[mcm1957]]></dc:creator><pubDate>Sat, 08 Aug 2026 15:09:38 GMT</pubDate></item><item><title><![CDATA[Reply to ALEXA Einkaufsliste mit Marktzuordnung und Laufrouten on Sat, 08 Aug 2026 13:55:25 GMT]]></title><description><![CDATA[<blockquote>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/skvarel" aria-label="Profile: skvarel">@<bdi>skvarel</bdi></a> <a href="/post/1350860">sagte</a>:<br />
bei Facebook heißt es, den Link zum Repo gibt es nur nach Kontaktaufnahme per Github.</p>
</blockquote>
<p dir="auto">Dann hat das hier eigentlich nichts zu suchen. Closed Source ist nicht das was wir hier unterstützen (wollen). Zumal so auch kein "Sehender" sich mal den Sourcecode etc. näher ansehen kann. Ganz neu und spamartig auf allen Kanälen für ein neues (Closed Source) Projekt werben, hat irgendwie einen Beigeschmack.</p>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/homoran" aria-label="Profile: homoran">@<bdi>homoran</bdi></a><br />
Ich wäre daher für die angekündigte Löschung. Was mit dem Profil wird sehen wir dann.</p>
]]></description><link>https://forum.iobroker.net/post/1350866</link><guid isPermaLink="true">https://forum.iobroker.net/post/1350866</guid><dc:creator><![CDATA[Samson71]]></dc:creator><pubDate>Sat, 08 Aug 2026 13:55:25 GMT</pubDate></item><item><title><![CDATA[Reply to ALEXA Einkaufsliste mit Marktzuordnung und Laufrouten on Sat, 08 Aug 2026 13:03:44 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/homoran" aria-label="Profile: Homoran">@<bdi>Homoran</bdi></a> ... muss man nicht kennen  😉</p>
]]></description><link>https://forum.iobroker.net/post/1350864</link><guid isPermaLink="true">https://forum.iobroker.net/post/1350864</guid><dc:creator><![CDATA[skvarel]]></dc:creator><pubDate>Sat, 08 Aug 2026 13:03:44 GMT</pubDate></item><item><title><![CDATA[Reply to ALEXA Einkaufsliste mit Marktzuordnung und Laufrouten on Sat, 08 Aug 2026 12:53:56 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/skvarel" aria-label="Profile: skvarel">@<bdi>skvarel</bdi></a> was bitte ist Facebook?</p>
]]></description><link>https://forum.iobroker.net/post/1350861</link><guid isPermaLink="true">https://forum.iobroker.net/post/1350861</guid><dc:creator><![CDATA[Homoran]]></dc:creator><pubDate>Sat, 08 Aug 2026 12:53:56 GMT</pubDate></item><item><title><![CDATA[Reply to ALEXA Einkaufsliste mit Marktzuordnung und Laufrouten on Sat, 08 Aug 2026 12:49:27 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/homoran" aria-label="Profile: Homoran">@<bdi>Homoran</bdi></a> .. bei Facebook heißt es, den Link zum Repo gibt es nur nach Kontaktaufnahme per Github.</p>
]]></description><link>https://forum.iobroker.net/post/1350860</link><guid isPermaLink="true">https://forum.iobroker.net/post/1350860</guid><dc:creator><![CDATA[skvarel]]></dc:creator><pubDate>Sat, 08 Aug 2026 12:49:27 GMT</pubDate></item><item><title><![CDATA[Reply to ALEXA Einkaufsliste mit Marktzuordnung und Laufrouten on Sat, 08 Aug 2026 09:55:27 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/ravinizib" aria-label="Profile: RaviniZib">@<bdi>RaviniZib</bdi></a> Ich habe den Thread jetzt erst einmal hierher geschoben!<br />
Dabei ist er ja anscheinend in gar keinem Repo!</p>
<p dir="auto">Sollte hier keine Klärung dee Umstände zustande kommen, werde ich diesen Thread komplett löschen.</p>
]]></description><link>https://forum.iobroker.net/post/1350841</link><guid isPermaLink="true">https://forum.iobroker.net/post/1350841</guid><dc:creator><![CDATA[Homoran]]></dc:creator><pubDate>Sat, 08 Aug 2026 09:55:27 GMT</pubDate></item><item><title><![CDATA[Reply to ALEXA Einkaufsliste mit Marktzuordnung und Laufrouten on Fri, 07 Aug 2026 18:44:35 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/ravinizib" aria-label="Profile: RaviniZib">@<bdi>RaviniZib</bdi></a></p>
<p dir="auto">Ein paar Fragen:</p>
<ul>
<li>Was, bitte, bedeutet geschlossene Beta genau?</li>
<li>Gibt es kein öffentliches Github Repo?
<ul>
<li>wird es Open Source oder closed Source?</li>
</ul>
</li>
<li>wird es ein freier oder kommerzieller Adapter?</li>
</ul>
]]></description><link>https://forum.iobroker.net/post/1350811</link><guid isPermaLink="true">https://forum.iobroker.net/post/1350811</guid><dc:creator><![CDATA[Homoran]]></dc:creator><pubDate>Fri, 07 Aug 2026 18:44:35 GMT</pubDate></item></channel></rss>