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

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    11
    1
    509

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.7k

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

[gelöst] LOGO! & Wochenschaltuhr

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
61 Beiträge 9 Kommentatoren 10.8k Aufrufe 4 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.
  • paul53P Offline
    paul53P Offline
    paul53
    schrieb am zuletzt editiert von
    #22

    Gut, dann ist mir folgendes nicht klar:

    on({id: "javascript.0.LOGO.Uhr1-1_Eind", change: "ne"}, function (dp){
    
       var Zeittmp= getState("javascript.0.LOGO.Uhr1-1_Eind").val.toString();
    
       if (getState ("javascript.0.LOGO.Uhr1-1_Eind").val < 1000) {
    

    Das wäre korrekt, wenn der Datenpunkt "javascript.0.LOGO.Uhr1-1_Eind" eine Zahl ("number") enthalten würde. Da er aber das Ergebnis von dec2hex() enthält, sollte es ein String sein. Ergänze mal durch ein Logging:

    on({id: "javascript.0.LOGO.Uhr1-1_Eind", change: "ne"}, function (dp){
       log(typeof 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 Antwort Letzte Antwort
    0
    • VumerV Offline
      VumerV Offline
      Vumer
      schrieb am zuletzt editiert von
      #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 Antwort Letzte Antwort
      0
      • paul53P Offline
        paul53P Offline
        paul53
        schrieb am zuletzt editiert von
        #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 Antwort Letzte Antwort
        0
        • VumerV Offline
          VumerV Offline
          Vumer
          schrieb am zuletzt editiert von
          #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 Antwort Letzte Antwort
          0
          • paul53P Offline
            paul53P Offline
            paul53
            schrieb am zuletzt editiert von
            #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 Antwort Letzte Antwort
            0
            • paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von
              #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 Antwort Letzte Antwort
              0
              • HomoranH Nicht stören
                HomoranH Nicht stören
                Homoran
                Global Moderator Administrators
                schrieb am zuletzt editiert von
                #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 - es gibt fast nichts, was nicht auch für andere interessant ist.

                Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                1 Antwort Letzte Antwort
                0
                • VumerV Offline
                  VumerV Offline
                  Vumer
                  schrieb am zuletzt editiert von
                  #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 Antwort Letzte Antwort
                  0
                  • VumerV Offline
                    VumerV Offline
                    Vumer
                    schrieb am zuletzt editiert von
                    #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 Antwort Letzte Antwort
                    0
                    • paul53P Offline
                      paul53P Offline
                      paul53
                      schrieb am zuletzt editiert von
                      #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 Antwort Letzte Antwort
                      0
                      • VumerV Offline
                        VumerV Offline
                        Vumer
                        schrieb am zuletzt editiert von
                        #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 Antwort Letzte Antwort
                        0
                        • paul53P Offline
                          paul53P Offline
                          paul53
                          schrieb am zuletzt editiert von
                          #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 Antwort Letzte Antwort
                          0
                          • VumerV Offline
                            VumerV Offline
                            Vumer
                            schrieb am zuletzt editiert von
                            #34

                            Sorry, mein Fehler.

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

                            1 Antwort Letzte Antwort
                            0
                            • SteffS Offline
                              SteffS Offline
                              Steff
                              schrieb am zuletzt editiert von
                              #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 Antwort Letzte Antwort
                              0
                              • VumerV Offline
                                VumerV Offline
                                Vumer
                                schrieb am zuletzt editiert von
                                #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 Antwort Letzte Antwort
                                0
                                • SteffS Offline
                                  SteffS Offline
                                  Steff
                                  schrieb am zuletzt editiert von
                                  #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 Antwort Letzte Antwort
                                  0
                                  • VumerV Offline
                                    VumerV Offline
                                    Vumer
                                    schrieb am zuletzt editiert von
                                    #38

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

                                    1 Antwort Letzte Antwort
                                    0
                                    • SteffS Offline
                                      SteffS Offline
                                      Steff
                                      schrieb am zuletzt editiert von
                                      #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 Antwort Letzte Antwort
                                      0
                                      • VumerV Offline
                                        VumerV Offline
                                        Vumer
                                        schrieb am zuletzt editiert von
                                        #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 Antwort Letzte Antwort
                                        0
                                        • SteffS Offline
                                          SteffS Offline
                                          Steff
                                          schrieb am zuletzt editiert von
                                          #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 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

                                          599

                                          Online

                                          32.5k

                                          Benutzer

                                          81.8k

                                          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