Added no caching for json pages

This commit is contained in:
Ziver Koc 2016-12-27 04:51:05 +01:00
parent d799e0a487
commit 9eff27dbab
3 changed files with 19 additions and 11 deletions

View file

@ -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);
}

View file

@ -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(

View file

@ -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<TellstickDecodedEntry> 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;
}