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. [gelöst] LOGO! & Wochenschaltuhr

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    784

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

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

[gelöst] LOGO! & Wochenschaltuhr

Scheduled Pinned Locked Moved Skripten / Logik
61 Posts 9 Posters 11.7k Views 4 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.
  • VumerV Offline
    VumerV Offline
    Vumer
    wrote on last edited by
    #23

    > javascript.0 2017-12-27 21:55:45.581 info script.js.common.WochenUhr.ZeitMitTrenzeichen: string
    wie schon geschrieben: bin noch im Vorschulalter was JS betrifft

    Als Vorlage habe ich dem Skript von http://forum.iobroker.net/viewtopic.php?p=73365#p73365 genommen

    /**
    * Beschreibe diese Funktion …
    */
    createState('Sunrise', 0);
    createState('Sunrisenf', 0);
    
    on({id: "s7.1.DBs.DB1.Sunrise", change: "ne"}, function (obj) {
    
    (function(){
    
    var ConvertBase = function (num) {
    return {
    from : function (baseFrom) {
    return {
    to : function (baseTo) {
    return parseInt(num, baseFrom).toString(baseTo);
    }
    };
    }
    };
    };
    
    // decimal to hexadecimal
    ConvertBase.dec2hex = function (num) {
    return ConvertBase(num).from(10).to(16);
    };
    this.ConvertBase = ConvertBase;
    })(this);
    
    setState("javascript.0.Sunrisenf",ConvertBase.dec2hex(getState("s7.1.DBs.DB1.Sunrise").val));
    
    var Sunrisetmp= ConvertBase.dec2hex(getState("s7.1.DBs.DB1.Sunrise").val).toString();
    
    //setState("javascript.0.Sunrise",Sunrisetmp.slice(0, 2) + String(":") + Sunrisetmp.slice(2, 4)) ; //bei 4 stelliger Zeit
    setState("javascript.0.Sunrise",Sunrisetmp.slice(0, 1) + String(":") + Sunrisetmp.slice(1, 3)) ; //bei 3 stelliger Zeit
    
    });
    

    dem habe ich http://forum.iobroker.net/viewtopic.php?p=106841#p106841

    createState("LOGO.Uhr1-1_Ein", 0);
    createState("LOGO.Uhr1-1_Eintmp", 0);
    
    on({id: "s7.0.DBs.DB1.B023-a1", change: "ne"}, function (obj) {
    
    (function(){
    
    var ConvertBase = function (num) {
    return {
    from : function (baseFrom) {
    return {
    to : function (baseTo) {
    return parseInt(num, baseFrom).toString(baseTo);
    }
    };
    }
    };
    };
    
    // decimal to hexadecimal
    ConvertBase.dec2hex = function (num) {
    return ConvertBase(num).from(10).to(16)
    };
    this.ConvertBase = ConvertBase;
    })(this);
    
    setState("javascript.0.LOGO.Uhr1-1_Eintmp",ConvertBase.dec2hex(getState("s7.0.DBs.DB1.B023-a1").val));
    
    var Zeittmp= ConvertBase.dec2hex(getState("s7.0.DBs.DB1.B023-a1").val).toString();
    
    if (getState ("javascript.0.LOGO.Uhr1-1_Eintmp").val < 1000) {
    
    setState("javascript.0.LOGO.Uhr1-1_Ein",Zeittmp.slice(0, 1) + String(":") + Zeittmp.slice(1, 3)) ;
    
    } else {
    
    setState("javascript.0.LOGO.Uhr1-1_Ein",Zeittmp.slice(0, 2) + String(":") + Zeittmp.slice(2, 4)) ;
    
    }
    
    });
    

    hex2dec habe ich auch von http://forum.iobroker.net/viewtopic.php?p=75107#p75107

    createState('ZeitEinnf_in', 0);
    
    on({id: "javascript.0.ZeitEinnf_in"/*ZeitEinnf_in*/, change: "ne"}, function (obj) {
    
    (function(){
    
    var ConvertBase = function (num) {
    return {
    from : function (baseFrom) {
    return {
    to : function (baseTo) {
    return parseInt(num, baseFrom).toString(baseTo);
    }
    };
    }
    };
    };
    
    // hexadecimal to decimal
    ConvertBase.hex2dec = function (num) {
    return ConvertBase(num).from(16).to(10);
    };
    this.ConvertBase = ConvertBase;
    })(this);
    
    setState("s7.1.DBs.DB1.ZeitEin",ConvertBase.hex2dec(getState("javascript.0.ZeitEinnf_in"/*ZeitEinnf_in*/).val));
    
    });
    

    danach kamm die Geschichte ab Post1

    1 Reply Last reply
    0
    • paul53P Offline
      paul53P Offline
      paul53
      wrote on last edited by
      #24

      Hier die beiden Funktionen:

      function logotime2str(time) {
         var x = parseInt(time, 10).toString(16);
         if(parseInt(x) < 10) return '0:0' + x;
         if(parseInt(x) < 100) return '0:' + x;
         if(parseInt(x) < 1000) return x.slice(0, 1) + ':' + x.slice(1, 3);
         return x.slice(0, 2) + ':' + x.slice(2, 4);
      }
      
      function str2logotime(str) {  // str im Format "hh:mm:ss"
         var x = str.split(':');
         x = parseInt(x[0] + x[1], 16).toString(10);
         return parseInt(x);
      }
      

      EDIT: Habe das Skript noch für Zeiten < 0:10 Uhr und < 1:00 Uhr angepasst.

      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 Reply Last reply
      0
      • VumerV Offline
        VumerV Offline
        Vumer
        wrote on last edited by
        #25

        so bald ich die beiden Funktionen in global hinterlege bekomme ich sofort einen Fehler
        > instance system.adapter.javascript.0 terminated with code 7 (Adapter already running)

        1 Reply Last reply
        0
        • paul53P Offline
          paul53P Offline
          paul53
          wrote on last edited by
          #26

          Der Aufruf der (globalen) Funktionen kann in einem einfachen Skript erfolgen.

          const idLogo = 's7.0.DBs.DB1.B023-a1';
          const idVis = 'javascript.0.LOGO.Uhr1-1_Ein';
          
          on(idLogo, function(dp) {
             setStateDelayed(idVis, logotime2str(dp.state.val), 5000);
          });
          
          on(idVis, function(dp) {
             setState(idLogo, str2logotime(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

          1 Reply Last reply
          0
          • paul53P Offline
            paul53P Offline
            paul53
            wrote on last edited by
            #27

            @Vumer:

            so bald ich die beiden Funktionen in global hinterlege bekomme ich sofort einen Fehler `
            Das kann ich bei mir nicht nachvollziehen. Es erfolgt lediglich ein Adapter-Restart mit einer Warnung. Der Restart ist erforderlich, da globale Skripte in alle anderen Skripte eingefügt werden müssen.

            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 Reply Last reply
            0
            • HomoranH Do not disturb
              HomoranH Do not disturb
              Homoran
              Global Moderator Administrators
              wrote on last edited by
              #28

              Bei code7 hat sich der adapter verabschiedet (aber nicht ganz) die Instanz wurde mit einem neuen Prozess wieder gestartet, aber die alte existiert noch.

              Entweder die prozesse killen oder den raspi neu starten

              Gruß Rainer

              kein Support per PN! - Fragen im Forum stellen -
              Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
              Das Forum freut sich über eine Spende. Benutzt dazu den Spendenbutton oben rechts. Danke!
              der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

              1 Reply Last reply
              0
              • VumerV Offline
                VumerV Offline
                Vumer
                wrote on last edited by
                #29

                @Homoran:

                Entweder die prozesse killen oder den raspi neu starten

                Gruß Rainer `
                Das war es

                ich muss darüber schlafen, Morgen bekommt ihr Blumen

                Einfach Super!!!

                1 Reply Last reply
                0
                • VumerV Offline
                  VumerV Offline
                  Vumer
                  wrote on last edited by
                  #30

                  Hallo paul53,

                  hab noch 8 x 4 Uhren hinzugefügt, ging ganz schnell und alles leuft :D

                  noch einmal ein riesen Dankeschön von mir und denke von allen LOGO-ioBroker Nutzern.

                  Jetzt ist die LOGO! 8 100% kompatibel mit ioBroker

                  1 Reply Last reply
                  0
                  • paul53P Offline
                    paul53P Offline
                    paul53
                    wrote on last edited by
                    #31

                    Bitte beachten: Habe die Funktion logotime2str(time) im Skript oben für Zeiten vor 1:00 Uhr korrigiert.

                    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 Reply Last reply
                    0
                    • VumerV Offline
                      VumerV Offline
                      Vumer
                      wrote on last edited by
                      #32

                      Super!!! Danke!!!

                      habe es bei mir korrigiert.

                      Noch eine blöde Frage

                      Unter Skripte kann man einen neuen Ordner und eine neue Gruppe erstellen. Wo ist der Unterschied?

                      1 Reply Last reply
                      0
                      • paul53P Offline
                        paul53P Offline
                        paul53
                        wrote on last edited by
                        #33

                        @Vumer:

                        Unter Skripte kann man einen neuen Ordner und eine neue Gruppe erstellen. Wo ist der Unterschied? `
                        Ich kenne nur die Möglichkeiten eine neue Gruppe oder ein neues Skript (innerhalb einer Gruppe) zu erstellen. Wo findest Du "neuen Ordner erstellen" ?

                        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
                        • VumerV Offline
                          VumerV Offline
                          Vumer
                          wrote on last edited by
                          #34

                          Sorry, mein Fehler.

                          Muss eine neu Brille bestellen und Schrift vergrößern. ordner und ordnen. Ich schäme mich.

                          1 Reply Last reply
                          0
                          • SteffS Offline
                            SteffS Offline
                            Steff
                            wrote on last edited by
                            #35

                            Hallo Vumer,

                            genau diese Funktion habe ich auch gesucht!! Bin ja auch mit der LOGO 8 unterwegs.

                            Allerdings kriege ich die beiden Scripts nicht zum laufen. Habe die beiden Funktionen (logotime2str und str2logotime) als separate Globale Scripte angelegt. Dann das Script zum Aufrufen der beiden Funktionen als Common-Script angelegt. Die beiden Variablen darin habe ich für meine Bedürfnisse angepasst. Hier habe ich schon die erste Frage: –> die Konstante idLogo ist soweit klar aber die folgende const idVis muss die "von Hand" angelegt werden?

                            Die Scripte laufen scheinbar ohne Fehler (Objektansicht ioBroker zeigt beim Common.Script true, bei den beiden Globalen Scripten jedoch false) aber es wird keine Variable erzeugt bzw. diese hat den Wert "null".

                            Steff

                            ioBroker auf Intel NUC 7CJYH / Debian 12 / States & Objects in JSONL / Repo --> Beta / HM CCU2 V2.61.7 / Siemens LOGO! (0BA7 / 0BA8)
                            Admin V7.7.22 / Node V22.21.0 / NPM V10.9.4 / JSC V7.1.0 / JSE V9.0.17

                            1 Reply Last reply
                            0
                            • VumerV Offline
                              VumerV Offline
                              Vumer
                              wrote on last edited by
                              #36

                              Hallo Steff,

                              Hast du auch einen Datenpunkt angelegt?

                              So habe ich das gemacht

                              Unter global habe ich mit dem name Converter

                              function logotime2str(time) {
                                 var x = parseInt(time, 10).toString(16);
                                 if(parseInt(x) < 10) return '0:0' + x;
                                 if(parseInt(x) < 100) return '0:' + x;
                                 if(parseInt(x) < 1000) return x.slice(0, 1) + ':' + x.slice(1, 3);
                                 return x.slice(0, 2) + ':' + x.slice(2, 4);
                              }
                              
                              function str2logotime(str) {  // str im Format "hh:mm:ss"
                                 var x = str.split(':');
                                 x = parseInt(x[0] + x[1], 16).toString(10);
                                 return parseInt(x);
                              }
                              ````angelegt.
                              
                              Unter common habe ich eine neue Gruppe mit dem Name LOGO erstellt
                              
                              Unter die Gruppe LOGO einen Skrip für die erste Uhr mit dem Name Uhr1-1_Ein
                              

                              createState("LOGO.Uhr1-1_Ein", 0);

                              const idLogo = 's7.0.DBs.DB1.B023-a1';
                              const idVis = 'javascript.0.LOGO.Uhr1-1_Ein';

                              on(idLogo, function(dp) {
                              setStateDelayed(idVis, logotime2str(dp.state.val), 5000);
                              });

                              on(idVis, function(dp) {
                              setState(idLogo, str2logotime(dp.state.val));
                              });

                              Unter dem Name Uhr1-1_Aus
                              

                              createState("LOGO.Uhr1-1_Aus", 0);

                              const idLogo = 's7.0.DBs.DB1.B023-b1';
                              const idVis = 'javascript.0.LOGO.Uhr1-1_Aus';

                              on(idLogo, function(dp) {
                              setStateDelayed(idVis, logotime2str(dp.state.val), 5000);
                              });

                              on(idVis, function(dp) {
                              setState(idLogo, str2logotime(dp.state.val));
                              });

                              und so weiter, erstellt
                              
                              Schöne Grüße
                              1 Reply Last reply
                              0
                              • SteffS Offline
                                SteffS Offline
                                Steff
                                wrote on last edited by
                                #37

                                Hallo Vumer,

                                schon gesehen…., ich habe noch ordentlich was aufzuholen in Sachen JScript :oops:

                                Die Datenpunkte waren das Problem. Jetzt werden die zwar angelegt allerdings immer noch mit "0"-Werten. :shock: Ist das so normal?

                                Gruß

                                ioBroker auf Intel NUC 7CJYH / Debian 12 / States & Objects in JSONL / Repo --> Beta / HM CCU2 V2.61.7 / Siemens LOGO! (0BA7 / 0BA8)
                                Admin V7.7.22 / Node V22.21.0 / NPM V10.9.4 / JSC V7.1.0 / JSE V9.0.17

                                1 Reply Last reply
                                0
                                • VumerV Offline
                                  VumerV Offline
                                  Vumer
                                  wrote on last edited by
                                  #38

                                  ender mal im Datenpunkte unter Objekte die 0 in 9:30

                                  1 Reply Last reply
                                  0
                                  • SteffS Offline
                                    SteffS Offline
                                    Steff
                                    wrote on last edited by
                                    #39

                                    Jackpot!!

                                    Das ist echt genial.

                                    …und wieder was gelernt - die Datenpunkte wurden ja mit 0 angelegt. Macht das Sinn die Punkte gleich mit einem "richtigen" Wert sprich Uhrzeit anzulegen?

                                    Gruß

                                    ioBroker auf Intel NUC 7CJYH / Debian 12 / States & Objects in JSONL / Repo --> Beta / HM CCU2 V2.61.7 / Siemens LOGO! (0BA7 / 0BA8)
                                    Admin V7.7.22 / Node V22.21.0 / NPM V10.9.4 / JSC V7.1.0 / JSE V9.0.17

                                    1 Reply Last reply
                                    0
                                    • VumerV Offline
                                      VumerV Offline
                                      Vumer
                                      wrote on last edited by
                                      #40

                                      Falsches Gedanke

                                      Der Script macht nur was wenn sich der Wert verendert, damit er nicht immer leuft. z.B wenn du in der LOGO die Zeit verenderst dann aktualisiert der Skript das. Oder du nimms im vis dem Widget "Jqui ctrl Input Datetime" umd stellst die Uhr im vis ein
                                      2071_zwischenablage01.jpg

                                      1 Reply Last reply
                                      0
                                      • SteffS Offline
                                        SteffS Offline
                                        Steff
                                        wrote on last edited by
                                        #41

                                        OK, das macht Sinn.

                                        Ich dachte das gibt ein Problem beim Neustarten von ioBroker. Habe aber gerade mal neu gestartet, ist alle so wie es

                                        sein soll!

                                        Dann kann ich mich jetzt ja an die Wochentage der Schaltuhr ranmachen.

                                        Danke nochmals!

                                        ioBroker auf Intel NUC 7CJYH / Debian 12 / States & Objects in JSONL / Repo --> Beta / HM CCU2 V2.61.7 / Siemens LOGO! (0BA7 / 0BA8)
                                        Admin V7.7.22 / Node V22.21.0 / NPM V10.9.4 / JSC V7.1.0 / JSE V9.0.17

                                        1 Reply Last reply
                                        0
                                        • paul53P Offline
                                          paul53P Offline
                                          paul53
                                          wrote on last edited by
                                          #42

                                          @Steff:

                                          Macht das Sinn die Punkte gleich mit einem "richtigen" Wert sprich Uhrzeit anzulegen? `
                                          Sauberer ist es.

                                          const idLogo = 's7.0.DBs.DB1.B023-a1';
                                          const nameVis = 'LOGO.Uhr1-1_Ein';
                                          const idVis = 'javascript.' + instance + '.' + nameVis;
                                          
                                          createState(nameVis, '0:00', {type: 'string'});
                                          
                                          on(idLogo, function(dp) {
                                             setStateDelayed(idVis, logotime2str(dp.state.val), 5000);
                                          });
                                          
                                          on(idVis, function(dp) {
                                             setState(idLogo, str2logotime(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

                                          1 Reply Last reply
                                          0

                                          Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                                          Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                                          With your input, this post could be even better 💗

                                          Register Login
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          553

                                          Online

                                          32.8k

                                          Users

                                          82.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