Coder Social home page Coder Social logo

venstar_colortouch's People

Contributors

bmreading avatar broswell avatar cinntax avatar craftyguy avatar doug-hoffman avatar flacjacket avatar flamechair avatar fracai avatar garbled1 avatar gcomeaux avatar hacsjalano avatar hall avatar hpeyerl avatar nkaminski avatar rbebeau avatar tbl-benjamin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

venstar_colortouch's Issues

Venstar API update now report C/F for T2000 thermostats

T2000 Thermostat now reporting C/F and so I believe the if statements for these models need to be changed accordingly.

Venstar local API call - http://192.168../query/info
{"name":"DOWNSTAIRS","mode":2,"state":0,"activestage":0,"fan":0,"fanstate":0,"tempunits":0,"schedule":0,"schedulepart":1,"away":0,"spacetemp":80.0,"heattemp":61.0,"cooltemp":82.0,"cooltempmin":35.0,"cooltempmax":99.0,"heattempmin":35.0,"heattempmax":99.0,"setpointdelta":2,"availablemodes":0}

Please see following thread: home-assistant/core#74115

# T2xxx, T3xxx thermostats (and maybe more) always use Celsius in the API regardless of the display units # So handle this case accordingly if self.model.startswith(("T2", "T3")): # Always degC self.tempunits = self.TEMPUNITS_C logging.debug("Detected thermostat model %s, using temp units of Celsius", self.model) elif self.model in ["VYG-4900-VEN", "VYG-4800-VEN", "VYG-3900", "COLORTOUCH"]: # Same as display units self.tempunits = self.display_tempunits elif self.get_info("heattempmax") >= 40: # Heat max temp over 40, only possible if degF logging.warning("Unknown thermostat model %s, inferring API tempunits of Fahrenheit", self.model) self.tempunits = self.TEMPUNITS_F else: logging.warning("Unknown thermostat model %s, inferring API tempunits of Celsius", self.model) self.tempunits = self.TEMPUNITS_C return True

My apologies in advance that I can't fix this myself - just don't have the expertise

Support for Wi-Fi sensor messages

The protocol for Venstar Wi-Fi sensors is undocumented. Let's try to figure it out, so we can decode/encode them.

What I've identified so far

The sensors broadcast their data to the local network (255.255.255.255) and multicast to the all hosts group (224.0.0.1) on UDP port 5001. Updates are sent every minute for mini Wi-Fi sensors set to "remote", every two minutes for the original Wi-Fi sensors set to "remote", and every 20 seconds for "supply" and "return".

Messages appear to be a series of TLVs, with the length being unspecified for some types.

Type State Type Unit ID Type Length Identifier Type Firmware Version Type Length Name Type Sensor Type Type Temperature Type Battery
08 2a d202590a2908fe2e 10 05 1a 0c 656339663064393431356636 20032803 30 0138 01 42 06 4f6666696365 48 03 50 7b 58 29 122c643066536e397762666c3435624834666546714144426f4256744466516456703842386f616a4d334c33343d

Type: 08 = State, 10 = Unit ID, 1a = Identifier, 30 = Firmware version, 42 = Name, 48 = Sensor Type, 50 = Temperature, 58 = Battery
State: 2a = Normal, 2b = Ready to link (button pressed)
Unit ID: 00 to 13
Identifier: Only MAC address observed
Sensor type: 01 = Outdoor, 02 = Return, 03 = Remote, 04 = Supply
Temperature: 00 = -40.0°C to ff = 87.5°C, in 0.5° steps. Temperature increases at a rate no faster than 1.5°/update and decreases at 0.5°/update.

Sample messages

First line is when the message was received, for an understanding of timing.
Second is the message in hex.
Third is the message in ascii with non-printable characters replaced by a period.

