rule "Ping Sensors"
when
Time cron "0/10 * * * * ?"
then
sendCommand(Hydrogen_Peroxide_Sensor, '\u0055')
end
and:
rule "Hydrogen_Peroxide_Sensor"
when
Item Hydrogen_Peroxide_Sensor received update
then
val to64 = DatatypeConverter::parseBase64Binary(Hydrogen_Peroxide_Sensor.state.toString)
val ByteBuffer bb = ByteBuffer::wrap(to64)
if (bb.array.size >= 2) {
val short distance = bb.getShort
logInfo("Peroxide", "Distance: " + distance)
}
end
output:
2017-01-30 14:30:26.549 [INFO ] [runtime.busevents ] - Hydrogen_Peroxide_Sensor received command U
2017-01-30 14:30:26.760 [INFO ] [runtime.busevents ] - Hydrogen_Peroxide_Sensor state updated to AO+/vQ==
2017-01-30 14:30:26.762 [INFO ] [.openhab.model.script.Hydrogen] - Distance: 239
2017-01-30 14:30:41.325 [INFO ] [runtime.busevents ] - Hydrogen_Peroxide_Sensor received command U
2017-01-30 14:30:41.536 [INFO ] [runtime.busevents ] - Hydrogen_Peroxide_Sensor state updated to AO+/vQ==
2017-01-30 14:30:41.539 [INFO ] [.openhab.model.script.Hydrogen] - Distance: 239
2017-01-30 14:30:56.548 [INFO ] [runtime.busevents ] - Hydrogen_Peroxide_Sensor received command U
2017-01-30 14:30:56.758 [INFO ] [runtime.busevents ] - Hydrogen_Peroxide_Sensor state updated to AO+/vQ==
2017-01-30 14:30:56.760 [INFO ] [.openhab.model.script.Hydrogen] - Distance: 239
2017-01-30 14:31:11.327 [INFO ] [runtime.busevents ] - Hydrogen_Peroxide_Sensor received command U
2017-01-30 14:31:11.538 [INFO ] [runtime.busevents ] - Hydrogen_Peroxide_Sensor state updated to AO+/vQ==
2017-01-30 14:31:11.540 [INFO ] [.openhab.model.script.Hydrogen] - Distance: 239
However if I debug in a serial console and send 55 hex I get back 00 89 the correct distance in mm, if I move the sensor and debug the serial console I get varying responses, however in my openHAB rule I always just get 239…
If I have openHAB send the 55 hex and just view in gtkterm hex I see:
00 A4 00 A4 00 A4 00 A9 00 8E 00 8A 00 8A
So I know the sensor is working correctly, what I don’t understand is why I always receive the same BigHex and converted decimal in openHAB when I move the sensor the same way.
I found a serial monitoring program so I can see whats going in and out of the serial port, it let me run my rule in openHAB and monitor at the same time.
So you can see that openHAB sends 0x55 and gets back different data as I move the sensor, however openHAB logs show the same thing coming back every time : (
2017-01-30 17:27:11.851 [INFO ] [runtime.busevents ] - Hydrogen_Peroxide_Sensor received command U
2017-01-30 17:27:12.064 [INFO ] [runtime.busevents ] - Hydrogen_Peroxide_Sensor state updated to AO+/vQ==
2017-01-30 17:27:12.065 [INFO ] [.openhab.model.script.Hydrogen] - Distance: 239
2017-01-30 17:27:12.065 [INFO ] [.openhab.model.script.Hydrogen] - Distance: AO+/vQ==
2017-01-30 17:27:22.312 [INFO ] [runtime.busevents ] - Hydrogen_Peroxide_Sensor received command U
2017-01-30 17:27:22.526 [INFO ] [runtime.busevents ] - Hydrogen_Peroxide_Sensor state updated to AO+/vQ==
2017-01-30 17:27:22.529 [INFO ] [.openhab.model.script.Hydrogen] - Distance: 239
2017-01-30 17:27:22.530 [INFO ] [.openhab.model.script.Hydrogen] - Distance: AO+/vQ==
2017-01-30 17:27:33.175 [INFO ] [runtime.busevents ] - Hydrogen_Peroxide_Sensor received command U
2017-01-30 17:27:33.290 [INFO ] [runtime.busevents ] - Hydrogen_Peroxide_Sensor state updated to AO+/vQ==
2017-01-30 17:27:33.293 [INFO ] [.openhab.model.script.Hydrogen] - Distance: 239
2017-01-30 17:27:33.294 [INFO ] [.openhab.model.script.Hydrogen] - Distance: AO+/vQ==
2017-01-30 17:27:41.904 [INFO ] [runtime.busevents ] - Hydrogen_Peroxide_Sensor received command U
2017-01-30 17:27:42.118 [INFO ] [runtime.busevents ] - Hydrogen_Peroxide_Sensor state updated to AO+/vQ==
2017-01-30 17:27:42.119 [INFO ] [.openhab.model.script.Hydrogen] - Distance: 239
2017-01-30 17:27:42.119 [INFO ] [.openhab.model.script.Hydrogen] - Distance: AO+/vQ==
2017-01-30 17:27:50.194 [INFO ] [runtime.busevents ] - Hydrogen_Peroxide_Sensor received command U
2017-01-30 17:27:50.408 [INFO ] [runtime.busevents ] - Hydrogen_Peroxide_Sensor state updated to AO+/vQ==
2017-01-30 17:27:50.408 [INFO ] [.openhab.model.script.Hydrogen] - Distance: 239
2017-01-30 17:27:50.409 [INFO ] [.openhab.model.script.Hydrogen] - Distance: AO+/vQ==
2017-01-30 17:28:03.979 [INFO ] [runtime.busevents ] - Hydrogen_Peroxide_Sensor received command U
2017-01-30 17:28:04.195 [INFO ] [runtime.busevents ] - Hydrogen_Peroxide_Sensor state updated to AO+/vQ==
2017-01-30 17:28:04.197 [INFO ] [.openhab.model.script.Hydrogen] - Distance: 239
2017-01-30 17:28:04.198 [INFO ] [.openhab.model.script.Hydrogen] - Distance: AO+/vQ==
2017-01-30 17:28:10.999 [INFO ] [runtime.busevents ] - Hydrogen_Peroxide_Sensor received command U
2017-01-30 17:28:11.213 [INFO ] [runtime.busevents ] - Hydrogen_Peroxide_Sensor state updated to AO+/vQ==
2017-01-30 17:28:11.213 [INFO ] [.openhab.model.script.Hydrogen] - Distance: 239
2017-01-30 17:28:11.214 [INFO ] [.openhab.model.script.Hydrogen] - Distance: AO+/vQ==
2017-01-31 08:58:10 DEBUG o.o.b.s.internal.SerialDevice[:282]- Writing 'U' to serial port /dev/ttyPort2
2017-01-31 08:58:11 DEBUG o.o.b.s.internal.SerialDevice[:225]- Received message '�' on serial port /dev/ttyPort2
2017-01-31 08:58:23 DEBUG o.o.b.s.internal.SerialDevice[:282]- Writing 'U' to serial port /dev/ttyPort2
2017-01-31 08:58:23 DEBUG o.o.b.s.internal.SerialDevice[:225]- Received message '�' on serial port /dev/ttyPort2
2017-01-31 08:58:40 DEBUG o.o.b.s.internal.SerialDevice[:282]- Writing 'U' to serial port /dev/ttyPort2
2017-01-31 08:58:40 DEBUG o.o.b.s.internal.SerialDevice[:225]- Received message '�' on serial port /dev/ttyPort2
However that does not match what is actually sent to the serial port.