Water Shutoff valve that works with Hubitat

I did not take the picture but there is nothing that prevents me from taking one (or two :)) once I get home (Wed/Thu).

However, if you are getting into relay business, would it not be easier to just use a valve with a 12V motor? Or simply operate the motor that's already there?

BTW, I have three of these valves; and not that I didn't have my fair share of problems with Hubitat hubs but the valves never loose connection.

I have the Dome water shutoff and it’s been rock solid. Runs off of HSM and tied to several water sensors around the house.

2 Likes

I have this one for about 2 months now, zero issues, and it's cheap

And the leaksmart, sourced from ebay $45.00, works very well. And neither of the 2 zig valves act as repeaters, even tho mains powered, so no mesh issues

2 Likes

Here’s the compatible devices list. By tapping the column headers, you can sort by device type and protocol.

https://docs.hubitat.com/index.php?title=List_of_Compatible_Devices

I have the Dome, and it's been working well. I'm also using it on a new ball valve.

For those who have sticky ball valves, I'd recommend changing them out, if possible. For me, it's a small insurance against some horrible damage to your house.

What I've also done is put a second ball valve in line near the first. That allows me to slowly turn on the water after it's been off (helpful when you return from vacation and the lines bled a bit).

1 Like

cannibalizing a motorized ball valve to get a rotary actuator

So the Amazon valve @razorwing posted disassembles pretty easily, only 4 screws to drop the valve body. The drive shaft, though, is slotted and only protrudes about 5/16", so adapting some sort of shaft to extend it is going to take some cobbling.

That said, it's a nice, slow, 1/4-turn actuator with a little bit of torque. It fired right up on 12vdc power.

+added+
The shaft does pop out of the motor housing but there's still not much to work with.

1 Like

I purchased a wifi unit from amazon and was able to flash it with Tasmota using the tuya-convert (needs a raspberry pi) and used one of the community drivers for tasmota to integrate it into HE. Works perfectly.

I also created a rule that exercises the shutoff valve weekly to keep it from getting stiff.

The mount they come with is junk, ended up using 2 3" "L" brackets and some pieces of 2x4 to fashion a very rigid mount.

Mike

took a couple of pictures:

.

And the contact g

roup that can be used for the state verification:

1 Like

I am new to Hubitat. I have not bought one yet, still debating on how I will switch from ST to HE. I currently have a Mimolite hooked up to a motorized ball valve with the following code. I have included the DTH. Will this function with HE? or will I have to modify it to work?

metadata {
// Automatically generated. Make future change here.
definition (name: "My MIMOlite - Main Water Valve v2", namespace: "jscgs350", author: "jsconst@gmail.com") {
capability "Alarm"
capability "Polling"
capability "Refresh"
capability "Switch"
capability "Valve"
capability "Contact Sensor"
capability "Configuration"
attribute "power", "string"
attribute "valveState", "string"
attribute "powerState", "string"

    fingerprint deviceId: "0x1000", inClusters: "0x72,0x86,0x71,0x30,0x31,0x35,0x70,0x85,0x25,0x03"

}

// UI tile definitions
tiles(scale: 2) {
	multiAttributeTile(name:"switch", type: "lighting", width: 6, height: 4, canChangeIcon: true, decoration: "flat"){
		tileAttribute ("device.switch", key: "PRIMARY_CONTROL") {
			attributeState "on", label: 'Valve Closed', action: "switch.on", icon: "st.valves.water.closed", backgroundColor: "#ff0000", nextState:"openingvalve"
			attributeState "off", label: 'Valve Open', action: "switch.off", icon: "st.valves.water.open", backgroundColor: "#53a7c0", nextState:"closingvalve"
			attributeState "closingvalve", label:'Closing', icon:"st.valves.water.closed", backgroundColor:"#ffd700"
			attributeState "openingvalve", label:'Opening', icon:"st.valves.water.open", backgroundColor:"#ffd700"
		}
        tileAttribute ("statusText", key: "SECONDARY_CONTROL") {
       		attributeState "statusText", label:'${currentValue}'       		
        }
    }
    standardTile("contact", "device.contact", width: 3, height: 2, inactiveLabel: false) {
        state "open", label: 'Open (On)', icon: "st.valves.water.open", backgroundColor: "#53a7c0"
        state "closed", label: 'Closed (Off)', icon: "st.valves.water.closed", backgroundColor: "#ff0000"
    }
    standardTile("power", "device.power", width: 3, height: 2, inactiveLabel: false) {
    	state "dead", label: 'OFF', backgroundColor: "#ff0000", icon:"st.switches.switch.off"
    	state "alive", label: 'ON', backgroundColor: "#79b821", icon:"st.switches.switch.on"
    }
    standardTile("refresh", "device.switch", width: 3, height: 2, inactiveLabel: false, decoration: "flat") {
        state "default", label:'', action:"refresh.refresh", icon:"st.secondary.refresh"
    }
	standardTile("configure", "device.configure", width: 3, height: 2, inactiveLabel: false, decoration: "flat") {
		state "configure", label:'', action:"configuration.configure", icon:"st.secondary.configure"
	}
    valueTile("statusText", "statusText", inactiveLabel: false, width: 2, height: 2) {
		state "statusText", label:'${currentValue}', backgroundColor:"#ffffff"
	}
    main (["switch", "contact"])
    details(["switch", "refresh", "configure"])
}

}