Messages sent by sensors during normal operation
2021-11-06 08:56:52.273645
082ad202590a2908f42e10051a0c656339663064393431356636200328033001380142064f66666963654803507b5829122c356242302f796467507872336d644b554c4d7a504c4f7350527a65384f65545244613975306d456a486d6f3d
.*..Y.).......ec9f0d9415f6 .(.0.8.B.OfficeH.P{X).,5bB0/ydgPxr3mdKULMzPLOsPRze8OeTRDa9u0mEjHmo=

2021-11-06 08:57:01.498718
082ad2025f0a2f08bdca0110131a0c6334626538346632323235652001280930013802420b485641432052657475726e4802507d5864122c5139633959707a634f52586170326b4950447435455a486b3165336f6b5865434b382f6a7072585269524d3d
.*.._./........c4be84f2225e .(.0.8.B.HVAC ReturnH.P}Xd.,Q9c9YpzcORXap2kIPDt5EZHk1e3okXeCK8/jprXRiRM=

2021-11-06 08:57:02.932190
082ad202600a3008bcc40110121a0c6334626538346632326332622001280930013802420b4856414320537570706c794804508b015864122c414f313855307279633069575472745a54343072716b44486b6f4b597a4a683045784b6459692f654d37413d
.*..`.0........c4be84f22c2b .(.0.8.B.HVAC SupplyH.P..Xd.,AO18U0ryc0iWTrtZT40rqkDHkoKYzJh0ExKdYi/eM7A=

2021-11-06 08:57:05.912636
082ad2025e0a2e08b14010031a0c6563396630643934313563612003280330013801420b4d617374657220426174684803507c5838122c574d5068576b7652794455316f59595936484474664b5142764c754e4a4c3948376a4c4d33773749394e513d
.*..^[email protected] .(.0.8.B.Master BathH.P|X8.,WMPhWkvRyDU1oYYY6HDtfKQBvLuNJL9H7jLM3w7I9NQ=

2021-11-06 08:57:10.009835
082ad202620a3208f9c60210021a0c6563396630643934306565612003280330013801420e4d617374657220426564726f6f6d4803507c582f122c524833357731506f3357567a6630656964755464444e394d354f523369414356564866535768496f6c48513d
.*..b.2........ec9f0d940eea .(.0.8.B.Master BedroomH.P|X/.,RH35w1Po3WVzf0eiduTdDN9M5OR3iACVVHfSWhIolHQ=

2021-11-06 08:57:10.828285
082ad2025e0a2e08ac4010001a0c6563396630643934313637362003280330013801420b44696e696e6720526f6f6d4803507c5831122c4f6f55566f2f62317249494f364979653963755477776a6d707877424871494f57704243396269667134493d
.*..^[email protected] .(.0.8.B.Dining RoomH.P|X1.,OoUVo/b1rIIO6Iye9cuTwwjmpxwBHqIOWpBC9bifq4I=

2021-11-06 08:57:16.505114
082ad2025e0a2e08a6d80210061a0c6563396630643934303837322003280330013801420a477565737420426174684803507b5833122c386864364455686d664f2b6a6b31506e7a334c70434e6f44535774575a3275517250424c754e35744a52733d
.*..^..........ec9f0d940872 .(.0.8.B.Guest BathH.P{X3.,8hd6DUhmfO+jk1Pnz3LpCNoDSWtWZ2uQrPBLuN5tJRs=

2021-11-06 08:57:24.502644
082ad202600a3008c7d80210011a0c6563396630643934313363322003280330013801420c4c61756e64727920426174684803507b5820122c5154794745484b6b33746956544c72684d32465470412f50742b68487136555741576a766f4e55754d73343d
.*..`.0........ec9f0d9413c2 .(.0.8.B.Laundry BathH.P{X .,QTyGEHKk3tiVTLrhM2FTpA/Pt+hHq6UWAWjvoNUuMs4=

2021-11-06 08:57:25.413231
082ad202600a3008ea0110071a0c6563396630643934313563322003280330013801420d477565737420426564726f6f6d4803507c582d122c39567874366f6d696b74656a306971356f37635a322f5a38625372635136662f726153724a6e5a54664d593d
.*..`.0.......ec9f0d9415c2 .(.0.8.B.Guest BedroomH.P|X-.,9Vxt6omiktej0iq5o7cZ2/Z8bSrcQ6f/raSrJnZTfMY=

2021-11-06 08:57:26.421120
082ad2025f0a2f08beca0110131a0c6334626538346632323235652001280930013802420b485641432052657475726e4802507d5864122c4f72485a597166443451494f773841764a6a416276796d4f69314976564c6d4c34553673554a71765a66633d
.*.._./........c4be84f2225e .(.0.8.B.HVAC ReturnH.P}Xd.,OrHZYqfD4QIOw8AvJjAbvymOi1IvVLmL4U6sUJqvZfc=

2021-11-06 08:57:27.487416
082ad202600a3008bdc40110121a0c6334626538346632326332622001280930013802420b4856414320537570706c794804508b015864122c656b53536a38344c557a5638597172586e48576c4a712b38326c412b52477937334d57574f4f55497851513d
.*..`.0........c4be84f22c2b .(.0.8.B.HVAC SupplyH.P..Xd.,ekSSj84LUzV8YqrXnHWlJq+82lA+RGy73MWWOOUIxQQ=

2021-11-06 08:57:31.801574
082ad2025a0a2a08990510041a0c656339663064393430636665200328033001380142074b69746368656e4803507d582d122c767968642f422f767936684d612b416a754a526d684c63755a72504a6167616b645a5a674a495849316d773d
.*..Z.*.......ec9f0d940cfe .(.0.8.B.KitchenH.P}X-.,vyhd/B/vy6hMa+AjuJRmhLcuZrPJagakdZZgJIXI1mw=

2021-11-06 08:57:47.529351
082ad202590a2908f52e10051a0c656339663064393431356636200328033001380142064f66666963654803507b5829122c556c724b622b6264564c41726d506b414d4473504330785a684665446b734351454c5863616b4f6f5733633d
.*..Y.).......ec9f0d9415f6 .(.0.8.B.OfficeH.P{X).,UlrKb+bdVLArmPkAMDsPC0xZhFeDksCQELXcakOoW3c=

2021-11-06 08:57:48.207560
082ad2025f0a2f08bfca0110131a0c6334626538346632323235652001280930013802420b485641432052657475726e4802507d5864122c75616b5961523634775356524e3737306756756e6361456638544138675865324c4a73696839672b6f4d553d
.*.._./........c4be84f2225e .(.0.8.B.HVAC ReturnH.P}Xd.,uakYaR64wSVRN770gVuncaEf8TA8gXe2LJsih9g+oMU=

2021-11-06 08:57:49.071664
082ad202600a3008bec40110121a0c6334626538346632326332622001280930013802420b4856414320537570706c794804508f015864122c316d7a666c2b77742b32327651614666504a756b557645304c6a447250686e41703453494469374d3664553d
.*..`.0........c4be84f22c2b .(.0.8.B.HVAC SupplyH.P..Xd.,1mzfl+wt+22vQaFfPJukUvE0LjDrPhnAp4SIDi7M6dU=

2021-11-06 08:58:01.076149
082ad2025e0a2e08b24010031a0c6563396630643934313563612003280330013801420b4d617374657220426174684803507c5838122c414c487366454338474b58714c6f5a32313443765a7a45533549762f59654b41384c6f4e34394f497751303d
.*..^[email protected] .(.0.8.B.Master BathH.P|X8.,ALHsfEC8GKXqLoZ214CvZzES5Iv/YeKA8LoN49OIwQ0=

2021-11-06 08:58:05.157292
082ad202620a3208fac60210021a0c6563396630643934306565612003280330013801420e4d617374657220426564726f6f6d4803507c582f122c6539496b4d714a4a666e4565674836305354547a4c49476a447434694e46676a4550565358377447434f513d
.*..b.2........ec9f0d940eea .(.0.8.B.Master BedroomH.P|X/.,e9IkMqJJfnEegH60STTzLIGjDt4iNFgjEPVSX7tGCOQ=

2021-11-06 08:58:05.981605
082ad2025e0a2e08ad4010001a0c6563396630643934313637362003280330013801420b44696e696e6720526f6f6d4803507c5831122c47636d616971614357507231346468463841784f6c5544526849755a3250795a4c716c4a64416c715445303d
.*..^[email protected] .(.0.8.B.Dining RoomH.P|X1.,GcmaiqaCWPr14dhF8AxOlUDRhIuZ2PyZLqlJdAlqTE0=

2021-11-06 08:58:09.549607
082ad2025f0a2f08c0ca0110131a0c6334626538346632323235652001280930013802420b485641432052657475726e4802507d5864122c45364231592f6653794c6a327533314f37446e6b6d45464544637130596e566f70495354446643415652513d
.*.._./........c4be84f2225e .(.0.8.B.HVAC ReturnH.P}Xd.,E6B1Y/fSyLj2u31O7DnkmEFEDcq0YnVopISTDfCAVRQ=

2021-11-06 08:58:11.895550
082ad2025e0a2e08a7d80210061a0c6563396630643934303837322003280330013801420a477565737420426174684803507b5833122c77595a2b35783173755341346c547a742f4c414e317556675155524a3252556d742b41505068394e3138453d
.*..^..........ec9f0d940872 .(.0.8.B.Guest BathH.P{X3.,wYZ+5x1suSA4lTzt/LAN1uVgQURJ2RUmt+APPh9N18E=

2021-11-06 08:58:15.147704
082ad202600a3008bfc40110121a0c6334626538346632326332622001280930013802420b4856414320537570706c7948045093015864122c594644764b5a737a43744472703858477461752f614f6b4571737536545763327a43454c7679494a6f43733d
.*..`.0........c4be84f22c2b .(.0.8.B.HVAC SupplyH.P..Xd.,YFDvKZszCtDrp8XGtau/aOkEqsu6TWc2zCELvyIJoCs=

2021-11-06 08:58:19.587852
082ad202600a3008c8d80210011a0c6563396630643934313363322003280330013801420c4c61756e64727920426174684803507c5820122c5a2b316462335954313842422b4f4248674e495a6d2f422f66434767636b3668486a3936504149723172553d
.*..`.0........ec9f0d9413c2 .(.0.8.B.Laundry BathH.P|X .,Z+1db3YT18BB+OBHgNIZm/B/fCGgck6hHj96PAIr1rU=

2021-11-06 08:58:20.701146
082ad202600a3008eb0110071a0c6563396630643934313563322003280330013801420d477565737420426564726f6f6d4803507c582a122c6459414f6c484f5936565972775a7a37514e4752507971356d3873417536752f654d5163574c6352754e6b3d
.*..`.0.......ec9f0d9415c2 .(.0.8.B.Guest BedroomH.P|X*.,dYAOlHOY6VYrwZz7QNGRPyq5m8sAu6u/eMQcWLcRuNk=

2021-11-06 08:58:30.878551
082ad2025f0a2f08c1ca0110131a0c6334626538346632323235652001280930013802420b485641432052657475726e4802507d5864122c33644b6a516a7339655a4f38644c4d4e62346d416a6448323479794575367572665853794c5032645775553d
.*.._./........c4be84f2225e .(.0.8.B.HVAC ReturnH.P}Xd.,3dKjQjs9eZO8dLMNb4mAjdH24yyEu6urfXSyLP2dWuU=

2021-11-06 08:58:36.870836
082ad202600a3008c0c40110121a0c6334626538346632326332622001280930013802420b4856414320537570706c7948045096015864122c7350664b5a45496b45356f7556527172307577417650712f6e524b7951776b4337397667614a597a4452413d
.*..`.0........c4be84f22c2b .(.0.8.B.HVAC SupplyH.P..Xd.,sPfKZEIkE5ouVRqr0uwAvPq/nRKyQwkC79vgaJYzDRA=

2021-11-06 08:58:42.219485
082ad2025a0a2a089a0510041a0c656339663064393430636665200328033001380142074b69746368656e4803507d582d122c48655a6a4837333938305250386a546d694b3461654c2b75622b4d6d464837486c506645466935624f52493d
.*..Z.*.......ec9f0d940cfe .(.0.8.B.KitchenH.P}X-.,HeZjH73980RP8jTmiK4aeL+ub+MmFH7HlPfEFi5bORI=

2021-11-06 08:58:42.817426
082ad202590a2908f62e10051a0c656339663064393431356636200328033001380142064f66666963654803507b5829122c336f61346d49486c79646256397074532b372b454f337935696946764a66657859374e3438414342524b453d
.*..Y.).......ec9f0d9415f6 .(.0.8.B.OfficeH.P{X).,3oa4mIHlydbV9ptS+7+EO3y5iiFvJfexY7N48ACBRKE=

2021-11-06 08:58:52.143797
082ad2025f0a2f08c2ca0110131a0c6334626538346632323235652001280930013802420b485641432052657475726e4802507d5864122c2b4e766978346658424c35647834434f70454d5631523759333843386169306349736d614472635a446a4d3d
.*.._./........c4be84f2225e .(.0.8.B.HVAC ReturnH.P}Xd.,+Nvix4fXBL5dx4COpEMV1R7Y38C8ai0cIsmaDrcZDjM=

2021-11-06 08:58:56.152689
082ad2025e0a2e08b34010031a0c6563396630643934313563612003280330013801420b4d617374657220426174684803507c5838122c4a6b425051746c572f4e636c6a4b2b2f75705779513169692f53687350704942326a724e786d4a756a73453d
.*..^[email protected] .(.0.8.B.Master BathH.P|X8.,JkBPQtlW/NcljK+/upWyQ1ii/ShsPpIB2jrNxmJujsE=

2021-11-06 08:58:58.799947
082ad202600a3008c1c40110121a0c6334626538346632326332622001280930013802420b4856414320537570706c7948045099015864122c33486532747a364961592b3159563547493452624e4e654858414b666c4e4641316475382b384c45756e493d
.*..`.0........c4be84f22c2b .(.0.8.B.HVAC SupplyH.P..Xd.,3He2tz6IaY+1YV5GI4RbNNeHXAKflNFA1du8+8LEunI=

2021-11-06 08:59:00.326699
082ad202620a3208fbc60210021a0c6563396630643934306565612003280330013801420e4d617374657220426564726f6f6d4803507c582f122c7a35394a4f6e2f6544705a3434666c39566c556d596b2b685663435a45654d326c597a4c4476484d2f676b3d
.*..b.2........ec9f0d940eea .(.0.8.B.Master BedroomH.P|X/.,z59JOn/eDpZ44fl9VlUmYk+hVcCZEeM2lYzLDvHM/gk=

2021-11-06 08:59:01.067395
082ad2025e0a2e08ae4010001a0c6563396630643934313637362003280330013801420b44696e696e6720526f6f6d4803507c5831122c58544376635167325753424c355776357a422b74764d77342b55465a526631734752506c68724d386758673d
.*..^[email protected] .(.0.8.B.Dining RoomH.P|X1.,XTCvcQg2WSBL5Wv5zB+tvMw4+UFZRf1sGRPlhrM8gXg=

2021-11-06 08:59:07.084170
082ad2025e0a2e08a8d80210061a0c6563396630643934303837322003280330013801420a477565737420426174684803507b5833122c6c666658344270687a742b523135483871426377367766766669794478727876427353392f77667430394d3d
.*..^..........ec9f0d940872 .(.0.8.B.Guest BathH.P{X3.,lffX4Bphzt+R15H8qBcw6wfvfiyDxrxvBsS9/wft09M=

2021-11-06 08:59:13.543068
082ad2025f0a2f08c3ca0110131a0c6334626538346632323235652001280930013802420b485641432052657475726e4802507d5864122c364757326d485a4664594f694447432f5476314e766f596b784c693070416a616473786d4b72667a4242493d
.*.._./........c4be84f2225e .(.0.8.B.HVAC ReturnH.P}Xd.,6GW2mHZFdYOiDGC/Tv1NvoYkxLi0pAjadsxmKrfzBBI=

2021-11-06 08:59:14.673454
082ad202600a3008c9d80210011a0c6563396630643934313363322003280330013801420c4c61756e64727920426174684803507c5820122c324f71332b504e6b374a526b3178476a3574756f41645a4e6a4f567654677054613052594f7a4271702b453d
.*..`.0........ec9f0d9413c2 .(.0.8.B.Laundry BathH.P|X .,2Oq3+PNk7JRk1xGj5tuoAdZNjOVvTgpTa0RYOzBqp+E=

2021-11-06 08:59:15.889145
082ad202600a3008ec0110071a0c6563396630643934313563322003280330013801420d477565737420426564726f6f6d4803507c582a122c574c6335696d4a73345a58474d327a53494147706f4739706870774861564c795943376d584641452f67553d
.*..`.0.......ec9f0d9415c2 .(.0.8.B.Guest BedroomH.P|X*.,WLc5imJs4ZXGM2zSIAGpoG9phpwHaVLyYC7mXFAE/gU=

2021-11-06 08:59:20.199002
082ad202600a3008c2c40110121a0c6334626538346632326332622001280930013802420b4856414320537570706c794804509b015864122c486651577a70596a775031387146374b493934657572724b62566a7466672b4c344856735368694851646b3d
.*..`.0........c4be84f22c2b .(.0.8.B.HVAC SupplyH.P..Xd.,HfQWzpYjwP18qF7KI94eurrKbVjtfg+L4HVsShiHQdk=

2021-11-06 08:59:34.943179
082ad2025f0a2f08c4ca0110131a0c6334626538346632323235652001280930013802420b485641432052657475726e4802507d5864122c39746d592b45774675675167694345446345724b59727550343737696766477555506265484637784f57383d
.*.._./........c4be84f2225e .(.0.8.B.HVAC ReturnH.P}Xd.,9tmY+EwFugQgiCEDcErKYruP477igfGuUPbeHF7xOW8=

2021-11-06 08:59:38.006144
082ad202590a2908f72e10051a0c656339663064393431356636200328033001380142064f66666963654803507b5829122c722b783337324a39515148524d56674c63586d49366d7731344e3173736e7230446643685a45426a6a77453d
.*..Y.).......ec9f0d9415f6 .(.0.8.B.OfficeH.P{X).,r+x372J9QQHRMVgLcXmI6mw14N1ssnr0DfChZEBjjwE=

2021-11-06 08:59:41.497467
082ad202600a3008c3c40110121a0c6334626538346632326332622001280930013802420b4856414320537570706c794804509c015864122c306d7059354433634b43463364454a574c374c7a5a52574b725643364a744a445a732f307268504678766f3d
.*..`.0........c4be84f22c2b .(.0.8.B.HVAC SupplyH.P..Xd.,0mpY5D3cKCF3dEJWL7LzZRWKrVC6JtJDZs/0rhPFxvo=

2021-11-06 08:59:51.239010
082ad2025e0a2e08b44010031a0c6563396630643934313563612003280330013801420b4d617374657220426174684803507c5838122c4d6457614c44574c30564f316d31444e642f73447951792f5232712b5877592b4c68566c753255542f68493d
.*..^[email protected] .(.0.8.B.Master BathH.P|X8.,MdWaLDWL0VO1m1DNd/sDyQy/R2q+XwY+LhVlu2UT/hI=

2021-11-06 08:59:52.637661
082ad2025a0a2a089b0510041a0c656339663064393430636665200328033001380142074b69746368656e4803507d582d122c68494631776e5453796e725872444336646e6c6d446351354b6f4d494b7845594f796f6d785377593235593d
.*..Z.*.......ec9f0d940cfe .(.0.8.B.KitchenH.P}X-.,hIF1wnTSynrXrDC6dnlmDcQ5KoMIKxEYOyomxSwY25Y=

2021-11-06 08:59:55.530558
082ad202620a3208fcc60210021a0c6563396630643934306565612003280330013801420e4d617374657220426564726f6f6d4803507c582f122c574e574a4d4c6f74776c576a397344644367587443382b7038685a6a7163426d615a6359395775735974513d
.*..b.2........ec9f0d940eea .(.0.8.B.Master BedroomH.P|X/.,WNWJMLotwlWj9sDdCgXtC8+p8hZjqcBmaZcY9WusYtQ=

2021-11-06 08:59:56.154966
082ad2025e0a2e08af4010001a0c6563396630643934313637362003280330013801420b44696e696e6720526f6f6d4803507c5831122c70704a4153592b7953312b744a7a733656757a45584b6b70394f4279584e506f4438527a52644d756c614d3d
.*..^[email protected] .(.0.8.B.Dining RoomH.P|X1.,ppJASY+yS1+tJzs6VuzEXKkp9OByXNPoD8RzRdMulaM=

2021-11-06 08:59:56.661587
082ad2025f0a2f08c5ca0110131a0c6334626538346632323235652001280930013802420b485641432052657475726e4802507d5864122c2f7539364f336579477a6b74445a6866694c2f5269352f536a766e625056734d6945586b4564612f464b453d
.*.._./........c4be84f2225e .(.0.8.B.HVAC ReturnH.P}Xd.,/u96O3eyGzktDZhfiL/Ri5/SjvnbPVsMiEXkEda/FKE=

2021-11-06 09:00:02.374806
082ad2025e0a2e08a9d80210061a0c6563396630643934303837322003280330013801420a477565737420426174684803507b583c122c437476567071366a4873643673633577726c632b4543565135326e356b6e5263417a6f38534145357465343d
.*..^..........ec9f0d940872 .(.0.8.B.Guest BathH.P{X<.,CtvVpq6jHsd6sc5wrlc+ECVQ52n5knRcAzo8SAE5te4=

2021-11-06 09:00:07.494337
082ad202600a3008c4c40110121a0c6334626538346632326332622001280930013802420b4856414320537570706c794804509d015864122c51364b3439574d467a5156722b316f7a656155787261396b41546f2f5a4a7674614d6875503450577444773d
.*..`.0........c4be84f22c2b .(.0.8.B.HVAC SupplyH.P..Xd.,Q6K49WMFzQVr+1ozeaUxra9kATo/ZJvtaMhuP4PWtDw=

2021-11-06 09:00:09.851975
082ad202600a3008cad80210011a0c6563396630643934313363322003280330013801420c4c61756e64727920426174684803507c5820122c4a2b4b4a4e644e424b4b4139484f2b4e734a624d73717347467952732f5639644b52626a565a77473031513d
.*..`.0........ec9f0d9413c2 .(.0.8.B.Laundry BathH.P|X .,J+KJNdNBKKA9HO+NsJbMsqsGFyRs/V9dKRbjVZwG01Q=

2021-11-06 09:00:11.180534
082ad202600a3008ed0110071a0c6563396630643934313563322003280330013801420d477565737420426564726f6f6d4803507c582a122c6c565578424d507933506d6f77587731374152574d697631777a6a4432534151785a6176725666726c68413d
.*..`.0.......ec9f0d9415c2 .(.0.8.B.Guest BedroomH.P|X*.,lVUxBMPy3PmowXw17ARWMiv1wzjD2SAQxZavrVfrlhA=

2021-11-06 09:00:18.471153
082ad2025f0a2f08c6ca0110131a0c6334626538346632323235652001280930013802420b485641432052657475726e4802507d5864122c52323642766d534d697359384c75714e676f78655a6f50424b387968416d66785337414954394978696e513d
.*.._./........c4be84f2225e .(.0.8.B.HVAC ReturnH.P}Xd.,R26BvmSMisY8LuqNgoxeZoPBK8yhAmfxS7AIT9IxinQ=

2021-11-06 09:00:33.194660
082ad202590a2908f82e10051a0c656339663064393431356636200328033001380142064f66666963654803507b5829122c5966546e546f7471445254556a35424b595234395872583069417032654e49667336392b7233734c4768493d
.*..Y.).......ec9f0d9415f6 .(.0.8.B.OfficeH.P{X).,YfTnTotqDRTUj5BKYR49XrX0iAp2eNIfs69+r3sLGhI=

2021-11-06 09:00:35.092409
082ad202600a3008c5c40110121a0c6334626538346632326332622001280930013802420b4856414320537570706c794804509e015864122c6758343765567a687539755266772f426b634449756c7035505a636a417844657a31774a4d6e364d6b64383d
.*..`.0........c4be84f22c2b .(.0.8.B.HVAC SupplyH.P..Xd.,gX47eVzhu9uRfw/BkcDIulp5PZcjAxDez1wJMn6Mkd8=

2021-11-06 09:00:39.756501
082ad2025f0a2f08c7ca0110131a0c6334626538346632323235652001280930013802420b485641432052657475726e4802507d5864122c4b41574c3953486b774d5a50335a505a4778435335546f5a4d756c4c31366c6e6a59584a4a59364544436f3d
.*.._./........c4be84f2225e .(.0.8.B.HVAC ReturnH.P}Xd.,KAWL9SHkwMZP3ZPZGxCS5ToZMulL16lnjYXJJY6EDCo=

2021-11-06 09:00:46.325635
082ad2025e0a2e08b54010031a0c6563396630643934313563612003280330013801420b4d617374657220426174684803507c5838122c6354334a33636e36563670306270562f6f6b483767375257327a39786c313073787a625358594e6b4650773d
.*..^[email protected] .(.0.8.B.Master BathH.P|X8.,cT3J3cn6V6p0bpV/okH7g7RW2z9xl10sxzbSXYNkFPw=

2021-11-06 09:00:50.617051
082ad202620a3208fdc60210021a0c6563396630643934306565612003280330013801420e4d617374657220426564726f6f6d4803507c582f122c7338742f3869554f52614158767a716a64584e5172436834506d667864754e556f476b546968764d6e79343d
.*..b.2........ec9f0d940eea .(.0.8.B.Master BedroomH.P|X/.,s8t/8iUORaAXvzqjdXNQrCh4PmfxduNUoGkTihvMny4=

2021-11-06 09:00:51.242689
082ad2025e0a2e08b04010001a0c6563396630643934313637362003280330013801420b44696e696e6720526f6f6d4803507c5831122c624e652b33412b4e42735768586d79322b793764386a66693044516a324e4c5a6c77314a627a746c547a633d
.*..^[email protected] .(.0.8.B.Dining RoomH.P|X1.,bNe+3A+NBsWhXmy2+y7d8jfi0DQj2NLZlw1JbztlTzc=

2021-11-06 09:00:56.444929
082ad202600a3008c6c40110121a0c6334626538346632326332622001280930013802420b4856414320537570706c794804509e015864122c4c30624375414e364d65457833534f596b38545a396e2f715231514c787631502f642b4c483748664848383d
.*..`.0........c4be84f22c2b .(.0.8.B.HVAC SupplyH.P..Xd.,L0bCuAN6MeEx3SOYk8TZ9n/qR1QLxv1P/d+LH7HfHH8=

2021-11-06 09:00:57.666048
082ad2025e0a2e08aad80210061a0c6563396630643934303837322003280330013801420a477565737420426174684803507c5836122c5a72305a6d3769336e4276394171385642655673396c4b32794a48383667676b323575417565322f4b45513d
.*..^..........ec9f0d940872 .(.0.8.B.Guest BathH.P|X6.,Zr0Zm7i3nBv9Aq8VBeVs9lK2yJH86ggk25uAue2/KEQ=

2021-11-06 09:01:01.421733
082ad2025f0a2f08c8ca0110131a0c6334626538346632323235652001280930013802420b485641432052657475726e4802507d5864122c464a38456e485773666b2b4e31434c6f74707566574966472b3858397352494a4c624961727250787470303d
.*.._./........c4be84f2225e .(.0.8.B.HVAC ReturnH.P}Xd.,FJ8EnHWsfk+N1CLotpufWIfG+8X9sRIJLbIarrPxtp0=

2021-11-06 09:01:03.055634
082ad2025a0a2a089c0510041a0c656339663064393430636665200328033001380142074b69746368656e4803507d582d122c43766c59566e67562f31655a693331322b4a39576254477a7a423738534c347248386b44414f69614d726f3d
.*..Z.*.......ec9f0d940cfe .(.0.8.B.KitchenH.P}X-.,CvlYVngV/1eZi312+J9WbTGzzB78SL4rH8kDAOiaMro=

2021-11-06 09:01:05.037001
082ad202600a3008cbd80210011a0c6563396630643934313363322003280330013801420c4c61756e64727920426174684803507c5820122c58736a4f65502f345446634942627a2f444145586d5267304d4b6554774b3147543676496a6865444748633d
.*..`.0........ec9f0d9413c2 .(.0.8.B.Laundry BathH.P|X .,XsjOeP/4TFcIBbz/DAEXmRg0MKeTwK1GT6vIjheDGHc=

2021-11-06 09:01:06.266005
082ad202600a3008ee0110071a0c6563396630643934313563322003280330013801420d477565737420426564726f6f6d4803507c582a122c397a4635773739334a7351646a5a74334641754932527a375a4f4b32692f334d52536b3272713738626f453d
.*..`.0.......ec9f0d9415c2 .(.0.8.B.Guest BedroomH.P|X*.,9zF5w793JsQdjZt3FAuI2Rz7ZOK2i/3MRSk2rq78boE=

2021-11-06 09:01:17.846000
082ad202600a3008c7c40110121a0c6334626538346632326332622001280930013802420b4856414320537570706c794804509e015864122c4a776e426a7244436b4333524b2f312f4c3977554b43554348464e4e55734d4d75394a69725455495047593d
.*..`.0........c4be84f22c2b .(.0.8.B.HVAC SupplyH.P..Xd.,JwnBjrDCkC3RK/1/L9wUKCUCHFNNUsMMu9JirTUIPGY=

2021-11-06 09:01:23.085303
082ad2025f0a2f08c9ca0110131a0c6334626538346632323235652001280930013802420b485641432052657475726e4802507c5864122c4639774458594548544866375938715a694e7858394a64656c68596f36442b634d304b52646a656a7a4c733d
.*.._./........c4be84f2225e .(.0.8.B.HVAC ReturnH.P|Xd.,F9wDXYEHTHf7Y8qZiNxX9JdelhYo6D+cM0KRdjejzLs=

2021-11-06 09:01:28.485870
082ad202590a2908f92e10051a0c656339663064393431356636200328033001380142064f66666963654803507b5829122c6b725062564457536463706f63626d4f584d42644a696d6d6d3645504f46565a5854443477572f763254673d
.*..Y.).......ec9f0d9415f6 .(.0.8.B.OfficeH.P{X).,krPbVDWSdcpocbmOXMBdJimmm6EPOFVZXTD4wW/v2Tg=

2021-11-06 09:01:39.141954
082ad202600a3008c8c40110121a0c6334626538346632326332622001280930013802420b4856414320537570706c794804509f015864122c72616842483145466f465a3131696a73544b5a306a55787754795a5952723742426b6b7a376a68556a52633d
.*..`.0........c4be84f22c2b .(.0.8.B.HVAC SupplyH.P..Xd.,rahBH1EFoFZ11ijsTKZ0jUxwTyZYRr7BBkkz7jhUjRc=

2021-11-06 09:01:41.412645
082ad2025e0a2e08b64010031a0c6563396630643934313563612003280330013801420b4d617374657220426174684803507c5838122c307832596d4b314e4f2f7344734f304936444172534e76786547723430516e5857415259416d412b70306b3d
.*..^[email protected] .(.0.8.B.Master BathH.P|X8.,0x2YmK1NO/sDsO0I6DArSNvxeGr40QnXWARYAmA+p0k=

2021-11-06 09:01:44.465624
082ad2025f0a2f08caca0110131a0c6334626538346632323235652001280930013802420b485641432052657475726e4802507c5864122c35324162757a484e4875336362662b393663676c486857585737337a545671796379674b69314b54746d633d
.*.._./........c4be84f2225e .(.0.8.B.HVAC ReturnH.P|Xd.,52AbuzHNHu3cbf+96cglHhWXW73zTVqycygKi1KTtmc=

2021-11-06 09:01:45.703871
082ad202620a3208fec60210021a0c6563396630643934306565612003280330013801420e4d617374657220426564726f6f6d4803507c582f122c4e4647374757756a6155756c416b3549494f63694437716f72725a4d62556c6f5743786c65306c656d57513d
.*..b.2........ec9f0d940eea .(.0.8.B.Master BedroomH.P|X/.,NFG7GWujaUulAk5IIOciD7qorrZMbUloWCxle0lemWQ=

2021-11-06 09:01:46.326362
082ad2025e0a2e08b14010001a0c6563396630643934313637362003280330013801420b44696e696e6720526f6f6d4803507c5831122c6b424972486b77793268697046764d68422f53354f76365a6171705a61754550794d7036687169657744493d
.*..^[email protected] .(.0.8.B.Dining RoomH.P|X1.,kBIrHkwy2hipFvMhB/S5Ov6ZaqpZauEPyMp6hqiewDI=

2021-11-06 09:01:52.955900
082ad2025e0a2e08abd80210061a0c6563396630643934303837322003280330013801420a477565737420426174684803507c5833122c6b5a6e6f653969634d37394249644a46364c38725865636b56597349626469356352467074307a6c6654553d
.*..^..........ec9f0d940872 .(.0.8.B.Guest BathH.P|X3.,kZnoe9icM79BIdJF6L8rXeckVYsIbdi5cRFpt0zlfTU=

2021-11-06 09:02:00.229338
082ad202600a3008ccd80210011a0c6563396630643934313363322003280330013801420c4c61756e64727920426174684803507c5820122c47614a726f485052616f6749636f696b347732516d4e70782b6e625144694b4f32454852746a64376179553d
.*..`.0........ec9f0d9413c2 .(.0.8.B.Laundry BathH.P|X .,GaJroHPRaogIcoik4w2QmNpx+nbQDiKO2EHRtjd7ayU=

2021-11-06 09:02:00.746153
082ad202600a3008c9c40110121a0c6334626538346632326332622001280930013802420b4856414320537570706c794804509f015864122c2b743261326775742b777849517156487841764b7943742f4453612f6f6e6142322b566f444c77342f54343d
.*..`.0........c4be84f22c2b .(.0.8.B.HVAC SupplyH.P..Xd.,+t2a2gut+wxIQqVHxAvKyCt/DSa/onaB2+VoDLw4/T4=

2021-11-06 09:02:01.659217
082ad202600a3008ef0110071a0c6563396630643934313563322003280330013801420d477565737420426564726f6f6d4803507c582a122c4a766369637152414d6852772b54634a4a626a43717137647554732b3879727a4a4970705971684a6748493d
.*..`.0.......ec9f0d9415c2 .(.0.8.B.Guest BedroomH.P|X*.,JvcicqRAMhRw+TcJJbjCqq7duTs+8yrzJIppYqhJgHI=

2021-11-06 09:02:05.764045
082ad2025f0a2f08cbca0110131a0c6334626538346632323235652001280930013802420b485641432052657475726e4802507c5864122c61684a76784e706b3648506a66567752326b6d764956316b774e352b4e77593161374c35755356615870513d
.*.._./........c4be84f2225e .(.0.8.B.HVAC ReturnH.P|Xd.,ahJvxNpk6HPjfVwR2kmvIV1kwN5+NwY1a7L5uSVaXpQ=

2021-11-06 09:02:13.473658
082ad2025a0a2a089d0510041a0c656339663064393430636665200328033001380142074b69746368656e4803507d582d122c6b43344142566d666d2f483474454566493576417935673144766b31444731324349717571446b70584d6f3d
.*..Z.*.......ec9f0d940cfe .(.0.8.B.KitchenH.P}X-.,kC4ABVmfm/H4tEEfI5vAy5g1Dvk1DG12CIquqDkpXMo=

2021-11-06 09:02:22.388623
082ad202600a3008cac40110121a0c6334626538346632326332622001280930013802420b4856414320537570706c794804509f015864122c6d6e48422b394f57343939376e3756447277702b47587139444a476d62532f424a587944726d38727564343d
.*..`.0........c4be84f22c2b .(.0.8.B.HVAC SupplyH.P..Xd.,mnHB+9OW4997n7VDrwp+GXq9DJGmbS/BJXyDrm8rud4=

2021-11-06 09:02:23.775412
082ad202590a2908fa2e10051a0c656339663064393431356636200328033001380142064f66666963654803507b5829122c4771713644373850494e54734a706d58334c3269362b394c41506d6277414c54766e66564c436b7a5979553d
.*..Y.).......ec9f0d9415f6 .(.0.8.B.OfficeH.P{X).,Gqq6D78PINTsJpmX3L2i6+9LAPmbwALTvnfVLCkzYyU=

2021-11-06 09:02:26.958853
082ad2025f0a2f08ccca0110131a0c6334626538346632323235652001280930013802420b485641432052657475726e4802507c5864122c72426d4d4b2f735051754e57334d69755134745a344a6e346c65342b6d4b686d7166692b7a2b70326b4c4d3d
.*.._./........c4be84f2225e .(.0.8.B.HVAC ReturnH.P|Xd.,rBmMK/sPQuNW3MiuQ4tZ4Jn4le4+mKhmqfi+z+p2kLM=

2021-11-06 09:02:36.602116
082ad2025e0a2e08b74010031a0c6563396630643934313563612003280330013801420b4d617374657220426174684803507c5838122c51356f67496b3050554968755971524842764d745163696c634230746f544456494273487456326e3547383d
.*..^[email protected] .(.0.8.B.Master BathH.P|X8.,Q5ogIk0PUIhuYqRHBvMtQcilcB0toTDVIBsHtV2n5G8=

2021-11-06 09:02:40.792478
082ad202620a3208ffc60210021a0c6563396630643934306565612003280330013801420e4d617374657220426564726f6f6d4803507c582f122c34622b56715a66345432695138356244696255414b75425936776a6a6854724d535a7052775447494542513d
.*..b.2........ec9f0d940eea .(.0.8.B.Master BedroomH.P|X/.,4b+VqZf4T2iQ85bDibUAKuBY6wjjhTrMSZpRwTGIEBQ=

2021-11-06 09:02:41.412220
082ad2025e0a2e08b24010001a0c6563396630643934313637362003280330013801420b44696e696e6720526f6f6d4803507c5831122c34334b6e446d6379494953675170626e393673534c5a4d367062494a414a4c4c522b3565743179574476453d
.*..^[email protected] .(.0.8.B.Dining RoomH.P|X1.,43KnDmcyIISgQpbn96sSLZM6pbIJAJLLR+5et1yWDvE=

2021-11-06 09:02:44.050023
082ad202600a3008cbc40110121a0c6334626538346632326332622001280930013802420b4856414320537570706c79480450a0015864122c4c4f727750756a79636435654f46444755376b65356a6446685a36507a50646246774845745765706432593d
.*..`.0........c4be84f22c2b .(.0.8.B.HVAC SupplyH.P..Xd.,LOrwPujycd5eOFDGU7ke5jdFhZ6PzPdbFwHEtWepd2Y=

2021-11-06 09:02:48.246768
082ad2025e0a2e08acd80210061a0c6563396630643934303837322003280330013801420a477565737420426174684803507c5833122c41364a4a2b7448367876426a384a53344d794e6c554654667a4146697430686a73456c4c434c37486a6b4d3d
.*..^..........ec9f0d940872 .(.0.8.B.Guest BathH.P|X3.,A6JJ+tH6xvBj8JS4MyNlUFTfzAFit0hjsElLCL7HjkM=

2021-11-06 09:02:48.358846
082ad2025f0a2f08cdca0110131a0c6334626538346632323235652001280930013802420b485641432052657475726e4802507c5864122c4f496e3841375274614a7a2f54586b6278544f6f38496e777632754f56376b6435522f2b374b4a31546d383d
.*.._./........c4be84f2225e .(.0.8.B.HVAC ReturnH.P|Xd.,OIn8A7RtaJz/TXkbxTOo8Inwv2uOV7kd5R/+7KJ1Tm8=

2021-11-06 09:02:55.721291
082ad202600a3008cdd80210011a0c6563396630643934313363322003280330013801420c4c61756e64727920426174684803507c5828122c415055712f7151307a78617035624e67687a574a4c3452693052654164736c46414d5a43765a35304855773d
.*..`.0........ec9f0d9413c2 .(.0.8.B.Laundry BathH.P|X(.,APUq/qQ0zxap5bNghzWJL4Ri0ReAdslFAMZCvZ50HUw=

2021-11-06 09:02:57.155279
082ad202600a3008f00110071a0c6563396630643934313563322003280330013801420d477565737420426564726f6f6d4803507c582a122c5230584f653852736952643635394e34694a776d685946486f772b6664657779537138327a7941525538593d
.*..`.0.......ec9f0d9415c2 .(.0.8.B.Guest BedroomH.P|X*.,R0XOe8RsiRd659N4iJwmhYFHow+fdewySq82zyARU8Y=

2021-11-06 09:03:08.656138
082ad2025a0a2a089e0510041a0c656339663064393430636665200328033001380142074b69746368656e4803507d582d122c46396379357a6e435a786a6e31624d6770677272364b526c4c6936484d545a5a79714537793774746f6f493d
.*..Z.*.......ec9f0d940cfe .(.0.8.B.KitchenH.P}X-.,F9cy5znCZxjn1bMgpgrr6KRlLi6HMTZZyqE7y7ttooI=

2021-11-06 09:03:09.002609
082ad202600a3008ccc40110121a0c6334626538346632326332622001280930013802420b4856414320537570706c79480450a0015864122c7557664768706f41464566464b59376f7367627037585758794c77652f645278566e444f66536f793541593d
.*..`.0........c4be84f22c2b .(.0.8.B.HVAC SupplyH.P..Xd.,uWfGhpoAFEfFKY7osgbp7XWXyLwe/dRxVnDOfSoy5AY=

2021-11-06 09:03:09.758641
082ad2025f0a2f08ceca0110131a0c6334626538346632323235652001280930013802420b485641432052657475726e4802507c5864122c416b55534c6447544d4d782f35355344674d72496579733977574b2b6a41644166564257362f377a7349493d
.*.._./........c4be84f2225e .(.0.8.B.HVAC ReturnH.P|Xd.,AkUSLdGTMMx/55SDgMrIeys9wWK+jAdAfVBW6/7zsII=

2021-11-06 09:03:19.066138
082ad202590a2908fb2e10051a0c656339663064393431356636200328033001380142064f66666963654803507b5829122c656279374972736e76624e436b427a4f6c77707251687569615357762f4e322f51316e774f6c424e3445513d
.*..Y.).......ec9f0d9415f6 .(.0.8.B.OfficeH.P{X).,eby7IrsnvbNCkBzOlwprQhuiaSWv/N2/Q1nwOlBN4EQ=

2021-11-06 09:03:30.337928
082ad202600a3008cdc40110121a0c6334626538346632326332622001280930013802420b4856414320537570706c79480450a0015864122c42596777645268635a4f3934676d4d554857464857524a37784935777663742f4d5354616746386269686b3d
.*..`.0........c4be84f22c2b .(.0.8.B.HVAC SupplyH.P..Xd.,BYgwdRhcZO94gmMUHWFHWRJ7xI5wvct/MSTagF8bihk=

2021-11-06 09:03:31.160625
082ad2025f0a2f08cfca0110131a0c6334626538346632323235652001280930013802420b485641432052657475726e4802507c5864122c4744564e443962575730583647506336522f32734e7242714d422f76514331587977426d6c4a612f6e396b3d
.*.._./........c4be84f2225e .(.0.8.B.HVAC ReturnH.P|Xd.,GDVND9bWW0X6GPc6R/2sNrBqMB/vQC1XywBmlJa/n9k=

2021-11-06 09:03:31.686155
082ad2025e0a2e08b84010031a0c6563396630643934313563612003280330013801420b4d617374657220426174684803507c5838122c6977754a462b7849323470624e36777a6748756e516954437a786a564b646163507065586d3767324464553d
.*..^[email protected] .(.0.8.B.Master BathH.P|X8.,iwuJF+xI24pbN6wzgHunQiTCzxjVKdacPpeXm7g2DdU=

2021-11-06 09:03:36.164881
082ad202620a320880c70210021a0c6563396630643934306565612003280330013801420e4d617374657220426564726f6f6d4803507c582f122c65462b552f37424d59432b486b6e4574464b4356646d6e334a352f4d7772647357434830306844315865593d
.*..b.2........ec9f0d940eea .(.0.8.B.Master BedroomH.P|X/.,eF+U/7BMYC+HknEtFKCVdmn3J5/MwrdsWCH00hD1XeY=

2021-11-06 09:03:36.498667
082ad2025e0a2e08b34010001a0c6563396630643934313637362003280330013801420b44696e696e6720526f6f6d4803507c5831122c4848433758627256664f494954724b7072633264714a6668797437726b2f3262354d5a47594836756852553d
.*..^[email protected] .(.0.8.B.Dining RoomH.P|X1.,HHC7XbrVfOIITrKprc2dqJfhyt7rk/2b5MZGYH6uhRU=

2021-11-06 09:03:43.537077
082ad2025e0a2e08add80210061a0c6563396630643934303837322003280330013801420a477565737420426174684803507c5833122c577869697a736c56676378504b626b4f6959426c597979386d78454a5047306641524e4c654971504136633d
.*..^..........ec9f0d940872 .(.0.8.B.Guest BathH.P|X3.,WxiizslVgcxPKbkOiYBlYyy8mxEJPG0fARNLeIqPA6c=

2021-11-06 09:03:51.127794
082ad202600a3008ced80210011a0c6563396630643934313363322003280330013801420c4c61756e64727920426174684803507c5828122c3966496f4458316a554b4b51496e63394b307368536c343263417162756d55597a626c4e6b596d343930553d
.*..`.0........ec9f0d9413c2 .(.0.8.B.Laundry BathH.P|X(.,9fIoDX1jUKKQInc9K0shSl42cAqbumUYzblNkYm490U=

2021-11-06 09:03:51.634558
082ad202600a3008cec40110121a0c6334626538346632326332622001280930013802420b4856414320537570706c79480450a0015864122c477638306f4c52766c4f6c704e37434130744d584b6a6f44794b4668396a636c5342617068356c736f52453d
.*..`.0........c4be84f22c2b .(.0.8.B.HVAC SupplyH.P..Xd.,Gv80oLRvlOlpN7CA0tMXKjoDyKFh9jclSBaph5lsoRE=

2021-11-06 09:03:52.352146
082ad2025f0a2f08d0ca0110131a0c6334626538346632323235652001280930013802420b485641432052657475726e4802507d5864122c536c734d536948474678517746413371646133366234695235704a7932324b787747694c61435a443970513d
.*.._./........c4be84f2225e .(.0.8.B.HVAC ReturnH.P}Xd.,SlsMSiHGFxQwFA3qda36b4iR5pJy22KxwGiLaCZD9pQ=

2021-11-06 09:03:52.356086
082ad202600a3008f10110071a0c6563396630643934313563322003280330013801420d477565737420426564726f6f6d4803507c582a122c7962514b6773754a31514b3038687a546933534b2f584e3863783644715241377a4251436c4d68596b55773d
.*..`.0.......ec9f0d9415c2 .(.0.8.B.Guest BedroomH.P|X*.,ybQKgsuJ1QK08hzTi3SK/XN8cx6DqRA7zBQClMhYkUw=

2021-11-06 09:04:12.932599
082ad202600a3008cfc40110121a0c6334626538346632326332622001280930013802420b4856414320537570706c79480450a0015864122c6f356637674d776a314c344a4572464736396233536b646c4f32314571717735477379444f5465664646733d
.*..`.0........c4be84f22c2b .(.0.8.B.HVAC SupplyH.P..Xd.,o5f7gMwj1L4JErFG69b3SkdlO21Eqqw5GsyDOTefFFs=

2021-11-06 09:04:13.853831
082ad2025f0a2f08d1ca0110131a0c6334626538346632323235652001280930013802420b485641432052657475726e4802507d5864122c4d436a4f774c7a4f67553562676d386b71654f327954364874562b595838594e753354683467566e6863343d
.*.._./........c4be84f2225e .(.0.8.B.HVAC ReturnH.P}Xd.,MCjOwLzOgU5bgm8kqeO2yT6HtV+YX8YNu3Th4gVnhc4=

2021-11-06 09:04:14.356548
082ad202590a2908fc2e10051a0c656339663064393431356636200328033001380142064f66666963654803507b5829122c796d6559746d2b6934514a2b6b3859715a4c573571796a512f574a65514d514d326f4f47506e2f347843303d
.*..Y.).......ec9f0d9415f6 .(.0.8.B.OfficeH.P{X).,ymeYtm+i4QJ+k8YqZLW5qyjQ/WJeQMQM2oOGPn/4xC0=

2021-11-06 09:04:19.044042
082ad2025a0a2a089f0510041a0c656339663064393430636665200328033001380142074b69746368656e4803507d582d122c36384362727a656d316a71545061455662732f5a674d4932506136386c5939714d725475616e546950676b3d
.*..Z.*.......ec9f0d940cfe .(.0.8.B.KitchenH.P}X-.,68Cbrzem1jqTPaEVbs/ZgMI2Pa68lY9qMrTuanTiPgk=

2021-11-06 09:04:26.874854
082ad2025e0a2e08b94010031a0c6563396630643934313563612003280330013801420b4d617374657220426174684803507c5838122c7a6b69326349705839325a6152496363455a666d3769346f6f417276314244776f6570496839574f7531383d
.*..^[email protected] .(.0.8.B.Master BathH.P|X8.,zki2cIpX92ZaRIccEZfm7i4ooArv1BDwoepIh9WOu18=

2021-11-06 09:04:31.353223
082ad202620a320881c70210021a0c6563396630643934306565612003280330013801420e4d617374657220426564726f6f6d4803507d582f122c646d5641784770537077766d7a4c6b794f55566341442f6a61614d487861376756744c4b4f373864354e4d3d
.*..b.2........ec9f0d940eea .(.0.8.B.Master BedroomH.P}X/.,dmVAxGpSpwvmzLkyOUVcAD/jaaMHxa7gVtLKO78d5NM=

2021-11-06 09:04:31.584851
082ad2025e0a2e08b44010001a0c6563396630643934313637362003280330013801420b44696e696e6720526f6f6d4803507c5831122c336a43385876502f4534616c78646d474b6a586e31453057745176794c527658664363557131794556536f3d
.*..^[email protected] .(.0.8.B.Dining RoomH.P|X1.,3jC8XvP/E4alxdmGKjXn1E0WtQvyLRvXfCcUq1yEVSo=

2021-11-06 09:04:34.331134
082ad202600a3008d0c40110121a0c6334626538346632326332622001280930013802420b4856414320537570706c79480450a0015864122c3259466535486b45706a6559702b5357356968522f7939392b4b65456150726a504a6e6452535a635536733d
.*..`.0........c4be84f22c2b .(.0.8.B.HVAC SupplyH.P..Xd.,2YFe5HkEpjeYp+SW5ihR/y99+KeEaPrjPJndRSZcU6s=

2021-11-06 09:04:35.254981
082ad2025f0a2f08d2ca0110131a0c6334626538346632323235652001280930013802420b485641432052657475726e4802507d5864122c72344953624e67524a495a54724d73677832634c2b784b50544b5a7871543255674d30306d314e6c42316f3d
.*.._./........c4be84f2225e .(.0.8.B.HVAC ReturnH.P}Xd.,r4ISbNgRJIZTrMsgx2cL+xKPTKZxqT2UgM00m1NlB1o=

2021-11-06 09:04:38.827506
082ad2025e0a2e08aed80210061a0c6563396630643934303837322003280330013801420a477565737420426174684803507c5833122c634c667a623577447070375a62625a48483732556350324a5270467a6a48616b486e644c6c5045324a47493d
.*..^..........ec9f0d940872 .(.0.8.B.Guest BathH.P|X3.,cLfzb5wDpp7ZbbZHH72UcP2JRpFzjHakHndLlPE2JGI=

2021-11-06 09:04:46.211077
082ad202600a3008cfd80210011a0c6563396630643934313363322003280330013801420c4c61756e64727920426174684803507c5828122c785a346d63646e595359654f6b614f4e7762334f4c5057317633667642613346694e367679754f6f316a303d
.*..`.0........ec9f0d9413c2 .(.0.8.B.Laundry BathH.P|X(.,xZ4mcdnYSYeOkaONwb3OLPW1v3fvBa3FiN6vyuOo1j0=

2021-11-06 09:04:47.441915
082ad202600a3008f20110071a0c6563396630643934313563322003280330013801420d477565737420426564726f6f6d4803507c582a122c384d3075463961384a3576364b6863454a3758536d5a625261556a443159304f2b4136686b6654394634733d
.*..`.0.......ec9f0d9415c2 .(.0.8.B.Guest BedroomH.P|X*.,8M0uF9a8J5v6KhcEJ7XSmZbRaUjD1Y0O+A6hkfT9F4s=

2021-11-06 09:04:56.652476
082ad2025f0a2f08d3ca0110131a0c6334626538346632323235652001280930013802420b485641432052657475726e4802507d5864122c765048512f6b792b645039734c7a6f4f4e664b55737432326a4f537576784335555a432f2f7063657047593d
.*.._./........c4be84f2225e .(.0.8.B.HVAC ReturnH.P}Xd.,vPHQ/ky+dP9sLzoONfKUst22jOSuvxC5UZC//pcepGY=

2021-11-06 09:04:56.857121
082ad202600a3008d1c40110121a0c6334626538346632326332622001280930013802420b4856414320537570706c79480450a0015864122c312f4e6e44314759425a706568354d4f33374b6f494b4837332b4b714b2f446b4d3772692f7951456445493d
.*..`.0........c4be84f22c2b .(.0.8.B.HVAC SupplyH.P..Xd.,1/NnD1GYBZpeh5MO37KoIKH73+KqK/DkM7ri/yQEdEI=

2021-11-06 09:05:09.749458
082ad202590a2908fd2e10051a0c656339663064393431356636200328033001380142064f66666963654803507b5829122c6b2b5462504353366e492b4470516b714461796c717561784b75344f504669756661336263527842544e413d
.*..Y.).......ec9f0d9415f6 .(.0.8.B.OfficeH.P{X).,k+TbPCS6nI+DpQkqDaylquaxKu4OPFiufa3bcRxBTNA=

2021-11-06 09:05:18.768553
082ad2025f0a2f08d4ca0110131a0c6334626538346632323235652001280930013802420b485641432052657475726e4802507d5864122c50625635562f763044556e6c384a384366734368323579486d445a73784a61396e535475674c314a505a553d
.*.._./........c4be84f2225e .(.0.8.B.HVAC ReturnH.P}Xd.,PbV5V/v0DUnl8J8CfsCh25yHmDZsxJa9nSTugL1JPZU=

2021-11-06 09:05:19.111849
082ad202600a3008d2c40110121a0c6334626538346632326332622001280930013802420b4856414320537570706c79480450a0015864122c5776457743715465384c30644d526a766379446d6861524f484d596945764a4b3831554d586953356542383d
.*..`.0........c4be84f22c2b .(.0.8.B.HVAC SupplyH.P..Xd.,WvEwCqTe8L0dMRjvcyDmhaROHMYiEvJK81UMXiS5eB8=

2021-11-06 09:05:21.964492
082ad2025e0a2e08ba4010031a0c6563396630643934313563612003280330013801420b4d617374657220426174684803507c5838122c363349736d53386154626f2b2b6761706e694351427644766d75793254674d715745725255367351536e413d
.*..^[email protected] .(.0.8.B.Master BathH.P|X8.,63IsmS8aTbo++gapniCQBvDvmuy2TgMqWErRU6sQSnA=

2021-11-06 09:05:26.541145
082ad202620a320882c70210021a0c6563396630643934306565612003280330013801420e4d617374657220426564726f6f6d4803507d582f122c71307651704f6e73774d624155336a4b5872532f6470527631487377726d764974386f546e4a46307451673d
.*..b.2........ec9f0d940eea .(.0.8.B.Master BedroomH.P}X/.,q0vQpOnswMbAU3jKXrS/dpRv1HswrmvIt8oTnJF0tQg=

2021-11-06 09:05:26.674157
082ad2025e0a2e08b54010001a0c6563396630643934313637362003280330013801420b44696e696e6720526f6f6d4803507c5831122c6b3130685a365431495937584970374b58524634564144377951386c4472425676794841775875775933733d
.*..^[email protected] .(.0.8.B.Dining RoomH.P|X1.,k10hZ6T1IY7XIp7KXRF4VAD7yQ8lDrBVvyHAwXuwY3s=

2021-11-06 09:05:29.435325
082ad2025a0a2a08a00510041a0c656339663064393430636665200328033001380142074b69746368656e4803507d582d122c716a766b63436f3276466f716e49784233345a4f4b6264637649474c56427874496a4a694466596b4272413d
.*..Z.*.......ec9f0d940cfe .(.0.8.B.KitchenH.P}X-.,qjvkcCo2vFoqnIxB34ZOKbdcvIGLVBxtIjJiDfYkBrA=

2021-11-06 09:05:34.017589
082ad2025e0a2e08afd80210061a0c6563396630643934303837322003280330013801420a477565737420426174684803507c5833122c4857534a3330646b716d434a2b4b6c6f664157696a4f68705565795950514f45394b65516b4678423270303d
.*..^..........ec9f0d940872 .(.0.8.B.Guest BathH.P|X3.,HWSJ30dkqmCJ+KlofAWijOhpUeyYPQOE9KeQkFxB2p0=

2021-11-06 09:05:40.474412
082ad202600a3008d3c40110121a0c6334626538346632326332622001280930013802420b4856414320537570706c794804509f015864122c655974367451693470505a2b36624c537766624c6752494451716d346d51716c446256596e4e5164652f733d
.*..`.0........c4be84f22c2b .(.0.8.B.HVAC SupplyH.P..Xd.,eYt6tQi4pPZ+6bLSwfbLgRIDQqm4mQqlDbVYnNQde/s=

2021-11-06 09:05:40.922253
082ad2025f0a2f08d5ca0110131a0c6334626538346632323235652001280930013802420b485641432052657475726e4802507d5864122c454b76503079667451696f316661494b585878476275377333674f45786168584137444e7775486e7835773d
.*.._./........c4be84f2225e .(.0.8.B.HVAC ReturnH.P}Xd.,EKvP0yftQio1faIKXXxGbu7s3gOExahXA7DNwuHnx5w=

2021-11-06 09:05:41.297027
082ad202600a3008d0d80210011a0c6563396630643934313363322003280330013801420c4c61756e64727920426174684803507c5828122c3047784d523063694b7a366b30354b6649704d4e423867344d353164462f4b556b6949336e454d6c536a6f3d
.*..`.0........ec9f0d9413c2 .(.0.8.B.Laundry BathH.P|X(.,0GxMR0ciKz6k05KfIpMNB8g4M51dF/KUkiI3nEMlSjo=

2021-11-06 09:05:42.527542
082ad202600a3008f30110071a0c6563396630643934313563322003280330013801420d477565737420426564726f6f6d4803507c582a122c5968633846744772495076704a4148656565327750587364485a65435831556f737836713746486a6d796b3d
.*..`.0.......ec9f0d9415c2 .(.0.8.B.Guest BedroomH.P|X*.,Yhc8FtGrIPvpJAHeee2wPXsdHZeCX1Uosx6q7FHjmyk=

2021-11-06 09:06:01.874799
082ad202600a3008d4c40110121a0c6334626538346632326332622001280930013802420b4856414320537570706c794804509f015864122c2f514378566e52494a794c6a7468343265442b74416e61424f4c41504870366b7a743939746d4b6d4554453d
.*..`.0........c4be84f22c2b .(.0.8.B.HVAC SupplyH.P..Xd.,/QCxVnRIJyLjth42eD+tAnaBOLAPHp6kzt99tmKmETE=

2021-11-06 09:06:05.039876
082ad202590a2908fe2e10051a0c656339663064393431356636200328033001380142064f66666963654803507b5829122c643066536e397762666c3435624834666546714144426f4256744466516456703842386f616a4d334c33343d
.*..Y.).......ec9f0d9415f6 .(.0.8.B.OfficeH.P{X).,d0fSn9wbfl45bH4feFqADBoBVtDfQdVp8B8oajM3L34=

2021-11-06 09:06:06.003023
082ad2025f0a2f08d6ca0110131a0c6334626538346632323235652001280930013802420b485641432052657475726e4802507d5864122c705a7348624353436a48672b364e66787a2f6c624b624b51416d384a43715367447a702b336e35587542383d
.*.._./........c4be84f2225e .(.0.8.B.HVAC ReturnH.P}Xd.,pZsHbCSCjHg+6Nfxz/lbKbKQAm8JCqSgDzp+3n5XuB8=

2021-11-06 09:06:17.046709
082ad2025e0a2e08bb4010031a0c6563396630643934313563612003280330013801420b4d617374657220426174684803507d5838122c6f7a524c4530452b55724f737970686d6e6971694a5878386c354d5a5857434b694b5572422f73433938413d
.*..^[email protected] .(.0.8.B.Master BathH.P}X8.,ozRLE0E+UrOsyphmniqiJXx8l5MZXWCKiKUrB/sC98A=

2021-11-06 09:06:21.757415
082ad2025e0a2e08b64010001a0c6563396630643934313637362003280330013801420b44696e696e6720526f6f6d4803507c5831122c7a78434a464a55454d4179595367315735566c56466746683079772b63594f4b38687a646e6758427749413d
.*..^[email protected] .(.0.8.B.Dining RoomH.P|X1.,zxCJFJUEMAyYSg1W5VlVFgFh0yw+cYOK8hzdngXBwIA=

2021-11-06 09:06:21.836122
082ad202620a320883c70210021a0c6563396630643934306565612003280330013801420e4d617374657220426564726f6f6d4803507d582e122c474c6e7a33774c6f2b6e797a4256454d5252537768466f34497a6668384c34316e544e41583236714848343d
.*..b.2........ec9f0d940eea .(.0.8.B.Master BedroomH.P}X..,GLnz3wLo+nyzBVEMRRSwhFo4Izfh8L41nTNAX26qHH4=

2021-11-06 09:06:23.786170
082ad202600a3008d5c40110121a0c6334626538346632326332622001280930013802420b4856414320537570706c79480450a0015864122c346843644f79304147414c6c414a7a61443534436c5046617351704d633375507038654d356a492f5a63733d
.*..`.0........c4be84f22c2b .(.0.8.B.HVAC SupplyH.P..Xd.,4hCdOy0AGALlAJzaD54ClPFasQpMc3uPp8eM5jI/Zcs=

2021-11-06 09:06:27.685555
082ad2025f0a2f08d7ca0110131a0c6334626538346632323235652001280930013802420b485641432052657475726e4802507d5864122c61747462374a767058584c3733324b4b755650634770304474634c426b386f4f454a2b51466338554477383d
.*.._./........c4be84f2225e .(.0.8.B.HVAC ReturnH.P}Xd.,attb7JvpXXL732KKuVPcGp0DtcLBk8oOEJ+QFc8UDw8=

2021-11-06 09:06:29.511453
082ad2025e0a2e08b0d80210061a0c6563396630643934303837322003280330013801420a477565737420426174684803507c5833122c354156386e672f626945615a475753535761517350366e7a566c484b686a557251467279326b48487264453d
.*..^..........ec9f0d940872 .(.0.8.B.Guest BathH.P|X3.,5AV8ng/biEaZGWSSWaQsP6nzVlHKhjUrQFry2kHHrdE=

2021-11-06 09:06:36.384213
082ad202600a3008d1d80210011a0c6563396630643934313363322003280330013801420c4c61756e64727920426174684803507c5828122c344c35534d7250564c594c6e574130386a384d6d6663477476324b2f34435636376c455745374b47666b303d
.*..`.0........ec9f0d9413c2 .(.0.8.B.Laundry BathH.P|X(.,4L5SMrPVLYLnWA08j8MmfcGtv2K/4CV67lEWE7KGfk0=

2021-11-06 09:06:37.613790
082ad202600a3008f40110071a0c6563396630643934313563322003280330013801420d477565737420426564726f6f6d4803507c582a122c6f4b2b71636c61616b4374376a30764264416c5a69575165786f6f6d395146315756686247637a614f584d3d
.*..`.0.......ec9f0d9415c2 .(.0.8.B.Guest BedroomH.P|X*.,oK+qclaakCt7j0vBdAlZiWQexoom9QF1WVhbGczaOXM=

2021-11-06 09:06:39.826400
082ad2025a0a2a08a10510041a0c656339663064393430636665200328033001380142074b69746368656e4803507d582d122c6549425a3258584e634c5a58796f43535a304b625732503276345646376345686931397942524d3135356b3d
.*..Z.*.......ec9f0d940cfe .(.0.8.B.KitchenH.P}X-.,eIBZ2XXNcLZXyoCSZ0KbW2P2v4VF7cEhi19yBRM155k=

2021-11-06 09:06:45.902491
082ad202600a3008d6c40110121a0c6334626538346632326332622001280930013802420b4856414320537570706c79480450a0015864122c465434686263783574792b726753594e5376316e57396853374f4f2f327059767578426f58773172664b383d
.*..`.0........c4be84f22c2b .(.0.8.B.HVAC SupplyH.P..Xd.,FT4hbcx5ty+rgSYNSv1nW9hS7OO/2pYvuxBoXw1rfK8=

2021-11-06 09:06:48.973872
082ad2025f0a2f08d8ca0110131a0c6334626538346632323235652001280930013802420b485641432052657475726e4802507d5864122c653736785033756374443456457735687a706f637746717035367663546d5572774e364874336d784777733d
.*.._./........c4be84f2225e .(.0.8.B.HVAC ReturnH.P}Xd.,e76xP3uctD4VEw5hzpocwFqp56vcTmUrwN6Ht3mxGws=
Messages sent by sensors during link mode
2021-11-06 09:12:50.148661
082bd202590a2908872f10051a0c656339663064393431356636200328033001380142064f66666963654803507b5829122c627742346a6b71635870344a745a4d505449486d4c797231436766714f52533152614a744a50622f49446f3d
.+..Y.)../....ec9f0d9415f6 .(.0.8.B.OfficeH.P{X).,bwB4jkqcXp4JtZMPTIHmLyr1CgfqORS1RaJtJPb/IDo=

What are your thoughts, @garbled1?

No support for remote interior sensors

This is a bit more complex, so if I get to it, might be a few weeks.

My device has a remote sensor. My remote sensor is set as an alternate interior sensor. This makes things extra fun apparently:

{"name":"Cave","mode":3,"state":0,"fan":0,"fanstate":0,
"tempunits":0,"schedule":0,"schedulepart":255,"away":0,
"spacetemp":77.0,"heattemp":72.0,"cooltemp":79.0,
"cooltempmin":35.0,"cooltempmax":99.0,"heattempmin":35.00,
"heattempmax":99.0,"activestage":0,"hum_active":0,"hum":50,
"hum_setpoint":0,"dehum_setpoint":99,"setpointdelta":2.0,"availablemodes":0}

{"sensors":[{"name":"Thermostat","temp":77.0,"hum":50},
{"name":"Space Temp","temp":77.0},
{"name":"Remote","temp":76.0}]}

I'm leaving this here for a bit in case anyone wants to tackle, otherwise I might take a crack at it.. it would involve some refactoring... (Space temp is an average of Thermostat and Remote)

Possibly some extraneous debug statements?

Would it be possible to remove this print statement? So if the function succeeds we don't see anything, but if it fails we see the error message listed here:

print("set_control Fail {0}.".format(r.json()))

Otherwise everytime you run a command, it starts filling up the log with success messages:

2019-09-06 18:02:00 INFO (MainThread) [homeassistant.setup] Setting up logger
Config directory: /config
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!
set_control Success!

Code fails on Venstar T4800 and T4900 Commercial Thermostats

My Fixes

172,173c172
< if self._type != "commercial": #Commercial thermostats don't support "away"
< self.away = self.get_info("away")

    self.away = self.get_info("away")

198,199c197
< #elif self.model == "COLORTOUCH":
< elif self.model == "VYG-4900-VEN" or self.model == "VYG-4800-VEN" or self.model == "COLORTOUCH":

    elif self.model == "COLORTOUCH":

Venstar fixed their API to properly report F or C in latest firmware, this breaks the hard coded workaround in venstar_colortouch code.

Multiple Home Assistant users (which reference the venstar_colortouch code) are reporting that an automatic firmware update to the Venstar thermostats (mine is a T2000) is now causing the local Venstar thermostat API to correctly return the proper F/C temperature unit in the API response. This is now breaking the hard coded work around in the venstar_colortouch code:

# T2xxx, T3xxx thermostats (and maybe more) always use Celsius in the API regardless of the display units

    # T2xxx, T3xxx thermostats (and maybe more) always use Celsius in the API regardless of the display units
    # So handle this case accordingly
    if self.model.startswith(("T2", "T3")):
        # Always degC
        self.tempunits = self.TEMPUNITS_C
        logging.debug("Detected thermostat model %s, using temp units of Celsius", self.model)
    elif self.model in ["VYG-4900-VEN", "VYG-4800-VEN", "VYG-3900", "COLORTOUCH"]:
        # Same as display units
        self.tempunits = self.display_tempunits
    elif self.get_info("heattempmax") >= 40:
        # Heat max temp over 40, only possible if degF
        logging.warning("Unknown thermostat model %s, inferring API tempunits of Fahrenheit", self.model)
        self.tempunits = self.TEMPUNITS_F
    else:
        logging.warning("Unknown thermostat model %s, inferring API tempunits of Celsius", self.model)
        self.tempunits = self.TEMPUNITS_C
    return True

get_alerts() only returns first alert in list

Not sure if this is intended or not, but it seems kind of useless to only return the first alert in the list. Although, it seems the alerts are pretty useless in general if they can only be used to send emails to a recipient; it would be nice to know if there is a way of accessing/intercepting these alerts from the stat.

set_control is incorrect with regard to mode

The comment above set_control is not quite correct with the docs. From the API:
All control calls with mode must include heattemp and cooltemp parameters.

If you are in mode auto, it is perfectly legal to set ONLY heattemp and cooltemp. The document is saying that heattemp and cooltemp must be supplied when we SET mode. Not that mode needs to be supplied for heat/cool.

This is causing homeassistant (and the main.py test that ships with your library) to fail when trying to set the temp. When I remove fan and mode from the urlencode line, and ONLY send heattemp and coldtemp, I am able to change my settings.

before:
set_control Fail {'error': True, 'reason': 'Mode change is not allowed when running schedule'}.
Heat setpoint is 72.0
Cool setpoint is 79.0

set_control Fail {'error': True, 'reason': 'Mode change is not allowed when running schedule'}.
Heat setpoint is 72.0
Cool setpoint is 79.0


after:
set_control Success!
Heat setpoint is 60.0
Cool setpoint is 90.0

set_control Success!
Heat setpoint is 72.0
Cool setpoint is 79.0

I believe the correct thing to do is this:
When setting fan, only set fan.
When setting heat/cool, set both heat cool and nothing else.
When setting mode, set mode, heat and cool.

No other set of operations works for me.

{"api_ver":3,"type":"residential"}

Remote sensor local api question

I'm looking to get a Venstar sensor (ACC-TSENWIFIMini) and want to keep it from talking to the "cloud". Does anyone know if the Venstar wifi sensors have a local api, similar to the thermostats?

Personally I would want to use HomeAssistant to manage the sensor values and update the thermostats myself as my IOT devices are not able to connect to the internet instead of relying on Venstar Skyport.

Thanks for any info!

JSONDecodeError when calling update_info()

r = self._request("/query/info")
if r is False:
return r
self._info=r.json()

Traceback (most recent call last):
  File "/usr/lib/python3.7/site-packages/homeassistant/helpers/entity.py", line 270, in async_update_ha_state
    await self.async_device_update()
  File "/usr/lib/python3.7/site-packages/homeassistant/helpers/entity.py", line 450, in async_device_update
    await self.hass.async_add_executor_job(self.update)
  File "/usr/lib/python3.7/concurrent/futures/thread.py", line 57, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/config/custom_components/venstar/climate.py", line 109, in update
    info_success = self._client.update_info()
  File "/usr/lib/python3.7/site-packages/venstarcolortouch/venstarcolortouch.py", line 122, in update_info
    self._info=r.json()
  File "/usr/lib/python3.7/site-packages/requests/models.py", line 889, in json
    self.content.decode(encoding), **kwargs
  File "/usr/lib/python3.7/json/__init__.py", line 348, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python3.7/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python3.7/json/decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

Maybe we should wrap the self._info=r.json() in a try/except?

r = self._request("/query/info")

if r is False:
    return r

try:
    self._info=r.json()
catch json.decoder.JSONDecodeError as error:
    self.log.error("Failed to update info, response: %s", str(r))
    return False

unable to add/use Colortouch T7850

d2fe349 caused a regression on the Colortouch T7850, which doesn't support humidity control.

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/venstar/config_flow.py", line 68, in async_step_user
    info = await validate_input(self.hass, user_input)
  File "/usr/src/homeassistant/homeassistant/components/venstar/config_flow.py", line 47, in validate_input
    info_success = await hass.async_add_executor_job(client.update_info)
  File "/usr/local/lib/python3.10/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/usr/local/lib/python3.10/site-packages/venstarcolortouch/venstarcolortouch.py", line 207, in update_info
    self.hum_setpoint = self.get_settings("hum_setpoint")
  File "/usr/local/lib/python3.10/site-packages/venstarcolortouch/venstarcolortouch.py", line 272, in get_settings
    setting = r.json()[attr]
KeyError: 'hum_setpoint'

T5800 support

I have an older Colortouch T5800 that I'd like to use with your code (for HomeAssistant). I noticed a few things that need to be somehow 'optional' for it to work with the T5800:

  1. In the update_info() function, both hum_setpoint and dehum_setpoint do not exist in the JSON returned by the device, making this call fail.

Example JSON:
$ curl "http://thermostatip/query/info"
{"name":"HOME","mode":3,"state":1,"fan":0,"fanstate":1,"tempunits":0,"schedule":1,"schedulepart":2,"away":0,"spacetemp":65.0,"heattemp":68.0,"cooltemp":80.0,"cooltempmin":65.0,"cooltempmax":99.0,"heattempmin":35.00,"heattempmax":80.0,"setpointdelta":4.0,"availablemodes":0}

  1. In the get_thermostat_sensor() function, trying to get the 'hum' sensor will also cause a problem on the T5800.

I'm attaching a diff that seems to fix these issues.

Thank you for your work!

--- venstarcolortouch.py.orig   2018-01-15 13:29:44.061887273 -0500
+++ venstarcolortouch.py        2018-01-15 14:24:49.799229048 -0500
@@ -138,8 +138,14 @@
         self.tempunits = self.get_info("tempunits")
         self.away = self.get_info("away")
         self.schedule = self.get_info("schedule")
-        self.hum_setpoint = self.get_info("hum_setpoint")
-        self.dehum_setpoint = self.get_info("dehum_setpoint")
+        if 'hum_setpoint' in self._info:
+          self.hum_setpoint = self.get_info("hum_setpoint")
+        else:
+          self.hum_setpoint = None
+        if 'dehum_setpoint' in self._info:
+          self.dehum_setpoint = self.get_info("dehum_setpoint")
+        else:
+          self.dehum_setpoint = None
         #
         return True
 
@@ -166,7 +172,10 @@
 
     def get_thermostat_sensor(self, attr):
         if self._sensors != None and self._sensors["sensors"] != None and len(self._sensors["sensors"]) > 0:
-            return self._sensors["sensors"][0][attr]
+            if attr in self._sensors["sensors"][0]:
+              return self._sensors["sensors"][0][attr]
+            else:
+              return None
         else:
             return None

ACCVWF1 reports wrong state on local API

I've got a ACCVWF1 connected to a Voyager 3800. Yes - it's not a ColorTouch, but this Python library works great! Except for one bug in the Venstar ACCVWF1 firmware:

The ACCVWF1 wifi module reports the wrong 'state' - it reports state 2 when it is heating, and state 1 when it is cooling. The thermostat screen indicates heating, the system is providing warm air. But the API response definitions in the documentation are the other way around. (Meanwhile - my ColorTouch reports correctly on the system it's using). Even the Skyport Portal shows heating, while the local API reports state 2 (cooling).

I've asked VenStar if there is a firmware update available; no response. Meanwhile, figured I would report it as a possible issue to be coded around here (because I wouldn't be surprised if they coded around it in the Skyport portal code!)

The response to http:/// is:

{
    "api_ver": 7,
    "type": "residential",
    "model": "VYG-3800",
    "firmware": "2.22.19"
}

The response to the /INFO when the system is heating is this, which shows State 2, but the value for state when heating should be 1:

{
    "name": "UPSTAIRS",
    "mode": 3,
    "state": 2,
    "fan": 0,
    "fanstate": 1,
    "tempunits": 0,
    "schedule": 1,
    "schedulepart": 0,
    "away": 0,
    "spacetemp": 66,
    "heattemp": 68,
    "cooltemp": 73,
    "cooltempmin": 70,
    "cooltempmax": 99,
    "heattempmin": 36,
    "heattempmax": 74,
    "setpointdelta": 2,
    "activestage": 2,
    "hum_active": 1,
    "hum": 0,
    "hum_setpoint": 0,
    "dehum_setpoint": 99,
    "availablemodes": 0
}

API exception handling makes homeassistant sad.

See: home-assistant/core#60459

Basically, what the dev team told me was that this library, handling the exception via a broad exception handler, and then logging, passes the whole exception into the logs of HA. Suggestion was:

I’d pull out the broad except handlers and let it raise + add the response.raise_for_status() then handle it in Home Assistant

Not sure if this is something you'd be willing to tackle?

If PIN is set, URL must include ?pin=xxxx

If you lock out the thermostat by setting the PIN then the URL must include ?pin=xxxx. Putting a "pin" variable in the POST header doesn't work. This is sort of brain dead on Venstar's part IMHO.

I'm not actually using this code, but I tested to see if it duplicated my experience.

Schedule is always turned on when away mode is turned off

First: thank you for writing this, it works great! With the recent Nest announcements, I ditched it and bought a thermostat with local control. Everything works great now that I updated to 0.7, however I don't make use of the schedule functionality.

9194fa3 introduced the behavior that turning away off, the schedule always gets turned on. The comments say that you can't set away mode to 'on' when a schedule is also set, but this doesn't seem to be the case on my Venstar. See curl output below, and information about my API version.

Is this fixed in my firmware's API version? Or did you encounter this behavior on a different thermostat? I have a T7850.

I'm happy to open a PR but not sure what the best way to fix it is. Thoughts?

  • Could we rely on the end user of this library to call set_schedule themselves before/after caling set_away? This would be my preference, by having the user of the library overcome the quirk in whatever firmware does this, rather than assuming all users want schedules turned on.

  • Could we only do this behavior on affected Thermostat firmwares?

{
    "api_ver": 7, 
    "type": "residential",
    "model": "COLORTOUCH",
    "firmware": "5.10"
}

Schedule is on, away is off:

$ curl -s http://thermostat.home.bitbin.de/query/info | jq '{schedule: .schedule, away: .away}'
{
  "schedule": 1, 
  "away": 0
}
$ curl -d "away=1" -X POST http://thermostat.home.bitbin.de/settings
{"success":true}
$ curl -s http://thermostat.home.bitbin.de/query/info | jq '{schedule: .schedule, away: .away}'
{
  "schedule": 1, 
  "away": 1
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.