Use ETS Inside with a regular browser

ETS is a vendor independent software to configure KNX installations. However, it targets professional electricians and is quite expensive for a home user with 1000 EUR (without VAT).

Since 2017 the people of knx.org developed a new software called ETS Inside that only costs 160 EUR and targets private users. It has less features, but should be sufficient for most family house installations.

The software runs on a Windows 10 system with IIS, and is accessed with a special app that's also called ETS Inside (Windows, iOS, Android).

Unfortunately, the client cannot be accessed with a regular web browser:

"it is not possible to access an ETS Inside server using an internet browser (e.g Firefox, Chrome, Internet Explorer, Edge, etc.). In order to protect the project data, the web service communication between the client and the server needs to be encrypted and this is only done when using the ETS Inside clients mentioned above."

This means that the body of every POST request to the web service and the response is encrypted. When analysing the traffic with a network monitor you'll notice that ETS Inside seems to use a symetric encryption with a static key, because the encrypted content will be the same for each identical request. This means the key must be somewhere in the client apps and it should be possible to extract it¹.

However, this is not neccessary, because we can just disable the encryption! Go to the installation directory of the ETS Inside Server, which should be "C:\Progam Files\ETS Inside\Server", and open the file "Web.config" with a text editor. Look for the line that defines the EncryptionModul:

       <add name="EncryptionModule" type="Knx.Ets.Osprey.Iis.EncryptionModule, Knx.Ets.Osprey.Iis" />

and replace it with the following line:

       <add name="EncryptionModule" type="Knx.Ets.Osprey.Iis.AspConcurrencyModule, Knx.Ets.Osprey.Iis" />

AspConcurrencyModule does nothing relevant to the transmission, so it's basically a transparent no-op and eventually disabled the encryption. You can now open the client in a regular browser using the system's IP and Port 8081, for example http://127.0.0.1:8081. I've tested it with Vivaldi, Chrome, Firefox and Edge, and it worked in every browser.

The downsite is that the dedicated app cannot be used anymore because it expects encrypted contents. But if you really require this to work in both, App and Browser, just download this file and save it as "Default.htm" into "C:\Progam Files\ETS Inside\Client". This file is preferred by IIS over "index.html" and will remove the cipher key that has been initialized by the App before loading the real "index.html". Additionally, this adds a nice progress bar while waiting for the libraries to be loaded.

¹) Of course this means that the traffic between client and server isn't really secured. HTTPS would have been a better choice, also this is hard to implement [de] for a non-public domain in a private network.

QtWebEngine: Be careful when doing periodic WebChannel requests

Today I had to resolve a mysterious bug in a PyQt5 / QtWebEngine application. After the user unlocked his session, the application hangs for a while before resuming to normal activity. I've added an JavaScript interval that prints the current time once a second onto the console, but even through the timestamps were OK it seems that something had freezed the application while the screen was locked.

Introducing: Nested Scroll

Nested Scroll is a Javascript library that allows you to scroll selected elements into the viewport. You can define if the element should be aligned to the upper, lower, left or right boundary, or let Nested Scroll automatically decide depending on the shortest path.

Additionally, it is possible to define some animation methods, respect the element's border and margin and add extra margins on each side when scrolling.

But what makes this library unique compared to other libraries I've looked into is that it that it not only works with vertical but also with horizontal scrollbars, with nested scrollable DIVs and with fixed elements!

Mod: Wii Sensor Bar with USB power supply

My Wii Sensor Bar is built of two arrays of IR-LED that get its power from a proprietary port on the Wii / WiiU. Since I have a beamer as second screen with its own Sensor Bar, a Wii-to-HDMI-Adapter and a 4x2 HDMI switch I don't want to unplug and reconnect the sensor bar cable anymore when I switch from one screen to the other.

My idea: connect one sensor bar to the USB port of the TV, and the other one to the USB port of the beamer, so both will only be enabled when the specific screen is in use. Another reason to get power from an external power supply could be that you have both, a Wii and a WiiU.

So, I've tried to find out what current and amperage the sensor bar requires, and since I did not find any reliable information I've took a screwdriver, my multimeter and had a look at it.

Pages