Einkaufsliste sortieren

Begonnen von igami, 31 Oktober 2016, 11:20:14

Vorheriges Thema - Nächstes Thema

igami

Hi zusammen,

ziemlich weit oben steht bei mir nun die Integration vom PostMe Modul zum verwalten einer Einkaufsliste.
Nun dachte ich mir, es wäre ja clever, wenn die Liste so sortiert wird wie die Sachen im Supermarkt stehen. Also erst Obst und Gemüse, dann Kühlregal, dann Kekse und zum Schluss Eis. Da es jedoch keine Norm gibt ob Mehl nun vor oder hinter den Keksen steht sollte die Sortierung selbstlernend sein.
Beispiel:
ich habe eine Liste: Kartoffeln, Äpfel, Eier, Mehl, Zucker, Zitronen, Zwiebeln
Wie unschwer zu erkennen ist, soll es Reibeplätzchen geben ;)
Jetzt hake ich die Dinge in der Reihenfolge: Kartoffeln, Zwiebeln, Äpfel, Zitronen, Eier, Zucker, Mehl ab.
Dann müsste jetzt eine Wertungstabelle erstellt werden.
Die Frage ist nur wie man wertet. Kartoffeln 7 Punke, Zitronen 4 Punkte, Mehl 1 Punkt?

Beim nächsten Einkauf sollen bekannte Objekte dann sortiert werden und unbekannte Objekte voran gestellt werden.

Ist eine solche sortierung Sinnvoll? Bzw. wie würde man die gewichtung machen? Vielleicht hat das ja schon mal jemand gebaut oder kann aus anderen Bereichen etwas ähnliches einbringen.

Ich tüftle erstmal noch ein bisschen soweit es die Zeit zulässt.

Grüße
igami
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

Hollo

Zitat von: igami am 31 Oktober 2016, 11:20:14
...
Die Frage ist nur wie man wertet. Kartoffeln 7 Punke, Zitronen 4 Punkte, Mehl 1 Punkt?

Beim nächsten Einkauf sollen bekannte Objekte dann sortiert werden und unbekannte Objekte voran gestellt werden.
...
Dann würde ich statt Punkte eher "Zonen" vergeben (numerisch oder alphanumerisch wäre wohl egal), mit denen man bekannt macht, wo auf dem Weg durch den Supermarkt die Sachen liegen. Die grundlegende Aufteilung der Märkte ist ja "verkaufspsychologisch" definiert und somit meist recht ähnlich.

Dann müsste man die Idee aber noch "weiterspinnen" und eine Art Artikeldatenbank hinterlegen...
neben dem wo ich es finde, müsste ein favorisierter Lieferant (Wurst bei xy und Bier von z) vorhanden sein.
Oder man könnte beim Eintragen in die Einkaufsliste Laden und Preis mitsagen, weil das gerade irgendwo im Angebot ist...  :o



FHEM 6.x auf RPi 3B Buster
Protokolle: Homematic, Z-Wave, MQTT, Modbus
Temp/Feuchte: JeeLink-Clone und LGW mit LaCrosse/IT
sonstiges: Linux-Server, Dreambox, "RSS-Tablet"

Prof. Dr. Peter Henning

Ich habe gerade eine neue Version von Postme an den betreffenden Thread angehängt. Heute habe ich ein paar Stunden an der Widget-Anzeige der PostMes herumgespielt. Zeitaufwändig, aber nicht wirklich spannend.

Betreffend die Sortierung: Die sollte man nicht an der Liste selbst vornehmen. Schließlich kann es sein, dass man in verschiedenen Märkten einkauft (macht meine Frau so), und es kommt vor, dass umdekoriert wird.. Das heißt: Eine Sortierung und Routenplanung sollte erst dann stattfinden, wenn man zum Einkaufen fährt und sich die Liste auf das Handy senden lässt.

Damit müsste wirklich eine Karte des Supermarktes hinterlegt werden (Floorplan ? YAF ?), in welcher der Einkaufende interaktiv die Anzeigewidgets der einzelnen Einkaufsobjekte hin- und her schiebt. Damit lernt die Kiste dann für das nächste Mal.

Meine Beurteilung: Sehr komplexe Sache. Fehleranfällig, damit nur geringer WAF.

LG

pah

igami

Habe hier nochwas gefunden
http://app.ponlist.de/
Zitat
Deine Listen sortieren sich automatisch in der Reihenfolge in der du deine Artikel bei deinen letzten Einkäufen abgehakt hast und nach einiger Zeit ist alles automatisch so vorsortiert wie die Artikel in deinem Supermarkt angeordnet sind. Kategorien eingeben war gestern!
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

