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
    17
    1
    486

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

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

[gelöst] LOGO! & Wochenschaltuhr

Scheduled Pinned Locked Moved Skripten / Logik
61 Posts 9 Posters 11.4k 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
    #1

    Guten Abend,

    es geht um das Widget Jqui ctrl Input Datetime. Wenn ich die Zeit im Widget einstelle liefert er das Format SS:mm:ss ( Sekunden werden auch mitgeliefert obwohl Zeige keine Sekunden ist aktiv ). Mein Adapter kann leider mit dem Format nichts anfangen, er braucht dem Wert "SSmm" ohne ":" und Sekunden.

    Wie kann ich die Trennzeichen und "ss" entfernen?

    Schöne Grüße

    1 Reply Last reply
    0
    • PeoplesP Offline
      PeoplesP Offline
      Peoples
      wrote on last edited by
      #2

      Hi,

      wenn du es via Script machen willst bspw. so:

      var Zeit = '22:11:33';
      var ZeitNeu = Zeit.split(':');
      var ZeitOhneSekunden = ZeitNeu[0]+ZeitNeu[1];
      
      log(ZeitOhneSekunden);
      

      Ergebnis: 2211

      Gruß

      Steffen

      Ich beantworte keine Fragen zu Themen via PN

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

        Danke

        bitte nicht hauen, bin noch im Vorschulalter was JS betrifft :lol:

        ist so richtig?

        var Zeit = getState("javascript.0.LOGO.Uhr1-1_Ein").val;
        var ZeitNeu = Zeit.split(':');
        var ZeitOhneSekunden = ZeitNeu[0]+ZeitNeu[1];
        
        setState("s7.0.DBs.DB1.B023-a1",ZeitOhneSekunden(ConvertBase.hex2dec(getState("javascript.0.LOGO.Uhr1-1_Ein").val)));
        
        

        Object ID: "javascript.0.LOGO.Uhr1-1_Ein"

        Object ID -> ZeitOhneSekunden -> ConvertBase.hex2dec -> Adapter

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

          habe es so versucht

          createState("LOGO.Uhr1-1_Einh", 0);
          
          on({id: "javascript.0.LOGO.Uhr1-1_Ein", change: "ne"}, function (obj) {
          
          var Zeit = getState("javascript.0.LOGO.Uhr1-1_Ein").val;
          var ZeitNeu = Zeit.split(':');
          var ZeitOhneSekunden = ZeitNeu[0]+ZeitNeu[1];
          
          setState("javascript.0.LOGO.Uhr1-1_Einh",ZeitOhneSekunden(getState("javascript.0.LOGO.Uhr1-1_Ein").val));
          
          });
          

          bekomme Fehler

          javascript.0	2017-12-26 03:17:22.480	error	at Object. (script.js.common.WochenUhr.ZeitOhneSekunden:10:42)
          javascript.0	2017-12-26 03:17:22.473	error	Error in callback: ReferenceError: ZeitOhneSekunden is not defined
          javascript.0	2017-12-26 03:17:21.496	error	at Object. (script.js.common.WochenUhr.ZeitOhneSekunden:10:42)
          
          1 Reply Last reply
          0
          • PeoplesP Offline
            PeoplesP Offline
            Peoples
            wrote on last edited by
            #5

            Dann versucht mal der Grundschüler aus der ersten Klasse dem Vorschüler zu helfen :D

            Ob man das mit nur einem Datenpunkt machen kann ist die Frage da du ja wenn das Script deine Uhrzeit von 22:33:11 auf 22:33 ändert wieder einen Auslösetrigger hast.

            Hab es gerade mal bei mir so probiert und es hat geklappt:

            createState("LOGO.Uhr1-1_Einh", 0);
            createState("LOGO.Uhr1-1_Einh_ohne_Sekunden", 0);
            
            on({id: "javascript.0.LOGO.Uhr1-1_Einh"/*LOGO.Uhr1-1_Einh*/, change: "ne"}, function (dp){  //Hier wird "dp" erzeugt aus der id im on Befehl
            var ZeitNeu = dp.state.val.split(':');		//Hier greifst du mit dp.state.val den Wert des oben erzeugten "dp" auf und wertest ihn aus.
            var ZeitOhneSekunden = ZeitNeu[0]+ZeitNeu[1];
            setState("javascript.0.LOGO.Uhr1-1_Einh_ohne_Sekunden",ZeitOhneSekunden);
            
            // alternativ geht auch:
            //setState("javascript.0.LOGO.Uhr1-1_Einh_ohne_Sekunden",ZeitNeu[0]+ZeitNeu[1]);
            //oder
            //setState("javascript.0.LOGO.Uhr1-1_Einh_ohne_Sekunden",dp.state.val.split(':')[0]+dp.state.val.split(':')[1]);
            //so würdest du dir die Erzeugung der Variablen "ZeitNeu" und "ZeitOhneSekunden" sparen
            //ist zwar kürzer aber auch unübersichtlicher finde ich deswegen mach ich normal den Zwischenstep über die Variablen
            
            });
            

            Gruß

            Steffen

            Ich beantworte keine Fragen zu Themen via PN

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

              Danke!!!

              Morgen darfst du mein Pausenbrot haben ;)

              Es funktioniert.

              Aber leider kommt JS Adapter jetzt nicht aus der Schleife. Um dem Wert vom s7.0.DBs.DB1.B023-a1 im Jqui ctrl Input Datetime Widget anzuzeigen benutze ich dieses http://forum.iobroker.net/viewtopic.php?p=106841#p106841.

              Hab auch versucht

              setStateDelayed("javascript.0.LOGO.Uhr1-1_Eintmp",ConvertBase.dec2hex(getState("s7.0.DBs.DB1.B023-a1").val), 5000);
              

              aber das funktioniert auch nicht. Irgendwo habe ich einen Denkfehler.

              Schöne Grüße

              1 Reply Last reply
              0
              • PeoplesP Offline
                PeoplesP Offline
                Peoples
                wrote on last edited by
                #7

                Zeig mal das ganze was du gebastelt hast.

                Ich beantworte keine Fragen zu Themen via PN

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

                  so, bin weiter. Damit Delayed funktioniert muste ich dem Skript in zwei Teile teilen.

                  Ziel das ganzes Projektes ist die Wochenschaltuhr von Siemen LOGO im vis anzuzeigen und zu endern.

                  Das Problem ist das Siemens die Zeit in Dezimal liefert. Und so, der erster Schritt dec2hex. Zeitverzeugerung 5 sek damit die Schleife nicht auftritt.

                  ! /**
                  ! * Beschreibe diese Funktion …
                  ! */
                  ! createState("LOGO.Uhr1-1_Ein", 0);
                  ! createState("LOGO.Uhr1-1_Eind", 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);
                  ! setStateDelayed("javascript.0.LOGO.Uhr1-1_Eind",ConvertBase.dec2hex(getState("s7.0.DBs.DB1.B023-a1").val), 5000);
                  ! });
                  Danach Trennzeichen ":" für dem Widget Jqui ctrl Input Datetime hinzufügen

                  ! 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) {
                  ! 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)) ;
                  ! }
                  ! });
                  Jetzt kann man im vis die in LOGO eingestellte Zeit sehen. Um die Zeit im vis einzustellen mussen erst die Trennzeichen ":" und die Sekunden entfernen werden

                  ! createState("LOGO.Uhr1-1_Einh", 0);
                  ! on({id: "javascript.0.LOGO.Uhr1-1_Ein"/LOGO.Uhr1-1_Ein/, change: "ne"}, function (dp){
                  ! var ZeitNeu = dp.state.val.split(':');
                  ! var ZeitOhneSekunden = ZeitNeu[0]+ZeitNeu[1];
                  ! setState("javascript.0.LOGO.Uhr1-1_Einh",ZeitOhneSekunden);
                  ! });
                  jetzt Hexadezimal ins Dezimal für LOGO

                  ! on({id: "javascript.0.LOGO.Uhr1-1_Einh", 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.0.DBs.DB1.B023-a1",ConvertBase.hex2dec(getState("javascript.0.LOGO.Uhr1-1_Einh").val));
                  ! });
                  Funktioniert so weit in beide Richtunge bekkome aber diese Warnung

                  javascript.0	2017-12-26 17:43:10.516	warn	at Object. (script.js.common.WochenUhr.h2d_neu:30:1)
                  javascript.0	2017-12-26 17:43:10.506	warn	Wrong type of s7.0.DBs.DB1.B023-a1: "string". Please fix, while deprecated and will not work in next versions.
                  javascript.0	2017-12-26 17:43:04.428	warn	at Object. (script.js.common.WochenUhr.h2d_neu:30:1)
                  javascript.0	2017-12-26 17:43:04.405	warn	Wrong type of s7.0.DBs.DB1.B023-a1: "string". Please fix, while deprecated and will not work in next versions.
                  javascript.0	2017-12-26 17:43:03.415	warn	at Object. (script.js.common.WochenUhr.h2d_neu:30:1)
                  javascript.0	2017-12-26 17:43:03.407	warn	Wrong type of s7.0.DBs.DB1.B023-a1: "string". Please fix, while deprecated and will not work in next versions.
                  javascript.0	2017-12-26 17:43:02.484	warn	at Object. (script.js.common.WochenUhr.h2d_neu:30:1)
                  javascript.0	2017-12-26 17:43:02.475	warn	Wrong type of s7.0.DBs.DB1.B023-a1: "string". Please fix, while deprecated and will not work in next versions.
                  javascript.0	2017-12-26 17:43:01.551	warn	at Object. (script.js.common.WochenUhr.h2d_neu:30:1)
                  

                  wie kann ich die beseitigen?

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

                    Die Warnung kommt vom letzten Skript

                    Hexadezimal ins Dezimal für LOGO

                    1 Reply Last reply
                    0
                    • PeoplesP Offline
                      PeoplesP Offline
                      Peoples
                      wrote on last edited by
                      #10

                      @Vumer:

                      setState("s7.0.DBs.DB1.B023-a1",ConvertBase.hex2dec(getState("javascript.0.LOGO.Uhr1-1_Einh").val)); `

                      Ich vermute dass die Logo eine Zahl möchte und du einen String übergeben willst.

                      Das ist aber reine Spekulation da ich ja keine LOGO habe.

                      Versuch mal:

                      setState("s7.0.DBs.DB1.B023-a1",parseInt(ConvertBase.hex2dec(getState("javascript.0.LOGO.Uhr1-1_Einh").val)));

                      Hier die Erklärung von parseInt:

                      ! Oft ist es mit Javascript notwending, eine String-Zeichenkette in eine Zahl umzuwandeln. Wenn Sie einen Text mit Javascript in Zahl konvertieren möchten, so wird eine JS Funktion verwendet - parseInt. Es ist aber anzumerken - diese Funktion liefert nur ganze Zahlen und falls der Text in eine Zahl konvertiert werden kann, so wird ein sog. NaN (not a number, also keine Zahl) zurückgegeben. Beachten Sie auch, dass die ganzen Zahlen ensprechende maximale Werte haben.

                      Gruß

                      Steffen

                      Ich beantworte keine Fragen zu Themen via PN

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

                        Ja!!!!! Super!!!

                        Funktioniert und die Warnung ist weg

                        1 Reply Last reply
                        0
                        • PeoplesP Offline
                          PeoplesP Offline
                          Peoples
                          wrote on last edited by
                          #12

                          Freut mich!

                          P.s

                          Setz mal deinen Betreff noch auf [gelöst] wenn du keine Fragen mehr hast

                          Gruß Steffen

                          Ich beantworte keine Fragen zu Themen via PN

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

                            Hallo Steffen,

                            noch einmal ein dikes Dankeschön
                            @peoples:

                            wenn du keine Fragen mehr hast `
                            Tausend und eine :lol:

                            Ich brauche diese Script mehrfach, mindestens 20 x 4 :roll: . Vielleicht kann man die noch optimieren? Z.B. mit global? Wie ruft man die dann auf?

                            Oder vielleicht kommt hier ein Lehrer rein und zeigt wie man das direkt im Widget einbaut.

                            Schöne Grüße

                            1 Reply Last reply
                            0
                            • PeoplesP Offline
                              PeoplesP Offline
                              Peoples
                              wrote on last edited by
                              #14

                              Also es gibt die Möglichkeit Schleifen zu benutzen wenn du immer wieder das gleiche Script brauchst könnte man z.B. ein Array erstellen:

                              Array[0] = Datenpunkt 1

                              Array[1] = Datenpunkt 2

                              usw.

                              Dann könntest du alle Array Inhalte durch die gleiche Funktion laufen lassen sofern das bei dir eine Möglichkeit ist.

                              Die Erklärung zu den Ordnern findest du hier:

                              http://www.iobroker.net/docu/?page_id=6818&lang=de

                              unter Ordner und Dateiliste

                              Gruß

                              Steffen

                              Ich beantworte keine Fragen zu Themen via PN

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

                                Doku habe ich gelesen, verstehe es aber nicht.

                                Dieses Skript brauche ich immer wieder

                                ! (function(){
                                ! var ConvertBase = function (num) {
                                ! return {
                                ! from : function (baseFrom) {
                                ! return {
                                ! to : function (baseTo) {
                                ! return parseInt(num, baseFrom).toString(baseTo);
                                ! }
                                ! };
                                ! }
                                ! };
                                ! };
                                ! // binary to decimal
                                ! ConvertBase.bin2dec = function (num) {
                                ! return ConvertBase(num).from(2).to(10);
                                ! };
                                ! // binary to hexadecimal
                                ! ConvertBase.bin2hex = function (num) {
                                ! return ConvertBase(num).from(2).to(16);
                                ! };
                                ! // decimal to binary
                                ! ConvertBase.dec2bin = function (num) {
                                ! return ConvertBase(num).from(10).to(2);
                                ! };
                                ! // decimal to hexadecimal
                                ! ConvertBase.dec2hex = function (num) {
                                ! return ConvertBase(num).from(10).to(16);
                                ! };
                                ! // hexadecimal to binary
                                ! ConvertBase.hex2bin = function (num) {
                                ! return ConvertBase(num).from(16).to(2);
                                ! };
                                ! // hexadecimal to decimal
                                ! ConvertBase.hex2dec = function (num) {
                                ! return ConvertBase(num).from(16).to(10);
                                ! };
                                ! this.ConvertBase = ConvertBase;
                                ! })(this);
                                dem nutze ich im ersten und vierten, http://forum.iobroker.net/viewtopic.php?p=107024#p107024. Wenn ich dem im global erstelle, wie ruft man dem auf?

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

                                  Erstelle das folgende Skript unter der Gruppe global, dann kannst Du aus jedem (nicht globalen) Skript die Funktion(en) mit ihrem Namen aufrufen.

                                  function bin2dec(num) {
                                     return parseInt(num, 2).toString(10);
                                  }
                                  
                                  function bin2hex(num) {
                                     return parseInt(num, 2).toString(16);
                                  }
                                  
                                  function dec2bin(num) {
                                     return parseInt(num, 10).toString(2);
                                  }
                                  
                                  function dec2hex(num) {
                                     return parseInt(num, 10).toString(16);
                                  }
                                  
                                  function hex2bin(num) {
                                     return parseInt(num, 16).toString(2);
                                  }
                                  
                                  function hex2dec(num) {
                                     return parseInt(num, 16).toString(10);
                                  }
                                  
                                  

                                  Zu diesem Skript kannst Du noch zwei weitere Funktionen hinzufügen:

                                  function logotime2str(time) {
                                     ...Hier Wandlung Logo-Zeit und return im Format "hh:mm" 
                                  }
                                  
                                  function str2logotime(str) {  // str im Format "hh:mm"
                                     ...Hier Wandlung nach Logo-Zeit und return Logo-Zeit
                                  }
                                  

                                  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
                                    #17

                                    Hallo paul53,

                                    ich brauche noch einen Schubser

                                    habe deinen Skript ( ohne die zwei weitere Funktionen, dafür brauche ich keinen Schubser sondern einen Hammer ) mit dem Name Converter erstellt. Was trage ich jetzt ein?

                                    createState("LOGO.Uhr1-1_Ein", 0);
                                    createState("LOGO.Uhr1-1_Eind", 0);
                                    
                                    on({id: "s7.0.DBs.DB1.B023-a1", change: "ne"}, function (obj) {
                                    
                                    setStateDelayed("javascript.0.LOGO.Uhr1-1_Eind",/*[color]was trage ich hier ein[/color]*/(getState("s7.0.DBs.DB1.B023-a1").val), 1000);
                                    
                                    });
                                    
                                    1 Reply Last reply
                                    0
                                    • VumerV Offline
                                      VumerV Offline
                                      Vumer
                                      wrote on last edited by
                                      #18

                                      jo, habe es

                                      Danke Dir!!!

                                      setStateDelayed("javascript.0.LOGO.Uhr1-1_Eind",dec2hex(getState("s7.0.DBs.DB1.B023-a1").val), 5000);
                                      

                                      @paul53:

                                      Zu diesem Skript kannst Du noch zwei weitere Funktionen hinzufügen: `
                                      hier verstehe ich nur Bahnhof :?: :roll: :?:

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

                                        Bitte den Javascript-Code in Code tags (oben die 5. Funktion) anstatt in spoiler packen.
                                        @Vumer:

                                        setStateDelayed("javascript.0.LOGO.Uhr1-1_Eind",/was trage ich hier ein/(getState("s7.0.DBs.DB1.B023-a1").val), 1000); `

                                        setStateDelayed("javascript.0.LOGO.Uhr1-1_Eind", dec2hex(obj.state.val), 1000);
                                        

                                        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
                                          #20

                                          @Vumer:

                                          ohne die zwei weitere Funktionen, dafür brauche ich keinen Schubser sondern einen Hammer `
                                          Wenn ich Deine Konvertierungen verstehen würde, könnte ich den Hammer liefern.

                                          Anscheinend Ist die Logo-Zeit ein Integer-Wert ? Wie ist die Zeit in diesem Wert repräsentiert ?

                                          Die Wandlung Dec–>Hex und umgekehrt verstehe ich nicht. Weshalb Hexadezimal in der Zwischenrechnung ?

                                          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
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          570

                                          Online

                                          32.7k

                                          Users

                                          82.5k

                                          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