RoadTest: Enroll to Review the Schurter Smart Connector DT31
Author: misaz
Creation date:
Evaluation Type: Electromechanical
Did you receive all parts the manufacturer stated would be included in the package?: True
What other parts do you consider comparable to this product?: SONOFF smart switch, NETIO PowerCable
What were the biggest problems encountered?: bug in iOS app which was later resolved by support and updated app was released.
Detailed Review:
I welcome you to my RoadTest review of Schurter DT31 Smart Connector. It is device which you can connect between electrical appliance and outlet. It gives you some additional feature like ability to digitally switch on or off appliance and measuring it’s power consumption. Appliance is switchable by manual pressing button on the device or remotely from cloud via API. There are several use cases for this device. You can use it basically as a power monitor, switch or you can implement more complex automation with it. There are also some use cases using power consumption measurements like predictive maintenance. Winter is coming and I personally will use it for switching Christmas lights. I will turn them on remotely over API when my Raspberry Pi detect low light condition and turn them off at midnight when all people went sleep and nobody is interested in it anymore. In this review I will cover all these features of the device and more. As part of review, I also tested device behaviour on network and tried some basic cybersecurity attacks against the device. Let’s see how the device withstand these tests.
Device come in beautiful strong paper box with markings, photo of shiny device, screenshot of mobile app, qr code, and few others. Labels are in English and German. German is the first, which indicates that device was designed in German-speaking country. It was designed in Europe in Switzerland. According to Farnell store it was also manufactured in Switzerland, but unit which I received has CoO CN label (CoO most probably means Country of Origin). On the side of box there is also sticker showing date code (2308 in my case), lot number and basic information like model number. It also shows RoHS compliance and VDE certification logos.
Inside the box there is just a device. It is inserted in a carton box in a way that it is visible under angle. Device cable is in bottom part of this box.
Device is white at bottom and sides. Top cover is black. Button is black and it is on the white side of the device. Button has integrated RGB LED. Manual states meaning of colours. Basically, Green means that switch is on and connected device is powered. Red means that switch is turned off. Orange means that switch is turned on and device is overloaded. Blue colour is used only when configuring device over Bluetooth.
I received device also with letter from Schurter, printed quick start guide and Swiss Knife as a bonus.
After unboxing the device, I powered it without any load. Device work and I was able to switch it manually and hear the clicks of internal relay. I tried to provision device to Schurter cloud which I had to register in. Registration seems to be easy, but I used automatically generated password from password manager, and it seems that some special characters cause issue to the portal, so I had to use “Forget password” feature right after registration and choose simpler (but still strong enough) password. Then it worked.
Provisioning is possible only from mobile application. I used iOS app and unluckily I stuck very soon. In step “Name your device” there were no continue button. I contacted Schurter support. They were unable to reproduce my issue, but after few weeks that released new version of app (1.2.1) which fixed the issue, and I was able to continue and try device with mobile app and cloud also. Here are some pictures from mobile app:
{gallery}Schurter iOS app |
---|
Welcome screen |
Introduction |
Device select |
Device Icon |
Device name |
Wi-Fi network |
Wi-Fi Password |
Device setup progress |
I also tried trigger some errors and see what happens. Errors are in the process handled well, but error description are very basic and generally do not give you hint what’s wrong. I also faced error when I am pretty sure that I did everything well, but after retrying I succeed. Basically, any error (for example, wrong Wi-Fi password) in the provisioning process results to following screen
Success is indicated by similar screen as shown on following screenshot. At successful end, the device reboots, leave Bluetooth mode (indicated by blue LED color), and connects to the cloud.
Before getting close look to web portal and mobile app, let’s discuss basic of device.
Schurter created two similar device which most probably shares their internals. They are referred under DS11 and DT31 codes. It seems that their flagship product is DS11 and DT31 is just a DS11 in different case. Difference between them is that DS11 is designed for embedding to the existing (or new) devices by OEMs while DT31 is variant designed for used directly by end users. Idea of DS11 is that you replace power supply connector (referred as IEC C14) by this device. It gives you user friendly button, RGB LED indicator and allows you to control device remotely from cloud. DS11 basically has input connector and there is no output connector, but instead there are terminals which you use for connecting cables of your appliance. DS11 is designed for mounting it the same body as the rest of appliance. DS11 is never intended to use outside the appliance because it provides mains voltage to the directly accessible terminals. DT31 in opposition has no terminals and output connector is IEC C13 (C14 and C13 are female/male). Otherwise, it seems that devices are the same and even in cloud administration DT31 is referred as “DS11 without Device Interface” (which is quite a funny label).
Web Dashboard is accessible on https://dashboard.schurtersmart.com/ which is different domain than rest of Schurter website. The initial screen shows devices. I currently have only one. It also offers quick option to change switch state (toggle on/off). Supported languages are English and German.
Now let’s see the device detail page:
After opening device page, it shows first graphs and basic controls. Switch button is in the header. In right pane there is option to turn on and off three outputs. I am not sure what does it mean, because device has no outputs. Maybe it is something related to embeddable DS11, but in case of DT31 these switches do nothing. Output 3 is permanently grayed and outputs 1 and 2 are switchable but does nothing. Under these switches there are “live metrics” block which show power, voltage and energy. Voltage and power are live and updated every few seconds. It seems that devices send data to cloud irregularly and after it senses high change of some value, it transmits it almost immediately. After powering appliance, first measurement came to cloud in few seconds. The energy meter is from the device, and it shows accumulated consumed energy since power on the device. This is quite interesting to me because every power failure causes this counter to zero. The screenshot above shown power consumption of my PC. In hibernation it is about 0,35W, when I work it is about 60W and when playing games, it is about 220W. Naturally you can imagine new use case for this device (monitoring device usage and type of it’s operation and measuring durations, of course).
Charts are interactive but in Web Administration it is not zoomable. In option menu you can select time period from three options and you can see plot of power (W), Current (A), Voltage (V) and Energy (Wh). Plots also indicates unavailability of device by grey dash line.
In the bottom part of page there is another widget showing status of switch (logical 0/1):
At the header there is options button (which I did not find when I was using it for first time) which hides some interesting options:
Edit options allows adding widgets to the page. I have only two available and both you have already seen. But it seems that Schurter has paid variant of this cloud panel which most probably contains some other boxes, but I was unable to test this (I will mention this with more details later).
When opening edit mode, except widgets you can also rename device and change it’s icon. Interesting it do not work (correctly), I think. I chosen first lightning icon, but after saving I have seen spaceship icon no matter of what I set. Also, after saving changes, I lost device name and in mobile app it shows “error_state_no_name” instead. However, changing icon and name work in mobile application.
The settings menu option contains information about device and allow reset device, ping device and reboot it, reset credentials or revoke assignment to your account (then you can provision it to different account). Device restart you can use for resetting energy meter (remotely).
Finally, there is “Mange Subscriptions” option in the menu. I have never seen anything about subscriptions on Schurter website and this first time I have seen them.
There are five plans which I summarized in following table. This table is valid as of 2023-10-21 and may change in time.
I tried to upgrade from free tier, but there are limitations which prevented me from doing so. At first you need to be VAT payer and provide VAT number. I am not registered VAT payer. I am not sure how many individuals can buy it. Most probably it is designed just for companies. The second issue is that I want to try it for one month, but the only option is to buy full year (in other words, paying 12x the price mentioned). I contacted their support using contact form on their website and nobody replied (at least before RoadTest deadline). I am not sure why do they in Access subscription store device data for shorter period than in case of Free subscription. I am also curios about “period of Validity” of Free subscription. It says one year. I am not sure (and did not find answer anywhere) what happens after one year? Do I lose access to my devices? It sounds ridiculous because cloud is the only way how to control them and access data from the device. Also interesting to me is Smart API which is excluded in Free and Interactive subscriptions. I am not sure what does it means because in Free Subscription API work. The same API is used in Web Administration. At last, I do not know what differences between Full and Basic feature sets are. I think that full feature set will offer more types of blocks in the Web Dashboard, but because I was unable to upgrade, I did not test it. Interestingly the price seems to be per account and not per device. If I understand it correctly, the price for highest subscription is about 4.5 USD per month no matter if you have 3 or 3000 devices. I am not sure what is Enterprise subscription is used for. It states that you can contact Schurter for custom terms but if the price is per account, I do not think there is need to worry about and just buy Professional which contains everything for just 4.5 USD. Maybe, if you need more then one year data retention.
iOS application shows the same information as web administration at the first look. It has two pages. One show device status and the other shows plots.
But in comparison to web dashboard, it does not show energy plot. In iOS app plots are zoomable but never show more than 24 hours.
There is also settings button which looks like settings menu in Web Dashboard but for some reason supports different functions. It is missing ping device and reset buttons. In opposition there is button for provisioning new device which is available only in mobile apps because requires Bluetooth communication with device. Additionally, there is “Check for updates” button on Firmware version entry. I am not sure why this button is not available in web dashboard. Maybe installing update Bluetooth communication with mobile when updating?
Most of the time I tested it with devices on my bench. I tested it with my PC and monitor. I ordered reduction from IEC C14 to standard (French) European outlets (which are used in my country also). This allowed me to monitor standard appliances which do not use IEC C13/14 connectors/plugs. The device is also useful for monitoring efficiency of power adaptors like power adapter for Raspberry Pi. Then I also tried measuring some higher power device. I used electric water kettle rated for 1850 – 2200 Wats. Let’s see how it behave.
DISCLAIMER: You should not use electric device full of water near electric sockets! Do not try experiment as shown on following photos. You do everything on your own risk and responsibility.
After I powered device up, I was monitoring what happens in iOS app. As I mentioned, when power changes too quickly device send info to cloud immediately, so response in iOS app was quite a fast. It shown growth to 680W and 2.9A current.
It continuously grown to 5.2A and 1.23 kW after few tens of seconds. Then it continuously growth and after about two minutes it was at 7.0A and 1.67 kW. 7.2A was the last the last current which I have seen before kettle completed water heating.
The problem is that numbers are wrong. Kettle is almost purely resistive device and it’s power consumption should be almost constant when running. But in mobile app it looked that consumption continuously grow. It grows from 680W to 1.67kW over about 3 minutes but actual power consumption should grow to 1.67kW immediately and stay almost constant until kettle turned off. The problem is also visible on plots on previous screenshots. Before test I had device disconnected since about midnight and as you can see at midnight the plots shown about zero. Kettle, I turned on at 10:54. Between midnight and 10:54 there is beautiful smooth curve. But it is totally misleading! Plot says that at 5:33 there were about 300W load connected to the device, but this is not true. At night it was disconnected and there were exactly 0W of load. Also, the indicator of “actual” current and power was misleading when the kettle was running. It seems that mobile application does averaging over 10 minutes intervals which caused growing effect of value over time because peaks and actual values was highly filtered by virtual averaging filter. But web dashboard shown at that time something completely different.
It shows that after I turned kettle on (at 10:54) power consumption immediately grown to over 2kW and stay at about 2kW until kettle turned off. It also shows dashed lines when the device was powered off and do not do beautiful (but misleading) curves in that time. Data from web dashboard seems to be more correct and data in the iOS app are very misleading. Pay attention to this! While actual consumption was over 2kW, mobile app never shown value higher than 1.67kW. At beginning it shown 680W which was most probably computed as average of 2kW with zeros (which was the only data before I turned kettle on).
Another test which I did is with 120V. Currently device specify that it works only with 240V. Device currently has German VDE certification, but American (UL) certification are undergoing. But device actually supports 110/120V also. In letter which I received from Schurter is written that device is designed for operating on 85 – 305 VAC and works with all common frequencies (letter says 47 – 63 Hz). In my country there are no 120V sockets, but because in recent years I received lot of American devices from Element14 I ordered active converter which change both voltage and frequency. As expected, device work with lover voltage also and in application it indicates correct voltage. Then I connected it to my 110V soldering station and it worked well as well as all measurements.
The important part of the system is API which allows you to control device remotely. While according to public information API should be excluded in Free Subscription plan, it seems that API is available here. The same API is also used by Web Dashboard. In fact, using Web Dashboard and logging requests in developer console is one of the easiest ways how to learn API. But API is well documented, so you can go in convenient way. Currently, there is no client library, but API is quite easy to understand, so you can easily go from scratch. I originally started developing API Client Library in C#, but because most of my use cases for device will be driven by Raspberry Pi, I downgraded to simpler solution with just using curl. API is JSON based and follow conventions of REST APIs. Data structures are easy to understand and parse.
For testing, I made project which I will use in winter with Christmas lights. I made bash script which using light sensor, checks for amount of ambient light and if it is low, it turns appliance on. Script is executed by cron every minute at afternoon and evening hours. This cause to light up lights when sun goes down. At midnight cron runs different script which just turn the switch off because in night very few people are outside and running Christmas light on is mostly waste of electricity. As you can see this task can be resolved just by scripting and no heave-weight programming language is needed. Here is the script for checking light and turning light on. It basically configures Vishay VEML3328 light sensor over I2C, reads light level and if the light is low enough, it turns the DT31 switch on. Communication with API is done in two steps. First step is authentication. You need to get temporary token for accessing API. Authentication is done using the same email and password which you use in Web Dashboard. Second query sets the state of the device. Here is the script:
#!/bin/bash # Schurter Cloud Params AUTH_EMAIL="type_your_email_here" AUTH_PASSWORD="type_your_password_here" DEVICE_ID="type_your_device_id_here" # Configure VEML3328 Light Sensor /usr/sbin/i2cset -y 1 0x10 0x00 0x1000 w sleep 1 # Read Light State (Clear channel) and convert HEX to DEC LIGHT=$(printf "%d\n" $(/usr/sbin/i2cget -y 1 0x10 0x04 w)) echo "Light: $LIGHT" if (( $LIGHT < 200 )); then echo "Turning light on" # Turn on Schurter DT31 switch RELAY_STATE=2 # RELAY_STATE: 1=off, 2=on AUTH_TOKEN=$(curl 'https://api.schurtersmart.com/v1/authenticate' \ -X POST \ -H "Authorization: Basic $(echo -n "$AUTH_EMAIL:$AUTH_PASSWORD" | base64)" \ 2>/dev/null | jq .token | tr -d "\"") curl "https://api.schurtersmart.com/v1/$DEVICE_ID/devicestate" \ -X PUT \ -H "Authorization: Bearer $AUTH_TOKEN" \ -H 'Content-Type: Application/json' \ --data-raw "{\"relay\":$RELAY_STATE, \"out1\":0, \"out2\":0, \"out3\":0}" \ &>/dev/null fi
The API can be used not only for controlling device, but also from receiving data. You can get actual data as well as historical data saved in cloud. Data you receive in JSON format and contains all you see in Web Dashboard (which use the same API). Data you get as JSON objects with timestamps. Resolution is 1 minute. There is no way how to get data with higher resolution. Data also contains some fields which are not present visualized in Web Dashboard like power factor and AC frequency. Interestingly when I used device with my PC, reported power factor was -0.56. Negative value is interesting. It seems that my PC has free energy generator built in. Good to know.
At last, there are some APIs which are not documented. For example, web dashboard for retrieving data calls measurementsInflux which is not documented, but I do not see any difference to documented measurements (without Influx suffix) service except the influx service contains switch state property also.
The device is connected to the Internet using Wi-Fi and act completely as blackbox. Supported networking protocols are very minimalistic. It works only on 2.4 GHz networks. I tried setup 5 GHz only Wi-Fi and device did not find it. Similarly, device do not work on IPv6 only networks and require IPv4 connectivity. At last, device can connect only to Password (PSK) and open networks. It does not support any kind of enterprise authentication. MAC address indicates that vendor of the Wi-Fi module/chip inside the device is Espressif, so something like ESP32 is inside. I think the most mentioned limitations are software based. Unless Schurter used some very old ESP, all features should be supported by chip and now it is just about integration on Schurter side, but currently device behave like very old IoT device and do not support any modern networking standard.
I connected device to my highly monitored Wi-Fi network and see what device does on the network. After powering up device request IP address using DHCP. There is no way to set static IP address, but it is not problem, because device is blackbox and you never need to communicate with the device directly. Only way to communicate with device is using cloud.
After getting IP address using DHCP, the most interesting part come in. The device send DNS query for IP address of www.bing.com domain. That is interesting and I really did not expect it. More interestingly it just request IP address and do not initiate connection to www.bing.com which it ask for.
The next is DNS query for pool.ntp.org and later request for time using NTP protocol.
After establishing time, the device sends DNS query asking for IP address of schurter-smartconnector.azure-devices.net. Of course, it is A query for IPv4 address. For some reason it asks for this IP address twice and after receiving second reply, it sends ICMP message saying that port for receiving reply is closed. It seems like some bug in DNS client. Maybe it is because device response is quite slow. Schurter in documentation mention that device use sleep modes for reducing power consumption and it’s networking operation is slow. For example, it tooks 2-8 seconds to reply to ICMP ping packets.
Domain name indicates that Schurter rely on Microsoft Azure services for their devices. More precisely azure-devices.net is related to Azure IoT Hub service.
After getting IP address of cloud service, device establish TLS connection to this server. It connects to port 8333 which indicates that device use MQTT over TLS for communication with cloud (Azure IoT Hub). In client hello packet device announce that it supports 49 cipher suites and supports 11 groups of elyptic curves. That is nice. Many cheapesh IoT devices supports just one or two, which are often very outdated, but TLS stack in the device seems to be modern. Again, there are lot of retransmissions. Most probably because of device slow response due to sleep modes or whatever else.
After establishing connection, most of communication is encrypted. But let’s go back to crazy DNS query for www.bing.com domain. Device repeats this query often but interval between queries is irregular. It seems that it does these requests right before transmitting data to cloud. www.bing.com is not the only domain which device request. It sometimes do DNS requests for www.google.com, www.yahoo.com, www.youtube.com, and www.wikipedia.org. Note that all domains begin with www. prefix while none of these sites actually use it. I am not sure about purpose of these requests. My only idea is that they are used for checking internet connectivity. Basically, if the device receive response, it feels that internet connectivity works and when it does not receive reply (or receive reject reply), it supposes temporary internet connectivity issue. But this detection of internet connectivity is completely useless nowadays because most SOHO devices as well as almost all enterprise networking devices uses DNS cache. Even the internet connectivity fails, they will provide cached DNS responses for these requests for about 24 hours until the cache entries get invalid. I think Schurter can just remove this useless detection and properly handle errors when communicating with cloud. It will be much more reliable.
I modified my network for responding fake IP address of Schurter cloud server. I forwarded communication to my own server with invalid certificate as well as valid, but wrongly signed certificate. In all cases device properly refused to connect to this fake server.
Let’s sum this section up. For me it is important that TLS stack seems to be secure and also it is very easy to isolate device using firewall because its communication is deterministic and uses only few networking protocols. While there are some issues it is completely possible to use device in a secure way. Slightly disappointed I am from lack for support advanced networking protocols like 5GHz Wi-Fi, IPv6 and WPA Enterprise.
Before closing the review and giving some score, let’s go back to begin and let’s return to embeddable version of this connector. Since DS11 version is used for OEMs, the end users of DS11 most probably will never see Schurter mobile app as well as any other Schurter stuff. Instead, they will see app from integrator of the connector. Schurter cloud allows OEMs to integrate device to their own systems and it is completely possible to rebrand whole Schurter solution to your own app and even make it slightly better. API basically allows implementing exactly the same as Schurter did in web dashboard and mobile apps. I still missing some feature which may be useful for OEMs. For example, now it is impossible to automatically provision device. Provisioning requires using Schurter mobile app and I did not find any way how to implement it on my own. If I make my own device with integrated DS11, I need to implement selection of Wi-Fi network and entering password in my branded mobile application but currently I did not find any documentation about Bluetooth API which should I need to implement in my app. At last, I originally expected that there is some possibility to adjust behaviour of button and RGB LED. But it is not. I thought that I will be able to set RGB colour and blink mode using API somehow and for example bind some cloud action to button presses, but there is nothing like this nowadays (or I did not find it).
My conclusion is positive. It is nice device. Hardware side is very well built. Device looks robust and safe. In comparison with Chinese cheap craps, it is properly certified by trustworthy authority. This is the most valuable part of the device, I think. Measurements seems accurate. I am slightly disappointed from iOS app. I had issues with it which Schurter resolved but still it show slightly misleading data, filters peaks and functions are limited in comparison with web dashboard. Web dashboard is well built and useful. Web dashboard also shows data better in comparison with iOS app. There is currently no way how to redeem more than 3 days of data except digging them manually using API. API is nice and easy to use. Subscription plans are not clear, so it is hard to judge. Device support only basic networking protocols and do not support any modern networking technologies (no 5 GHz networks, no IPv6, no WPA Enterprise, …).
Product Performed to Expectations: 5/5 because device generally satisfied my expectations for my use cases.
Specifications were sufficient to design with: 4/5 because datasheet do not specify lot of things like supported networking features and effective time resolution of measurements available in cloud (it is 1 minute).
Demo Software was of good quality: 5/5 because there is no demo software, but device is easy to use, API documentation is good, and requests triggered by dashboard can be used as a demo for API also.
Product was easy to use: 5/5 because it is user friendly and even API is very easy to use
Support materials were available: 4/5 because they were, but I still had to contact Schurter support and responses were slow. In case of some questions, I did not receive replies yet.
The price to performance ratio was good: 3/5 because device is expensive, there is vendor lock on Schurter cloud and cloud pricing is unclear.