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
    511

  • 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.
  • PeoplesP Offline
    PeoplesP Offline
    Peoples
    schrieb am zuletzt editiert von
    #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 Antwort Letzte Antwort
    0
    • VumerV Offline
      VumerV Offline
      Vumer
      schrieb am zuletzt editiert von
      #11

      Ja!!!!! Super!!!

      Funktioniert und die Warnung ist weg

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

                          ja, total blöd

                          hier habe ich ein Zitat aus http://www.frickelzeugs.de/logocontrol/ … erstellen/
                          > Die Logo speichert Uhrzeiten (z.B. der Wochenschaltuhr) relativ seltsam ab. Eine Zeit von 18:30 Uhr wird als Hex-Wert 0x1830 im VM-Speicher abgelegt, dies entspricht der Dezimalzahl 6192\. Für die Visualisierung muss diese Dezimalzahl also wieder in Hex umgerechnet werden. Die Funktion LogoDec2Hex entspricht also einer einfachen Dec->Hex-Konvertierung mit einem Sonderfall: die Umrechnung wird nur durchgeführt, wenn der sich ergebende Hex-Wert ausschließlich aus Ziffern bestünde (kein A-F erlaubt!). Ist dies nicht der Fall, liefert die Funktion -1 zurück. Dieser Kunstgriff ist nötig, da NCalc nicht mit Hex-Werten umgehen kann. Die Funktion LogoHex2Dec erledigt die Konvertierung in die entgegengesetzte Richtung.
                          Das ist eigentlich das einzige Manko von LOGO

                          1 Antwort Letzte Antwort
                          0
                          • 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
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          381

                                          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