Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

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

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. S7 Adapter LOGO Datenpunkte zusammenführen button + state

NEWS

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.6k

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

S7 Adapter LOGO Datenpunkte zusammenführen button + state

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

    Hi,
    damals, 2019 hatte ich schon mal ein Thema erstellt, ist mittlerweile geschlossen:

    https://forum.iobroker.net/topic/26024/datenpunkte-zusammenführen-switch-state/18?_=1766396252103

    Es ging darum, dass die LOGO für eine Leuchte z.B. ein Datenpunkt (button) zum Schalten und ein Datenpunkt für den Status der Leuchte hat.

    Da das sonst immer schlecht in Vis und co einzubinden ist,

    deshalb das Script:

    // IDs anpassen
    const idButton = 's7.0.DBs.DB1.NI13';
    const idActor = 's7.0.DBs.DB1.Q13';
     
    const js = 'system.adapter.javascript.' + instance;
    const common = getObject(idButton).common;
    const idVis = 'LOGO.s7-0.' + common.name.replace(' ', '_');
     
    common.read = true;
    createState(idVis, getState(idActor).val, common);
     
    on({id: 'javascript.0.' + idVis, change: 'ne', fromNe: js}, function() {
        setState(idButton, true);
    });
     
    on(idActor, function(dp) {
        setState(idVis, dp.state.val, true);
    });
    
    

    Das Script hat die Datenpunkte zusammengeführt und einen neuen erstellt den ich dann problemlos einbinden konnte.

    Die neuen Datenpunkte wurden dann in javascript.0.LOGO.s7-0
    (je nach s7 Instanz s7-x) erstellt.

    Jetzt bin ich dabei meine ioBroker Installation ein bisschen aufzuräumen und habe schon einige manuell erzeugte Datenpunkte in den Ordner 0_userdata.0 verschoben.
    Da man ja in Zukunft nur noch da eigene Datenpunkte ablegen sollte.

    In den Blocklys war das kein Problem, aber bei dem Script von damals reicht es nicht javascript.0 durch 0_userdata.0 auszutauschen.

    Lange Rede kurzer Sinn, wie muss ich das Script bearbeiten damit der Datenpunkt entsprechend im neuen Verzeichnis erstellt wird?

    Oder bin ich nicht mehr up to Date und es gibt mittlerweile eine neue/andere Lösung für das "LOGO" Problem? Vielleicht ein Adapter oder in Vis?

    Vielen Dank im voraus!

    paul53P 2 Antworten Letzte Antwort
    0
    • AsgothianA Offline
      AsgothianA Offline
      Asgothian
      Developer
      schrieb am zuletzt editiert von
      #2

      so sollte es gehen:

      // IDs anpassen
      const idButton = 's7.0.DBs.DB1.NI13';
      const idActor = 's7.0.DBs.DB1.Q13';
       
      const js = 'system.adapter.javascript.' + instance;
      const common = getObject(idButton).common;
      const idVis = '0_userdata.0.LOGO.s7-0.' + common.name.replace(' ', '_');
       
      common.read = true;
      createState(idVis, getState(idActor).val, common);
       
      on({id: idVis, change: 'ne', fromNe: js}, function() {
          setState(idButton, true);
      });
       
      on(idActor, function(dp) {
          setState(idVis, dp.state.val, true);
      });
      

      ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
      "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

      Elektroniker86E 1 Antwort Letzte Antwort
      0
      • AsgothianA Asgothian

        so sollte es gehen:

        // IDs anpassen
        const idButton = 's7.0.DBs.DB1.NI13';
        const idActor = 's7.0.DBs.DB1.Q13';
         
        const js = 'system.adapter.javascript.' + instance;
        const common = getObject(idButton).common;
        const idVis = '0_userdata.0.LOGO.s7-0.' + common.name.replace(' ', '_');
         
        common.read = true;
        createState(idVis, getState(idActor).val, common);
         
        on({id: idVis, change: 'ne', fromNe: js}, function() {
            setState(idButton, true);
        });
         
        on(idActor, function(dp) {
            setState(idVis, dp.state.val, true);
        });
        
        Elektroniker86E Online
        Elektroniker86E Online
        Elektroniker86
        schrieb am zuletzt editiert von
        #3

        @Asgothian

        Hi, danke erstmal für die schnelle Antwort, der Datenpunkt wird zwar im richtigen Verzeichnis angelegt aber er funktioniert nicht richtig. Er wird als Button angelegt aber es soll ja ein switch sein.

        Bildschirmfoto vom 2025-12-22 11-26-52.png

        1 Antwort Letzte Antwort
        0
        • AsgothianA Offline
          AsgothianA Offline
          Asgothian
          Developer
          schrieb am zuletzt editiert von
          #4

          Das war im alten Skript auch so. Daran hab ich nichts geändert. Aber du kannst den Typ einfach über das UI anpassen. Alternativ setzt du noch

          common.role = 'switch';
          

          vor die Zeile

          common.read = true;
          

          A.

          ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
          "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

          1 Antwort Letzte Antwort
          1
          • Elektroniker86E Elektroniker86

            Hi,
            damals, 2019 hatte ich schon mal ein Thema erstellt, ist mittlerweile geschlossen:

            https://forum.iobroker.net/topic/26024/datenpunkte-zusammenführen-switch-state/18?_=1766396252103

            Es ging darum, dass die LOGO für eine Leuchte z.B. ein Datenpunkt (button) zum Schalten und ein Datenpunkt für den Status der Leuchte hat.

            Da das sonst immer schlecht in Vis und co einzubinden ist,

            deshalb das Script:

            // IDs anpassen
            const idButton = 's7.0.DBs.DB1.NI13';
            const idActor = 's7.0.DBs.DB1.Q13';
             
            const js = 'system.adapter.javascript.' + instance;
            const common = getObject(idButton).common;
            const idVis = 'LOGO.s7-0.' + common.name.replace(' ', '_');
             
            common.read = true;
            createState(idVis, getState(idActor).val, common);
             
            on({id: 'javascript.0.' + idVis, change: 'ne', fromNe: js}, function() {
                setState(idButton, true);
            });
             
            on(idActor, function(dp) {
                setState(idVis, dp.state.val, true);
            });
            
            

            Das Script hat die Datenpunkte zusammengeführt und einen neuen erstellt den ich dann problemlos einbinden konnte.

            Die neuen Datenpunkte wurden dann in javascript.0.LOGO.s7-0
            (je nach s7 Instanz s7-x) erstellt.

            Jetzt bin ich dabei meine ioBroker Installation ein bisschen aufzuräumen und habe schon einige manuell erzeugte Datenpunkte in den Ordner 0_userdata.0 verschoben.
            Da man ja in Zukunft nur noch da eigene Datenpunkte ablegen sollte.

            In den Blocklys war das kein Problem, aber bei dem Script von damals reicht es nicht javascript.0 durch 0_userdata.0 auszutauschen.

            Lange Rede kurzer Sinn, wie muss ich das Script bearbeiten damit der Datenpunkt entsprechend im neuen Verzeichnis erstellt wird?

            Oder bin ich nicht mehr up to Date und es gibt mittlerweile eine neue/andere Lösung für das "LOGO" Problem? Vielleicht ein Adapter oder in Vis?

            Vielen Dank im voraus!

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

            @Elektroniker86 sagte: ein Datenpunkt (button) zum Schalten und ein Datenpunkt für den Status der Leuchte hat.

            Man kann die DP ohne Skript in einem Alias mit Schreibkonvertierung zusammenführen:

            val ? true : true
            

            @Elektroniker86 sagte in S7 Adapter LOGO Datenpunkte zusammenführen button + state:

            damals, 2019 hatte ich schon mal ein Thema erstellt

            Da gab es den Alias noch nicht.

            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

            Elektroniker86E 1 Antwort Letzte Antwort
            0
            • paul53P paul53

              @Elektroniker86 sagte: ein Datenpunkt (button) zum Schalten und ein Datenpunkt für den Status der Leuchte hat.

              Man kann die DP ohne Skript in einem Alias mit Schreibkonvertierung zusammenführen:

              val ? true : true
              

              @Elektroniker86 sagte in S7 Adapter LOGO Datenpunkte zusammenführen button + state:

              damals, 2019 hatte ich schon mal ein Thema erstellt

              Da gab es den Alias noch nicht.

              Elektroniker86E Online
              Elektroniker86E Online
              Elektroniker86
              schrieb am zuletzt editiert von
              #6

              @paul53
              Ahh super, das ist ja interessant. Meinst du den Adapter Alias Manager?

              Bildschirmfoto vom 2025-12-22 13-55-59.png

              paul53P 1 Antwort Letzte Antwort
              0
              • Elektroniker86E Elektroniker86

                @paul53
                Ahh super, das ist ja interessant. Meinst du den Adapter Alias Manager?

                Bildschirmfoto vom 2025-12-22 13-55-59.png

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

                @Elektroniker86 sagte: Meinst du den Adapter Alias Manager?

                Nein, ich meinte Alias unter "alias.0", die der js-controller verwaltet.
                Erstellung eines Alias:

                • im Tab "Objekte" den Status-DP "s7.0.DBs.DB1.Q13" selektieren
                • Rechte Maustaste über der ID und "Alias erstellen" auswählen
                • im öffnenden Fenster die Alias-ID und den Namen anpassen, die Rolle auf "switch" ändern und "schreiben" erlauben
                • "Konvertierungsfunktionen benutzen" anhaken
                • Schreibkonvertierung eintragen: val ? true : true

                Anschließend noch per "Unterschiedliche IDs für Lesen und Schreiben" die Button-ID "s7.0.DBs.DB1.NI13" für Schreiben eintragen.

                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

                Elektroniker86E 2 Antworten Letzte Antwort
                1
                • paul53P paul53

                  @Elektroniker86 sagte: Meinst du den Adapter Alias Manager?

                  Nein, ich meinte Alias unter "alias.0", die der js-controller verwaltet.
                  Erstellung eines Alias:

                  • im Tab "Objekte" den Status-DP "s7.0.DBs.DB1.Q13" selektieren
                  • Rechte Maustaste über der ID und "Alias erstellen" auswählen
                  • im öffnenden Fenster die Alias-ID und den Namen anpassen, die Rolle auf "switch" ändern und "schreiben" erlauben
                  • "Konvertierungsfunktionen benutzen" anhaken
                  • Schreibkonvertierung eintragen: val ? true : true

                  Anschließend noch per "Unterschiedliche IDs für Lesen und Schreiben" die Button-ID "s7.0.DBs.DB1.NI13" für Schreiben eintragen.

                  Elektroniker86E Online
                  Elektroniker86E Online
                  Elektroniker86
                  schrieb am zuletzt editiert von
                  #8

                  @paul53

                  Ahh ok, super, diese Funktion kannte ich überhaupt nicht. Danke für die Info. Funktioniert genau so wie du es beschrieben hast.

                  Gibt es auch eine Möglichkeit, wenn ich alle Einträge gemacht habe das zu sichern? Also außerhalb von Backitup?

                  Ich frage deshalb weil ich meine ioBroker Installation mal gerne neu aufsetzen möchte und mir mit Backitup nicht die ganzen Altlasten rein holen will.

                  Ich habe von fast allen Adaptern die Config exportiert. Gibt es so was ähnliches auch bei alias?

                  paul53P 1 Antwort Letzte Antwort
                  0
                  • Elektroniker86E Elektroniker86

                    @paul53

                    Ahh ok, super, diese Funktion kannte ich überhaupt nicht. Danke für die Info. Funktioniert genau so wie du es beschrieben hast.

                    Gibt es auch eine Möglichkeit, wenn ich alle Einträge gemacht habe das zu sichern? Also außerhalb von Backitup?

                    Ich frage deshalb weil ich meine ioBroker Installation mal gerne neu aufsetzen möchte und mir mit Backitup nicht die ganzen Altlasten rein holen will.

                    Ich habe von fast allen Adaptern die Config exportiert. Gibt es so was ähnliches auch bei alias?

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

                    @Elektroniker86 sagte: Gibt es so was ähnliches auch bei alias?

                    Du kannst den Objektbaum unter "alias.0" als JSON-Datei speichern und in einer neuen Installation wieder hinzufügen.

                    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
                    • Elektroniker86E Online
                      Elektroniker86E Online
                      Elektroniker86
                      schrieb am zuletzt editiert von
                      #10

                      Das hört sich gut an, aber ich finde die Funktion nicht unter Objekte. Wahrscheinlich geht das nur per SSH?

                      paul53P 1 Antwort Letzte Antwort
                      0
                      • Elektroniker86E Elektroniker86

                        Das hört sich gut an, aber ich finde die Funktion nicht unter Objekte. Wahrscheinlich geht das nur per SSH?

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

                        @Elektroniker86 sagte: aber ich finde die Funktion nicht unter Objekte.

                        Pfeil runter ganz rechts.

                        Export_Import.jpg

                        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

                        Elektroniker86E 1 Antwort Letzte Antwort
                        0
                        • paul53P paul53

                          @Elektroniker86 sagte: aber ich finde die Funktion nicht unter Objekte.

                          Pfeil runter ganz rechts.

                          Export_Import.jpg

                          Elektroniker86E Online
                          Elektroniker86E Online
                          Elektroniker86
                          schrieb am zuletzt editiert von
                          #12

                          @paul53 sagte in S7 Adapter LOGO Datenpunkte zusammenführen button + state:

                          Pfeil runter ganz rechts.

                          Ups, peinlich sorry, habe vor lauter Wald die Bäume nicht gesehen.
                          Klasse funktioniert.
                          Das ist eine super Lösung. Vielen lieben Dank dafür!

                          Ich wünsche ein frohes Fest! <3

                          1 Antwort Letzte Antwort
                          0
                          • paul53P paul53

                            @Elektroniker86 sagte: Meinst du den Adapter Alias Manager?

                            Nein, ich meinte Alias unter "alias.0", die der js-controller verwaltet.
                            Erstellung eines Alias:

                            • im Tab "Objekte" den Status-DP "s7.0.DBs.DB1.Q13" selektieren
                            • Rechte Maustaste über der ID und "Alias erstellen" auswählen
                            • im öffnenden Fenster die Alias-ID und den Namen anpassen, die Rolle auf "switch" ändern und "schreiben" erlauben
                            • "Konvertierungsfunktionen benutzen" anhaken
                            • Schreibkonvertierung eintragen: val ? true : true

                            Anschließend noch per "Unterschiedliche IDs für Lesen und Schreiben" die Button-ID "s7.0.DBs.DB1.NI13" für Schreiben eintragen.

                            Elektroniker86E Online
                            Elektroniker86E Online
                            Elektroniker86
                            schrieb am zuletzt editiert von
                            #13

                            @paul53

                            Hi, ist es auch möglich die Datenpunkte der LOGO Schaltzeiten in ein alias, schon umgerechnet abzubilden? Dafür hatte ich auch für jede Schaltzeit ein eigens Script:

                            createState("LOGO.Schaltuhren.Weihnachtsbeleuchtung_außen_ASZ1", 0);
                            
                            const idLogo = 's7.4.DBs.DB1.B024_Ausschaltz_1';
                            const idVis = 'javascript.0.LOGO.Schaltuhren.Weihnachtsbeleuchtung_außen_ASZ1';
                            
                            on(idLogo, function(dp) {
                            setStateDelayed(idVis, logotime2str(dp.state.val), 5000);
                            });
                            
                            on(idVis, function(dp) {
                            setState(idLogo, str2logotime(dp.state.val));
                            });'s7.4.DBs.DB1.B024_Ausschaltz_1'
                            

                            Dann gäbe es da noch die Temperaturen...

                            const idS7Temp = 's7.5.DBs.DB1.AM03'; // Datenpunkt-ID vom S7 eingeben !
                            const idTemp = 'LOGO.Temperaturen.Außentemperatur Westen2'; // neuer Datenpunkt unter javascript.0
                             
                            createState(idTemp, 0, {type: 'number', unit: '°C', role: 'value.temperature'}); // Neuen Datenpunkt erzeugen
                             
                            on(idS7Temp, function(dp) { // Wertänderung
                               setState(idTemp, dp.state.val / 10, true);
                            });
                             
                            // Skriptstart
                            setState(idTemp, getState(idS7Temp).val / 10, true);
                            
                              
                            function S7Celsius(val) {
                               if(val > 32768) val = val - 65536;
                               setState(idTemp, val / 10, true);
                            }
                             
                            on(idS7Temp, function(dp) { // Wertänderung
                               S7Celsius(dp.state.val);
                            });
                             
                            // Skriptstart
                            S7Celsius(getState(idS7Temp).val);
                            

                            Lassen die sich auch über den alias lösen?

                            Dann könnte ich ja alle scripte rausschmeißen?

                            Vielen Dank vorab!

                            paul53P 1 Antwort Letzte Antwort
                            0
                            • Elektroniker86E Elektroniker86

                              @paul53

                              Hi, ist es auch möglich die Datenpunkte der LOGO Schaltzeiten in ein alias, schon umgerechnet abzubilden? Dafür hatte ich auch für jede Schaltzeit ein eigens Script:

                              createState("LOGO.Schaltuhren.Weihnachtsbeleuchtung_außen_ASZ1", 0);
                              
                              const idLogo = 's7.4.DBs.DB1.B024_Ausschaltz_1';
                              const idVis = 'javascript.0.LOGO.Schaltuhren.Weihnachtsbeleuchtung_außen_ASZ1';
                              
                              on(idLogo, function(dp) {
                              setStateDelayed(idVis, logotime2str(dp.state.val), 5000);
                              });
                              
                              on(idVis, function(dp) {
                              setState(idLogo, str2logotime(dp.state.val));
                              });'s7.4.DBs.DB1.B024_Ausschaltz_1'
                              

                              Dann gäbe es da noch die Temperaturen...

                              const idS7Temp = 's7.5.DBs.DB1.AM03'; // Datenpunkt-ID vom S7 eingeben !
                              const idTemp = 'LOGO.Temperaturen.Außentemperatur Westen2'; // neuer Datenpunkt unter javascript.0
                               
                              createState(idTemp, 0, {type: 'number', unit: '°C', role: 'value.temperature'}); // Neuen Datenpunkt erzeugen
                               
                              on(idS7Temp, function(dp) { // Wertänderung
                                 setState(idTemp, dp.state.val / 10, true);
                              });
                               
                              // Skriptstart
                              setState(idTemp, getState(idS7Temp).val / 10, true);
                              
                                
                              function S7Celsius(val) {
                                 if(val > 32768) val = val - 65536;
                                 setState(idTemp, val / 10, true);
                              }
                               
                              on(idS7Temp, function(dp) { // Wertänderung
                                 S7Celsius(dp.state.val);
                              });
                               
                              // Skriptstart
                              S7Celsius(getState(idS7Temp).val);
                              

                              Lassen die sich auch über den alias lösen?

                              Dann könnte ich ja alle scripte rausschmeißen?

                              Vielen Dank vorab!

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

                              @Elektroniker86 sagte: LOGO Schaltzeiten in ein alias, schon umgerechnet abzubilden?

                              Die beiden Konvertierungsfunktionen sind sicherlich komplexer? Ich weiß nicht, ob sie sich auch per Alias-Konvertierung abbilden lassen.

                              @Elektroniker86 sagte in S7 Adapter LOGO Datenpunkte zusammenführen button + state:

                              noch die Temperaturen...

                              Lesekonvertierung:

                              val > 32768 ? (val - 65536) / 10 : val / 10
                              

                              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

                              Elektroniker86E 1 Antwort Letzte Antwort
                              1
                              • paul53P paul53

                                @Elektroniker86 sagte: LOGO Schaltzeiten in ein alias, schon umgerechnet abzubilden?

                                Die beiden Konvertierungsfunktionen sind sicherlich komplexer? Ich weiß nicht, ob sie sich auch per Alias-Konvertierung abbilden lassen.

                                @Elektroniker86 sagte in S7 Adapter LOGO Datenpunkte zusammenführen button + state:

                                noch die Temperaturen...

                                Lesekonvertierung:

                                val > 32768 ? (val - 65536) / 10 : val / 10
                                
                                Elektroniker86E Online
                                Elektroniker86E Online
                                Elektroniker86
                                schrieb zuletzt editiert von
                                #15

                                @paul53 sagte in S7 Adapter LOGO Datenpunkte zusammenführen button + state:

                                Die beiden Konvertierungsfunktionen sind sicherlich komplexer?

                                Da fällt mir ein es gab noch ein Script in Global wo glaube ich, die Umrechnung beinhaltet:

                                /* -- do not edit following lines - START --
                                {
                                  "debug": false,
                                  "verbose": false
                                }
                                -- do not edit previous lines - END --*/
                                function logotime2str(time) {
                                   var x = parseInt(time, 10).toString(16);
                                   if(parseInt(x) < 10) return '00:0' + x;
                                   if(parseInt(x) < 100) return '00:' + x;
                                   if(parseInt(x) < 1000) return '0' + 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);
                                }
                                

                                Hilft das vielleicht?

                                Die Umrechnung der Temperaturen funktioniert hervorragend! Danke dafür!

                                paul53P 1 Antwort Letzte Antwort
                                0
                                • Elektroniker86E Elektroniker86

                                  @paul53 sagte in S7 Adapter LOGO Datenpunkte zusammenführen button + state:

                                  Die beiden Konvertierungsfunktionen sind sicherlich komplexer?

                                  Da fällt mir ein es gab noch ein Script in Global wo glaube ich, die Umrechnung beinhaltet:

                                  /* -- do not edit following lines - START --
                                  {
                                    "debug": false,
                                    "verbose": false
                                  }
                                  -- do not edit previous lines - END --*/
                                  function logotime2str(time) {
                                     var x = parseInt(time, 10).toString(16);
                                     if(parseInt(x) < 10) return '00:0' + x;
                                     if(parseInt(x) < 100) return '00:' + x;
                                     if(parseInt(x) < 1000) return '0' + 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);
                                  }
                                  

                                  Hilft das vielleicht?

                                  Die Umrechnung der Temperaturen funktioniert hervorragend! Danke dafür!

                                  paul53P Offline
                                  paul53P Offline
                                  paul53
                                  schrieb zuletzt editiert von
                                  #16

                                  @Elektroniker86 sagte: Hilft das vielleicht?

                                  Das ist mir tatsächlich zu komplex für eine Alias-Konvertierung.

                                  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

                                  Elektroniker86E 1 Antwort Letzte Antwort
                                  1
                                  • paul53P paul53

                                    @Elektroniker86 sagte: Hilft das vielleicht?

                                    Das ist mir tatsächlich zu komplex für eine Alias-Konvertierung.

                                    Elektroniker86E Online
                                    Elektroniker86E Online
                                    Elektroniker86
                                    schrieb zuletzt editiert von
                                    #17

                                    @paul53 sagte in S7 Adapter LOGO Datenpunkte zusammenführen button + state:

                                    Das ist mir tatsächlich zu komplex für eine Alias-Konvertierung.

                                    Du, gar kein Problem, hast mir mega viel weiter geholfen.
                                    Nochmals vielen Dank an dieser Stelle!

                                    Wünsche noch weiterhin schöne Feiertage und ein frohes neues Jahr!

                                    1 Antwort Letzte Antwort
                                    0
                                    • Elektroniker86E Elektroniker86

                                      Hi,
                                      damals, 2019 hatte ich schon mal ein Thema erstellt, ist mittlerweile geschlossen:

                                      https://forum.iobroker.net/topic/26024/datenpunkte-zusammenführen-switch-state/18?_=1766396252103

                                      Es ging darum, dass die LOGO für eine Leuchte z.B. ein Datenpunkt (button) zum Schalten und ein Datenpunkt für den Status der Leuchte hat.

                                      Da das sonst immer schlecht in Vis und co einzubinden ist,

                                      deshalb das Script:

                                      // IDs anpassen
                                      const idButton = 's7.0.DBs.DB1.NI13';
                                      const idActor = 's7.0.DBs.DB1.Q13';
                                       
                                      const js = 'system.adapter.javascript.' + instance;
                                      const common = getObject(idButton).common;
                                      const idVis = 'LOGO.s7-0.' + common.name.replace(' ', '_');
                                       
                                      common.read = true;
                                      createState(idVis, getState(idActor).val, common);
                                       
                                      on({id: 'javascript.0.' + idVis, change: 'ne', fromNe: js}, function() {
                                          setState(idButton, true);
                                      });
                                       
                                      on(idActor, function(dp) {
                                          setState(idVis, dp.state.val, true);
                                      });
                                      
                                      

                                      Das Script hat die Datenpunkte zusammengeführt und einen neuen erstellt den ich dann problemlos einbinden konnte.

                                      Die neuen Datenpunkte wurden dann in javascript.0.LOGO.s7-0
                                      (je nach s7 Instanz s7-x) erstellt.

                                      Jetzt bin ich dabei meine ioBroker Installation ein bisschen aufzuräumen und habe schon einige manuell erzeugte Datenpunkte in den Ordner 0_userdata.0 verschoben.
                                      Da man ja in Zukunft nur noch da eigene Datenpunkte ablegen sollte.

                                      In den Blocklys war das kein Problem, aber bei dem Script von damals reicht es nicht javascript.0 durch 0_userdata.0 auszutauschen.

                                      Lange Rede kurzer Sinn, wie muss ich das Script bearbeiten damit der Datenpunkt entsprechend im neuen Verzeichnis erstellt wird?

                                      Oder bin ich nicht mehr up to Date und es gibt mittlerweile eine neue/andere Lösung für das "LOGO" Problem? Vielleicht ein Adapter oder in Vis?

                                      Vielen Dank im voraus!

                                      paul53P Offline
                                      paul53P Offline
                                      paul53
                                      schrieb zuletzt editiert von paul53
                                      #18

                                      @Elektroniker86 sagte: Datenpunkte in den Ordner 0_userdata.0 verschoben.

                                      Wenn du die Zeitschaltuhr-Skripte an "0_userdata.0" anpassen möchtest, dann besser so:

                                      const idLogo = 's7.4.DBs.DB1.B024_Ausschaltz_1';
                                      const Name = 'Weihnachtsbeleuchtung außen ASZ1';
                                      
                                      const idVis = '0_userdata.0.LOGO.Schaltuhren.' + Name.replaceAll(' ', '_');
                                      
                                      createState(idVis, '0:00', {type: 'string', name: Name, role: 'text', read: true, write: true});
                                      
                                      on(idLogo, function(dp) {
                                          if(dp.state.c != scriptName) setState(idVis, logotime2str(dp.state.val), true);
                                      });
                                       
                                      on(idVis, function(dp) {
                                          if(dp.state.c != scriptName) 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

                                      Elektroniker86E 1 Antwort Letzte Antwort
                                      1
                                      • paul53P paul53

                                        @Elektroniker86 sagte: Datenpunkte in den Ordner 0_userdata.0 verschoben.

                                        Wenn du die Zeitschaltuhr-Skripte an "0_userdata.0" anpassen möchtest, dann besser so:

                                        const idLogo = 's7.4.DBs.DB1.B024_Ausschaltz_1';
                                        const Name = 'Weihnachtsbeleuchtung außen ASZ1';
                                        
                                        const idVis = '0_userdata.0.LOGO.Schaltuhren.' + Name.replaceAll(' ', '_');
                                        
                                        createState(idVis, '0:00', {type: 'string', name: Name, role: 'text', read: true, write: true});
                                        
                                        on(idLogo, function(dp) {
                                            if(dp.state.c != scriptName) setState(idVis, logotime2str(dp.state.val), true);
                                        });
                                         
                                        on(idVis, function(dp) {
                                            if(dp.state.c != scriptName) setState(idLogo, str2logotime(dp.state.val));
                                        });
                                        
                                        Elektroniker86E Online
                                        Elektroniker86E Online
                                        Elektroniker86
                                        schrieb zuletzt editiert von
                                        #19

                                        @paul53 sagte in S7 Adapter LOGO Datenpunkte zusammenführen button + state:

                                        Wenn du die Zeitschaltuhr-Skripte an "0_userdata.0" anpassen möchtest

                                        Vielen Dank ! Das steht tatsächlich auch noch an.

                                        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

                                        639

                                        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