Ankündigung

Einklappen
Keine Ankündigung bisher.

ets5 programming language

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    ets5 programming language

    I am new to KNX, I have ETS5 and programmed my home with it. The programming through ETS5 is fine for the non-programmer but I am wondering if there is a way to make the process more streamlined - programmable. After a number of switches/dimmers/buttons making a logical change becomes cumbersome: for example lets change the layout of all buttons to some different layout and make the dimming happen through a single button instead of two. Or move the display of all temperature and temperature shifts down a row. Is the a way to make some kind of templates in ETS5 that can be reused? Or even better a way to write the ETS5 configuration in programming language that will later generate the configuration?

    If there is not, I see that knxproj is a bunch of xml files with some signature on top. So in theory one can create such a language of rules, generate the xml files necessary for ETS5, sign them and import into ETS5. Is the signrature/hashing operation for ETS5 documented somewhere?

    #2
    It's not what you are looking for, but at least you can select multiple items in ETS and batch-configure them (if they use the same application).
    And there are (free and non-free) Plugins for this depending on manufacturer.

    Kommentar


      #3
      The signature algorithm is not documented. For performance reasons ETS does not completely validate the data in the XML file on import (which would take a lot of time) if the knxproj can prove that it has been exported by a trusted source (i.e. a known-good ETS version).

      There is an ETS App "Project data exchange" allowing to export and import ETS project data as XML [disclaimer: this app is produced by my company].

      Kommentar


        #4
        Hi, there

        I wondered also how to automate some ETS routines and found ETS APP SDK for .NET platform.
        SDK with examples and documentation are free to use, still, there is not legal way to run your app in SDK.

        My idea was to make ETS run js scripts with jint engine.
        And js can get access to devices, parameters (change button layouts or led colors. Working with device params is "hacky" in some way - you need to find param by it's name, not some fixed id ). Create and link group addresses.

        https://box.bobalus.tech/cloud/index...8Yb23xqtKNQR7C

        I left source code here.

        There is no development anymore since in order to publish this app to app store one should be member of KNX association, have appropriate developer license, purchase access to app validation tool, pay for every validation and all of that costs money...

        Couple of examples:

        Code:
        // for every comm object of selected device create GA and make a link
        clear();
        setStrictMode(false);
        let device = "1.1.1";
        let range = "1/1";
        let i = 0;
        
        let info = getDeviceInfo(device);
        writeln(JSON.stringify(info, null, 2));
        
        
        info.communication_objects.forEach(function(co) {
          let addr = range + i;
          createGroupAddress(addr, co.text);
          link(device, co.number, addr);
        });
        Code:
        // now a quick way to swap communication objects -
        // for example you need to swap two push buttons on device
        
        clear();
        
        function swapCo(device, num1, num2) {
          let info = getDeviceInfo(device);
          writeln(info, 1);
          let co1 = null;
          let co2 = null;
        
          info.communication_objects.forEach(function(co) {
            if (co.number === num1)
              co1 = co;
            else if (co.number === num2)
              co2 = co;
          });
        
          if (co1 === null || co2 === null)
            return writeln("some of comm objects not found");
        
          co1.links.forEach(function(l) {
            unlink(device, co1.number, l);
            link(device, co2.number, l);
          });
          co2.links.forEach(function(l) {
            unlink(device, co2.number, l);
            link(device, co1.number, l);
          });
        };
        
        swapCo("1.1.42", 17, 122);
        swapCo("1.1.42", 27, 132);

        Kommentar

        Lädt...
        X