NEWS
awtrix alexa2 timer anzeigen - json parse
-
Ziel ist es auf der Pixel Cock alle aktiven Timer mit Endzeit (Restzeit) anzuzeigen. Hier mein derzeitger Ansatz und die Ausgabe von Timername und Endzeit für den 1. Timer funktioniert.
Nun müsste das Script so abgewandelt werden, dass die anderen Timer mit zB. "," getrennt folgen sofern mehrere vorhanden.on({id: [].concat(Array.prototype.slice.apply($("state[id=alexa2.0.Echo-Devices.*.Timer.activeTimerList]"))), change: "ne"}, async function (obj) { let value = obj.state.val; let oldValue = obj.oldState.val; if ((obj.state ? obj.state.val : "").length != 2) { function parsejsoncontent() { var obj = JSON.parse(getState('alexa2.0.Echo-Devices.xxxxxxxx.Timer.activeTimerList').val); console.log(obj.length); console.log(obj[0].label + "timer: " + (new Date(obj[0].triggerTime).toLocaleTimeString('de-DE'))); } parsejsoncontent(); } });Dieser Ansatz(!) ist zusammen gebastelt. Andere Verbesserungsvorschläge sind herzlich willkommen.
Ausgabe derzeit: "Kartoffeltimer: 15:34:45"
Gewünscht: "Kartoffeltimer: 15:34:45, Gemüsetimer: 15:24:36, Teetimer: 15:15:22" -
Ziel ist es auf der Pixel Cock alle aktiven Timer mit Endzeit (Restzeit) anzuzeigen. Hier mein derzeitger Ansatz und die Ausgabe von Timername und Endzeit für den 1. Timer funktioniert.
Nun müsste das Script so abgewandelt werden, dass die anderen Timer mit zB. "," getrennt folgen sofern mehrere vorhanden.on({id: [].concat(Array.prototype.slice.apply($("state[id=alexa2.0.Echo-Devices.*.Timer.activeTimerList]"))), change: "ne"}, async function (obj) { let value = obj.state.val; let oldValue = obj.oldState.val; if ((obj.state ? obj.state.val : "").length != 2) { function parsejsoncontent() { var obj = JSON.parse(getState('alexa2.0.Echo-Devices.xxxxxxxx.Timer.activeTimerList').val); console.log(obj.length); console.log(obj[0].label + "timer: " + (new Date(obj[0].triggerTime).toLocaleTimeString('de-DE'))); } parsejsoncontent(); } });Dieser Ansatz(!) ist zusammen gebastelt. Andere Verbesserungsvorschläge sind herzlich willkommen.
Ausgabe derzeit: "Kartoffeltimer: 15:34:45"
Gewünscht: "Kartoffeltimer: 15:34:45, Gemüsetimer: 15:24:36, Teetimer: 15:15:22"@streit187
Versuche es mal so:function parsejsoncontent(json) { const arr = JSON.parse(json); let str = ''; for(let ele of arr) { str += ele.label + "timer: " + formatDate(ele.triggerTime, 'hh:mm:ss, '); } log(str); } $("alexa2.0.Echo-Devices.*.Timer.activeTimerList").on(function (dp) { if (dp.state.val.length > 2) parsejsoncontent(dp.state.val); }); -
@streit187
Versuche es mal so:function parsejsoncontent(json) { const arr = JSON.parse(json); let str = ''; for(let ele of arr) { str += ele.label + "timer: " + formatDate(ele.triggerTime, 'hh:mm:ss, '); } log(str); } $("alexa2.0.Echo-Devices.*.Timer.activeTimerList").on(function (dp) { if (dp.state.val.length > 2) parsejsoncontent(dp.state.val); }); -
Nur der Vollständigkeit halber:
const path = '0_userdata.0.awtrix-light.'; const idTimer = path + 'alexa2_timer'; if(!existsState(idTimer)) createState(idTimer, {type: 'string', name: 'alexa2 timer', role: 'state'}); function parsejsoncontent(json) { const arr = JSON.parse(json); let str = ''; for(let ele of arr) { str += ele.label + "timer: " + formatDate(ele.triggerTime, 'hh:mm, '); } //log(str); setState(idTimer , (str), true); } $("alexa2.0.Echo-Devices.*.Timer.activeTimerList").on(function (dp) { if (dp.state.val.length > 2) parsejsoncontent(dp.state.val); else setState(idTimer , "", true); });Im Anschluss die App im awtrix-light adapter anlegen mit dem Verweis auf den oben erstellten Datenpunkt.
-
Nur der Vollständigkeit halber:
const path = '0_userdata.0.awtrix-light.'; const idTimer = path + 'alexa2_timer'; if(!existsState(idTimer)) createState(idTimer, {type: 'string', name: 'alexa2 timer', role: 'state'}); function parsejsoncontent(json) { const arr = JSON.parse(json); let str = ''; for(let ele of arr) { str += ele.label + "timer: " + formatDate(ele.triggerTime, 'hh:mm, '); } //log(str); setState(idTimer , (str), true); } $("alexa2.0.Echo-Devices.*.Timer.activeTimerList").on(function (dp) { if (dp.state.val.length > 2) parsejsoncontent(dp.state.val); else setState(idTimer , "", true); });Im Anschluss die App im awtrix-light adapter anlegen mit dem Verweis auf den oben erstellten Datenpunkt.
Ich stehe gerade vor einem ähnliche Problem. Ich möchte gern einen Alexa-Timer als Countdown auf Awtrix anzeigen lassen, es gelingt mir aber nicht, eine Variable im iobroker so zu füllen, dass sie stets den anzuzeigenden Wert anzeigt. Hat jemand eine Idee, wie ich sowas bauen könnte?
Vielen Dank.
-
Ich stehe gerade vor einem ähnliche Problem. Ich möchte gern einen Alexa-Timer als Countdown auf Awtrix anzeigen lassen, es gelingt mir aber nicht, eine Variable im iobroker so zu füllen, dass sie stets den anzuzeigenden Wert anzeigt. Hat jemand eine Idee, wie ich sowas bauen könnte?
Vielen Dank.