LoRaWan berry decoders fix invalid last seen

This commit is contained in:
Theo Arends 2025-06-05 15:08:21 +02:00
parent 26613aacb2
commit f3d4b5275d
4 changed files with 17 additions and 14 deletions

View File

@ -14,13 +14,14 @@ class LwDecoLDS02
data.insert("Node", Node)
var valid_values = false
var last_seen
var battery_last_seen
var last_seen = 0x7FFFFFFF
var battery_last_seen = 0x7FFFFFFF
var battery
var rssi = RSSI
var door_open
## SENSOR DATA ##
if 10 == FPort && Bytes.size() == 10
last_seen = tasmota.rtc('local')
door_open = ( Bytes[0] & 0x80 ) ? 1 : 0
data.insert("DoorOpen", ( door_open ) ? true : false)
data.insert("BattV", ( Bytes[1] | (Bytes[0] << 8) & 0x3FFF ) / 1000.0)
@ -35,7 +36,6 @@ class LwDecoLDS02
end #Fport
if valid_values
last_seen = tasmota.rtc('local')
if global.lds02Nodes.find(Node)
global.lds02Nodes.remove(Node)
end

View File

@ -14,8 +14,8 @@ class LwDecoLHT52
data.insert("Node", Node)
var valid_values = false
var last_seen
var battery_last_seen
var last_seen = 0x7FFFFFFF
var battery_last_seen = 0x7FFFFFFF
var battery = 1000
var rssi = RSSI
var temp_int
@ -32,6 +32,8 @@ class LwDecoLHT52
end
## SENSOR DATA ##
if 2 == FPort && Bytes.size() == 11
last_seen = tasmota.rtc('local')
var TempC
TempC = Bytes[0] << 8 | Bytes[1]
if Bytes[0] > 0x7F
@ -76,7 +78,6 @@ class LwDecoLHT52
end #Fport
if valid_values
last_seen = tasmota.rtc('local')
if global.lht52Nodes.find(Node)
global.lht52Nodes.remove(Node)
end

View File

@ -18,8 +18,8 @@ class LwDecoLHT65
var NoConnect = (Bytes[6] & 0x80) >> 7
var valid_values = false
var last_seen
var battery_last_seen
var last_seen = 0x7FFFFFFF
var battery_last_seen = 0x7FFFFFFF
var battery = 1000
var rssi = RSSI
var temp_int = 1000
@ -41,6 +41,7 @@ class LwDecoLHT65
var TempC
if Ext == 9 #Sensor E3, Temperature Sensor, Datalog Mod
last_seen = tasmota.rtc('local')
TempC = ((Bytes[0] << 8) | Bytes[1])
if 0x7FFF == TempC
data.insert("Ext_SensorConnected", false)
@ -63,6 +64,7 @@ class LwDecoLHT65
end
if Ext != 0x0F
last_seen = tasmota.rtc('local')
TempC = ((Bytes[2] << 8) | Bytes[3])
if Bytes[2]>0x7F
TempC -= 0x10000
@ -81,6 +83,7 @@ class LwDecoLHT65
if 0 == Ext
data.insert("Ext_sensor", 'No external sensor')
elif 1==Ext
last_seen = tasmota.rtc('local')
data.insert("Ext_sensor",'Temperature Sensor')
TempC = ((Bytes[7] << 8) | Bytes[8])
if 0x7FFF == TempC
@ -95,6 +98,7 @@ class LwDecoLHT65
valid_values = true
end
elif 4 == Ext
last_seen = tasmota.rtc('local')
data.insert("Work_mode", 'Interrupt Sensor send')
door_open = ( Bytes[7] ) ? 0 : 1 # DS sensor
data.insert("Exti_pin_level", Bytes[7] ? 'High' : 'Low')
@ -137,7 +141,6 @@ class LwDecoLHT65
end #Fport
if valid_values
last_seen = tasmota.rtc('local')
if global.lht65Nodes.find(Node)
global.lht65Nodes.remove(Node)
end

View File

@ -14,8 +14,8 @@ class LwDecoDW10
data.insert("Node", Node)
var valid_values = false
var last_seen
var battery_last_seen
var last_seen = 0x7FFFFFFF
var battery_last_seen = 0x7FFFFFFF
var battery
var rssi = RSSI
var door_open
@ -24,6 +24,7 @@ class LwDecoDW10
var humidity
## SENSOR DATA ##
if 120 == FPort && Bytes.size() == 9
last_seen = tasmota.rtc('local')
door_open = ( Bytes[0] & 0x01 ) ? 1 : 0
data.insert("DoorOpen", ( door_open ) ? true : false )
button_pressed = ( Bytes[0] & 0x02 ) ? 1 : 0
@ -40,13 +41,11 @@ class LwDecoDW10
data.insert("DoorOpenLastDuration_mins", Bytes[4] | (Bytes[5] << 8))
data.insert("DoorOpenEvents", Bytes[6] | (Bytes[7] << 8) | (Bytes[8] << 16 ))
valid_values = true
else
# Ignore other Fports
end #Fport
if valid_values
last_seen = tasmota.rtc('local')
if global.dw10Nodes.find(Node)
global.dw10Nodes.remove(Node)
end