NEWS
[Script] Einkaufsliste –> Telegram
-
Hi, hast du dein Script in einer view schon integriert? Wenn ja, könntest du ein paar Bilder mal posten?
Mit freundlichen Grüßen
Gesendet von iPhone mit Tapatalk
-
Hatte so was auch schon vor und ich hatte die Idee die ganzen Daten in ein JSON einzufügen und zu ergänzen. Das würde datenpunkte sparen. Dann noch ein spezielles Widget dafür. Bislang aber alles noch Theorie. Werde deins die Tage mal testen.
Gesendet von meinem SM-G930F mit Tapatalk
-
Hier ein Bild.
Der Scrollbalken in der "wörtlichen Liste" ist nur auf dem PC zu sehen (habe "overflow y" eingeschaltet, falls die Liste mal sehr lang werden sollte).
Sieht im Grunde nicht anders aus als bei dna909; wie auch, die Idee ist ja seine. Ich habe nur das scripting etwas abgeändert, was nicht nötig ist sondern mir mehr als Übung diente.
! filename="einkaufsliste.png" index="0">~~
Die eigentliche Liste kann ich mir dann auch auf meiner Handy-Version anzeigen lassen, so dass die Telegram Funktion eigentlich nicht notwendig ist. Aber sie schadet ja auch nicht.
-
Siehe ja echt super aus, teilst du uns die Sachen zum einfügen in die view? [emoji28]
Gesendet von iPhone mit Tapatalk
-
Da ist nichts zum Teilen, sind einfach metro toggle tiles sowie für die Kategorien Wechsel jqui increment widgets.
Keine spannenden Anpassungen getätigt.
-
Und die Bilder? Google? Sorry für die Fragen aber hab mit vis noch nicht so experimentiert
Gesendet von iPhone mit Tapatalk
-
ja, sehr mühsames suchen passender (kleiner, transparenter) Bilder.
-
Ich hab mir die überwiegend bei Kaufland geklaut. Drogeriekram war hauptsächlich von der dm-Seite. Die sind auch alle transparent.
Gruß
dna909
-
Coole Sache da bleib ich mal am Ball, was sich hier noch so alles tut.
-
Was erwartest du denn, was sich noch tun sollte?
-
Man könnte ja noch alle Artikel über den Barcode erfassen und hätte dann eine richtige Lagerhaltung mit den aktuellen Beständen.
Aber wehe jemand vergisst was auszuscannen, dann ist der Kühlschrank leer :lol:
Ich denke das Script ist so ok. Wer es erweitern möchte, nur zu….
Gruß
dna909
-
Hallo Zusammen,
erstmal Danke an dna909 und tempestas für die Steilvorlage.
Ich hab das Scipt mal für unsere Pferde LaWi erweitert.
Erweiterungen sind im Bereich der Einkaufsliste, Mail wird unterstützt und eine weitere Ausgabeformatierung wurde eingefügt.
Wir verwenden keine Bilder um die einzelnen Einkäufe zu selektieren, siehe Screenshots.
Im Hauptdialog verwende ich das Note Widget um die Liste der selektierten Produkte anzuzeigen und auch bei Bedarf auch manuell was dazuschreiben zu können.
Nochmals Danke und einen schönen Abend noch.
Harald aka Equilora
! // Einkaufsliste
! //
! // Idee und Basis: dna909
! //
! // http://forum.iobroker.net/viewtopic.php?f=21&t=8766
! //
! // abgewandelt:
! // equilora, Datum 28.11.2017
! //tempestas, Datum 6.11.2017
! //
! // status: v 1.0 - stable
! // status: v 1.1 - regex trigger über state verzögert, da sonst bei erstmaligem Ausführen ständig getriggert wird und damit Warnungen im LOG stehen;
! // - state für VIS Kategorienumschaltung eingefügt; Fehler bei PurchList.length korrigiert, die -1 entfernt; counter eingefügt
! // status: v 1.2 - Ausbau der Einkaufsliste, Unterstützung Mail Versand, weitere Formatierungen fuer unterschiedliche Viewer und Dienste
! // SKRIPTEINSTELLUNGEN
! var debug = false;
! var force = true;
! var path = "javascript.0.Einkaufsliste."; // Pfad für generelle Variablen und States
! var pathItems = "javascript.0.Einkaufsliste.Items."; // Pfad für die zu kaufenden Gegenstände
! // ############################
! // ########## STATES ##########
! // ############################
! createState(path +'regex', false, force, {
! name: "Liste",
! type: 'boolean',
! role: 'state',
! });
! createState(path +'Liste', "", force, { // String, in dem die Einkaufsliste gespeichert wird
! name: "Liste",
! type: 'string',
! role: 'string',
! });
! createState(path +'regex', false, force, {
! name: "ListeVIS",
! type: 'boolean',
! role: 'state',
! });
! createState(path +'ListeVIS', "", force, { // String, in dem die Einkaufsliste fuer VIS gespeichert wird
! name: "ListeVIS",
! type: 'string',
! role: 'string',
! });
! createState(path +'clearBtn', false, force, { // löschen Button, damit man nicht alles manuell abwählen muss
! name: 'Clear Liste',
! desc: 'Löscht die Liste',
! type: 'boolean',
! role: 'state',
! unit: ''
! });
! createState(path +'telegramBtn', false, force, { // sendet die Liste via Telegram
! name: 'Send Telegram',
! desc: 'Sendet Telegram Einkaufsliste',
! type: 'boolean',
! role: 'state',
! unit: ''
! });
! createState(path +'mailBtn', false, force, { // sendet die Liste via E-Mail
! name: 'Send Mail',
! desc: 'Sendet Mail Einkaufsliste',
! type: 'boolean',
! role: 'state',
! unit: ''
! });
! createState(path +'visCategory',0, force, { // für die verschiedenen Kategorien
! name: 'VIS Einkaufsliste',
! type: 'number',
! min: '0',
! max: '9',
! states: '0:Obst; 1:Gemüse; 2:Wurst/Fleisch; 3:Käse/Milchprodukte; 4:Brot/Getreide; 5:Saucen/Gewürze; 6:Getränke; 7:Drogerie; 8:Tierfutter',
! desc: 'Status Alarmanlage'
! });
! createState(path +'visBtn', false, force, { // trigger für Anzeige der Gesamtliste in Vis
! name: 'Show Liste',
! desc: 'Zeigt die Gesamtliste in Vis',
! type: 'boolean',
! role: 'state',
! unit: ''
! });
! createState(path +'count',0, force, {
! name: 'VIS Einkaufsliste Anzahl Objekte',
! type: 'number',
! min: '0',
! max: '200',
! });
! // #########################################################
! // ARRAY MIT INHALT DER KAUFGEGENSTÄNDE
! // #########################################################
! // Obst
! var PurchList= [ "Ananas", "Apfel", "Aprikose_Pfirsich","Banane", "Birne", "Datteln", "Erdbeeren","Kirschen",
! "Kiwi", "Mandarine","Mango", "Melone", "Orange", "Waldbeeren", "Weintrauben", "Zitrone_Limette",
! // Gemüse
! "Chilis", "Chinakohl", "Erbsen", "Gurke","Karotten", "Kartoffeln", "Kohlrabi", "Kürbis", "Lauch", "Mais", "Paprika",
! "Pilze", "Radieschen", "Tomaten", "Zucchini", "Zwiebeln", "Lauchzwiebeln", "Lauch", "Rote Zwiebeln", "Spinat", "Knoblauch", "Ruccola", "Römer-Salat", "Feld-Salat",
! "Kren",
! // Fleisch, Wurst und Fisch
! "Aufschnitt", "Geflügel", "Geschnetzeltes", "Hackfleisch", "Kabanossi", "Rind", "Schwein", "Wiener","Fischstäbchen", "Garnelen", "Lachs", "Rotbarsch",
! "Bratwust", "Regensburger", "Salami", "Bauchspeck",
! // Andere Lebensmittel
! "Bratfix", "Butter", "Creme-Fraiche", "Dips", "Eier", "Frischkäse", "Joghurt", "Käse", "Kochsahne", "Kräuterquark", "Milch",
! "Mozzarella", "Quark", "Sauerrahm", "Schmelzkäse", "Sauerkraut", "Blaukraut", "Brühwürfel-Gemüse", "Brühwürfel-Fleisch", "Pommes Frites",
! "Mozzarella Kugeln", "Geriebener Käse", "Scheibenkäse", "Emmenthaler", "Camenbert", "Rösti", "Erdnuss Flips", "Eis",
! // Teigwaren
! "Brötchen", "Brot", "Couscous", "Haferflocken", "Kichererbsen", "Mehl", "Müsli", "Nudeln", "Pizzateig", "Reis", "Sonnenblumenkerne", "Vollkornnudeln",
! "Flammkuchenteig", "Baguette", "Strudelteig", "Spaghetti",
! // Brotaufstrich
! "Nutella", "Marmelade", "Honig",
! // Saucen und Gewürze
! "Asiasauce", "Brühe","BBQ-Sauce", "Chili-Sauce", "Essig", "Balsamico", "Ketchup", "Mayonaise", "Oliven Öl", "Sesam Öl", "Paprikapulver", "Pesto", "Pfeffer", "Salz",
! "Tomatenmark", "Tomatensauce", "Senf", "Zucker", "Kurkuma", "Chyenne Pfeffer", "Curry", "Sesam", "Pinienkerne",
! // Getränke
! "Saft", "Tonicwater", "Cola", "Fanta", "Sprite", "Malzbier", "Bier", "Bier-Alkoholfrei", "Spezi", "Edelstoff", "Holler", "Wasser",
! "Radler", "Weizenbier", "Sekt", "Energydrink", "Wein", "Tee", "Kaffee", "Kaffee-entkoffiniert", "Rotwein", "Weisswein", "RoseWein", "Prosecco",
! //Spirituosen
! "Aperol", "Ramazotti", "OakHeart", "Metaxa 5*", "Amarula", "Baileys", "Underberg", "Doppelkorn", "Bärwurz", "Blutwurz",
! // Drogerieartikel
! "Alufolie", "Backpapier", "Biomüllbeutel","Klopapier", "Küchenrolle", "Deo", "Tempos", "Haarkur", "Rasierklingen", "Rasierschaum",
! "Bartwichse", "Zahnbürste", "Zahnpasta","Duschgel", "Raumduft", "Shampoo",
! "Seife", "Schwamm", "Bürste", "Spüli", "Klarspüler", "Spülmaschinensalz", "Tabs","Badreiniger",
! "Rohrreiniger", "Glasreiniger","Fettlöser", "Bodenreiniger", "Ceranreiniger", "Weichspüler", "Waschmittel", "Fleckentferner",
! "Entkalker flüssig", "Entkalker Tabs (Calgon)", "Mückenschutz",
! // Tierfutter - Pferde
! "Bionic", "Heucobs", "Faserlight", "MSM", "Mönchspfeffer", "Ingwer(Pferd)", "Fohlenmüsli", "Zuchtmüsli", "Yeasacc",
! "Mineral Force", "Leinöl", "Mesh", "Atemkräuter", "Heu", "Rice-UP",
! // Tierfutter - Katzen
! "Katzenfutter-Stall", "Katzenfutter-Indoor", "Leckerlis Katzen",
! // Tierfutter - Hund
! "Hundefutter-Nass", "Hundefutter-Trocken", "Leckerlis Hund",
! // Apotheke
! "IbuProfen", "Hustensaft", "Pflaster", "Verbandsmaterial", "Cast", "Enzyme", "Halstabletten", "Telfast", "Symbicort Turbo", "Salbutamol-Inhalator", "Baldrian",
! // Apotheke Stall und anderer Stallbedarf
! "Rivanol", "Braunol", "Ballistol Spray", "Mückenschutz Pferd", "Wellcare Emulsion", "Zink Spray", "Blauspray", "Fliegenband",
! // Sonstiges Landwirtschaft und Hausbedarf
! "Diesel Traktor", "Motoröl VW 5W-30", "Frostschutz", "Scheibenreiniger", "Bremsflüssigkeit", "Kaminholz", "Anfeuerholz", "Anzünder",
! "Camping Gas 11Kg", "Gas Feuerzeug", "Destilliertes Wasser", "WD40", "Reissnägel", "Batterie CR3232", "Batterie LR44", "Batterie AA", "Batterie AAA", "Batterie Laterne",
! "Salz Entkalkungsanlage"];
! // ##################################################################
! // Variablen
! // ##################################################################
! var idRegex = path + 'regex';
! var idListe = path + 'Liste';
! var idListeVIS = path + 'ListeVIS';
! var idClear = path + 'clearBtn';
! var idTelegram = path + 'telegramBtn';
! var idmail = path + 'mailBtn';
! var idCount = path + 'count';
! var lengthListPurch=(PurchList.length); // Variablen für Auslesen wieviele Inhalte in den jeweiligen Arrays stehen
! var regexTrigger = /^javascript.0.Einkaufsliste.Items..$/;
! var listeTotal = [];
! // ################################################################
! // ###### STATES FÜR DIE GEGENSTÄNDE IN OBJEKTEN ERZEUGEN #######
! // ################################################################
! function createItems(){
! var i = 0;
! for (i = 0; i < lengthListPurch; i++){
! createState(pathItems +PurchList__, false, {
! name: 'Einkauf',
! desc: PurchList__,
! type: 'boolean',
! role: 'state',
! unit: ''
! });
! /
! createState(pathItems +(PurchList__) + ".Menge", 0, force, { // hier könnte man Mengenangaben mit einbeziehen, brauche ich jedoch nicht.
! name: 'Einkauf',
! desc: PurchList__,
! type: 'number',
! role: 'state',
! unit: ''
! });
! */
! }
! }
! // #############################################################
! // TRIGGER FÜR ERZEUGUNG, LÖSCHEN UND TELEGRAM
! // #############################################################
! on({ id:regexTrigger,
! change: 'ne'},
! function(data) { // regex trigger, löst immer aus sobald etwas an- oder abgewählt wird
! if(getState(idRegex).val === true) {
! purchlistCreate(); // if Bedingung, damit es nicht zu warnmeldungen kommt, wenn der regex trigger ausgeführt wird aber Objekte noch nicht angelegt sind
! count();
! }
! });
! on(idClear, function(obj){ // trigger fürs Löschen
! if(obj.state.val === true){
! clearPurch();
! }
! });
! on(idTelegram, function(obj){ // trigger für Telegram
! if(obj.state.val === true){
! sendTelegram();
! }
! });
! on(idmail, function(obj){ // trigger für e-mail
! if(obj.state.val === true){
! sendMail();
! }
! });
! // #################################################################
! // FUNCTIONS
! // #################################################################
! ///// Einkaufsliste erzeugen //////////////////////////////////////////////////////////////////
! function purchlistCreate(){
! var i = 0;
! var item;
! listeTotal = [];
! for (i = 0; i < lengthListPurch; i++){
! if(getState(pathItems +PurchList__).val === true) {
! item = PurchList__;
! listeTotal.push(item);
! if(debug) log(item + " zur Einkaufsliste hinzugefügt ");
! }
! }
! setState(idListe, listeTotal.join('
')); // Liste wird für VIS formatiert
! // Eine weitere Formatierung in eine Extra ID schreiben
! setState(idListeVIS, listeTotal.join(',\n')); // Liste wird für VIS formatiert
! }
! function count(){
! var n = listeTotal.length;
! setState(idCount, n);
! }
! function clearPurch(){
! var i = 0;
! for (i = 0; i < lengthListPurch; i++){
! if(getState(pathItems +PurchList__).val === true) {
! setState(pathItems +PurchList__, false);
! setState(idListe, "");
! setStateDelayed(idClear, false, 2000);
! }
! }
! }
! function sendTelegram() {
! var telegramtext = getState(idListeVIS).val.replace(/
/g , "\n"); // telegram Liste formatieren, entfernt den Zeilenumbruch für vis und ersetze mit Zeilenumbruch Telegram
! sendTo('telegram.0', { // Nachricht per Telegram senden
! text: "Bitte mitbringen:\n\n" + telegramtext
! });
! setStateDelayed(idTelegram, false, 2000);
! }
! function sendMail() {
! var mailtext = getState(idListeVIS).val.replace(/
/g , "\n"); // Liste formatieren, entfernt den Zeilenumbruch für vis und ersetze mit Zeilenumbruch e-mail
! sendTo('email.0', { // Nachricht per e-mail senden
! text: "Bitte mitbringen:\n\n" + mailtext,
! // Muss angepasset werden an die eigenen Mail Addys
! to: 'adresse1@mail.de, adresse2@mail.de'
! });
! setStateDelayed(idmail, false, 2000);
! }
! // Bei Start
! createItems();
! setStateDelayed(idRegex, true, 30000); // nachdem alle states angelegt sind, kann der regex trigger genutzt werden;________________ 4229_1.jpg
4229_2.jpg
4229_3.jpg -
Das manuelle hinzufügen via Notiz ist ein schöner Gedanke.
Lustigerweise nutze ich dieses testweise in einer View, auf die Idee, es aber für die Einkaufsliste zu nutzen bin ich wieder nicht gekommen. Schöne Idee!
-
Tolle Sache!!!
Ich habe mir Gedanken darüber gemacht, ob es möglich ist, Via Telegram z.b. Mit dem Text (Zur liste XYZ) einen Artikel der Liste Hinzuzufügen vllt startet das dann auch ein Script, wo man einfach Via Klick die Artikel Auswählen kann.
zudem wollte ich wissen ob es möglich ist via Telegram eine Naricht zu senden, damit der IO letztendlich die Einkaufsliste selbst erzeugt und mir wiederum per Telegram zusendet.
wenn das möglich währe würde ich mich freuen, wenn mir da jemand Helfen könnte, da ich mit JS nicht wirklich viele Erfahrungen habe.
Beispiel
Telegram Messanger
Zur Einkaufsliste Hinzufügen
OK was möchtest du Hinzufügen?
[Gruppe 1][Gruppe 2][Gruppe 3] ec
Gruppe 1
okay Wähle deine Produkte
[Produkt 1 der Gruppe 1][Produkt 2 der Gruppe 1][Produkt 3 der Gruppe 1] ec
[TEXT] Sind Button welche angezeigt werden, die einfach das Produkt in den Massager schreiben bzw z.b. Add.Car.1.1 Womit der IO weis welcher Artikel auf die Liste muss.
Telegram Messanger
Shoppen
Okay Hier ist deine Einkaufsliste
Liste
Eier
Mehl
Zucker
Salz
Shampoo
ec
Danke schon mal im Voraus
-
Kennst du den Text2Command Adapter?
Damit könnte das sogar ohne JS realisierbar sein.
Gesendet von Unterwegs
-
zudem wollte ich wissen ob es möglich ist via Telegram eine Naricht zu senden, damit der IO letztendlich die Einkaufsliste selbst erzeugt und mir wiederum per Telegram zusendet. `
Zumindest diesen Teil tut mein Skript, wenn du das nachfolgende noch ergänzt. Denn durch den REGEX Auslöser wird bei mir die Liste ja ständig aktualisiert.
Abholen kann ich sie aktiv via Telegram mit diesem Skript:
var idListe = "javascript.0.Einkaufsliste.Liste"/*Liste*/; on({id: 'telegram.0.communicate.request', change: 'any'}, function (obj) { var stateval = getState('telegram.0.communicate.request').val; // Statevalue in Variable schreiben var benutzer = stateval.substring(1,stateval.indexOf("]")); // Benutzer aus Statevalue extrahieren var befehl = stateval.substring(stateval.indexOf("]")+1,stateval.length); // Befehl/Text aus Statevalue extrahieren if (befehl.search(/(?=.*(\Einkauf\b)).+/ig) != -1) { var einkaufsliste; if(getState(idListe).val === "") {einkaufsliste = "Es muss nichts eingekauft werden";} else { einkaufsliste = "Bitte mitbringen:\n\n" + getState(idListe).val.replace(/ /g , "\n");} sendTo('telegram', { user: benutzer, text: einkaufsliste }); } });
-
Hab ich versucht, aber irgendwie Klappt das bei mir nicht so ganz ;(
-
Wem hast du geantwortet? Jey Cee oder mir?
Meinst du, mit deiner detailierten Fehlerbeschreibung und der sehr umfassenden Darstellung dessen, was du getan hast, wird irgendwer in die Lage versetzt, dir zu helfen?
-
Sry XD
Also ivh habe versucht Das Script Zum laufen zu bekommen, sowie die Erweiterung mit dem Telegramm abruf leider ist es mir nicht gelungen, beides bzw eines davon zum laufen zu. bekommen
zudem hab ich das Problem das ivh nicht wüsste, wie ich das in die View hinzugefügt bekomme
Nutze die Version ohne bilder sondern dem reinen Text Variante von
equilora
-
Wir helfen sicher gerne, aber die bisher gegebenen Hinweise sind absolut nicht ausreichend.
WAS funktioniert denn nicht, welche Meldungen bekommst du, was sagt das log? Was hast du bisher probiert, wie sehen deine States aus (screenshots)….