Shelly Wall Display

Hi @dmitry.rozovik

I've installed the Wall Display thermostat beta firmware. Any chance you could add the thermostat target temperature to the driver? There does not seem to be any change to this message when the thermostat turns on or off (it turns the relay on/.off). Thanks

Getting the following

1 Like

Sure

Let me check/investigate corresponding API changes (official documentation)

Log shows new events which is good. It literally says "there is something new I don't know anything about". This will help.

Edit:
So documentation unfortunately is not yet updated with the new component that logs clearly shows: 'thermostat'

Your screen provides event format. Could you additionaly take log after pressing parent "Refresh"? Or after disconnect/connect procedure. At that point a global status query is made that presumably now should contain thermostat state (I expect also to see new related warning with full message)

If it would be possible to somehow identify commands, a full featured child termostat device would be possible to spawn and use.

This what we need?
dev:93612023-11-10 12:30:00.033info(Shelly Wall Display illuminance sensor 1) parseShellyIlluminanceSensorStatus [illumination:bright, id:0, lux:720]

dev:93612023-11-10 12:29:32.231warnUnknown NotifyStatus thermostat:0={id=0, enable=true, target_C=30, current_C=20.5, output=true, schedules={enable=false}}

dev:93612023-11-10 12:29:32.228warnUnknown NotifyStatus awaiting_auth_code=false

dev:93612023-11-10 12:29:32.225infoparseShellyWifiStatus [sta_ip:192.168.199.27, status:got ip, mac:00:08:22:48:20:BB, ssid:BeanBag, rssi:-40, netmask:255.255.255.0, gw:192.168.199.254, nameserver:192.168.199.1]

dev:93612023-11-10 12:29:32.223infoConfiguration changed 27

dev:93612023-11-10 12:29:32.221info(Shelly Wall Display input 1) parseShellyCommonStatus [id:0, state:false]

dev:93612023-11-10 12:29:32.218info(Shelly Wall Display input 1) Input state false

dev:93612023-11-10 12:29:32.198info(Shelly Wall Display input 1) parseShellyInputStatus [id:0, state:false]

dev:93612023-11-10 12:29:32.194info(Shelly Wall Display switch 1) parseShellyCommonStatus [id:0, output:true, source:Auto power on (restore_last)]

dev:93612023-11-10 12:29:32.176info(Shelly Wall Display switch 1) parseShellySwitchStatus [id:0, output:true, source:Auto power on (restore_last)]

dev:93612023-11-10 12:29:32.174info(Shelly Wall Display illuminance sensor 1) Illumination bright

dev:93612023-11-10 12:29:32.171info(Shelly Wall Display illuminance sensor 1) Illuminance 550lx

dev:93612023-11-10 12:29:32.142info(Shelly Wall Display illuminance sensor 1) parseShellyIlluminanceSensorStatus [id:0, lux:550, illumination:bright]

dev:93612023-11-10 12:29:32.138info(Shelly Wall Display humidity sensor 1) Humidity 47.6%

dev:93612023-11-10 12:29:32.118info(Shelly Wall Display humidity sensor 1) parseShellyHumiditySensorStatus [id:0, rh:47.6]

dev:93612023-11-10 12:29:32.114info(Shelly Wall Display temperature sensor 1) Temperature 20.5°C

dev:93612023-11-10 12:29:32.085info(Shelly Wall Display temperature sensor 1) parseShellyTemperatureSensorStatus [id:0, tC:20.5, tF:68.9]

dev:93612023-11-10 12:29:32.080infoparseShellyCloudStatus [connected:false]

dev:93612023-11-10 12:29:32.077debugHTTP Async Response: [id:102] ::: [ble:[:], cloud:[connected:false], mqtt:[connected:false], temperature:0:[id:0, tC:20.5, tF:68.9], humidity:0:[id:0, rh:47.6], illuminance:0:[id:0, lux:550, illumination:bright], switch:0:[id:0, output:true, source:Auto power on (restore_last)], input:0:[id:0, state:false], sys:[id:ShellyWallDisplay-0008224820BB, mac:0008224820BB, model:SAWD-0A1XX10EU1, gen:2, fw_id:20231109-213810/1.2.5-4d18b7a9-beta-thermostat-rc1, ver:1.2.5-beta-thermostat-rc1, app:WallDisplay, auth_en:false, uptime:122, app_uptime:48, discoverable:false, cfg_rev:27, schedule_rev:0, webhook_rev:0, platform:vXD10000K, available_updates:[stable:[version:1.2.4, build_id:20231030-174732/1.2.4-a015a80e, build_number:20231030174732, commit:a015a80e, beta:, v_inc_i:66052, v_inc_b:010204, url:https://updates.shelly.cloud/fw/WallDisplay/7a2b7b9b5192297e88d14bc6d87d4056b326d0dd7cdf1599054ead235ba92785], beta:[version:1.2.5, build_id:20231109-213810/1.2.5-4d18b7a9-beta-thermostat-rc1, build_number:20231109213810, commit:4d18b7a9, beta:beta-thermostat-rc1, v_inc_i:66053, v_inc_b:010205, url:https://updates.shelly.cloud/fw/WallDisplay/98a8675f381c1419817d5b69b6c240053bf7e106474caee4b19d022c06890b46]], restart_required:false, unixtime:1699619372], wifi:[sta_ip:192.168.199.27, status:got ip, mac:00:08:22:48:20:BB, ssid:BeanBag, rssi:-40, netmask:255.255.255.0, gw:192.168.199.254, nameserver:192.168.199.1], awaiting_auth_code:false, thermostat:0:[id:0, enable:true, target_C:30, current_C:20.5, output:true, schedules:[enable:false]]]

dev:93612023-11-10 12:29:31.996info(Shelly Wall Display humidity sensor 1) Humidity 47.6%

dev:93612023-11-10 12:29:31.975info(Shelly Wall Display humidity sensor 1) parseShellyHumiditySensorStatus [rh:47.6, id:0]

dev:93612023-11-10 12:29:31.951infoHTTP Async query: Shelly.GetStatus([:])

dev:93612023-11-10 12:29:31.941infoWS query: {"params":{id:0}, "id":60, "method":"Humidity.GetStatus", "src":"hub"}

dev:93612023-11-10 12:29:31.938infoReceived 'refresh' request from Shelly Wall Display humidity sensor 1 (EP1)

dev:93612023-11-10 12:29:31.890infoReconnecting in 30 seconds.

dev:93612023-11-10 12:29:31.887infoDevice closed conection.

1 Like

Partially yes.

I started to populate driver code with related routines.

Reacting to the device state will be fine.
Controlling might be not that easy.

I added commands trying to guess how they would be named based on other components naming conventions. So it will be sort of a guess game without proper documentation)

1 Like

So driver is updated. Experimental thermostat support is added as a new child device.
Partial child device reconfiguration is there. In 'update' mode child devices are not being deleted (only added if needed)

I assume thermostat has (or will have) some sort of energy metering. Right now drivers doesn't takes it into account (as I have no info on how to do that atm). If this information is passed trough a different component that is already implemented then it will just work.

Hubitat won't import the bundle - maybe because bundle was previously imported?

I tried to install the driver from the bundle - but I get ->
No signature of method: Script1.inputLogLevel() is applicable for argument types: () values: [] on line 104

??

it actually should
Bundle may be imported over and over again

Just tried directly from https://bitbucket.org/ge4d/hubitat-code/raw/6ffeb952eecab044f9ac55b12696903f0ef7bd30/Bundles/Bundle1.zip and everything went good.

If you happen to delete bundle by hand before installing/updating its parts (old) might remain for active devices. I'm not sure how this case is handled. It might require to delete all the bundle remainings by hand.

If bundle is imported over the older version it should simply replace everithing.

I just tried it again and worked without error.

I don't see thermostat as a new child device.

Getting the following
dev:93612023-11-10 16:55:26.637warn+55829-04-20T04:59:36+01:00[Europe/Dublin]: Unknown NotifyEvent event [component:Shelly, restart_required:false, cfg_rev:27, id:0, event:config_changed, ts:1699635326376]

dev:93612023-11-10 16:54:34.512errorjava.lang.NumberFormatException: For input string: "ShellyWallDisplay-0008224820BB1" on line 1581 (method parseAsyncResponse)

dev:93612023-11-10 16:54:31.718errorconfigure: No signature of method: java.lang.NumberFormatException.getResponse() is applicable for argument types: () values: [] Possible solutions: getMessage(). Can't configure child devices. Please, re-try.

The first error message is what happens if I change the target temperature on the device. The other 2 happen when I hit Configure (both Update and Clean)

Updated.

This error should be fixed now.

Not yet....
dev:93612023-11-10 18:32:14.551errorjava.lang.NumberFormatException: For input string: "ShellyWallDisplay-0008224820BB1" on line 1581 (method parseAsyncResponse)

dev:93612023-11-10 18:32:11.267errorconfigure: No signature of method: java.lang.NumberFormatException.getResponse() is applicable for argument types: () values: [] Possible solutions: getMessage(). Can't configure child devices. Please, re-try.

dev:93612023-11-10 18:32:10.049warnReconnecting in 30 seconds.

dev:93612023-11-10 18:32:10.036warnConnection failure: null

Hmm.. The error line 1581 is not relevant to the fixed version. Old link is pointing to the specific version. Here is the new one.

https://bitbucket.org/ge4d/hubitat-code/raw/bcc90db6e5696f811b07e69f5c3597cd143c5708/Bundles/Bundle1.zip

Link is changing with each bundle update.

Yay !!! WE have a thermostat.

A lot of logging going on...

When changing Target Temp on device we get.....
dev:93612023-11-10 19:47:53.697warn+55829-08-17T23:05:22+01:00[Europe/Dublin]: Unknown NotifyEvent event [component:Shelly, restart_required:false, cfg_rev:27, id:0, event:config_changed, ts:1699645673122]

As you anticipated SetHeatingSetpoint does nothing yet.

1 Like

Is the temperature sensor of the wall device more accurate with the new firmware?

Is this still the case?

I tried to guess command. As there is no error the command seem to be correct. Yet arguments might be wrong.

There is an option now "clean" or "update".
"clean" recreates from scratch
"update" adds devices only (no removal yet is implemented but planned)

1 Like

The heating is off here in my office, regular thermostat on the wall says 14C, TRV on the rad agrees at 14.2C while the Shelly says 16.2C - so not very accurate yet.

1 Like

if the temperature difference is consistent you can probably change the Temperature Calibration +plus x° or minus x°. If the temperature is changing with the temperature of the device (brightness of the screen for example) , this is an other issue....

Does driver shows operating state correctly?

I though of "output" state like a relay state. So linked as a state that is either heating or idle. But without device on hand I just can't validate my assumptions :upside_down_face:

ThermostatMode remains on heat constantly.
ThermostatOperatingState goes from idle to heating correctly.

When heat is called for the relay in the device turns on (with very audible click) and the child switch turns on at the same time. And of couse when the device goes to idle they switch off correctly.

1 Like

That's cool)

One more question: Does thermostat 'Refresh' function works? (to check "Thermostat.GetStatus" command assumption)

I have local change to handle before mentioned unknown notification. So basically a control part remains to fix. I'll try to ask Shelly support for any documentation draft for the thermostat component.
Shelly Wall display 1.2.4 - released! & NEWS - Shelly PLUS 1 (2) - Official Shelly Technical Support Forum (DACH) (shelly-support.eu)

Does device provides some sort of consumption metering in thermostat mode? (I assume it might go trough switch component if child switch is fully live)