NEWS
Bring Einkaufsliste in Lovelace Visu
-
Moinmoin,
ich versuche meine Bring einkaufsliste in die Lovelace Visu zu übertragen, leider werden alle Artilkel als undefined übertragen.
Ich vermute das liegt an der Json Konvertierung, komme aber nicht voran.
Das Programm ist in Blockly geschrieben.
Vielleicht hatte jemand mal ein ähnliches Problem und kann mir helfen, über die Suche habe ich nichts gefunden.
bin über jeden Rat dankbarGrüßle
TimoBlockly: <xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="6BE`IoCisoyAn;,3]UIJ">EinkaufslisteAuslesen</variable> <variable id="cnY:[r[I)Tf)cmh2~:cj">SplitListeInArtikel</variable> <variable id="2JP!FHb3aTk3IR{bN~lD">i</variable> </variables> <block type="on_ext" id="N~tJp6?$Ko.KT=_lgN|-" x="-937" y="-1012"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="54vz+6uD!zL^CR}Fa__u"> <field name="oid">bring.1.e9f9da62-3322-45b5-8d58-207dabf85680.enumSentence</field> </shadow> </value> <statement name="STATEMENT"> <block type="variables_set" id="K{si^W=a[qDtV4J8R5!="> <field name="VAR" id="6BE`IoCisoyAn;,3]UIJ">EinkaufslisteAuslesen</field> <value name="VALUE"> <block type="get_value" id="|*y[Axm!%Lh-6/YWzqA^"> <field name="ATTR">val</field> <field name="OID">bring.1.e9f9da62-3322-45b5-8d58-207dabf85680.enumSentence</field> </block> </value> <next> <block type="variables_set" id="!`r,0sC?7CFoK0I.S]eQ"> <field name="VAR" id="cnY:[r[I)Tf)cmh2~:cj">SplitListeInArtikel</field> <value name="VALUE"> <block type="lists_split" id="%Uabf:cwAp!{WtDI_~Ac"> <mutation mode="SPLIT"></mutation> <field name="MODE">SPLIT</field> <value name="INPUT"> <block type="variables_get" id="IfDG,#$|79(tcPtWAjKs"> <field name="VAR" id="6BE`IoCisoyAn;,3]UIJ">EinkaufslisteAuslesen</field> </block> </value> <value name="DELIM"> <shadow type="text" id="UFV*?*e2AX)%=lZbAW:5"> <field name="TEXT">,</field> </shadow> </value> </block> </value> <next> <block type="controls_for" id="FNZku[l_#4xcr$TW~$3{"> <field name="VAR" id="2JP!FHb3aTk3IR{bN~lD">i</field> <value name="FROM"> <shadow type="math_number" id="{DBM2,Zmz:1u33%UxCa~"> <field name="NUM">1</field> </shadow> </value> <value name="TO"> <shadow type="math_number" id="@]w3d,mN,H[BG2Xi|IyE"> <field name="NUM">2</field> </shadow> <block type="math_arithmetic" id="R(:1]4)AoMp_[$eC3m6/"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="w7dJ$YMOx~Lk0ebTw~[y"> <field name="NUM">1</field> </shadow> <block type="get_value" id="sxX?S-jy4:3sfs?la^H|"> <field name="ATTR">val</field> <field name="OID">bring.1.e9f9da62-3322-45b5-8d58-207dabf85680.count</field> </block> </value> <value name="B"> <shadow type="math_number" id="5siPo2Hbx#H4jmnVmiUO"> <field name="NUM">1</field> </shadow> </value> </block> </value> <value name="BY"> <shadow type="math_number" id="fj.(/}5CQ-E?w(s(H=7v"> <field name="NUM">1</field> </shadow> </value> <statement name="DO"> <block type="control" id="*n=?wN*:AT8tc;=3Y@^q"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">lovelace.0.control.shopping_list</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="convert_object2json" id="91D9..]2jYkZpoVSiN.z"> <field name="PRETTIFY">TRUE</field> <value name="VALUE"> <block type="convert_tostring" id="SbFjxQ6:gd8BAnBCUY*O"> <value name="VALUE"> <block type="lists_getIndex" id="p7[-j|=No_S4*cnujKMi"> <mutation statement="false" at="true"></mutation> <field name="MODE">GET</field> <field name="WHERE">FROM_START</field> <value name="VALUE"> <block type="variables_get" id="FMHiC+TyCg%u[wP|8Mr2"> <field name="VAR" id="cnY:[r[I)Tf)cmh2~:cj">SplitListeInArtikel</field> </block> </value> <value name="AT"> <block type="variables_get" id="ph4L(~~Q^j1jcqTC[D]j"> <field name="VAR" id="2JP!FHb3aTk3IR{bN~lD">i</field> </block> </value> </block> </value> </block> </value> </block> </value> </block> </statement> </block> </next> </block> </next> </block> </statement> </block> </xml>
Log:
30.5.2023, 12:08:00.150 [info ]: javascript.0 (23280) script.js.Spielereien_und_Tests.testShoppingliste: getState(id=bring.1.e9f9da62-3322-45b5-8d58-207dabf85680.enumSentence, timerId=undefined) => {"val":"Bier, Chips, Bacon, Holzkohle, Kartoffeln, Bananen, Brot, Äpfel, Butter und BBQ Sauce","ack":true,"ts":1685441280144,"q":0,"from":"system.adapter.bring.1","user":"system.user.admin","lc":1685441280144} 30.5.2023, 12:08:00.151 [info ]: javascript.0 (23280) script.js.Spielereien_und_Tests.testShoppingliste: getState(id=bring.1.e9f9da62-3322-45b5-8d58-207dabf85680.count, timerId=undefined) => {"val":9,"ack":true,"ts":1685441188961,"q":0,"from":"system.adapter.bring.1","user":"system.user.admin","lc":1685441097853} 30.5.2023, 12:08:00.152 [info ]: javascript.0 (23280) script.js.Spielereien_und_Tests.testShoppingliste: setForeignState(id=lovelace.0.control.shopping_list, state={"val":"\"Bier\"","ack":false,"ts":1685441280152,"q":0,"from":"system.adapter.javascript.0","lc":1685441280152,"c":"script.js.Spielereien_und_Tests.testShoppingliste"}) 30.5.2023, 12:08:00.153 [info ]: javascript.0 (23280) script.js.Spielereien_und_Tests.testShoppingliste: setForeignState(id=lovelace.0.control.shopping_list, state={"val":"\" Chips\"","ack":false,"ts":1685441280153,"q":0,"from":"system.adapter.javascript.0","lc":1685441280153,"c":"script.js.Spielereien_und_Tests.testShoppingliste"}) 30.5.2023, 12:08:00.153 [info ]: javascript.0 (23280) script.js.Spielereien_und_Tests.testShoppingliste: setForeignState(id=lovelace.0.control.shopping_list, state={"val":"\" Bacon\"","ack":false,"ts":1685441280153,"q":0,"from":"system.adapter.javascript.0","lc":1685441280153,"c":"script.js.Spielereien_und_Tests.testShoppingliste"}) 30.5.2023, 12:08:00.154 [info ]: javascript.0 (23280) script.js.Spielereien_und_Tests.testShoppingliste: setForeignState(id=lovelace.0.control.shopping_list, state={"val":"\" Holzkohle\"","ack":false,"ts":1685441280154,"q":0,"from":"system.adapter.javascript.0","lc":1685441280154,"c":"script.js.Spielereien_und_Tests.testShoppingliste"}) 30.5.2023, 12:08:00.155 [info ]: javascript.0 (23280) script.js.Spielereien_und_Tests.testShoppingliste: setForeignState(id=lovelace.0.control.shopping_list, state={"val":"\" Kartoffeln\"","ack":false,"ts":1685441280155,"q":0,"from":"system.adapter.javascript.0","lc":1685441280155,"c":"script.js.Spielereien_und_Tests.testShoppingliste"}) 30.5.2023, 12:08:00.155 [info ]: javascript.0 (23280) script.js.Spielereien_und_Tests.testShoppingliste: setForeignState(id=lovelace.0.control.shopping_list, state={"val":"\" Bananen\"","ack":false,"ts":1685441280155,"q":0,"from":"system.adapter.javascript.0","lc":1685441280155,"c":"script.js.Spielereien_und_Tests.testShoppingliste"}) 30.5.2023, 12:08:00.156 [info ]: javascript.0 (23280) script.js.Spielereien_und_Tests.testShoppingliste: setForeignState(id=lovelace.0.control.shopping_list, state={"val":"\" Brot\"","ack":false,"ts":1685441280156,"q":0,"from":"system.adapter.javascript.0","lc":1685441280156,"c":"script.js.Spielereien_und_Tests.testShoppingliste"}) 30.5.2023, 12:08:00.156 [info ]: javascript.0 (23280) script.js.Spielereien_und_Tests.testShoppingliste: setForeignState(id=lovelace.0.control.shopping_list, state={"val":"\" Äpfel\"","ack":false,"ts":1685441280156,"q":0,"from":"system.adapter.javascript.0","lc":1685441280156,"c":"script.js.Spielereien_und_Tests.testShoppingliste"})
-
-
@faz3rs-adventures
Wie soll die "Shopping list as json" aussehen?Wenn es ein Json-Array sein soll, dann könnte es so funktionieren:
Inhalt der JS-Funktion und2Komma(str):
return str.replace(' und', ',');
EDIT: Laut Doku zu Lovelace muss die Einkaufsliste Objekte mit den Attributen "name", "id" und "complete" enthalten. Das Objekt kann mit folgender JS-Funktion objEinkauf(id, Name) erstellt werden:
return { name: Name, id: id, complete: false };
Das zugehörige Blockly:
-
@paul53 vermutlich ist der Fehler dass ich probiert habe nur den name zu übertragen
Ich werde versuchen mit dem blockly Vorschlag zu arbeiten.
Danke schonmal -
@paul53 vielleicht kannst du mir noch einen Anstoß geben
ich bekomme jetzt beim ersetzten von dem und durch ein Komme einen Type Error (TypeError: und2Komma(...).split is not a function)
habe es auch einmal umgeschrieben und den neuen string in eine eigene variable geschrieben und diese geturnt aber derselbe Fehler
(bin in JS ganz frisch unterwegs) -
@faz3rs-adventures
Habe es mal getestet: Man benötigt offenbar eine Zwischenvariable: -
@paul53 super es funktioniert
Vielen Dank für die schnelle Hilfe -
Wie machst du das denn mit der Liste?
Bekommst jetzt ja nur die Daten aus Bring in Lovelace.Wenn du da was hinzufügst oder entfernst hast du das ja nicht in Bring synchronisiert?
-
@david-g
Also der Plan war am ende eine Zentrale Einkaufsliste in meiner Visu zu haben die ich mir zusätzlich auch noch per Telegram schicken kann.In diese möchte ich von alexa über spracheingaben bzw über Bring (die ist mit der Alexa Liste gekoppelt), über einen Barcode Scanner und über die Visu direkt Artikel hinzufügen können.
Damit die Bring Liste aktuell bleibt hatte ich im nächsten Schritt vor bei einer Änderung der Lovelace Einkaufsliste einen Vergleich mit der Bring Liste durchzuführen und die Artikel die dort noch nicht eingetragen sind übertragen.
Das werde ich jetzt die Tage angehen