NEWS
Shopping List Alexa
-
@bananajoe
Den Eintrag "Telegram_Send" habe ich gelöscht, wird aber sofort wieder geschrieben sobald das Blockly neu startet, dann bekomme ich die Einkaufsliste gesendet, nach einem Neueintrag aber nicht mehr.@tiobb
Entweder so:

<xml xmlns="https://developers.google.com/blockly/xml"> <block type="on" id="STQgQd/_%KTr#@y8Yf_G" x="-562" y="-349"> <field name="OID">javascript.0.echos.Alexa_Einkaufsliste.Telegram</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="telegram" id="GE$#W-0gtdu%.fo|x^l-"> <field name="INSTANCE">.0</field> <field name="LOG"></field> <field name="SILENT">FALSE</field> <field name="PARSEMODE">default</field> <value name="MESSAGE"> <shadow type="text" id="My{v]B:XX^OLrAQyZ]k$"> <field name="TEXT">text</field> </shadow> <block type="get_value" id="NZItI|!GO#o;IUW3Vl?O"> <field name="ATTR">val</field> <field name="OID">javascript.0.echos.Alexa_Einkaufsliste.Telegram</field> </block> </value> </block> </statement> </block> </xml>Oder so:

<xml xmlns="https://developers.google.com/blockly/xml"> <block type="on" id="STQgQd/_%KTr#@y8Yf_G" x="-562" y="-349"> <field name="OID">javascript.0.echos.Alexa_Einkaufsliste.Telegram</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="telegram" id="GE$#W-0gtdu%.fo|x^l-"> <field name="INSTANCE">.0</field> <field name="LOG"></field> <field name="SILENT">FALSE</field> <field name="PARSEMODE">default</field> <value name="MESSAGE"> <shadow type="text" id="My{v]B:XX^OLrAQyZ]k$"> <field name="TEXT">text</field> </shadow> <block type="on_source" id="(vEVb6b9H.zJS8G[81w@"> <field name="ATTR">state.val</field> </block> </value> </block> </statement> </block> </xml>Das Name-Attribut des Datenopunktes für die Telegram Meldung ist eventuell etwas unglücklich ... oder das ich hier einfach meine Quick-und-Dirty Lösungen reinkopiere
-
@bananajoe
Merci Dir, das vorletzte Blockly von Dir hatte ich auch "schon" hinbekommen, leider wurde dann immer der letzte Listeneintrag nicht in die gesendete Einkaufliste übernommen, aber mit deinem letzten Blockly funktioniert es. Habe jetzt noch einen Zeitplan daran gehängt, so das ich die aktualisierung einmal am Tag die Liste per Telegram bekomme. Ich habe da aber noch einen Fehler drin, denn ich bekomme die Liste dann 2 mal geschickt :smile: aber das bekomme ich schon hin. Danke nochmals für Deine Geduld.@bananaJoe
Läuft wieder, musste nur den Alexa Adapter neu starten.
Schönes Wochenende. -
@tiobb Ich habe es mit folgendem Skript gelöst:
// #################################################################################################################################################### // Setup var s_target_JSON = "javascript.0.echos.Alexa_Einkaufsliste."; var s_source_JSON = "alexa2.0.Lists.SHOPPING_LIST.json"; //var s_source_JSON = "javascript.0.echos.Alexa_Einkaufsliste.tester"; // #################################################################################################################################################### // Zielpunkte anlegen falls noch nicht vorhanden // JSON_uncompleted createState(s_target_JSON + "JSON_uncompleted", false, { read: true, write: true, name: 'Only uncompleted entries', type: 'string', def: "empty" }); createState(s_target_JSON + "JSON_completed", false, { read: true, write: true, name: 'Only completed entries', type: 'string', def: "empty" }); createState(s_target_JSON + "JSON_all", false, { read: true, write: true, name: 'completed and uncompleted entries', type: 'string', def: "empty" }); createState(s_target_JSON + "Telegram", false, { read: true, write: true, name: 'Message for Telegram', type: 'string', def: "empty" }); // #################################################################################################################################################### // Hilfsvariablen var s_JSON_uncompleted; var s_JSON_completed; var s_JSON_all; var s_Telegram; // #################################################################################################################################################### // Funktionen function ReWorkAlexaJSON(json) { s_JSON_uncompleted = '['; s_JSON_completed = '['; s_JSON_all = '['; s_Telegram = '**Einkaufsliste** \n'; try { // JSON einlesen var obj = JSON.parse(json); //nur die wichtigen Felder holen for (var item in obj) { let b_completed = obj[item].completed; let s_ItemName = obj[item].value; // Anfangsbuchstaben in Großbuchstaben umwandeln s_ItemName = s_ItemName.replace(/(^|\s)\S/g, l => l.toUpperCase()); // Änderungsdatum auslesen und als normales Datum und als "ist Stunden Minuten Sekunden her" speichern let s_updatedDateTime = obj[item].updatedDateTime; let s_CreatedTime = (new Date()).getTime(); var yy = (Math.round((new Date()).getTime() / 1000)) - Math.round(s_updatedDateTime/1000); s_updatedDateTime=formatDate(getDateObject(s_updatedDateTime), "TT.MM(SS:mm)"); s_CreatedTime=(Math.floor( ((yy)/60/60/24) )+"d "+ Math.floor(((yy)/60/60) % 24) +"h "+ Math.floor( ((yy)/60) % 60 )+"m"); s_CreatedTime = s_CreatedTime.replace("0d ", ""); s_CreatedTime = s_CreatedTime.replace("0h ", ""); // Die 3 JSON befüllen s_JSON_all = s_JSON_all + '{"Artikel":"' + s_ItemName + '","Erstellt vor":"' + s_CreatedTime + '"},'; if ( b_completed == false ) { s_JSON_uncompleted = s_JSON_uncompleted + '{"Artikel":"' + s_ItemName + '","Erstellt vor":"' + s_CreatedTime + '"},'; s_Telegram = s_Telegram + s_ItemName + "\n"; } else { s_JSON_completed = s_JSON_completed + '{"Artikel":"' + s_ItemName + '","Erstellt vor":"' + s_CreatedTime + '"},'; } } // letztes Komma wieder abschneiden s_JSON_all = s_JSON_all.slice(0, -1); s_JSON_uncompleted = s_JSON_uncompleted.slice(0, -1); s_JSON_completed = s_JSON_completed.slice(0, -1); // Und JSON abschließen s_JSON_all = s_JSON_all + ']'; s_JSON_uncompleted = s_JSON_uncompleted + ']'; s_JSON_completed = s_JSON_completed + ']'; //und wegschreiben setState(s_target_JSON + "JSON_all", s_JSON_all); setState(s_target_JSON + "JSON_uncompleted", s_JSON_uncompleted); setState(s_target_JSON + "JSON_completed", s_JSON_completed); setState(s_target_JSON + "Telegram", s_Telegram); } catch (e) { return; } } // Beim Start einmal abarbeiten ReWorkAlexaJSON(getState(s_source_JSON)); // Und an die Liste dranhängen und auf Änderungen warten on(s_source_JSON, function(dp) { ReWorkAlexaJSON(dp.state.val);});Das baut dir 4 Datenpunkte:

