Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. [gelöst] Laufschrift in DP (String)

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.6k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    848

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

[gelöst] Laufschrift in DP (String)

Geplant Angeheftet Gesperrt Verschoben JavaScript
21 Beiträge 4 Kommentatoren 2.0k Aufrufe 3 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • Mr. BurnsM Offline
    Mr. BurnsM Offline
    Mr. Burns
    schrieb am zuletzt editiert von Mr. Burns
    #1

    Hallo,

    kann mir jemand helfen einen Text mit z.B. 40 Zeichen als Laufschrift in eine 10 Zeichen lange variable zu verschieben?

    Konkret möchte ich den aktuell laufenden Titel (Radio) eines Sonos Lautsprechers auf einer Anzeige darstellen, welche aber zu wenig Zeichen hat.
    Abschneiden und den Rest in die nächste Zeile zu schreiben funktioniert, sieht aber nicht so schön aus.

    Wäre toll, wenn jemand ein script hat, mit dem so etwas geht und evtl. sogar die Geschwindigkeit verändert werden kann.

    Gruß

    C48DE10C-28A3-4E57-B9B3-B647A3A60DA8.jpeg

    CodierknechtC paul53P 3 Antworten Letzte Antwort
    0
    • Mr. BurnsM Mr. Burns

      Hallo,

      kann mir jemand helfen einen Text mit z.B. 40 Zeichen als Laufschrift in eine 10 Zeichen lange variable zu verschieben?

      Konkret möchte ich den aktuell laufenden Titel (Radio) eines Sonos Lautsprechers auf einer Anzeige darstellen, welche aber zu wenig Zeichen hat.
      Abschneiden und den Rest in die nächste Zeile zu schreiben funktioniert, sieht aber nicht so schön aus.

      Wäre toll, wenn jemand ein script hat, mit dem so etwas geht und evtl. sogar die Geschwindigkeit verändert werden kann.

      Gruß

      C48DE10C-28A3-4E57-B9B3-B647A3A60DA8.jpeg

      CodierknechtC Offline
      CodierknechtC Offline
      Codierknecht
      Developer Most Active
      schrieb am zuletzt editiert von
      #2

      @mr-burns
      Nimm doch ein HTML-Widget und binde dort ein marquee ein. Den Text holst Du Dir über Bindings.
      marquee ist zwar deprecated, wird aber noch von den Browsern unterstützt.

      "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

      Proxmox 9.1.1 LXC|8 GB|Core i7-6700
      HmIP|ZigBee|Tasmota|Unifi
      Zabbix Certified Specialist
      Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

      Mr. BurnsM 1 Antwort Letzte Antwort
      0
      • CodierknechtC Codierknecht

        @mr-burns
        Nimm doch ein HTML-Widget und binde dort ein marquee ein. Den Text holst Du Dir über Bindings.
        marquee ist zwar deprecated, wird aber noch von den Browsern unterstützt.

        Mr. BurnsM Offline
        Mr. BurnsM Offline
        Mr. Burns
        schrieb am zuletzt editiert von
        #3

        @codierknecht Ich hatte bei der suche marquee auch gelesen, da aber die rede von HTML war, dachte ich, es käme nicht in Frage.
        Wie kann ich ein HTML Widget denn in ein Javascript einbinden?

        Mein Text (current_titel) steht in einer Variable (DP) und der geänderte Text muss auch in eine Variable(Datenpunkt).

        CodierknechtC 1 Antwort Letzte Antwort
        0
        • Mr. BurnsM Mr. Burns

          @codierknecht Ich hatte bei der suche marquee auch gelesen, da aber die rede von HTML war, dachte ich, es käme nicht in Frage.
          Wie kann ich ein HTML Widget denn in ein Javascript einbinden?

          Mein Text (current_titel) steht in einer Variable (DP) und der geänderte Text muss auch in eine Variable(Datenpunkt).

          CodierknechtC Offline
          CodierknechtC Offline
          Codierknecht
          Developer Most Active
          schrieb am zuletzt editiert von
          #4

          @mr-burns
          Ohne JS - ganz normales basic-HTML-Widget und Binding

          091b361c-2e24-4757-b5fa-fdaa57176cf2-image.png

          Zur Laufzeit steht dann da natürlich der Inhalt des DP drin ;-)

          "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

          Proxmox 9.1.1 LXC|8 GB|Core i7-6700
          HmIP|ZigBee|Tasmota|Unifi
          Zabbix Certified Specialist
          Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

          1 Antwort Letzte Antwort
          0
          • Mr. BurnsM Mr. Burns

            Hallo,

            kann mir jemand helfen einen Text mit z.B. 40 Zeichen als Laufschrift in eine 10 Zeichen lange variable zu verschieben?

            Konkret möchte ich den aktuell laufenden Titel (Radio) eines Sonos Lautsprechers auf einer Anzeige darstellen, welche aber zu wenig Zeichen hat.
            Abschneiden und den Rest in die nächste Zeile zu schreiben funktioniert, sieht aber nicht so schön aus.

            Wäre toll, wenn jemand ein script hat, mit dem so etwas geht und evtl. sogar die Geschwindigkeit verändert werden kann.

            Gruß

            C48DE10C-28A3-4E57-B9B3-B647A3A60DA8.jpeg

            CodierknechtC Offline
            CodierknechtC Offline
            Codierknecht
            Developer Most Active
            schrieb am zuletzt editiert von
            #5

            @mr-burns sagte in Laufschrift in DP (String):

            auf einer Anzeige darstellen

            Oder geht's hier gar nicht um VIS?

            "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

            Proxmox 9.1.1 LXC|8 GB|Core i7-6700
            HmIP|ZigBee|Tasmota|Unifi
            Zabbix Certified Specialist
            Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

            Mr. BurnsM 1 Antwort Letzte Antwort
            0
            • CodierknechtC Codierknecht

              @mr-burns sagte in Laufschrift in DP (String):

              auf einer Anzeige darstellen

              Oder geht's hier gar nicht um VIS?

              Mr. BurnsM Offline
              Mr. BurnsM Offline
              Mr. Burns
              schrieb am zuletzt editiert von
              #6

              @codierknecht Nein, die Anzeige soll auf einem Hardwaredisplay erfolgen. Ein Glastaster von MDT in der Küche.

              bahnuhrB CodierknechtC 2 Antworten Letzte Antwort
              0
              • Mr. BurnsM Mr. Burns

                @codierknecht Nein, die Anzeige soll auf einem Hardwaredisplay erfolgen. Ein Glastaster von MDT in der Küche.

                bahnuhrB Online
                bahnuhrB Online
                bahnuhr
                Forum Testing Most Active
                schrieb am zuletzt editiert von
                #7

                @mr-burns sagte in Laufschrift in DP (String):

                @codierknecht Nein, die Anzeige soll auf einem Hardwaredisplay erfolgen. Ein Glastaster von MDT in der Küche.

                Und warum kommt diese Info nicht in #1


                Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
                Danke.
                gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
                ScreenToGif :https://www.screentogif.com/downloads.html

                Mr. BurnsM 1 Antwort Letzte Antwort
                0
                • Mr. BurnsM Mr. Burns

                  @codierknecht Nein, die Anzeige soll auf einem Hardwaredisplay erfolgen. Ein Glastaster von MDT in der Küche.

                  CodierknechtC Offline
                  CodierknechtC Offline
                  Codierknecht
                  Developer Most Active
                  schrieb am zuletzt editiert von
                  #8

                  @mr-burns
                  Da gibt‘s aber doch hunderte von Beispielen
                  https://www.cssscript.com/marquee-like-horizontal-scroller-with-pure-javascript-marquee-js/

                  "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                  Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                  HmIP|ZigBee|Tasmota|Unifi
                  Zabbix Certified Specialist
                  Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                  Mr. BurnsM 1 Antwort Letzte Antwort
                  0
                  • bahnuhrB bahnuhr

                    @mr-burns sagte in Laufschrift in DP (String):

                    @codierknecht Nein, die Anzeige soll auf einem Hardwaredisplay erfolgen. Ein Glastaster von MDT in der Küche.

                    Und warum kommt diese Info nicht in #1

                    Mr. BurnsM Offline
                    Mr. BurnsM Offline
                    Mr. Burns
                    schrieb am zuletzt editiert von
                    #9

                    @bahnuhr ich dachte, das hätte ich…

                    „Konkret möchte ich den aktuell laufenden Titel (Radio) eines Sonos Lautsprechers auf einer Anzeige darstellen, welche aber zu wenig Zeichen hat.“

                    vielleicht hätte ich es deutlicher schreiben können.

                    1 Antwort Letzte Antwort
                    0
                    • CodierknechtC Codierknecht

                      @mr-burns
                      Da gibt‘s aber doch hunderte von Beispielen
                      https://www.cssscript.com/marquee-like-horizontal-scroller-with-pure-javascript-marquee-js/

                      Mr. BurnsM Offline
                      Mr. BurnsM Offline
                      Mr. Burns
                      schrieb am zuletzt editiert von
                      #10

                      @codierknecht ich kann leider nicht wirklich coden. Ich kopiere nur und passe an. Aber auch nur das, was ich verstehe.

                      Wie könnte ich dein Beispiel in ein Script einbauen?

                      1 Antwort Letzte Antwort
                      0
                      • Mr. BurnsM Mr. Burns

                        Hallo,

                        kann mir jemand helfen einen Text mit z.B. 40 Zeichen als Laufschrift in eine 10 Zeichen lange variable zu verschieben?

                        Konkret möchte ich den aktuell laufenden Titel (Radio) eines Sonos Lautsprechers auf einer Anzeige darstellen, welche aber zu wenig Zeichen hat.
                        Abschneiden und den Rest in die nächste Zeile zu schreiben funktioniert, sieht aber nicht so schön aus.

                        Wäre toll, wenn jemand ein script hat, mit dem so etwas geht und evtl. sogar die Geschwindigkeit verändert werden kann.

                        Gruß

                        C48DE10C-28A3-4E57-B9B3-B647A3A60DA8.jpeg

                        paul53P Offline
                        paul53P Offline
                        paul53
                        schrieb am zuletzt editiert von paul53
                        #11

                        @mr-burns sagte: Laufschrift in eine 10 Zeichen lange variable zu verschieben?

                        Versuche mal

                        const idText = 'abc';
                        const idT10  = 'xyz';
                        const idFreq = '0_userdata.0.def'; // Frequenz (Hz)
                        
                        var timer = null;
                        
                        on(idText, function(dp) {
                            clearInterval(timer);
                            if(dp.state.val.length > 10) {
                                let cycle = 1000 / getState(idFreq).val;
                                let start = 0;
                                timer = setInterval(function() {
                                    setState(idT10, dp.state.val.slice(start, start + 10));
                                    start++;
                                    if(start > dp.state.val.length -10) start = 0;
                                }, cycle);
                            } else setState(idT10, dp.state.val);
                        });
                        

                        EDIT: Geändert: setState() ohne Ack = true.

                        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

                        Mr. BurnsM 2 Antworten Letzte Antwort
                        1
                        • paul53P paul53

                          @mr-burns sagte: Laufschrift in eine 10 Zeichen lange variable zu verschieben?

                          Versuche mal

                          const idText = 'abc';
                          const idT10  = 'xyz';
                          const idFreq = '0_userdata.0.def'; // Frequenz (Hz)
                          
                          var timer = null;
                          
                          on(idText, function(dp) {
                              clearInterval(timer);
                              if(dp.state.val.length > 10) {
                                  let cycle = 1000 / getState(idFreq).val;
                                  let start = 0;
                                  timer = setInterval(function() {
                                      setState(idT10, dp.state.val.slice(start, start + 10));
                                      start++;
                                      if(start > dp.state.val.length -10) start = 0;
                                  }, cycle);
                              } else setState(idT10, dp.state.val);
                          });
                          

                          EDIT: Geändert: setState() ohne Ack = true.

                          Mr. BurnsM Offline
                          Mr. BurnsM Offline
                          Mr. Burns
                          schrieb am zuletzt editiert von
                          #12

                          @paul53 danke für deine Hilfe. Hab das gerade mal schnell getestet hat aber nicht funktioniert. Guck mir das morgen noch mal in Ruhe an und berichte.
                          Schönen Abend noch.

                          1 Antwort Letzte Antwort
                          0
                          • paul53P paul53

                            @mr-burns sagte: Laufschrift in eine 10 Zeichen lange variable zu verschieben?

                            Versuche mal

                            const idText = 'abc';
                            const idT10  = 'xyz';
                            const idFreq = '0_userdata.0.def'; // Frequenz (Hz)
                            
                            var timer = null;
                            
                            on(idText, function(dp) {
                                clearInterval(timer);
                                if(dp.state.val.length > 10) {
                                    let cycle = 1000 / getState(idFreq).val;
                                    let start = 0;
                                    timer = setInterval(function() {
                                        setState(idT10, dp.state.val.slice(start, start + 10));
                                        start++;
                                        if(start > dp.state.val.length -10) start = 0;
                                    }, cycle);
                                } else setState(idT10, dp.state.val);
                            });
                            

                            EDIT: Geändert: setState() ohne Ack = true.

                            Mr. BurnsM Offline
                            Mr. BurnsM Offline
                            Mr. Burns
                            schrieb am zuletzt editiert von
                            #13

                            @paul53 dein Script funktioniert grundsätzlich!

                            Die Laufschrift wird in die variable geschrieben. Aber sie wird nicht an die Anzeige gesendet.
                            Man kann sehen, das sich der Datenpunkt unter Objekten verändert, aber er wird nicht geschrieben.
                            (Weder vom Adapter an das Display, noch kann ich die variable in einem script weiterverarbeiten. Wert und Änderungszeit wird aber verändert)

                            Wenn ich in einen internen DP unter Userdata schreibe und mit einem 2. Script in die ext. variable schreibe funktioniert es.

                            Lässt sich da noch eine Haltezeit zwischen der nächsten Wiederholung einbauen?

                            //var idText = '0_userdata.0.Text'/*Text*/;
                            var idText = 'sonos.0.root.192_168_178_56.current_title'/*Current title*/;
                            const idT10  = '0_userdata.0.Strg10'/*Strg10*/;
                            //var idT10  = 'openknx.0.E5_Küche.Multimedia.EG_Küche_Statuszeile_1'/*EG Küche Statuszeile 2*/;
                            var idFreq = '0_userdata.0.def'/*def*/;
                             
                            var timer = null;
                             
                            on(idText, function(dp) {
                                clearInterval(timer);
                                if(dp.state.val.length > 14) {
                                    let cycle = 2000 / getState(idFreq).val;
                                    let start = 0;
                                    timer = setInterval(function() {
                                        setState(idT10, dp.state.val.slice(start, start + 14), true);
                                        start++;
                                        if(start > dp.state.val.length -14) start = 0;
                                    }, cycle);
                                } else setState(idT10, dp.state.val, true);
                            });
                            
                            on({id: '0_userdata.0.Strg10', change: "ne"}, function (dp) {
                              setState('openknx.0.E5_Küche.Multimedia.EG_Küche_Statuszeile_2', getState('0_userdata.0.Strg10').val);
                            });
                            
                            CodierknechtC paul53P 3 Antworten Letzte Antwort
                            0
                            • Mr. BurnsM Mr. Burns

                              @paul53 dein Script funktioniert grundsätzlich!

                              Die Laufschrift wird in die variable geschrieben. Aber sie wird nicht an die Anzeige gesendet.
                              Man kann sehen, das sich der Datenpunkt unter Objekten verändert, aber er wird nicht geschrieben.
                              (Weder vom Adapter an das Display, noch kann ich die variable in einem script weiterverarbeiten. Wert und Änderungszeit wird aber verändert)

                              Wenn ich in einen internen DP unter Userdata schreibe und mit einem 2. Script in die ext. variable schreibe funktioniert es.

                              Lässt sich da noch eine Haltezeit zwischen der nächsten Wiederholung einbauen?

                              //var idText = '0_userdata.0.Text'/*Text*/;
                              var idText = 'sonos.0.root.192_168_178_56.current_title'/*Current title*/;
                              const idT10  = '0_userdata.0.Strg10'/*Strg10*/;
                              //var idT10  = 'openknx.0.E5_Küche.Multimedia.EG_Küche_Statuszeile_1'/*EG Küche Statuszeile 2*/;
                              var idFreq = '0_userdata.0.def'/*def*/;
                               
                              var timer = null;
                               
                              on(idText, function(dp) {
                                  clearInterval(timer);
                                  if(dp.state.val.length > 14) {
                                      let cycle = 2000 / getState(idFreq).val;
                                      let start = 0;
                                      timer = setInterval(function() {
                                          setState(idT10, dp.state.val.slice(start, start + 14), true);
                                          start++;
                                          if(start > dp.state.val.length -14) start = 0;
                                      }, cycle);
                                  } else setState(idT10, dp.state.val, true);
                              });
                              
                              on({id: '0_userdata.0.Strg10', change: "ne"}, function (dp) {
                                setState('openknx.0.E5_Küche.Multimedia.EG_Küche_Statuszeile_2', getState('0_userdata.0.Strg10').val);
                              });
                              
                              CodierknechtC Offline
                              CodierknechtC Offline
                              Codierknecht
                              Developer Most Active
                              schrieb am zuletzt editiert von
                              #14

                              @mr-burns sagte in Laufschrift in DP (String):

                              Wenn ich in einen internen DP unter Userdata schreibe und mit einem 2. Script in die ext. variable schreibe funktioniert es.

                              Ich vermute mal, dass Du mit setState(..., true) durchaus den DP openknx beschreiben kannst.
                              Du müsstest lediglich den letzten Parameter von true auf false setzen - also ohne ack schreiben.

                              "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                              Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                              HmIP|ZigBee|Tasmota|Unifi
                              Zabbix Certified Specialist
                              Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                              Mr. BurnsM 1 Antwort Letzte Antwort
                              1
                              • CodierknechtC Codierknecht

                                @mr-burns sagte in Laufschrift in DP (String):

                                Wenn ich in einen internen DP unter Userdata schreibe und mit einem 2. Script in die ext. variable schreibe funktioniert es.

                                Ich vermute mal, dass Du mit setState(..., true) durchaus den DP openknx beschreiben kannst.
                                Du müsstest lediglich den letzten Parameter von true auf false setzen - also ohne ack schreiben.

                                Mr. BurnsM Offline
                                Mr. BurnsM Offline
                                Mr. Burns
                                schrieb am zuletzt editiert von
                                #15

                                @codierknecht Funktioniert. Vielen Dank!

                                Könnte man da noch eine zusätzlichen Timer einbauen?

                                1 Antwort Letzte Antwort
                                0
                                • Mr. BurnsM Mr. Burns

                                  @paul53 dein Script funktioniert grundsätzlich!

                                  Die Laufschrift wird in die variable geschrieben. Aber sie wird nicht an die Anzeige gesendet.
                                  Man kann sehen, das sich der Datenpunkt unter Objekten verändert, aber er wird nicht geschrieben.
                                  (Weder vom Adapter an das Display, noch kann ich die variable in einem script weiterverarbeiten. Wert und Änderungszeit wird aber verändert)

                                  Wenn ich in einen internen DP unter Userdata schreibe und mit einem 2. Script in die ext. variable schreibe funktioniert es.

                                  Lässt sich da noch eine Haltezeit zwischen der nächsten Wiederholung einbauen?

                                  //var idText = '0_userdata.0.Text'/*Text*/;
                                  var idText = 'sonos.0.root.192_168_178_56.current_title'/*Current title*/;
                                  const idT10  = '0_userdata.0.Strg10'/*Strg10*/;
                                  //var idT10  = 'openknx.0.E5_Küche.Multimedia.EG_Küche_Statuszeile_1'/*EG Küche Statuszeile 2*/;
                                  var idFreq = '0_userdata.0.def'/*def*/;
                                   
                                  var timer = null;
                                   
                                  on(idText, function(dp) {
                                      clearInterval(timer);
                                      if(dp.state.val.length > 14) {
                                          let cycle = 2000 / getState(idFreq).val;
                                          let start = 0;
                                          timer = setInterval(function() {
                                              setState(idT10, dp.state.val.slice(start, start + 14), true);
                                              start++;
                                              if(start > dp.state.val.length -14) start = 0;
                                          }, cycle);
                                      } else setState(idT10, dp.state.val, true);
                                  });
                                  
                                  on({id: '0_userdata.0.Strg10', change: "ne"}, function (dp) {
                                    setState('openknx.0.E5_Küche.Multimedia.EG_Küche_Statuszeile_2', getState('0_userdata.0.Strg10').val);
                                  });
                                  
                                  CodierknechtC Offline
                                  CodierknechtC Offline
                                  Codierknecht
                                  Developer Most Active
                                  schrieb am zuletzt editiert von
                                  #16

                                  @mr-burns sagte in Laufschrift in DP (String):

                                  Lässt sich da noch eine Haltezeit zwischen der nächsten Wiederholung einbauen?

                                  Hinter Zeile 18 eine neue einfügen:

                                  await wait(1000);
                                  

                                  "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                                  Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                                  HmIP|ZigBee|Tasmota|Unifi
                                  Zabbix Certified Specialist
                                  Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                                  Mr. BurnsM 1 Antwort Letzte Antwort
                                  0
                                  • Mr. BurnsM Mr. Burns

                                    @paul53 dein Script funktioniert grundsätzlich!

                                    Die Laufschrift wird in die variable geschrieben. Aber sie wird nicht an die Anzeige gesendet.
                                    Man kann sehen, das sich der Datenpunkt unter Objekten verändert, aber er wird nicht geschrieben.
                                    (Weder vom Adapter an das Display, noch kann ich die variable in einem script weiterverarbeiten. Wert und Änderungszeit wird aber verändert)

                                    Wenn ich in einen internen DP unter Userdata schreibe und mit einem 2. Script in die ext. variable schreibe funktioniert es.

                                    Lässt sich da noch eine Haltezeit zwischen der nächsten Wiederholung einbauen?

                                    //var idText = '0_userdata.0.Text'/*Text*/;
                                    var idText = 'sonos.0.root.192_168_178_56.current_title'/*Current title*/;
                                    const idT10  = '0_userdata.0.Strg10'/*Strg10*/;
                                    //var idT10  = 'openknx.0.E5_Küche.Multimedia.EG_Küche_Statuszeile_1'/*EG Küche Statuszeile 2*/;
                                    var idFreq = '0_userdata.0.def'/*def*/;
                                     
                                    var timer = null;
                                     
                                    on(idText, function(dp) {
                                        clearInterval(timer);
                                        if(dp.state.val.length > 14) {
                                            let cycle = 2000 / getState(idFreq).val;
                                            let start = 0;
                                            timer = setInterval(function() {
                                                setState(idT10, dp.state.val.slice(start, start + 14), true);
                                                start++;
                                                if(start > dp.state.val.length -14) start = 0;
                                            }, cycle);
                                        } else setState(idT10, dp.state.val, true);
                                    });
                                    
                                    on({id: '0_userdata.0.Strg10', change: "ne"}, function (dp) {
                                      setState('openknx.0.E5_Küche.Multimedia.EG_Küche_Statuszeile_2', getState('0_userdata.0.Strg10').val);
                                    });
                                    
                                    paul53P Offline
                                    paul53P Offline
                                    paul53
                                    schrieb am zuletzt editiert von paul53
                                    #17

                                    @mr-burns sagte: Lässt sich da noch eine Haltezeit zwischen der nächsten Wiederholung einbauen?

                                    Ich würde es so machen:

                                            timer = setInterval(function() {
                                                if(start >= 0) setState(idT10, dp.state.val.slice(start, start + 14));
                                                start++;
                                                if(start > dp.state.val.length - 14) start = -2;
                                            }, cycle);
                                    

                                    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

                                    1 Antwort Letzte Antwort
                                    0
                                    • CodierknechtC Codierknecht

                                      @mr-burns sagte in Laufschrift in DP (String):

                                      Lässt sich da noch eine Haltezeit zwischen der nächsten Wiederholung einbauen?

                                      Hinter Zeile 18 eine neue einfügen:

                                      await wait(1000);
                                      
                                      Mr. BurnsM Offline
                                      Mr. BurnsM Offline
                                      Mr. Burns
                                      schrieb am zuletzt editiert von
                                      #18

                                      @codierknecht Die Funktion await lässt er nicht zu.

                                      @paul53 Funktioniert! Er wartet aber am Ende des Textes. Ginge das auch am Anfang?
                                      Also der Anfang des Titels für 5s oder 10s stehen bleiben und dan mit der Laufschrift starten?

                                      paul53P 1 Antwort Letzte Antwort
                                      0
                                      • Mr. BurnsM Mr. Burns

                                        @codierknecht Die Funktion await lässt er nicht zu.

                                        @paul53 Funktioniert! Er wartet aber am Ende des Textes. Ginge das auch am Anfang?
                                        Also der Anfang des Titels für 5s oder 10s stehen bleiben und dan mit der Laufschrift starten?

                                        paul53P Offline
                                        paul53P Offline
                                        paul53
                                        schrieb am zuletzt editiert von
                                        #19

                                        @mr-burns sagte: Ginge das auch am Anfang?

                                        Versuche es mal so:

                                                timer = setInterval(function() {
                                                    setState(idT10, dp.state.val.slice(Math.max(start, 0), Math.max(start + 14, 14)));
                                                    start++;
                                                    if(start > dp.state.val.length - 14) start = -2;
                                                }, cycle);
                                        

                                        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

                                        Mr. BurnsM 1 Antwort Letzte Antwort
                                        0
                                        • paul53P paul53

                                          @mr-burns sagte: Ginge das auch am Anfang?

                                          Versuche es mal so:

                                                  timer = setInterval(function() {
                                                      setState(idT10, dp.state.val.slice(Math.max(start, 0), Math.max(start + 14, 14)));
                                                      start++;
                                                      if(start > dp.state.val.length - 14) start = -2;
                                                  }, cycle);
                                          
                                          Mr. BurnsM Offline
                                          Mr. BurnsM Offline
                                          Mr. Burns
                                          schrieb am zuletzt editiert von Mr. Burns
                                          #20

                                          @paul53 Es funktioniert. Vielen Dank für deine Unterstützung!

                                          Das ganze Script sieht jetzt so aus:

                                          var idText = 'sonos.0.root.192_168_178_56.current_title'/*Current title*/;
                                          var idT14  = 'openknx.0.E5_Küche.Multimedia.EG_Küche_Statuszeile_2'/*EG Küche Statuszeile 2*/;
                                           
                                          var timer = null;
                                           
                                          on(idText, function(dp) {
                                              clearInterval(timer);
                                              if(dp.state.val.length > 14) {
                                                  let cycle = 1000; // Geschwindigkeit in ms
                                                  let start = 0;
                                                  timer = setInterval(function() {
                                                      setState(idT14, dp.state.val.slice(Math.max(start, 0), Math.max(start + 14, 14)));
                                                      start++;
                                                      if(start > dp.state.val.length - 14) start = -8; // Haltezeit am Anfang (Geschwindigkeit * Cycle)
                                                  }, cycle);
                                              } else setState(idT14, dp.state.val);
                                          });
                                          
                                          paul53P 1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          705

                                          Online

                                          32.6k

                                          Benutzer

                                          82.1k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe