From 9f88eca405bc13ffdafdbf4013250973cfb808fb Mon Sep 17 00:00:00 2001 From: Tim Chao Date: Mon, 15 Jul 2024 16:10:41 +0800 Subject: [PATCH] feat: add support for IBS09PIR/R/PS/LX 1. Rename iBS008/PIR/R/PS to iBS09 2. Added iBS09LX payload support Signed-off-by: Tim Chao --- igsparser/msd.py | 7 ++++--- tests/test_ibs08.py | 22 +++++++++++++++------- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/igsparser/msd.py b/igsparser/msd.py index 21d5861..f89bea7 100644 --- a/igsparser/msd.py +++ b/igsparser/msd.py @@ -259,9 +259,10 @@ def fieldAccels(self, idx): 0x39: {'name': 'iWS01', 'fields': ['fieldTemp', 'fieldHumidity1D'], 'events': ['button']}, # deprecated, for backward compatibility 0x40: {'name': 'iBS06', 'fields': ['fieldDummy', 'fieldDummy', 'fieldUser'], 'events': []}, 0x41: {'name': 'iBS08T', 'fields': ['fieldTemp', 'fieldHumidity1D', 'fieldUser'], 'events': ['button']}, - 0x42: {'name': 'iBS08R', 'fields': ['fieldDummy', 'fieldRange', 'fieldUser'], 'events': []}, - 0x43: {'name': 'iBS08PS', 'fields': ['fieldValue', 'fieldCounter', 'fieldUser'], 'events': ['detect']}, - 0x44: {'name': 'iBS08PIR', 'fields': ['fieldDummy', 'fieldDummy', 'fieldUser'], 'events': ['pir']}, + 0x42: {'name': 'iBS09R', 'fields': ['fieldDummy', 'fieldRange', 'fieldUser'], 'events': ['button']}, + 0x43: {'name': 'iBS09PS', 'fields': ['fieldValue', 'fieldCounter', 'fieldUser'], 'events': ['detect']}, + 0x44: {'name': 'iBS09PIR', 'fields': ['fieldDummy', 'fieldDummy', 'fieldUser'], 'events': ['pir']}, + 0x45: {'name': 'iBS09LX', 'fields': ['fieldDummy', 'fieldLux', 'fieldUser'], 'events': ['button']}, 0x48: {'name': 'iBS08', 'fields': ['fieldTempEnv', 'fieldTemp', 'fieldUser'], 'events': ['detect']}, } diff --git a/tests/test_ibs08.py b/tests/test_ibs08.py index b815e01..6daa52c 100644 --- a/tests/test_ibs08.py +++ b/tests/test_ibs08.py @@ -20,34 +20,42 @@ def test_ibs08t(): assert msd.humidity == 52.3 assert msd.user == 0 -def test_ibs08r(): +def test_ibs09r(): payload = '02010612FF2C0883BC280100AAAA7200000042090000' msd = PayloadParser.parse(payload).manufacturerData - assert msd.type == 'iBS08R' + assert msd.type == 'iBS09R' assert msd.battery == 2.96 assert msd.range == 114 assert msd.user == 0 -def test_ibs08ps(): +def test_ibs09ps(): payload = '02010612FF2C0883BC1E012021071E00000043010100' msd = PayloadParser.parse(payload).manufacturerData - assert msd.type == 'iBS08PS' + assert msd.type == 'iBS09PS' assert msd.battery == 2.86 assert msd.value == 1825 assert msd.counter == 30 assert msd.user == 0 payload = '02010612FF2C0883BC170100B2FF1800000043010100' msd = PayloadParser.parse(payload).manufacturerData - assert msd.type == 'iBS08PS' + assert msd.type == 'iBS09PS' assert msd.battery == 2.79 assert msd.value == -78 assert msd.counter == 24 assert msd.user == 0 -def test_ibs08pir(): +def test_ibs09pir(): payload = '02010612FF2C0883BC4A0110AAAAFFFF000044040000' msd = PayloadParser.parse(payload).manufacturerData - assert msd.type == 'iBS08PIR' + assert msd.type == 'iBS09PIR' assert msd.battery == 3.3 assert msd.events.pir == True assert msd.user == 0 + +def test_ibs09lx(): + payload = '02010612FF2C0883BC280100AAAA7200000045090000' + msd = PayloadParser.parse(payload).manufacturerData + assert msd.type == 'iBS09LX' + assert msd.battery == 2.96 + assert msd.lux == 114 + assert msd.user == 0