Die ersten 3 kann man sich in der VIS mit gängigen Widgets die JSON als Tabelle darstellen können darstellen
Der letzte hat die Liste schon mal aufbereitet für Telegram. Alles versuche mit Fettschrift etc. schlugen fehl.Für das Senden habe ich diese Block im Einsatz:

<xml xmlns="https://developers.google.com/blockly/xml"> <block type="create" id="V2-39mm:6haG3hdXJh4C" x="-562" y="-487"> <field name="NAME">javascript.0.echos.Alexa_Einkaufsliste.Telegram_Send</field> <value name="VALUE"> <block type="logic_boolean" id="XY0{f!Gh$;GmolUM-HC$"> <field name="BOOL">FALSE</field> </block> </value> <value name="COMMON"> <block type="text" id="!x$cT)VV(u[.%oS+#?[t"> <field name="TEXT">{"type":"boolean", "read":"true", "write":"true", "desc":"Sendet Einkaufsliste per Telegram"}</field> </block> </value> <next> <block type="on" id="STQgQd/_%KTr#@y8Yf_G"> <field name="OID">javascript.0.echos.Alexa_Einkaufsliste.Telegram_Send</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="controls_if" id="g{S+cv8fSPNeCoxUV3/j"> <value name="IF0"> <block type="logic_compare" id="$M$a|:D2p2EBusCcp-4["> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="cauUX[NC5?Ixwk}ox]jn"> <field name="ATTR">val</field> <field name="OID">javascript.0.echos.Alexa_Einkaufsliste.Telegram_Send</field> </block> </value> <value name="B"> <block type="logic_boolean" id="*cxxrDDurr]cmty4%VQ$"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="telegram" id="GE$#W-0gtdu%.fo|x^l-"> <field name="INSTANCE">.0</field> <field name="LOG"></field> <field name="SILENT">FALSE</field> <field name="PARSEMODE">default</field> <value name="MESSAGE"> <shadow type="text" id="My{v]B:XX^OLrAQyZ]k$"> <field name="TEXT">text</field> </shadow> <block type="get_value" id="NZItI|!GO#o;IUW3Vl?O"> <field name="ATTR">val</field> <field name="OID">javascript.0.echos.Alexa_Einkaufsliste.Telegram</field> </block> </value> <next> <block type="update" id="@mrv6@vN4]=qx56Va`h0"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation> <field name="OID">javascript.0.echos.Alexa_Einkaufsliste.Telegram_Send</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">5</field> <field name="UNIT">sec</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id=";LmD#uLt=}#E,^gOIuu#"> <field name="BOOL">FALSE</field> </block> </value> </block> </next> </block> </statement> </block> </statement> </block> </next> </block> </xml>Es erzeugt einen True/False Datenpunkt auf den man in der VIS einen Switch legen kann, so sendet er per Button-Druck.