def parse(String description) {

def result = null
def cmd = zwave.parse(description, [0x72: 1, 0x86: 1, 0x71: 1, 0x30: 1, 0x31: 3, 0x35: 1, 0x70: 1, 0x85: 1, 0x25: 1, 0x03: 1, 0x20: 1, 0x84: 1])
log.debug cmd
if (cmd.CMD == "7105") {				//Mimo sent a power report lost power
    sendEvent(name: "power", value: "dead")
    sendEvent(name: "powerState", value: "NO POWER!")
} else {
	sendEvent(name: "power", value: "alive")
    sendEvent(name: "powerState", value: "electrical power.")
}

if (cmd) {
    result = createEvent(zwaveEvent(cmd))
}

def statusTextmsg = ""
def timeString = new Date().format("h:mm a MM-dd-yyyy", location.timeZone)
statusTextmsg = "Valve is ${device.currentState('valveState').value}.\nLast refreshed at "+timeString+"."
sendEvent("name":"statusText", "value":statusTextmsg)
log.debug statusTextmsg

return result

}

def sensorValueEvent(Short value) {
if (value) {
log.debug "Main Water Valve is Open"
sendEvent(name: "contact", value: "open", descriptionText: "$device.displayName is open")
sendEvent(name: "valveState", value: "flowing water (tap to close)")
} else {
log.debug "Main Water Valve is Closed"
sendEvent(name: "contact", value: "closed", descriptionText: "$device.displayName is closed")
sendEvent(name: "valveState", value: "NOT flowing water (tap to open)")
}
}

def zwaveEvent(physicalgraph.zwave.commands.basicv1.BasicReport cmd) {
[name: "switch", value: cmd.value ? "on" : "off", type: "physical"]
}

def zwaveEvent(physicalgraph.zwave.commands.basicv1.BasicSet cmd)
{
sensorValueEvent(cmd.value)
}

def zwaveEvent(physicalgraph.zwave.commands.switchbinaryv1.SwitchBinaryReport cmd) {
[name: "switch", value: cmd.value ? "on" : "off", type: "digital"]
}

def zwaveEvent(physicalgraph.zwave.commands.sensorbinaryv1.SensorBinaryReport cmd)
{
sensorValueEvent(cmd.sensorValue)
}

def zwaveEvent(physicalgraph.zwave.commands.alarmv1.AlarmReport cmd)
{
log.debug "zwaveEvent AlarmReport: '${cmd}'"

switch (cmd.alarmType) {
    case 8:
        def map = [ name: "power", isStateChange:true]
        if (cmd.alarmLevel){
            map.value="dead"
            map.descriptionText = "${device.displayName} lost power"
            sendEvent(name: "powerState", value: "NO POWER!")
        }
        else {
            map.value="alive"
            map.descriptionText = "${device.displayName} has power"
            sendEvent(name: "powerState", value: "electrical power.")
        }
        sendEvent(map)
    break;
	default:
    	[:]
    break;
}

}

def zwaveEvent(physicalgraph.zwave.Command cmd) {
// Handles all Z-Wave commands we aren't interested in
[:]
}

def off() {
log.debug "Closing Main Water Valve per user request"
delayBetween([
zwave.basicV1.basicSet(value: 0xFF).format(),
zwave.switchBinaryV1.switchBinaryGet().format()
])
}

