I am busy migrating the house thermostats for room radiator heaters to Shelly TRV controls. To integrate into the system I need valve control over the TRV, which Shelly says it provides, but the implementation is less clear.
On a side note: I have about 30 Shelly devices (WiFi & BLE/U) in the house so far and it seems to grow in number as we continue on this automation journey. The best solution thus far is to comms with the devices with http calls and receive data with Actions in the Shelly device sending a webhook to Homey. This method can be as resource intensive as you wish it to be. I am very selective as to which devices I directly connect with Homey because the app can easily be overwhelmed and then Homey will disable it to protect the overall system. For EM devices the Homey App is very helpful because it does a lot of the calculations.
Having said that, I struggled to find the correct syntax for the http call to the Shelly TRV to control the valve position. The first breakthrough was when I found this command on Shelly’s knowledge base, which sets the target temperature.
http://192.168.33.1/rpc/BluTrv.Call?id=200&method=“TRV.SetTarget”¶ms={“id”:0,“target_C”:22}
From there I eventually figured out how to set the valve position:
http://192.168.33.1/rpc/BluTrv.Call?id=200&method=“TRV.SetPosition”¶ms={“id”:0,“pos”:50}
In this case setting the valve position to 50%
Note: In the Shelly app you can enter a temperature offset to the measured temperature, however the offset is only applied to the displayed temperature. If you create an Action to send you the temperature [1] by webhook for example, then you need to manually apply the offset in the Homey code when you receive it. The better solution is to have an external temperature sensor that separately reports the room temperature to Homey.
Hope this helps you if you want to directly control devices.