Alternativ ginge natürlich auch ein Zeitplan.Nachtrag: Ich bin mir nicht sicher ob ich das Skript für die Listen ganz selbst geschrieben habe oder ob es hier aus dem Forum stammt. Ich hab es zumindest an meine Bedürfnisse anpasst
@bananajoe Hallo miteinander,
Ich bin absoluter Anfänger was das Iobroker usw angeht.
Jetzt habe ich das obere Script kopiert und in den JS eingefügt und es funktionieret alles soweit.
Ich würde aber gerne nur die Artikel angezeigt bekommen, also nur eine Spalte, weis aber nicht was ich löschen oder ändern muss.
Für Eure Hilfe wäre ich sehr dankbar.Grüße Stefan
-
@bananajoe Hallo miteinander,
Ich bin absoluter Anfänger was das Iobroker usw angeht.
Jetzt habe ich das obere Script kopiert und in den JS eingefügt und es funktionieret alles soweit.
Ich würde aber gerne nur die Artikel angezeigt bekommen, also nur eine Spalte, weis aber nicht was ich löschen oder ändern muss.
Für Eure Hilfe wäre ich sehr dankbar.Grüße Stefan
@stema Ohne das ich noch mal lese was ich vorher alles geschrieben habe:
Es werden ja Datenpunkte mit JSONs erzeugt.
Diese kann man in der VIS per JSON Table Widget darstellen. Es gibt mindestens 2, ich verwende das von Inventwo.
In diesem kannst du die Reihenfolge der Spalten ändern, aber auch welche weglassen und so z.B. nur eine bzw. die erste anzeigen lassen. -
Installier mal die Inventwo Design Widgets und auch das inventwo Icon Set (wirst Du bestimmt noch brauchen).
Danach in Deiner Vis in den Widgets nach "json " suchen, dann taucht ein schwarzes JSON Table auf.
Das kannst Du dann über die Eigenschaften formatieren. (Zellenlimit und Spaltenzahl werden vorerst für Dich interessant sein)Mfg
TS
-
Ich klinke mich nochmal hier ein..
auch wenn es vielleicht nicht ganz Topicmäßig ist..
Wie kann ich einfacherweise per Button meine Shoppingliste per Telegram versenden in der VIS
Einfach nur ein einfacher Button.danke fuer die Hilfe
-
Ich klinke mich nochmal hier ein..
auch wenn es vielleicht nicht ganz Topicmäßig ist..
Wie kann ich einfacherweise per Button meine Shoppingliste per Telegram versenden in der VIS
Einfach nur ein einfacher Button.danke fuer die Hilfe
@kellerkind-86
grob gesagt:du machst ein script, welches durch einen trigger (bool-dp im widget gesteuert) eine schleife durch das json macht und damit eine liste, die telegram zeigen kann - dann sendest du das an telegram
hier beisspiel ohne trigger