def both() {
log.debug "Closing Main Water Valve due to an alarm condition"
delayBetween([
zwave.basicV1.basicSet(value: 0xFF).format(),
zwave.switchBinaryV1.switchBinaryGet().format()
])
}

def on() {
log.debug "Opening Main Water Valve per user request"
delayBetween([
zwave.basicV1.basicSet(value: 0x00).format(),
zwave.switchBinaryV1.switchBinaryGet().format()
])
}

def poll() {
log.debug "Executing Poll for Main Water Valve"
delayBetween([
zwave.switchBinaryV1.switchBinaryGet().format(),
zwave.sensorBinaryV1.sensorBinaryGet().format(),
zwave.basicV1.basicGet().format(),
zwave.alarmV1.alarmGet().format()
],100)
}

def refresh() {
log.debug "Executing Refresh for Main Water Valve per user request"
delayBetween([
zwave.switchBinaryV1.switchBinaryGet().format(),
zwave.sensorBinaryV1.sensorBinaryGet().format(),
zwave.basicV1.basicGet().format(),
zwave.alarmV1.alarmGet().format()
],100)
}

def configure() {
log.debug "Executing Configure for Main Water Valve per user request"
def cmd = delayBetween([
zwave.associationV1.associationSet(groupingIdentifier:3, nodeId:[zwaveHubNodeId]).format(), //subscribe to power alarm
zwave.configurationV1.configurationSet(configurationValue: [25], parameterNumber: 11, size: 1).format(),
zwave.configurationV1.configurationSet(parameterNumber: 11, size: 1, configurationValue: [0]).format(), // momentary relay disable=0 (default)
],100)
log.debug "zwaveEvent ConfigurationReport: '${cmd}'"
}

I have an EcoNet Bulldog high torque water valve and never had problem with it!

4 Likes

This! Working great, have an automated process that tests every month (shuts off then on) and emails me a report. I attached a contact sensor to the lever bar so get secondary confirmation if valve open or closed.

I have also used the Dome valve and it worked too but is a bit flimsier.

1 Like

Does it act as a repeater?
I have too many Xiaomi devices to introduce another possibly incompatile repeater.
Maybe i'll just install a Dome with a new valve as it's Z-Wave plus.
There is this middle ground Z-Wave+ one but again off-off shore :wink:
https://www.amazon.ca/Automation-Z-Wave-Shutoff-Compatiable-Smartthings/dp/B083DNGQRZ/ref=asc_df_B083DNGQRZ/?tag=googleshopc0c-20&linkCode=df0&hvadid=459435993257&hvpos=&hvnetw=g&hvrand=11408678274943430719&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=9001620&hvtargid=pla-870964762003&psc=1

No, please check my post again , I mention it's not a repeater. I'm not sure why they decided to make it an end device, but it is only an end device.
There are many people here who use Xiaomi devices, but for me on both ST and HE, even with ONLY using compatible repeaters, the Xiaomi devices are a pain in the arse, and I have about 20 of them in a plastic bag in my junk pile, they fall off and do bad things to the zigbee mesh when they do fall off.
A new solution, is to get a cheap xiaomi hub, connect the devices to that, and someone wrote a driver to automatically pull the xiaomi hub devices into HE.

Seems to me, if xiaomi devices are connected directly to the hub, they are less trouble, and become more of a headache as more repeaters are used

This arrived from Ebay yesterday. I plugged it in and it paired with my Hubitat Z-Wave network first time.

Doing the plumbing today.

$57 for the actuator while they last.

So far, so good.

1 Like

Yup, missed that, was reading all this in my garage at the work bench.
Ordered a Dome so we'll see how that goes. I will get a new valve as I have a rotational one now so should be no sticky issues.

There is always the Sinope Zigbee valve.
I've installed it in a few locations - no issues (and with battery backup, too).
Very sturdy.
Not the cheapest, but works everytime.
(Make sure that you get the Zigbbe version, not the wifi version).

Dome works very good for me. I’ve changed their flimsy original mounting sytem with my home made as I don’t like using the metal zip ties provided in the kit and the brace is desirable to be attached to the body of the valve and not the pipe.
I have ordered also a zigbee Heineman to installed as a back-up whole of the house valve.

Out of curiosity, what driver are you using for these valves?

I am using a generic Z-Wave Valve for the WaterCop.