Broyd Posted May 30, 2017 Posted May 30, 2017 Is there any way to copy the temperature value from a Z-Wave Multisensor 6 into an user accessible ISY variable (integer)? (raw doesn't matter). You can see this raw data in the event viewer on level 3 when the MS6 transmitts the temperature to the ISY. The temperature value is displayed on the Multisensor panel when displayed in the admin console or on the WEB udajax screen from a browser. The MS6 sensor variable reference is: ${sys.node.ZW006_1.CLITEMP.raw} I am at ISY version 4.5.4. I have the network module. Any insights into this will be appreciated
larryllix Posted May 30, 2017 Posted May 30, 2017 (edited) Is there any way to copy the temperature value from a Z-Wave Multisensor 6 into an user accessible ISY variable (integer)? (raw doesn't matter). You can see this raw data in the event viewer on level 3 when the MS6 transmitts the temperature to the ISY. The temperature value is displayed on the Multisensor panel when displayed in the admin console or on the WEB udajax screen from a browser. The MS6 sensor variable reference is: ${sys.node.ZW006_1.CLITEMP.raw} I am at ISY version 4.5.4. I have the network module. Any insights into this will be appreciated If this device acts as any supported Insteon or Zwave device, it has a status page, and programs can be written and triggered by almost any parameter on that device page. Then it is only a case of dedicating a memory location, and writing a program to trigger on any change of value pf this parameter. If ....Multi.sensor >= 0 /reasonable low limit AND ....Multi.sensor <=99 Then ....$Variable = Multi.sensor /reasonable upper limit Else ...send notification to YOU Multi.sensor is ridiculous Hint: If you want to trigger further programs on the end result you will require the usage of a Status Variable .Now you will need an Integer variable also for the intermediate value, so that you don't rigger programs twice and on the false value. Then ....$iVariable = Multi.sensor ....$iVariable *= 1.8 ....$iVariable += 32.0 ...$sVariable = $iVariable Edited May 30, 2017 by larryllix
Broyd Posted May 30, 2017 Author Posted May 30, 2017 Thanks larryllix, I was hoping to be able to grab the actual temperature sensor value and store that in a variable. For example, if the temperature reading is 71.20°F, the raw value seen in the event viewer is 7120; I'd like to get 7120 into a variable, along the lines of ... or ... this is what I'd effectively like to do. $iVariable = ${sys.node.ZW006_1.CLITEMP.raw} If some sort of testing loop is required, maybe I'll give up on the idea .
larryllix Posted May 31, 2017 Posted May 31, 2017 (edited) Thanks larryllix, I was hoping to be able to grab the actual temperature sensor value and store that in a variable. For example, if the temperature reading is 71.20°F, the raw value seen in the event viewer is 7120; I'd like to get 7120 into a variable, along the lines of ... or ... this is what I'd effectively like to do. $iVariable = ${sys.node.ZW006_1.CLITEMP.raw} If some sort of testing loop is required, maybe I'll give up on the idea . Wrong syntax and technique for programs. See my post again. It will do exactly what you want. Edited May 31, 2017 by larryllix
KeviNH Posted May 31, 2017 Posted May 31, 2017 (edited) Larry, you are quite frustrating! There are good reasons to want to have the temperature in a variable, for example if you want a program that only runs if one room is more than 10 degrees warmer than the others. I was hoping to be able to grab the actual temperature sensor value and store that in a variable.For example, if the temperature reading is 71.20°F, the raw value seen in the event viewer is 7120; I'd like to get 7120 into a variable, along the lines of ... or ... this is what I'd effectively like to do.$iVariable = ${sys.node.ZW006_1.CLITEMP.raw} Broyd, what you are asking may be doable the Network Module if your device reports the raw temperature as an integer variable. For example, my Aeotec shows RAW as "66.40" so it doesn't work to store in a variable, but my Honeywell thermostat reports "67", no non-integer characters. The trick is to use this integer to update a variable by making a REST call from the ISY back to itself (don't use 127.0.0.1, use your intranet IP). You create a network resource that looks kind of like this (you'll need to supply the hostname, node, and your ISY's username and password):You'll need a program which sporadically calls this network resource so the value gets updated on a regular basis. This does not require V5, the screenshot above is from V4.5.4 and works fine for any device where the .RAW is a pure integer value. Edited May 31, 2017 by KeviNH
larryllix Posted May 31, 2017 Posted May 31, 2017 (edited) Larry, you are quite frustrating! There are good reasons to want to have the temperature in a variable, for example if you want a program that only runs if one room is more than 10 degrees warmer than the others. <snipped> This does not require V5, the screenshot above is from V4.5.4 and works fine for any device where the .RAW is a pure integer value. Ad hominem comment? I don't know what you are going on about. If you would search the forums, you would find I have posted about a dozen different programs, attempting to teach others techniques, for getting and using temperatures into variables, including averaging three different sensors with outliers being disallowed from the formula, You don't need to preach to me about the value of getting temperatures into variables and your comment in bold seemed very out of context here. Regardless, I had forgoetten that people using less than v5.x, such as this user, do not have this capability, and need to use network resources to dump values into variables. Carry on. I have never had to use that workaround Edited May 31, 2017 by larryllix
Broyd Posted May 31, 2017 Author Posted May 31, 2017 Hey! I have read enough posts on this forum to know that you both have contributed immensely here. (And hopefully will continue to do so). @larryllix, I have been going over your Raspberry Pi Python code for an HTTP server and am definitely going to be making use of it for the control of a Hunter ceiling fan having 3 speed windings, reverse, light on/off, and dimming capabilities. The 3 windings avoid the very annoying magnetostrictive hum associated with dimmer controls, and I need a sub-second response for the on/off function of the light to avoid activating the dimming function. It will be ISY-994i > HTTP > Raspberry Pi > GPIO > homebrew isolated interface > 'off the shelf' slightly modified Hunter remote fan control. Your code contribution here has been invaluable. @KeviNH, Thanks for taking the time to read my original post; this is something that I need to be careful to do as well. In so many forums, people jump in without accounting for all of the relevant information before making a post. Having read Chris Jahn's post about setting Z-Wave parameters using REST, I was starting to think that might be a method that would work. I was hoping for a less circumlocutious method but I guess being still at 4.5.4 I am stuck with that. I will be trying your post above. It's good to know that with versions 5+ that some of these capabilities are available. And some point, (likely a beta 5+) I'll make the leap Thank you both again
Broyd Posted May 31, 2017 Author Posted May 31, 2017 So I have been able to test the network resources REST function. As you suggested KeviNH, the value returned DOES contain a decimal point, even the RAW data. (wouldn't it be nice if raw meant RAW?) I would suggest an additional keyword ... unformatted I was able to show that the REST function works by using the CLIHUM variable which is an integer followed by a % sign. The value returned by specifying raw is just the integer - and that was successfully stored in the variable. I guess (if I get desperate) I could use larryllix's Raspberry Pi Python code and have the ISY send the data to the Pi and have the Pi reformat it and send a REST back to the ISY to store it ... This would be OK; I'd learn a lot
larryllix Posted June 1, 2017 Posted June 1, 2017 Hey! I have read enough posts on this forum to know that you both have contributed immensely here. (And hopefully will continue to do so). @larryllix, I have been going over your Raspberry Pi Python code for an HTTP server and am definitely going to be making use of it for the control of a Hunter ceiling fan having 3 speed windings, reverse, light on/off, and dimming capabilities. The 3 windings avoid the very annoying magnetostrictive hum associated with dimmer controls, and I need a sub-second response for the on/off function of the light to avoid activating the dimming function. It will be ISY-994i > HTTP > Raspberry Pi > GPIO > homebrew isolated interface > 'off the shelf' slightly modified Hunter remote fan control. Your code contribution here has been invaluable. @KeviNH, Thanks for taking the time to read my original post; this is something that I need to be careful to do as well. In so many forums, people jump in without accounting for all of the relevant information before making a post. Having read Chris Jahn's post about setting Z-Wave parameters using REST, I was starting to think that might be a method that would work. I was hoping for a less circumlocutious method but I guess being still at 4.5.4 I am stuck with that. I will be trying your post above. It's good to know that with versions 5+ that some of these capabilities are available. And some point, (likely a beta 5+) I'll make the leap Thank you both again If you advanced enough to write http handling code I really recommend you go to v5.0.10. You should have no trouble with it. Any bugs are monor gui layout things and it would be so simple for you to create a solution to this problem, rather than use workarounds. Then you wouldn't be rewriting you techniques later.OTOH: If you are like me you will enjoy the challenge to resolve it both ways.
MWareman Posted June 1, 2017 Posted June 1, 2017 (edited) Changing 73.45 to 7345 is not simply changing the formatting. It's an entirely different value! .RAW simply removes all units and formatting that is otherwise added by ISY, and reports the raw value as received from the device. Some devices will allow you to configure them to report without the fractional parts by setting a parameter. Otherwise, when 5.x is released we will have formal support for non-integers in variables... Edited June 1, 2017 by MWareman
Broyd Posted June 1, 2017 Author Posted June 1, 2017 (edited) Changing 73.45 to 7345 is not simply changing the formatting. It's an entirely different value! .RAW simply removes all units and formatting that is otherwise added by ISY, and reports the raw value as received from the device. Some devices will allow you to configure them to report without the fractional parts by setting a parameter. Otherwise, when 5.x is released we will have formal support for non-integers in variables... Hi MWareman, I know that we are dealing with two values that are different ... however ... When I use a browser and issue: http://192.168.1.25:37190/rest/nodes/ZW006_1/CLITEMP I get the following response: <properties><property id="CLITEMP" value="7310" formatted="73.10° F" uom="17" prec="2"/></properties> And in the event log level 3 I get: Tue 05/30/2017 09:45:46 AM : [ZWAVE-PROCESS ] Process value Sensor type=1 uomId=1 prec=2 Tue 05/30/2017 09:45:46 AM : [D2D EVENT ] Event [ZW006_1] [CLITEMP] [7310] uom=17 prec=2 Tue 05/30/2017 09:45:46 AM : [ ZW006_1] CLITEMP 7310 (uom=17 prec=2) This suggested to me that the value retrieved by the ISY was an unformatted integer and that the ISY was supplying the ". ° F". Given the properties and event log above, is that not a reasonable assumption? The property for the humidity, which is an integer is: http://192.168.1.25:37190/rest/nodes/ZW006_1/CLIHUM <property id="CLIHUM" value="37" formatted="37%" uom="22"/> To me, prec = precision = 2 for the temperature and is missing for humidity. My guess for "UOM" is "unit of measurement". Edited June 1, 2017 by Broyd
JBanaszak Posted July 5, 2017 Posted July 5, 2017 Hi Broyd, Did you ever make any progress on this? I would like to pull and store the same two values from an Everspring temp/humidity sensor. An additional complication is that the sensor only wakes up once per hour for a very short period to report status. But one step at a time! Thanks
Recommended Posts