add humidity and pressure to cubecell data
This commit is contained in:
parent
3e1fe21113
commit
cce2125a0f
|
|
@ -79,6 +79,8 @@ type payload_130 struct {
|
|||
Fw_version int32
|
||||
Vbat uint8
|
||||
T int16
|
||||
H uint8
|
||||
P uint8
|
||||
W1 int32
|
||||
W2 int32
|
||||
W1_0 int32
|
||||
|
|
@ -129,6 +131,8 @@ type payload_2 struct {
|
|||
Version uint8
|
||||
Vbat uint8
|
||||
T int16
|
||||
H uint8
|
||||
P uint8
|
||||
TC1 int8
|
||||
TC2 int8
|
||||
TC3 int8
|
||||
|
|
@ -255,35 +259,35 @@ func DecodePayload(s string, deveui string, devaddr string, lrrlat float32, lrrl
|
|||
t := pl_1.T
|
||||
t = t + int16(pl_1.TC1)
|
||||
if valid_measurements > 0 {
|
||||
WriteDatapoint(tfp, deveui, devaddr, pl_1.Vbat, pl_1.H1, pl_1.P1, pl_1.W1, 0, 0, t, lrrlat, lrrlon, 0, 0, 0, 0, 0)
|
||||
WriteDatapoint(tfp, deveui, devaddr, pl_1.Vbat, pl_1.H1, pl_1.P1, pl_1.W1, 0, 0, t, lrrlat, lrrlon, 0, 0, 0, 0, 0, false)
|
||||
}
|
||||
//t = t + int16(pl_1.TC1)
|
||||
if valid_measurements > 1 {
|
||||
WriteDatapoint(tfp+(step), deveui, devaddr, 0, pl_1.H2, pl_1.P2, pl_1.W2, 0, 0, t, lrrlat, lrrlon, 0, 0, 0, 0, 0)
|
||||
WriteDatapoint(tfp+(step), deveui, devaddr, 0, pl_1.H2, pl_1.P2, pl_1.W2, 0, 0, t, lrrlat, lrrlon, 0, 0, 0, 0, 0, false)
|
||||
}
|
||||
t = t + int16(pl_1.TC2)
|
||||
if valid_measurements > 2 {
|
||||
WriteDatapoint(tfp+(2*step), deveui, devaddr, 0, pl_1.H3, pl_1.P3, pl_1.W3, 0, 0, t, lrrlat, lrrlon, 0, 0, 0, 0, 0)
|
||||
WriteDatapoint(tfp+(2*step), deveui, devaddr, 0, pl_1.H3, pl_1.P3, pl_1.W3, 0, 0, t, lrrlat, lrrlon, 0, 0, 0, 0, 0, false)
|
||||
}
|
||||
t = t + int16(pl_1.TC3)
|
||||
if valid_measurements > 3 {
|
||||
WriteDatapoint(tfp+(3*step), deveui, devaddr, 0, pl_1.H4, pl_1.P4, pl_1.W4, 0, 0, t, lrrlat, lrrlon, 0, 0, 0, 0, 0)
|
||||
WriteDatapoint(tfp+(3*step), deveui, devaddr, 0, pl_1.H4, pl_1.P4, pl_1.W4, 0, 0, t, lrrlat, lrrlon, 0, 0, 0, 0, 0, false)
|
||||
}
|
||||
t = t + int16(pl_1.TC4)
|
||||
if valid_measurements > 4 {
|
||||
WriteDatapoint(tfp+(4*step), deveui, devaddr, 0, pl_1.H5, pl_1.P5, pl_1.W5, 0, 0, t, lrrlat, lrrlon, 0, 0, 0, 0, 0)
|
||||
WriteDatapoint(tfp+(4*step), deveui, devaddr, 0, pl_1.H5, pl_1.P5, pl_1.W5, 0, 0, t, lrrlat, lrrlon, 0, 0, 0, 0, 0, false)
|
||||
}
|
||||
t = t + int16(pl_1.TC5)
|
||||
if valid_measurements > 5 {
|
||||
WriteDatapoint(tfp+(5*step), deveui, devaddr, 0, pl_1.H6, pl_1.P6, pl_1.W6, 0, 0, t, lrrlat, lrrlon, 0, 0, 0, 0, 0)
|
||||
WriteDatapoint(tfp+(5*step), deveui, devaddr, 0, pl_1.H6, pl_1.P6, pl_1.W6, 0, 0, t, lrrlat, lrrlon, 0, 0, 0, 0, 0, false)
|
||||
}
|
||||
t = t + int16(pl_1.TC6)
|
||||
if valid_measurements > 6 {
|
||||
WriteDatapoint(tfp+(6*step), deveui, devaddr, 0, pl_1.H7, pl_1.P7, pl_1.W7, 0, 0, t, lrrlat, lrrlon, 0, 0, 0, 0, 0)
|
||||
WriteDatapoint(tfp+(6*step), deveui, devaddr, 0, pl_1.H7, pl_1.P7, pl_1.W7, 0, 0, t, lrrlat, lrrlon, 0, 0, 0, 0, 0, false)
|
||||
}
|
||||
t = t + int16(pl_1.TC7)
|
||||
if valid_measurements > 7 {
|
||||
WriteDatapoint(tfp+(7*step), deveui, devaddr, 0, pl_1.H8, pl_1.P8, pl_1.W8, 0, 0, t, lrrlat, lrrlon, 0, 0, 0, 0, 0)
|
||||
WriteDatapoint(tfp+(7*step), deveui, devaddr, 0, pl_1.H8, pl_1.P8, pl_1.W8, 0, 0, t, lrrlat, lrrlon, 0, 0, 0, 0, 0, false)
|
||||
}
|
||||
}
|
||||
} else if s[0:2] == "02" {
|
||||
|
|
@ -294,6 +298,8 @@ func DecodePayload(s string, deveui string, devaddr string, lrrlat float32, lrrl
|
|||
fmt.Printf(" weight: [%d,%d,%d,%d,%d,%d,%d,%d],\n", pl_2.W1, pl_2.WC1, pl_2.WC2, pl_2.WC3, pl_2.WC4, pl_2.WC5, pl_2.WC6, pl_2.W8)
|
||||
fmt.Printf(" temp: %d,\n", pl_2.T)
|
||||
fmt.Printf(" temp_change: [%d,%d,%d,%d,%d,%d,%d],\n", pl_2.TC1, pl_2.TC2, pl_2.TC3, pl_2.TC4, pl_2.TC5, pl_2.TC6, pl_2.TC7)
|
||||
fmt.Printf(" humidity: %d\n", pl_2.H)
|
||||
fmt.Printf(" pressure: %d\n", pl_2.P)
|
||||
fmt.Printf("}\n")
|
||||
if write2file {
|
||||
// Time of first Packet
|
||||
|
|
@ -317,42 +323,42 @@ func DecodePayload(s string, deveui string, devaddr string, lrrlat float32, lrrl
|
|||
w := pl_2.W1
|
||||
t = t + int16(pl_2.TC1)
|
||||
if valid_measurements > 0 {
|
||||
WriteDatapoint(tfp, deveui, devaddr, pl_2.Vbat, 1, 0, w, 0, 0, t, lrrlat, lrrlon, 0, 0, 0, 0, 0)
|
||||
WriteDatapoint(tfp, deveui, devaddr, pl_2.Vbat, pl_2.H, pl_2.P, w, 0, 0, t, lrrlat, lrrlon, 0, 0, 0, 0, 0, true)
|
||||
}
|
||||
//t = t + int16(pl_2.TC1)
|
||||
w = w + uint16(pl_2.WC1)
|
||||
if valid_measurements > 1 {
|
||||
WriteDatapoint(tfp+(step), deveui, devaddr, 0, 1, 0, w, 0, 0, t, lrrlat, lrrlon, 0, 0, 0, 0, 0)
|
||||
WriteDatapoint(tfp+(step), deveui, devaddr, 0, 1, 0, w, 0, 0, t, lrrlat, lrrlon, 0, 0, 0, 0, 0, true)
|
||||
}
|
||||
t = t + int16(pl_2.TC2)
|
||||
w = w + uint16(pl_2.WC2)
|
||||
if valid_measurements > 2 {
|
||||
WriteDatapoint(tfp+(2*step), deveui, devaddr, 0, 1, 0, w, 0, 0, t, lrrlat, lrrlon, 0, 0, 0, 0, 0)
|
||||
WriteDatapoint(tfp+(2*step), deveui, devaddr, 0, 1, 0, w, 0, 0, t, lrrlat, lrrlon, 0, 0, 0, 0, 0, true)
|
||||
}
|
||||
t = t + int16(pl_2.TC3)
|
||||
w = w + uint16(pl_2.WC3)
|
||||
if valid_measurements > 3 {
|
||||
WriteDatapoint(tfp+(3*step), deveui, devaddr, 0, 1, 0, w, 0, 0, t, lrrlat, lrrlon, 0, 0, 0, 0, 0)
|
||||
WriteDatapoint(tfp+(3*step), deveui, devaddr, 0, 1, 0, w, 0, 0, t, lrrlat, lrrlon, 0, 0, 0, 0, 0, true)
|
||||
}
|
||||
t = t + int16(pl_2.TC4)
|
||||
w = w + uint16(pl_2.WC4)
|
||||
if valid_measurements > 4 {
|
||||
WriteDatapoint(tfp+(4*step), deveui, devaddr, 0, 1, 0, w, 0, 0, t, lrrlat, lrrlon, 0, 0, 0, 0, 0)
|
||||
WriteDatapoint(tfp+(4*step), deveui, devaddr, 0, 1, 0, w, 0, 0, t, lrrlat, lrrlon, 0, 0, 0, 0, 0, true)
|
||||
}
|
||||
t = t + int16(pl_2.TC5)
|
||||
w = w + uint16(pl_2.WC5)
|
||||
if valid_measurements > 5 {
|
||||
WriteDatapoint(tfp+(5*step), deveui, devaddr, 0, 1, 0, w, 0, 0, t, lrrlat, lrrlon, 0, 0, 0, 0, 0)
|
||||
WriteDatapoint(tfp+(5*step), deveui, devaddr, 0, 1, 0, w, 0, 0, t, lrrlat, lrrlon, 0, 0, 0, 0, 0, true)
|
||||
}
|
||||
t = t + int16(pl_2.TC6)
|
||||
w = w + uint16(pl_2.WC6)
|
||||
if valid_measurements > 6 {
|
||||
WriteDatapoint(tfp+(6*step), deveui, devaddr, 0, 1, 0, w, 0, 0, t, lrrlat, lrrlon, 0, 0, 0, 0, 0)
|
||||
WriteDatapoint(tfp+(6*step), deveui, devaddr, 0, 1, 0, w, 0, 0, t, lrrlat, lrrlon, 0, 0, 0, 0, 0, true)
|
||||
}
|
||||
t = t + int16(pl_2.TC7)
|
||||
w = pl_2.W8
|
||||
if valid_measurements > 7 {
|
||||
WriteDatapoint(tfp+(7*step), deveui, devaddr, 0, 1, 0, w, 0, 0, t, lrrlat, lrrlon, 0, 0, 0, 0, 0)
|
||||
WriteDatapoint(tfp+(7*step), deveui, devaddr, 0, 1, 0, w, 0, 0, t, lrrlat, lrrlon, 0, 0, 0, 0, 0, true)
|
||||
}
|
||||
}
|
||||
} else if s[0:2] == "80" {
|
||||
|
|
@ -389,7 +395,7 @@ func DecodePayload(s string, deveui string, devaddr string, lrrlat float32, lrrl
|
|||
w = uint16(w32)
|
||||
}
|
||||
|
||||
WriteDatapoint(tfp, deveui, devaddr, pl_128.Vbat, pl_128.H, pl_128.P, w, pl_128.W1, pl_128.W2, pl_128.T, lrrlat, lrrlon, pl_128.Fw_version, pl_128.W1_0, pl_128.W2_0, pl_128.W1_C, pl_128.W2_C)
|
||||
WriteDatapoint(tfp, deveui, devaddr, pl_128.Vbat, pl_128.H, pl_128.P, w, pl_128.W1, pl_128.W2, pl_128.T, lrrlat, lrrlon, pl_128.Fw_version, pl_128.W1_0, pl_128.W2_0, pl_128.W1_C, pl_128.W2_C, false)
|
||||
}
|
||||
ProcessInitPacket(deveui, pl_128.W1_0, pl_128.W2_0, pl_128.W1_C, pl_128.W2_C, pl_128.W1, pl_128.W2)
|
||||
} else if s[0:2] == "81" {
|
||||
|
|
@ -408,7 +414,7 @@ func DecodePayload(s string, deveui string, devaddr string, lrrlat float32, lrrl
|
|||
// Time of Packet received
|
||||
var tfp = (time.Now().Unix() / 60)
|
||||
|
||||
WriteDatapoint(tfp, deveui, devaddr, pl_129.Vbat, pl_129.H, pl_129.P, pl_129.W, pl_129.W1, pl_129.W2, pl_129.T, lrrlat, lrrlon, pl_129.Fw_version, 0, 0, 0, 0)
|
||||
WriteDatapoint(tfp, deveui, devaddr, pl_129.Vbat, pl_129.H, pl_129.P, pl_129.W, pl_129.W1, pl_129.W2, pl_129.T, lrrlat, lrrlon, pl_129.Fw_version, 0, 0, 0, 0, false)
|
||||
}
|
||||
} else if s[0:2] == "82" {
|
||||
fmt.Printf("{\n")
|
||||
|
|
@ -422,6 +428,8 @@ func DecodePayload(s string, deveui string, devaddr string, lrrlat float32, lrrl
|
|||
fmt.Printf(" cal_1_C: %f\n", pl_130.W1_C)
|
||||
fmt.Printf(" cal_2_C: %f\n", pl_130.W2_C)
|
||||
fmt.Printf(" temp: %d\n", pl_130.T)
|
||||
fmt.Printf(" humidity: %d\n", pl_130.H)
|
||||
fmt.Printf(" pressure: %d\n", pl_130.P)
|
||||
fmt.Printf("}\n")
|
||||
if write2file {
|
||||
// Time of Packet received
|
||||
|
|
@ -442,7 +450,7 @@ func DecodePayload(s string, deveui string, devaddr string, lrrlat float32, lrrl
|
|||
w = uint16(w32)
|
||||
}
|
||||
|
||||
WriteDatapoint(tfp, deveui, devaddr, pl_130.Vbat, 1, 0, w, pl_130.W1, pl_130.W2, pl_130.T, lrrlat, lrrlon, pl_130.Fw_version, pl_130.W1_0, pl_130.W2_0, pl_130.W1_C, pl_130.W2_C)
|
||||
WriteDatapoint(tfp, deveui, devaddr, pl_130.Vbat, pl_130.H, pl_130.P, w, pl_130.W1, pl_130.W2, pl_130.T, lrrlat, lrrlon, pl_130.Fw_version, pl_130.W1_0, pl_130.W2_0, pl_130.W1_C, pl_130.W2_C, true)
|
||||
}
|
||||
}
|
||||
// Send alert if necessary
|
||||
|
|
@ -463,15 +471,15 @@ func IsDayTime() bool {
|
|||
return ((hours >= 6) && (hours < 22))
|
||||
}
|
||||
|
||||
func WriteDatapoint(mytime int64, deveui string, devaddr string, v uint8, h uint8, p uint8, w uint16, w1 int32, w2 int32, t int16, lrrlat float32, lrrlon float32, fw_version int32, w1_0 int32, w2_0 int32, w1_c float32, w2_c float32) {
|
||||
func WriteDatapoint(mytime int64, deveui string, devaddr string, v uint8, h uint8, p uint8, w uint16, w1 int32, w2 int32, t int16, lrrlat float32, lrrlon float32, fw_version int32, w1_0 int32, w2_0 int32, w1_c float32, w2_c float32, supercap bool) {
|
||||
// wir nehmen humidity als Referenz, wenn diese > 0 ist, dann ist es
|
||||
// eine gueltige Messung
|
||||
// eine gueltige Messung, wenn humidity = 1 ist, dann geben wir h und p nicht aus
|
||||
var vp int16 // Voltage in %
|
||||
var implausible bool
|
||||
//fmt.Printf("WriteDatapoint: h: %d\n", h)
|
||||
if h > 0 {
|
||||
sv := ""
|
||||
if h == 1 {
|
||||
if supercap {
|
||||
// vp for supercapacitor (180 is 0%, 225 is 100%)
|
||||
vp = int16((float32(v) - 180) / 45.0 * 100.0)
|
||||
if vp < 0 {
|
||||
|
|
@ -502,7 +510,11 @@ func WriteDatapoint(mytime int64, deveui string, devaddr string, v uint8, h uint
|
|||
if fw_version > 0 {
|
||||
sfw = fmt.Sprintf(",fw_version=%di,w1=%di,w2=%di,w1_0=%di,w2_0=%di,w1_c=%f,w2_c=%f", fw_version, w1, w2, w1_0, w2_0, w1_c, w2_c)
|
||||
}
|
||||
if h == 1 {
|
||||
s = fmt.Sprintf("measurement,deveui=%s devaddr=\"%s\",%sw=%di,t=%.1f,lrrlat=%f,lrrlon=%f%s %d\n", deveui, devaddr, sv, uint32(w)*5, float32(t)/10, lrrlat, lrrlon, sfw, mytime*60*1000*1000*1000)
|
||||
} else {
|
||||
s = fmt.Sprintf("measurement,deveui=%s devaddr=\"%s\",%sh=%di,p=%di,w=%di,t=%.1f,lrrlat=%f,lrrlon=%f%s %d\n", deveui, devaddr, sv, h, int32(p)+825, uint32(w)*5, float32(t)/10, lrrlat, lrrlon, sfw, mytime*60*1000*1000*1000)
|
||||
}
|
||||
|
||||
implausible = (w1 == NOT_PLAUSIBLE_32) || (w2 == NOT_PLAUSIBLE_32) || (w == NOT_PLAUSIBLE_16)
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue