Smart Water Valve
Smart water valve is a Powered By Shelly device which automatically regulates water flow by opening, closing, or adjusting the valve to a specific position. It responds to power events — such as closing or reopening the valve after a power outage — and can connect to temperature sensors for enhanced environmental monitoring.
For more information about the original Smart Water Valve consult: https://frankever.com/
The following components are available in Smart Water Valve:
Supported virtual components:
Supported BTHome components:
Virtual Component Configuration
The Smart Water Valve has the following virtual components:
| Virtual Component | Type | Access | Description |
|---|---|---|---|
open | button | write | Opens the water valve completely. |
close | button | write | Closes the water valve completely. |
position | number | write | Adjusts the valve’s position as a percentage (0–100%). |
has_power | boolean | read | Indicates whether the device is currently receiving power. |
Service Configuration
See the Service Configuration Example section for a full example.
| Property | Type | Description |
|---|---|---|
| string | Defines the behavior of the valve when the power gets lost:
|
| string | Defines the behavior of the valve when the power is restored:
|
| number | Applies when |
| number | Applies when |
| string | Valve's configuration name. |
Method Examples
How to open the water valve
- Button.Trigger HTTP GET Request
- Button.Trigger Curl Request
- Button.Trigger Mos Request
http://192.168.33.1/rpc/Button.Trigger?owner="service:0"&role="open"&event="single_push"
curl -X POST -d '{"id":1,"method":"Button.Trigger","params":{"owner":"service:0","role":"open","event":"single_push"}}' http://${SHELLY}/rpc
mos --port ${PORT} call Button.Trigger '{"owner":"service:0","role":"open","event":"single_push"}'
Response
- Button.Trigger HTTP GET Response
- Button.Trigger Curl Response
- Button.Trigger Mos Response
null
{
"id": 1,
"src": "watervalve-84fce6368be0",
"params": null
}
null
How to close the water valve
- Button.Trigger HTTP GET Request
- Button.Trigger Curl Request
- Button.Trigger Mos Request
http://192.168.33.1/rpc/Button.Trigger?owner="service:0"&role="close"&event="single_push"
curl -X POST -d '{"id":1,"method":"Button.Trigger","params":{"owner":"service:0","role":"close","event":"single_push"}}' http://${SHELLY}/rpc
mos --port ${PORT} call Button.Trigger '{"owner":"service:0","role":"close","event":"single_push"}'
Response
- Button.Trigger HTTP GET Response
- Button.Trigger Curl Response
- Button.Trigger Mos Response
null
{
"id": 1,
"src": "watervalve-84fce6368be0",
"params": null
}
null
How to adjust the water valve's position (opened at 25%)
- Number.Set HTTP GET Request
- Number.Set Curl Request
- Number.Set Mos Request
http://192.168.33.1/rpc/Number.Set?owner="service:0"&role="position"&value=25
curl -X POST -d '{"id":1,"method":"Number.Set","params":{"owner":"service:0","role":"position","value":25}}' http://${SHELLY}/rpc
mos --port ${PORT} call Number.Set '{"owner":"service:0","role":"position","value":25}'
Response
- Number.Set HTTP GET Response
- Number.Set Curl Response
- Number.Set Mos Response
null
{
"id": 1,
"src": "watervalve-84fce6368be0",
"params": null
}
null
How to check the device's power state
- Boolean.GetStatus HTTP GET Request
- Boolean.GetStatus Curl Request
- Boolean.GetStatus Mos Request
http://192.168.33.1/rpc/Boolean.GetStatus?owner="service:0"&role="has_power"
curl -X POST -d '{"id":1,"method":"Boolean.GetStatus","params":{"owner":"service:0","role":"has_power"}}' http://${SHELLY}/rpc
mos --port ${PORT} call Boolean.GetStatus '{"owner":"service:0","role":"has_power"}'
Response
- Boolean.GetStatus HTTP GET Response
- Boolean.GetStatus Curl Response
- Boolean.GetStatus Mos Response
{
"value": true,
"source": "rpc",
"last_update_ts": 1700864253
}
{
"id": 1,
"src": "watervalve-84fce6368be0",
"params": {
"value": true,
"source": "rpc",
"last_update_ts": 1700864253
}
}
{
"value": true,
"source": "rpc",
"last_update_ts": 1700864253
}
MQTT Communication
The Smart Water Valve can be controlled and monitored through MQTT.
Command topics
Allow sending open, close commands, as well as numeric position control.
| Topic | Description |
|---|---|
"valve/0/state" | Accepts open or close payloads to fully open or close the valve. |
"valve/0/position" | Accepts numeric payloads (0–100) to set the target valve position as a percentage. |
Status topics
Report information about the current status of the water valve.
| Topic | Description |
|---|---|
"valve/0/position" | Reports current valve position as a JSON object, e.g. { "position": 45 }. |
"valve/0/has_power" | Reports current power-supply status as a JSON object, e.g. { "hasPower": true }. |
Service Configuration Example
- Service.GetConfig HTTP GET Request
- Service.GetConfig Curl Request
- Service.GetConfig Mos Request
http://192.168.33.1/rpc/Service.GetConfig?id=0
curl -X POST -d '{"id":1,"method":"Service.GetConfig","params":{"id":0}}' http://${SHELLY}/rpc
mos --port ${PORT} call Service.GetConfig '{"id":0}'
Response
- Number.Set HTTP GET Response
- Number.Set Curl Response
- Number.Set Mos Response
{
"on_power_loss": "none",
"on_power_restore": "none",
"power_restored_pos": 0,
"power_loss_pos": 0,
"name": "Water valve",
"id": 0
}
{
"id": 1,
"src": "st-802-54320440a210",
"params": {
"on_power_loss": "none",
"on_power_restore": "none",
"power_restored_pos": 0,
"power_loss_pos": 0,
"name": "Water valve",
"id": 0
}
}
{
"on_power_loss": "none",
"on_power_restore": "none",
"power_restored_pos": 0,
"power_loss_pos": 0,
"name": "Water valve",
"id": 0
}