Ds18b20 temp and relay control via openhab

Moderators: grovkillen, Stuntteam, TD-er

Post Reply
Message
Author
waspie
Normal user
Posts: 127
Joined: 09 Feb 2017, 19:35

Re: Ds18b20 temp and relay control via openhab

#31 Post by waspie » 21 May 2017, 03:13

I have a whole bunch of stuff done on this topic I could help you with if I had my laptop up. I'm using many esp and motorized vents to regulate temperature like zoning in every room. I use openhab as well Image

The vent can be open closed or set for heat/cool. In heat or cool it opens or closes as temperature goes up or down depending on how you want it. Then, the use ac and use furnace switches affect a variable. If enough rooms want ac or heat there's another esp that'll turn on the hvav separate of the nest



Also, the readings of the Dallas are awesome, they vary very little. I used to use analog sensors and averaged them over 3 minutes using readings every 10 seconds. With the Dallas I have it send a reading every 3 minutes using a separate esp that's in deep sleep and battery powered away from the vent. The Dallas sensors are rock solid

waspie
Normal user
Posts: 127
Joined: 09 Feb 2017, 19:35

Re: Ds18b20 temp and relay control via openhab

#32 Post by waspie » 22 May 2017, 17:53

HEre are the relevant portions if you want. Any questions, just ask.

nursery items

Code: Select all

Number	Nursery_Temperature 		"Nursery Temp	   [%.1f °F]" <temperature>	{mqtt="<[oh2:/NurserySensor/Nursery_Temp/NUR_TEMP:state:default]" }
Number	Nursery_Volts	 			"Nursery Volts	   [%.2f V]" <electric>	{mqtt="<[oh2:/NurserySensor/Nursery_Volt/NUR_VOLT:state:default]" }
Number	VT_Vent_Setpoint_Nursery 	"Nursery Setpoint [%.1f °F]"    <degreesf>
Number	VT_Vent_Mode_Nursery     	"Nursery Vent Control"          <heating>
Switch	FF_Nursery_Vent           	"Nursery Vents"         <fire>          {http=">[OFF:POST:http://192.168.1.151/control?cmd=event,closevent] >[ON:POST:http://192.168.1.151/control?cmd=event,openvent]"}
Number	AVG_Nursery		    		"Nursery Average Temp [%.1f °F]"	<degreesf>
Switch	FF_Nursery_Vents			"Nursery Vents"			<fan>
Number	VT_Nursery_Keepwarm			"Nursery Call Heat"		<fire>
Number	VT_Nursery_Keepcool			"Nursery call cool"		<fan>
Number	NurseryNeedHeat				"Nursery Heat Request"	<fire>

nursery rules (the use furnace / use ac stuff isn't done yet. that's why at least one section is missing. )

Code: Select all

rule "Nursery OnOff"
when
    Item VT_Vent_Mode_Nursery changed
then
    // 0="Off", 1="On", 2="Auto"
    if (VT_Vent_Mode_Nursery.state == 0) {
        // heater off
        FF_Nursery_Vents.sendCommand(OFF)
    } else if (VT_Vent_Mode_Nursery.state == 1) {
        // heater on
        FF_Nursery_Vents.sendCommand(ON)
        }
        else{
        FF_Nursery_Vents.sendCommand(ON)
        }
end

rule "Nursery Vents Status"
when
    Item VT_Vent_Mode_Nursery changed or
    Item VT_Vent_Setpoint_Nursery changed or
    Item Nursery_Temperature changed
then
	if (VT_Vent_Mode_Nursery.state == 2) {
		var Number setpointN = VT_Vent_Setpoint_Nursery.state as DecimalType
		var Number turnOnTempN = setpointN - 0.5
		var Number turnOffTempN = setpointN + 0.5
		var Number tempN = Nursery_Temperature.state as DecimalType
			if (tempN <= turnOnTempN) {
				FF_Nursery_Vents.sendCommand(ON)
			} else if (tempN >= turnOffTempN) {
				FF_Nursery_Vents.sendCommand(OFF)
				}			
	}
	if (VT_Vent_Mode_Nursery.state == 3) {
		var Number setpointN = VT_Vent_Setpoint_Nursery.state as DecimalType
		var Number turnOnTempN = setpointN + 0.5
		var Number turnOffTempN = setpointN - 1.5
		var Number tempN = Nursery_Temperature.state as DecimalType
			if (tempN >= turnOnTempN) {
				FF_Nursery_Vents.sendCommand(ON)
			} else if (tempN <= turnOffTempN) {
				FF_Nursery_Vents.sendCommand(OFF)
				}	
	}
end

rule "Nursery Vent Control"
when
	Item FF_Nursery_Vents changed
then
		if (FF_Nursery_Vents.state == ON){
			FF_Nursery_Vent.sendCommand(ON)
		} else if (FF_Nursery_Vents.state == OFF) {
			FF_Nursery_Vent.sendCommand(OFF)	
			}
end

rule "Nursery Use Furnace"
when 
	Item VT_Nursery_Keepwarm changed or
	Item Nursery_Temperature changed or
	Item VT_Vent_Mode_Nursery changed or
	Item VT_Vent_Setpoint_Nursery changed
then
	if (VT_Nursery_Keepwarm.state == 1 && VT_Vent_Mode_Nursery.state == 2) {
		var Number setpointN = VT_Vent_Setpoint_Nursery.state as DecimalType
		var Number turnOnTempN = setpointN - 0.5
		var Number turnOffTempN = setpointN + 0.5
		var Number tempN = Nursery_Temperature.state as DecimalType	
		if (tempN <= turnOnTempN) {
			postUpdate(NurseryNeedHeat,1)
		} else if (tempN >= turnOffTempN) {
			postUpdate(NurseryNeedHeat,0)
		} 
	}
	if (VT_Vent_Mode_Nursery.state == 0 || VT_Vent_Mode_Nursery.state == 1 || VT_Vent_Mode_Nursery.state == 3) {
		postUpdate(NurseryNeedHeat,0)
		}
	
end
sitemap

Code: Select all

	Text label="Nursery" icon="baby_1"{
        		Frame {
        		Switch item=VT_Vent_Mode_Nursery label="Vent Control" mappings=[0="Off", 1="On", 2="Heat", 3="Cool"]
				Setpoint item=VT_Vent_Setpoint_Nursery label="Target Temperature [%.1f °F]" minValue=65 maxValue=80 step=0.5 visibility=[VT_Vent_Mode_Nursery==2, VT_Vent_Mode_Nursery==3] icon="heating-60"
				Text item=FF_Nursery_Vent
				Text item=Nursery_Temperature
				Switch item=VT_Nursery_Keepwarm label="Use Furnace?"	mappings=[0="Off", 1="On"]
				Switch item=VT_Nursery_Keepcool label="User AC?"		mappings=[0="Off", 1="On"]
				Text item=Nursery_Volts icon="battery-90"
				Chart item=Nursery_Temperature period=4h refresh=300
				Chart item=Nursery_Volts period=D refresh=300
				}
        	    }



The reason i have a Vent and Vents item is one is virtual and i only want it to send a command to the actual ESP when the virtual *changes*
I don't want actuating the motor for no reason

Post Reply

Who is online

Users browsing this forum: No registered users and 50 guests