Prof. Dr. Peter Henning

Das "Abhaken" bedeutet aber ebenso wie mein Vorschlag: Externe Datenverarbeitung.

Noch ein Ansatzpunkt: Am Kühlschrank und im Vorratskeller ein Tablet, bei dem man auf einem Raster von angezeigten Worten Terme auswählt, die dann automatisch auf die Liste gesetzt werden.

LG

pah

igami

Ich würde das auch schon extern machen. Vorerst über einen Dummy mit Readings die den Elementen entsprechen und Werten für die Sortierung.
Habe jetzt schon ein Idee und muss nun erstmal programmieren.
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

Prof. Dr. Peter Henning

Halt mich auf dem Laufenden - bei mir hat das Thema auch ganz gute Priorität. Inzwischen 4 verschiedene Listen, die über Sprachsteuerung befüllt und abgerufen werden.

LG

pah

igami

Eine Umsetzung habe ich noch nicht, bisher nur Ansätze.
Gedankenspiel:
Ich kaufe als erstes ein
Äpfel, Butter, Salz
und bekomme eine initiale Liste:
@sort = (Äpfel, Butter, Salz);
Danach kaufe ich ein:
Äpfel, Kartoffeln, Salz
und bekomme eine Liste:
@sort = (Äpfel, (Butter, Kartoffeln), Salz);
Danach kaufe ich ein:
Äpfel, Salz, Zucker
und bekomme eine Liste:
@sort = (Äpfel, (Butter, Kartoffeln), Salz, Zucker);
Danach kaufe ich ein:
Äpfel, Mehl, Zucker
und bekomme eine Liste:
@sort = (Äpfel, (((Butter, Kartoffeln), Salz), Mehl), Zucker);
Danach kaufe ich ein:
Kartoffeln, Mehl, Zucker
und bekomme eine Liste:
@sort = (Äpfel, ((Butter, Kartoffeln), (Salz, Mehl)), Zucker);

Ich würde also ein Array mit unter Arrays aufbauen. Wie ich das umsetzen kann weiß ich noch nicht.
Kann man das Array direkt im PostMe device wegspeichern?
$hash->{helper}{$list} = @sort
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

Prof. Dr. Peter Henning

"Wegspeichern" schon.

Allerdings halte ich es für keine gut Idee, die Datenstruktur (mehrdimensionales Array) je nach Einkauf und Daten zu ändern - das wird sehr schnell nicht-eindeutig und ist topologisch schwer zu handhaben (Datensemantik ist eines meiner Arbeitsgebiete). Das bedeutet beispielsweise, dass  das Endergebnis stark von der Reihenfolge abhängig, in der man einkauft.

Besser ist, für jedes Einkaufsgut zusätzliche Metadaten zu sammeln und diese in einem flachen Array mit abzulegen.

Beispielsweise kann man bei Äpfeln vermerken, dass sie 2x mit Salz, 2x mit Zucker, aber nur je 1x mit Mehl und Kartoffeln eingekauft worden sind und immer an erster Stelle der Reihenfolge waren.

Butter beispielsweise stand immer an 2. Stelle, WENN sie gekauft wurde.

LG

pah



igami

Zitat von: Prof. Dr. Peter Henning am 02 November 2016, 09:31:28
Das bedeutet beispielsweise, dass  das Endergebnis stark von der Reihenfolge abhängig, in der man einkauft.
Aber genau das möchte ich doch, dass die Liste weiß in welcher Reihenfolge ich einkaufe. Die Frage ist dabei dann nur wie gehe ich mit "Fehleinkäufen" um (Ich habe was vergessen und hake das zum Schluss ab) und mit Artikeln gleicher Kategorie (bei Äpfel und Birnen kaufe ich zuerst das wo keiner steht).

Zitat von: Prof. Dr. Peter Henning am 02 November 2016, 09:31:28
Besser ist, für jedes Einkaufsgut zusätzliche Metadaten zu sammeln und diese in einem flachen Array mit abzulegen.

Beispielsweise kann man bei Äpfeln vermerken, dass sie 2x mit Salz, 2x mit Zucker, aber nur je 1x mit Mehl und Kartoffeln eingekauft worden sind und immer an erster Stelle der Reihenfolge waren.

Butter beispielsweise stand immer an 2. Stelle, WENN sie gekauft wurde.
Das muss ich glaube ich noch mehrmals lesen um es zu verstehen. Bin ja eigentlich gelernter Schlosser :D
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED