From 244327de0b403f135f6863ef103fa7850515e6ce Mon Sep 17 00:00:00 2001 From: Fabrizio Amodio <32312585+ZioFabry@users.noreply.github.com> Date: Wed, 13 Aug 2025 11:14:22 +0200 Subject: [PATCH] Fix LwDecode.be permit to disable duplicates hash (#23779) --- tasmota/berry/lorawan/decoders/LwDecode.be | 23 ++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/tasmota/berry/lorawan/decoders/LwDecode.be b/tasmota/berry/lorawan/decoders/LwDecode.be index fd26edb99..f9c97d7f3 100644 --- a/tasmota/berry/lorawan/decoders/LwDecode.be +++ b/tasmota/berry/lorawan/decoders/LwDecode.be @@ -233,10 +233,6 @@ class lwdecode_cls var payload = device_info['Payload'] if !payload || payload.size() == 0 return true end - var current_hash = self._calculate_payload_hash(payload) - if current_hash == self.last_payload_hash return true end - self.last_payload_hash = current_hash - if !self.lw_decoders.find(decoder) try LwDeco = nil @@ -244,14 +240,29 @@ class lwdecode_cls if LwDeco self.lw_decoders[decoder] = LwDeco else + log("LwD: Unable to load decoder",1) return true end except .. as e, m - print(format("Decoder load error: %s", m)) + log(format("LwD: Decoder load error: %s", m),1) return true end end + var hashCheck + # check if the decoder driver have the hashCheck properties + try + hashCheck = self.lw_decoders[decoder].hashCheck + except .. as e, m + hashCheck = true + end + + if hashCheck + var current_hash = self._calculate_payload_hash(payload) + if current_hash == self.last_payload_hash return true end + self.last_payload_hash = current_hash + end + try var decoded = self.lw_decoders[decoder].decodeUplink( device_info['Name'], @@ -282,7 +293,7 @@ class lwdecode_cls tasmota.global.restart_flag = 0 # Signal LwDecoded successful (default state) except .. as e, m - print(format("Decode error for %s: %s", device_name, m)) + log(format("LwD: Decode error for %s: %s", device_name, m),1) end return true