From 9eff27dbabeb75601b23fb32aceeeebabb2cf680 Mon Sep 17 00:00:00 2001 From: Ziver Koc Date: Tue, 27 Dec 2016 04:51:05 +0100 Subject: [PATCH] Added no caching for json pages --- arduino/HalMultiSensor/ProtocolOregon.cpp | 4 +-- src/se/hal/intf/HalJsonPage.java | 1 + .../protocol/Oregon0x1A2DProtocol.java | 25 ++++++++++++------- 3 files changed, 19 insertions(+), 11 deletions(-) diff --git a/arduino/HalMultiSensor/ProtocolOregon.cpp b/arduino/HalMultiSensor/ProtocolOregon.cpp index 04e91ca9..2d3b7c4e 100755 --- a/arduino/HalMultiSensor/ProtocolOregon.cpp +++ b/arduino/HalMultiSensor/ProtocolOregon.cpp @@ -127,9 +127,9 @@ inline void ProtocolOregon::calculateAndSetChecksum(byte data[]) for(byte i = 0; i<8;i++) { sum += (data[i]&0xF0) >> 4; - sum += (data[i]&0xF); + sum += (data[i]&0x0F); } - data[8] = ((sum - 0xa) & 0xFF); + data[8] = ((sum - 0x0A) & 0xFF); } diff --git a/src/se/hal/intf/HalJsonPage.java b/src/se/hal/intf/HalJsonPage.java index ca3e9d56..35dd174a 100755 --- a/src/se/hal/intf/HalJsonPage.java +++ b/src/se/hal/intf/HalJsonPage.java @@ -34,6 +34,7 @@ public abstract class HalJsonPage extends HalHttpPage{ out.setHeader("Content-Type", "application/json"); + out.setHeader("Pragma", "no-cache"); JSONWriter writer = new JSONWriter(out); try{ writer.write( diff --git a/src/se/hal/plugin/tellstick/protocol/Oregon0x1A2DProtocol.java b/src/se/hal/plugin/tellstick/protocol/Oregon0x1A2DProtocol.java index 757aa1b0..24e3a34b 100755 --- a/src/se/hal/plugin/tellstick/protocol/Oregon0x1A2DProtocol.java +++ b/src/se/hal/plugin/tellstick/protocol/Oregon0x1A2DProtocol.java @@ -1,7 +1,6 @@ package se.hal.plugin.tellstick.protocol; import se.hal.intf.HalSensorData; -import se.hal.plugin.tellstick.TellstickDevice; import se.hal.plugin.tellstick.TellstickProtocol; import se.hal.plugin.tellstick.TellstickSerialComm; import se.hal.plugin.tellstick.device.Oregon0x1A2D; @@ -10,6 +9,7 @@ import se.hal.struct.devicedata.HumiditySensorData; import se.hal.struct.devicedata.LightSensorData; import se.hal.struct.devicedata.PowerConsumptionSensorData; import se.hal.struct.devicedata.TemperatureSensorData; +import zutil.converter.Converter; import zutil.log.LogUtil; import java.util.ArrayList; @@ -34,7 +34,16 @@ public class Oregon0x1A2DProtocol extends TellstickProtocol { @Override public List decode(byte[] data) { - //class:sensor;protocol:oregon;model:0x1A2D;data:20BA000000002700; + /* + Nibble(s) Details + 0..3 Sensor ID This 16-bit value is unique to each sensor, or sometimes a group of sensors. + 4 Channel Some sensors use the coding 1 << (ch – 1), where ch is 1, 2 or 3. + 5..6 Rolling Code Value changes randomly every time the sensor is reset + 7 Flags 1 Bit value 0x4 is the battery low flag + 8..[n-5] Sensor-specific Data Usually in BCD format + [n-3]..[n-4] Checksum The 8-bit sum of nibbles 0..[n-5] + */ + //Example: class:sensor;protocol:oregon;model:0x1A2D;data:20BA000000002700; // int channel = (data[0] >> 4) & 0x7; // channel not used int address = data[1] & 0xFF; @@ -46,16 +55,14 @@ public class Oregon0x1A2DProtocol extends TellstickProtocol { int hum1 = data[5] & 0xF; int checksum = data[6]; - int calcChecksum = ((data[5] >> 4) & 0xF) + (data[5] & 0xF); - calcChecksum += ((data[4] >> 4) & 0xF) + (data[4] & 0xF); - calcChecksum += ((data[3] >> 4) & 0xF) + (data[3] & 0xF); - calcChecksum += ((data[2] >> 4) & 0xF) + (data[2] & 0xF); - calcChecksum += ((data[1] >> 4) & 0xF) + (data[1] & 0xF); - calcChecksum += ((data[0] >> 4) & 0xF) + (data[0] & 0xF); + int calcChecksum = 0; + for (int i = 0; i < 6; i++) { + calcChecksum += ((data[i] >> 4) & 0xF) + (data[i] & 0xF); + } calcChecksum += 0x1 + 0xA + 0x2 + 0xD - 0xA; if (calcChecksum != checksum) { - logger.fine("Checksum failed, address: "+address); + logger.fine("Checksum failed, address: "+address+", data: "+ Converter.toHexString(data)); return null; }