Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Shopping List Alexa

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Shopping List Alexa

    This topic has been deleted. Only users with topic management privileges can see it.
    • H
      helfi9999 last edited by

      Hallo hat schon jemand die Shopping List vom Alexa Adapter in der Vis eingebunden.
      Ich weiss momentan nicht wie ich diese erstellen kann.

      dslraser 1 Reply Last reply Reply Quote 0
      • dslraser
        dslraser Forum Testing Most Active @helfi9999 last edited by

        @helfi9999
        schau mal da rein (und auch ganz oben in diesem Thread)
        Meinst Du sowas ?

        https://forum.iobroker.net/post/347479

        H 1 Reply Last reply Reply Quote 0
        • H
          helfi9999 @dslraser last edited by

          @dslraser sowas in der Richtung nur weiss ich nicht wie ich es anstellen soll da die einkaufssachen in verschiedenen Ordnern sind unter value.

          T 1 Reply Last reply Reply Quote 0
          • T
            tiobb @helfi9999 last edited by

            @helfi9999
            Servus, ist zwar schon etwas älter, aber ich mache mal hier weiter. Ich bin nämlich auch über die diese Sache gestolpert, nur mich würde die Einkaufsliste interessieren. Denn dort wo ich oft einkaufen gehe, habe ich kein Netzt, also kein Zugriff auf meine Amazon Einkaufsliste. Screenshot vergesse ich meistens vorher zu machen. Deshalb fände ich die Idee mir diese Liste per Telegram einmal am Tag zukommen zu lassen sehr spannend. Die HTML Adresse habe ich schon probiert, ist aber halt nur der Link zur Alexa App, das hilft mir leider nicht. Hat das jemand schon gemacht, und wenn ja wie? Visualisierung über VIS wäre auch interessant.

            BananaJoe liv-in-sky 2 Replies Last reply Reply Quote 0
            • BananaJoe
              BananaJoe Most Active @tiobb last edited by BananaJoe

              @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:
              ab368bab-fe76-41a1-ad9d-b6cee1ddfce2-image.png

              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:
              ca2dcd0d-22e0-4bf4-b49c-a4f9ce5a6451-image.png

              <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.
              e5bcd17f-cbb1-4322-8633-fe32376a2ba0-image.png
              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

              T S 2 Replies Last reply Reply Quote 1
              • liv-in-sky
                liv-in-sky @tiobb last edited by

                @tiobb

                https://forum.iobroker.net/topic/28254/script-alexa-listen-pflegen-und-anzeigen

                kann auch telegram senden

                1 Reply Last reply Reply Quote 0
                • T
                  tiobb @BananaJoe last edited by

                  @bananajoe
                  Servus,
                  das ging ja mal wieder fix hier, kenne ich so aus anderen Foren gar nicht. Aber scheinbar bin ich noch zu blöd für copy paste vom ersten Script. Ich bin nämlich absoluter newbie was iobroker und Programmierung angeht. ein paar kleine Scripts mit Blockly habe ich schon geschafft, auch wenn eher laienhaft, aber sie haben irgendwie funktioniert. Könntest Du mir da eventuell ein wenig unter die Arme greifen, das auch ein alter newbie wie ich das verstehe?
                  Gruß,
                  tiobb

                  BananaJoe 3 Replies Last reply Reply Quote 0
                  • BananaJoe
                    BananaJoe Most Active @tiobb last edited by BananaJoe

                    @tiobb das erste ist ein JavaScript - und die {1} am Ende muss weg Die habe ich nicht eingegeben, keine Ahnung wo die her kommt

                    das 2. ist ein Blockly - also ein neues erstellen und dann oben rechts auf Import

                    1 Reply Last reply Reply Quote 0
                    • BananaJoe
                      BananaJoe Most Active @tiobb last edited by

                      @tiobb genau genommen sehe ich da ganz viele {1} ....
                      ich versuche das mal zu fixen

                      1 Reply Last reply Reply Quote 0
                      • BananaJoe
                        BananaJoe Most Active @tiobb last edited by

                        @tiobb so, versuch noch mal

                        T 1 Reply Last reply Reply Quote 0
                        • T
                          tiobb @BananaJoe last edited by tiobb

                          @bananajoe
                          Datenpunkte sind jetzt da 👍 und Blockly hatte ich schon importiert. Nur wie bekomme ich jetzt die Einkaufsliste, die ja aus vielen Ordnern besteht, in das Blockly rein? Sorry für meine blöden Fragen. Ich sollte besser bei null anfangen anstatt mich an solche, für mich komplizierten, Dinge zu wagen. Raspberry und co habe ich erst seit 2 Wochen. Habe aber schon das eine oder andere mit Blockly automatisiert.
                          Sieht bei mir jetzt so aus
                          Einkaufsliste.png

                          Einkaufsliste_Blockly.png

                          BananaJoe 1 Reply Last reply Reply Quote 0
                          • BananaJoe
                            BananaJoe Most Active @tiobb last edited by

                            @tiobb Das Skript reagiert auf Änderung. Füge mal was neues hinzu oder aber starte das Skript noch mal.
                            Schlecht programmiert, beim ersten mal werden die Datenpunkte erstellt, die Befüllung klappt aber nicht weil gerade erst erstellt.

                            Also Skript einmal neu starten. Oder einen Eintrag hinzufügen/entfernen

                            T 2 Replies Last reply Reply Quote 0
                            • T
                              tiobb @BananaJoe last edited by

                              @bananajoe
                              Habe beides probiert, Telegram schweigt noch.

                              ChrisNett 1 Reply Last reply Reply Quote 0
                              • ChrisNett
                                ChrisNett @tiobb last edited by

                                huhu,

                                könntest du dir eine Alexa Anbindung vorstellen? Das würde es für mich Perfekt machen.

                                Etwas hinzufügen würde mir schon reichen per Alexa... ich weiß schon... da steckt bestimmt viel dahinter.

                                Christian

                                BananaJoe liv-in-sky 2 Replies Last reply Reply Quote 0
                                • T
                                  tiobb @BananaJoe last edited by tiobb

                                  @bananajoe
                                  Es tut sich jedenfalls etwas.

                                  Einkaufsliste_Blockly2.png
                                  Wenn ich jetzt in den Objekten "Telegram_Send" manuell auf "true" setze, bekomme ich die Liste per Telegram.
                                  @BananaJoe
                                  Nachtrag: Aber nur einmal, danach tut sich nichts mehr, erst wenn ich wieder manuell auf "true" setze bekomme ich die Liste, es fehlt noch etwas, dass diesen Datenpunkt automatisch kurz auf "true" setzt. DIe hinzugefügten Artikel in der Einkaufsliste werden in "JSON_all", JSON_completed und "JSON_uncompleted aktualisiert, nur "Telegram_Send" bleibt immer auf "false" stehen, wird auch nicht mal kurz grün oder so.

                                  T BananaJoe 2 Replies Last reply Reply Quote 0
                                  • T
                                    tiobb @tiobb last edited by

                                    @liv-in-sky
                                    Danke Dir, ich werde es mir mal anschauen.
                                    Gruß,
                                    tiobb

                                    1 Reply Last reply Reply Quote 0
                                    • BananaJoe
                                      BananaJoe Most Active @tiobb last edited by

                                      @tiobb wenn du dir das Blockly ansiehst wirst du erkennen können das es dieses Skript ist was auf den Datenpunkt für das Senden reagiert. Und das Skript setzt ganz am Ende mit einer Verzögerung von 5 Sekunden den Datenpunkt wieder auf false.

                                      Das habe ich für meine VIS gemacht. Wenn ich den Button für Senden drücke schaltet dessen Ansicht um als Feedback das gesendet wird. Und Nach 5 Sekunden springt dieser wieder zurück.

                                      T 1 Reply Last reply Reply Quote 0
                                      • BananaJoe
                                        BananaJoe Most Active @ChrisNett last edited by

                                        @christian-sandkaulen du meinst mich?
                                        Was möchtest du, das man per Alexa-Sprachbefehl die Einkaufsliste senden kann?

                                        1 Reply Last reply Reply Quote 0
                                        • liv-in-sky
                                          liv-in-sky @ChrisNett last edited by liv-in-sky

                                          @christian-sandkaulen

                                          Alexa, füge eier meiner Liste einkauf hinzu.

                                          1 Reply Last reply Reply Quote 0
                                          • T
                                            tiobb @BananaJoe last edited by

                                            @bananajoe sagte in Shopping List Alexa:

                                            @tiobb wenn du dir das Blockly ansiehst wirst du erkennen können das es dieses Skript ist was auf den Datenpunkt für das Senden reagiert. Und das Skript setzt ganz am Ende mit einer Verzögerung von 5 Sekunden den Datenpunkt wieder auf false.

                                            Das habe ich für meine VIS gemacht. Wenn ich den Button für Senden drücke schaltet dessen Ansicht um als Feedback das gesendet wird. Und Nach 5 Sekunden springt dieser wieder zurück.

                                            Guten Morgen,
                                            das mit der 5 Sekunden Verzögerung und dem Setzen auf "false" habe ich gesehen, aber wie realisiere ich denn, dass mir die Einkaufsliste bei Änderung automatisch zugesendet wird. Für mich sieht das Blockly so aus als würde die Einkaufliste versendet sobald eine Änderung in der Einkaufsliste passiert, aber leider wird nicht gesendet. Habe ich etwas übersehen?

                                            BananaJoe 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            998
                                            Online

                                            31.6k
                                            Users

                                            79.6k
                                            Topics

                                            1.3m
                                            Posts

                                            blockly
                                            10
                                            68
                                            4617
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo