Humidity Sketch causes Vera App to crash
-
No unfortunately I do not have a zwave humidity sensor to test.
BUT, I did do some more digging and found out the crash was being caused by a number format exception on Android using the integer class. This caught my attention because I noticed the humidity is being reported with a decimal on the web interface of Vera (eg. Humidity 52.0%) and the Android app is expecting an Integer (not a float). I suspect that the web interface just stores it as a string so it doesn't care about the decimal and Vera is probably attempting to (poorly) parse that string into an Integer in the Android app.
I did confirm that this is the issue by manually changing the variable for the humidity sensor from 52.0 to 52 and the app works fine (until the sensor reports the humidity again).
I'm going to do some more playing when I get home tonight, but the fix is probably going to be straight forward. Either send an integer from the sensor sketch instead of a float, change the base station to report as an integer instead of float, or change the luup for the humidity sensor to parse the float into an int (just drop the decimal). I haven't done a lot with luup before and still fairly new to Arduino, so any suggestions on the best route to take would be appreciated! -
@hek Just a quick update. Changed the float to an int on the sensor during my lunch break. No luck. Vera still recieves it with a decimal. Confirmed with the serial console that the sensor is indeed sending it as a int now though. Perhaps the Arduino gateway is coverting it back to a float before sending it? Will do some more digging after work again
-
You did remove the number-of-decimal argument?
msgHum.set(humidity, 1) -> msgHum.set(humidity)
-
@jeylites said:
I have the same issue. Will work on the fix when I get back.
The fix is pretty simple, as @hek said the DHT sensors arent extremely accurate anyway (DHT11 is +/- 5% accurate), just change msgHum.set(humidity,1) to msgHum.set(humidity) in the sensor sketch to drop the decimal all together. Worked perfect for me and has been running flawless since yesterday now
-
@jeylites said:
I have the same issue. Will work on the fix when I get back.
The fix is pretty simple, as @hek said the DHT sensors arent extremely accurate anyway (DHT11 is +/- 5% accurate), just change msgHum.set(humidity,1) to msgHum.set(humidity) in the sensor sketch to drop the decimal all together. Worked perfect for me and has been running flawless since yesterday now
The fix seem pretty easy to follow. But when I exclude the "1" and recompile, I get a bunch of error messages.
Build options changed, rebuilding all HumiditySensor.ino: In function 'void loop()': HumiditySensor.ino:56:34: error: call of overloaded 'set(float&)' is ambiguous HumiditySensor.ino:56:34: note: candidates are: In file included from /Users/Jey/Documents/Arduino/libraries/MySensors/MySensor.h:17:0, from HumiditySensor.ino:2: /Users/Jey/Documents/Arduino/libraries/MySensors/MyMessage.h:161:13: note: MyMessage& MyMessage::set(uint8_t) MyMessage& set(uint8_t value); ^ /Users/Jey/Documents/Arduino/libraries/MySensors/MyMessage.h:163:13: note: MyMessage& MyMessage::set(long unsigned int) MyMessage& set(unsigned long value); ^ /Users/Jey/Documents/Arduino/libraries/MySensors/MyMessage.h:164:13: note: MyMessage& MyMessage::set(long int) MyMessage& set(long value); ^ /Users/Jey/Documents/Arduino/libraries/MySensors/MyMessage.h:165:13: note: MyMessage& MyMessage::set(unsigned int) MyMessage& set(unsigned int value); ^ /Users/Jey/Documents/Arduino/libraries/MySensors/MyMessage.h:166:13: note: MyMessage& MyMessage::set(int) MyMessage& set(int value); ^ Error compiling.``` -