Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. awtrix alexa2 timer anzeigen - json parse

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    10
    1
    309

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.5k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.4k

awtrix alexa2 timer anzeigen - json parse

Scheduled Pinned Locked Moved JavaScript
6 Posts 4 Posters 897 Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • S Offline
    S Offline
    Streit187
    wrote on last edited by
    #1

    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"

    paul53P 1 Reply Last reply
    1
    • S Streit187

      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"

      paul53P Offline
      paul53P Offline
      paul53
      wrote on last edited by
      #2

      @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);
      });
      

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      S 1 Reply Last reply
      0
      • paul53P paul53

        @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);
        });
        
        S Offline
        S Offline
        Streit187
        wrote on last edited by
        #3

        @paul53 Unglaublich! Es funktioniert wie gewünscht. Vielen Dank

        S 1 Reply Last reply
        0
        • S Streit187

          @paul53 Unglaublich! Es funktioniert wie gewünscht. Vielen Dank

          S Offline
          S Offline
          Streit187
          wrote on last edited by Streit187
          #4

          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.

          M 1 Reply Last reply
          0
          • S Streit187

            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.

            M Offline
            M Offline
            miwu
            wrote on last edited by
            #5

            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.

            Siggi0904S 1 Reply Last reply
            0
            • M miwu

              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.

              Siggi0904S Offline
              Siggi0904S Offline
              Siggi0904
              wrote on last edited by
              #6

              @miwu du kannst dir auch den Adapter "alexa-timer-vis" anschauen.
              Den nutze ich und der stellt dir eigentlich alles zur Verfügung.

              1 Reply Last reply
              0
              Reply
              • Reply as topic
              Log in to reply
              • Oldest to Newest
              • Newest to Oldest
              • Most Votes


              Support us

              ioBroker
              Community Adapters
              Donate

              508

              Online

              32.5k

              Users

              81.7k

              Topics

              1.3m

              Posts
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
              ioBroker Community 2014-2025
              logo
              • Login

              • Don't have an account? Register

              • Login or register to search.
              • First post
                Last post
              0
              • Home
              • Recent
              • Tags
              • Unread 0
              • Categories
              • Unreplied
              • Popular
              • GitHub
              • Docu
              • Hilfe