-
@kellerkind-86
grob gesagt:du machst ein script, welches durch einen trigger (bool-dp im widget gesteuert) eine schleife durch das json macht und damit eine liste, die telegram zeigen kann - dann sendest du das an telegram
hier beisspiel ohne trigger

@liv-in-sky
okay, ich muss mal sehen wie ich da hintersteige..
die lernkurve ist zwar schon sehr hoch momentan aber so ganz..
also im ‚‚ ‘‘kommt dann welcher trigger ? sorry.ich baue dafuer ein datenpunkt ? sorry. fuer das dumme anstellen.
danke im voaus.
Gruss Marcell -
@liv-in-sky
okay, ich muss mal sehen wie ich da hintersteige..
die lernkurve ist zwar schon sehr hoch momentan aber so ganz..
also im ‚‚ ‘‘kommt dann welcher trigger ? sorry.ich baue dafuer ein datenpunkt ? sorry. fuer das dumme anstellen.
danke im voaus.
Gruss Marcellwo hängt es ?
beim anlegen des datenpunktes ?
oder beim widget, welches diesen dp ansteuert
oder einen trigger einzurichten, der dann das script startet ? -
wo hängt es ?
beim anlegen des datenpunktes ?
oder beim widget, welches diesen dp ansteuert
oder einen trigger einzurichten, der dann das script startet ?@liv-in-sky
Ich poste gleich mal wenn ich zuhause bin -
wo hängt es ?
beim anlegen des datenpunktes ?
oder beim widget, welches diesen dp ansteuert
oder einen trigger einzurichten, der dann das script startet ?@liv-in-sky
so..sorry..etwas spät..so..hatte ich das blockly..

hab einen db erzeugt.. ( zusenden_shoppinglist)
objekt id List activ wird wohl der richtige sein, nehme ich mal an.
hab zumind. keinen andere dp gefunden mit listasjsonjetzt würde ich ja einen button nehmen und dann welchen dp da hinterlegen ?
sorry..
-
@liv-in-sky
so..sorry..etwas spät..so..hatte ich das blockly..

hab einen db erzeugt.. ( zusenden_shoppinglist)
objekt id List activ wird wohl der richtige sein, nehme ich mal an.
hab zumind. keinen andere dp gefunden mit listasjsonjetzt würde ich ja einen button nehmen und dann welchen dp da hinterlegen ?
sorry..
@kellerkind-86 nee - nicht ganz

schwarzer pfeil:
das ist unser neuer logic (boolean) datenpunkt (zusenden_shoppinglist) - wenn der auf wahr/true geht, soll das script losrennen (trigger (=auslöser))
und ganz unten wird er nach 3 sekunden wieder auf falsch/false gesetzt - wird dadurch zu einem tasterroter pfeil:
das ist der dp, in der die shopping list liegt - die wird ausgelesen - alexa2.0.Lists.SHOPPING_LIST.json - iegt hier:
bevor wir das in die vis bringen , wird getestet - du gehst im admin unter die objecte und veränderst von hand den neuen datenpunkt (auf true) - dann sollte es in telegram ankommen
-
@kellerkind-86 nee - nicht ganz

schwarzer pfeil:
das ist unser neuer logic (boolean) datenpunkt (zusenden_shoppinglist) - wenn der auf wahr/true geht, soll das script losrennen (trigger (=auslöser))
und ganz unten wird er nach 3 sekunden wieder auf falsch/false gesetzt - wird dadurch zu einem tasterroter pfeil:
das ist der dp, in der die shopping list liegt - die wird ausgelesen - alexa2.0.Lists.SHOPPING_LIST.json - iegt hier:
bevor wir das in die vis bringen , wird getestet - du gehst im admin unter die objecte und veränderst von hand den neuen datenpunkt (auf true) - dann sollte es in telegram ankommen
@liv-in-sky
ahh..okay, damit sollte ich klar kommen.
werde ich heute Abend umstellen. Danke. -
@kellerkind-86 nee - nicht ganz

