Neo smart water valve
Neo smart water valve is a Powered By Shelly device with real-time flow monitoring, pressure sensing, and temperature control. It supports configurable alarms for pressure, temperature, and flow rate with automatic valve closure on fault conditions.
For more information about the original Neo smart water valve consult: https://www.szneo.com/
The following components are available in the Neo smart water valve:
Supported virtual components:
Supported BTHome components:
Virtual Component Configuration
The Neo smart water valve has the following virtual components:
| Virtual Component | Type | Access | Description |
|---|---|---|---|
flow_rate | number | read | Measures the current water flow rate in m³/min. |
state | boolean | read/write | Controls the valve state—set to open for water flow or close to stop flow. |
water_consumption | object | read | Tracks total water consumption in m³ with reset capability. |
water_pressure | number | read | Monitors water pressure in kPa with configurable alarm thresholds (0–1350 kPa). |
water_temperature | number | read | Monitors water temperature in °C with configurable alarm thresholds (–25 to 80°C). |
Handlers Configuration
The Neo smart water valve exposes the following RPC handlers:
Service.ListConfigOptions— Lists all available configuration options for the device.Service.ResetCounters— Resets the water consumption counter.
Service.ListConfigOptions
Lists all available configuration options that can be set on the device.
Service.ResetCounters
Resets the water consumption counter back to zero.
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 is restored:
|
| string | Temperature unit for display and alarms:
|
| string | Pressure unit for display and alarms:
|
| string | Volume unit for consumption tracking:
|
| array | Temperature alarm thresholds as [min, max] values in the configured temperature unit. |
| string | Action to take when temperature alarm is triggered:
|
| array | Pressure alarm thresholds as [min, max] values in the configured pressure unit. |
| string | Action to take when pressure alarm is triggered:
|
| array | Flow rate alarm thresholds as [min, max] values in liters per minute. |
| string | Action to take when flow rate alarm is triggered:
|
Method Examples
How to check flow rate
- Number.GetStatus HTTP GET Request
- Number.GetStatus Curl Request
- Number.GetStatus Mos Request
http://192.168.33.1/rpc/Number.GetStatus?owner="service:0"&role="flow_rate"
curl -X POST -d '{"id":1,"method":"Number.GetStatus","params":{"owner":"service:0","role":"flow_rate"}}' http://${SHELLY}/rpc
mos --port ${PORT} call Number.GetStatus '{"owner":"service:0","role":"flow_rate"}'
Response
- Number.GetStatus HTTP GET Response
- Number.GetStatus Curl Response
- Number.GetStatus Mos Response
null
{
"id": 1,
"src": "neovalveadv-543204516abc",
"params": null
}
null
How to open the neo valve
- Boolean.Set HTTP GET Request
- Boolean.Set Curl Request
- Boolean.Set Mos Request
http://192.168.33.1/rpc/Boolean.Set?owner="service:0"&role="state"&value=true
curl -X POST -d '{"id":1,"method":"Boolean.Set","params":{"owner":"service:0","role":"state","value":true}}' http://${SHELLY}/rpc
mos --port ${PORT} call Boolean.Set '{"owner":"service:0","role":"state","value":true}'
Response
- Boolean.Set HTTP GET Response
- Boolean.Set Curl Response
- Boolean.Set Mos Response
null
{
"id": 1,
"src": "neovalveadv-543204516abc",
"params": null
}
null
How to close the neo valve
- Boolean.Set HTTP GET Request
- Boolean.Set Curl Request
- Boolean.Set Mos Request
http://192.168.33.1/rpc/Boolean.Set?owner="service:0"&role="state"&value=false
curl -X POST -d '{"id":1,"method":"Boolean.Set","params":{"owner":"service:0","role":"state","value":false}}' http://${SHELLY}/rpc
mos --port ${PORT} call Boolean.Set '{"owner":"service:0","role":"state","value":false}'
Response
- Boolean.Set HTTP GET Response
- Boolean.Set Curl Response
- Boolean.Set Mos Response
null
{
"id": 1,
"src": "neovalveadv-543204516abc",
"params": null
}
null
How to check the water consumption
- Object.GetStatus HTTP GET Request
- Object.GetStatus Curl Request
- Object.GetStatus Mos Request
http://192.168.33.1/rpc/Object.GetStatus?owner="service:0"&role="water_consumption"
curl -X POST -d '{"id":1,"method":"Object.GetStatus","params":{"owner":"service:0","role":"water_consumption"}}' http://${SHELLY}/rpc
mos --port ${PORT} call Object.GetStatus '{"owner":"service:0","role":"water_consumption"}'
Response
- Object.GetStatus HTTP GET Response
- Object.GetStatus Curl Response
- Object.GetStatus Mos Response
null
{
"id": 1,
"src": "neovalveadv-543204516abc",
"params": null
}
null
How to check the water pressure
- Number.GetStatus HTTP GET Request
- Number.GetStatus Curl Request
- Number.GetStatus Mos Request
http://192.168.33.1/rpc/Number.GetStatus?owner="service:0"&role="water_pressure"
curl -X POST -d '{"id":1,"method":"Number.GetStatus","params":{"owner":"service:0","role":"water_pressure"}}' http://${SHELLY}/rpc
mos --port ${PORT} call Number.GetStatus '{"owner":"service:0","role":"water_pressure"}'
Response
- Number.GetStatus HTTP GET Response
- Number.GetStatus Curl Response
- Number.GetStatus Mos Response
null
{
"id": 1,
"src": "neovalveadv-543204516abc",
"params": null
}
null
How to check the water temperature
- Number.GetStatus HTTP GET Request
- Number.GetStatus Curl Request
- Number.GetStatus Mos Request
http://192.168.33.1/rpc/Number.GetStatus?owner="service:0"&role="water_temperature"
curl -X POST -d '{"id":1,"method":"Number.GetStatus","params":{"owner":"service:0","role":"water_temperature"}}' http://${SHELLY}/rpc
mos --port ${PORT} call Number.GetStatus '{"owner":"service:0","role":"water_temperature"}'
Response
- Number.GetStatus HTTP GET Response
- Number.GetStatus Curl Response
- Number.GetStatus Mos Response
null
{
"id": 1,
"src": "neovalveadv-543204516abc",
"params": null
}
null
MQTT Communication
The Neo smart water valve can be controlled through MQTT.
Command topics
Allow sending open and close commands to the valve.
| Topic | Description |
|---|---|
valve/0/state | Accepts open or close payloads to control the valve. |
Status topics
Report information about the current status of the water valve.
| Topic | Description |
|---|---|
valve/0/state | Reports valve state changes as open or close. |
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
- Service.GetConfig HTTP GET Response
- Service.GetConfig Curl Response
- Service.GetConfig Mos Response
{
"temp_unit": "C",
"on_power_restore": "none",
"pressure_unit": "PSI",
"volume_unit": "gal",
"alarm_temp_range": [
15,
50
],
"alarm_temp_action": "close",
"alarm_pressure_range": [
275,
550
],
"alarm_pressure_action": "close",
"alarm_flow_rate_range": [
75,
110
],
"alarm_flow_rate_action": "close",
"id": 0
}
{
"id": 1,
"src": "neovalveadv-543204516abc",
"params": {
"temp_unit": "C",
"on_power_restore": "none",
"pressure_unit": "PSI",
"volume_unit": "gal",
"alarm_temp_range": [
15,
50
],
"alarm_temp_action": "close",
"alarm_pressure_range": [
275,
550
],
"alarm_pressure_action": "close",
"alarm_flow_rate_range": [
75,
110
],
"alarm_flow_rate_action": "close",
"id": 0
}
}
{
"temp_unit": "C",
"on_power_restore": "none",
"pressure_unit": "PSI",
"volume_unit": "gal",
"alarm_temp_range": [
15,
50
],
"alarm_temp_action": "close",
"alarm_pressure_range": [
275,
550
],
"alarm_pressure_action": "close",
"alarm_flow_rate_range": [
75,
110
],
"alarm_flow_rate_action": "close",
"id": 0
}