This article is out of date. ETS Inside is no longer being developed or distributed by the KNX Association. This means that there is currently no official way to parameterize a KNX system under Linux.
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).
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:
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.
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.
To make it short, the application requested a status update via WebChannel once a second. While the Javascript kept active, the event loop of QApplication was blocked, so that the WebChannel events were put into a queue. (The reason for the block was the change to a new VT by the light-locker lock screen - I was able emulate it by manually switching to VT1 after the application has been started). When the application got active again, Qt started to empty the queue before any new events were processed.
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!
Usage
// Scroll with default optionsvar target = document.getElementById('target-element');nestedScroll(target);// Scroll with additional parametersvar options ={// See section optionsanimationMethod:'easeInOut',animationTimeout:500,force:true,align:'auto',withCssMargins:true,marginTop:10,marginLeft:10,marginRight:10,marginBottom:10};nestedScroll(target, options);// Define a global option
nestesScroll.defaultOptions['animationMethod']='easeIn';
Disclamer: This is tested on Vivaldi 1.10, Firefox 52 and Chromium 59. Edge should also work, but I had some problems using the example file with IE11. Maybe I'll fix this later, or somebody as does ;-)
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.
Important: These pictures where taken on a cloned sensor bar from ebay since I don't have a screwdriver for the Tri-Wings Nintendo used on the original one. The original sensor bar has five LEDs on each side which means that you would have to short-circuit two of them when following this guide. Otherwise you would need a power source with a minimum current of 7.5V.
When measured at the connector on the Wii's backside the multimeter shows a current of 12V. But measured under load directly at the sensor bar the current goes down to 5.5V. I think this is due to the relative long cable combined with extremly thin wires, resulting in a relative high resistivity R0. However, the exact value doesn't matter since I will replace the cable anyway.
My sensor bar consists of two arrays of three LED, both having their own R1=24Ω resistors. I'm not sure what kind of infrared LED is used but some googling reveals that 940nm seems to be reasonable. Typical values for these LEDs are a Vf=1.5V and If=50mA, so we have 150mA on each side and a total of 300mA a total of 100mA (thanks @ Daniel for correcting this error). The minimal required current is 3*1.5V=4.5V, which is lower than the 5V specified for USB[1] (if your sensor bar has more LEDs on each side you should bridge or remove all but three on each side). Combined with a 10Ω resistor R1 on each side this should be fine.
The first step is to unsolder the existing cable. Use a desoldering pump to clean the holes on the board from the old solder. Now take an existing USB cable (for example an old MicroUSB cable), remove the Type B plug and strip the isolation. You only need the wires for +5V and Ground, which are typically colored in red and black, so you should remove the other ones. Strip the inner isolation, put some solder on the conductors and connect them with the ports on the board where the original cable was connected. The holes are labed on the back side of the board with + (red) and - (black). The + conductor is connected with the first LED on both sides, the - conductor with the resistors. If you inadvertently switched the poles, this is not fatal, since diodes only allow the current to pass in one direction - but the sensor bar will not work, of course.
Next, remove the original resistors and replace each of them with a 10Ω resistor.
Now you should take your multimeter and a camera (most digital cameras are able to see infrared light) and check if the sensor bar works. For personal security I suggest to use an external power bank for this test.
If you see the IR-LEDs on the camera screen you can connect the sensor bar to your TV and test them. Maybe you have to calibrate the sensivity of your Wiimotes since the brightness might have changed, especially when you were forced to bridge some LEDs.
[1]: Please note that USB uses a low-power mode per default that does not allow a device to pull more that 100mA from the port. If a device requires more power (up to 500mA) it has to ask the USB controller for permission. Since this requires active components we do not have please ensure that no other USB devices are connected to the same port, or usea dedicated USB power supply.