schwarzer pfeil:
das ist unser neuer logic (boolean) datenpunkt (zusenden_shoppinglist) - wenn der auf wahr/true geht, soll das script losrennen (trigger (=auslöser))
und ganz unten wird er nach 3 sekunden wieder auf falsch/false gesetzt - wird dadurch zu einem tasterroter pfeil:
das ist der dp, in der die shopping list liegt - die wird ausgelesen - alexa2.0.Lists.SHOPPING_LIST.json - iegt hier:
bevor wir das in die vis bringen , wird getestet - du gehst im admin unter die objecte und veränderst von hand den neuen datenpunkt (auf true) - dann sollte es in telegram ankommen
@liv-in-sky
also das klappt schonmal prima..
aber leider bekomme ich eine ganz lange liste ,sogar die abgehakten Artikel wurden mit hinzugefügt..
besteht nicht die Möglichkeit die liste vom adapter alexa shoppinglist zu nehmen ? das was ich auch in der vis habe ?
und wenn das die aktuellen artikel sind,wäre cool, wenn man da noch was vorher mit anhängen könnte...
wie z.b
(bitte mitbringen oder so)
aber erst mal wäre ich schon froh wenn ich nur die aktuellen daten bekomme.
danke vielmals -
@liv-in-sky
also das klappt schonmal prima..
aber leider bekomme ich eine ganz lange liste ,sogar die abgehakten Artikel wurden mit hinzugefügt..
besteht nicht die Möglichkeit die liste vom adapter alexa shoppinglist zu nehmen ? das was ich auch in der vis habe ?
und wenn das die aktuellen artikel sind,wäre cool, wenn man da noch was vorher mit anhängen könnte...
wie z.b
(bitte mitbringen oder so)
aber erst mal wäre ich schon froh wenn ich nur die aktuellen daten bekomme.
danke vielmalsich lösche die artikel immer vollständig, daher ist mir das entgangen - ich glaube da kann ich noch was machen.
einen einleitenden text kann sehr leicht einfügen
ich weiß nicht, was du in der vis für eine liste hast :-)
wenn ich es heute nicht mehr schaffe, mache ich es morgen
-
@liv-in-sky
also das klappt schonmal prima..
aber leider bekomme ich eine ganz lange liste ,sogar die abgehakten Artikel wurden mit hinzugefügt..
besteht nicht die Möglichkeit die liste vom adapter alexa shoppinglist zu nehmen ? das was ich auch in der vis habe ?
und wenn das die aktuellen artikel sind,wäre cool, wenn man da noch was vorher mit anhängen könnte...
wie z.b
(bitte mitbringen oder so)
aber erst mal wäre ich schon froh wenn ich nur die aktuellen daten bekomme.
danke vielmalshier die änderungen, die dumachen musst. es sind die bausteine bei den pfeilen eingesetzt worden -
den rest deines scriptes läßt du einfach

-
hier die änderungen, die dumachen musst. es sind die bausteine bei den pfeilen eingesetzt worden -
den rest deines scriptes läßt du einfach

@liv-in-sky
krass..das schon fast perfekt..
trotzdem bekomme ich die Liste jetzt zweimal..
genau wie beim ersten mal wo ich die ganze Liste bekommen habe..
aber kein stress..danke dir schonmal vielmals.. -
@liv-in-sky
krass..das schon fast perfekt..
trotzdem bekomme ich die Liste jetzt zweimal..
genau wie beim ersten mal wo ich die ganze Liste bekommen habe..
aber kein stress..danke dir schonmal vielmals..das script hat eigentlich keinen grund zweimal zu senden
hast du eine kopie laufen - also 2 scripte?
-
das script hat eigentlich keinen grund zweimal zu senden
hast du eine kopie laufen - also 2 scripte?
@liv-in-sky
OKAY, merke auch gerade dass es nicht am script liegt..
ich hab das gerade mal getestet mit einem normalen text.. und mit andere Instanzen. whatsapp und telegram.
beide Instanzen senden immer zweimal..
vielleicht offtopic..
aber weisst du vielleicht wieso ? -
@liv-in-sky
OKAY, merke auch gerade dass es nicht am script liegt..
ich hab das gerade mal getestet mit einem normalen text.. und mit andere Instanzen. whatsapp und telegram.
beide Instanzen senden immer zweimal..
vielleicht offtopic..
aber weisst du vielleicht wieso ?@kellerkind-86 Ob Du mal Dein jetziges Blockly komplett zeigen magst ?