Skip to content

Commit

Permalink
Merge branch 'master' into master
Browse files Browse the repository at this point in the history
  • Loading branch information
Jaime-Trinidad authored Sep 20, 2023
2 parents 827bf3b + 3cd7a2f commit 2f5bd40
Show file tree
Hide file tree
Showing 43 changed files with 2,078 additions and 643 deletions.
24 changes: 24 additions & 0 deletions vendor/browan/cd10-codec.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
uplinkDecoder:
fileName: cd10.js
examples:
- description: MerryIoT Air Quality CO2 detected
input:
fPort: 127
bytes: [0x11, 0x0f, 0xe7, 0x00, 0x43, 0x07, 0x19]
output:
data:
status: 1
button: 0
co2threshold: 1
co2calibration: 0
battery: 3.6
temperature: 23.1
humidity: 67
co2_ppm: 6407
- description: Unknown FPort
input:
fPort: 42
bytes: [0x01]
output:
errors:
- unknown FPort
23 changes: 23 additions & 0 deletions vendor/browan/cd10.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
function decodeUplink(input) {
var bytes = input.bytes;

switch (input.fPort) {
case 127:
return {
data: {
status: bytes[0] & 0x01,
button: (bytes[0] >> 1) & 0x01,
co2threshold: (bytes[0] >> 4) & 0x01,
co2calibration: (bytes[0] >> 5) & 0x01,
battery: (21 + (bytes[1] & 0x0f)) / 10,
temperature: ((bytes[3] << 8) | bytes[2])/10,
humidity: bytes[4],
co2_ppm: (bytes[6] << 8) | bytes[5],
}
};
default:
return {
errors: ['unknown FPort'],
};
}
}
Binary file added vendor/browan/cd10.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
54 changes: 54 additions & 0 deletions vendor/browan/cd10.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
name: MerryIoT Air Quality CO2
description: The MerryIoT Air Quality CO2 is designed for in-home and in-building usage for consumer or facility management applications. The design is optimized for high-volume manufacturing, optimal battery lifetime, and pleasing aesthetics for in-building placement.

hardwareVersions:
- version: '1.0'
numeric: 1

firmwareVersions:
- # Firmware version
version: '1.0.1' # unknown
numeric: 1
hardwareVersions:
- '1.0'

profiles:
EU863-870:
id: tabs-profile
lorawanCertified: true
codec: cd10-codec
US902-928:
id: tabs-profile
lorawanCertified: true
codec: cd10-codec

sensors:
- co2

dimensions:
width: 70
length: 90
height: 35

weight: 96

battery:
replaceable: true
type: 3.6V AA Li-SOCl2 2700mAh *2

operatingConditions:
temperature:
min: 0
max: 50

ipCode: IPX0

productURL: https://www.browan.com/product/CO2-Sensor/detail

photos:
main: cd10.png

keySecurity: none

keyProvisioning:
- manifest
2 changes: 2 additions & 0 deletions vendor/browan/index.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,5 @@ endDevices:
- tbwl100
- tbpb100
- tbhv110
- cd10
- l0010
49 changes: 49 additions & 0 deletions vendor/browan/l0010-codec.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
uplinkDecoder:
fileName: l0010.js
examples:
- description: Gasmatic Sensor
input:
fPort: 51
bytes: [0x04, 0x37, 0xcd, 0x05, 0xca, 0x05, 0xc7, 0x05, 0xbf, 0x05]
output:
data:
Reading_Type: 0
Device_Type: 2
ADC_group: 0
battery: 86.27
ADC1: 1485
ADC2: 1482
ADC4: 1479
ADC6: 1471
- description: Gasmatic Sensor WIFI
input:
fPort: 51
bytes: [0x0b, 0xa5, 0xcf, 0xf3, 0x7b, 0x49, 0x1c, 0x1e, 0x38]
output:
data:
Reading_Type: 1
WiFi_MACs_found: 5
packet_seq_number: 0
wifi_mac: '1c497bf3cfa5'
RSSI: -30
battery: 87.84
- description: Gasmatic Sensor BLE
input:
fPort: 64
bytes: [0x28, 0xa6, 0x5f, 0x31, 0xd0, 0x55, 0x03, 0xFA, 0x00, 0x38, 0x5b]
output:
data:
Reading_Type: 0
Device_Type: 4
found_beacons: 2
ble_mac: '0355d0315fa6'
pressure: 250
battery_main: 87.84
battery_transducer: 91
- description: Unknown FPort
input:
fPort: 42
bytes: [0x01]
output:
errors:
- unknown FPort
97 changes: 97 additions & 0 deletions vendor/browan/l0010.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
function decodeUplink(input) {
var bytes = input.bytes;
var payloadlens = input.bytes.length;
switch (input.fPort) {
case 51:
if(payloadlens==10){
//ADC uplink payload
var battery_cal = (bytes[1]/63.75)*100;
var battery_final = parseFloat(battery_cal.toFixed(2));
var dev_type_1 = (bytes[0] >> 1) & 0x01;
var dev_type_2 = (bytes[0] >> 2) & 0x01;
var dev_type_3 = (bytes[0] >> 3) & 0x01;
var dev_type_bin = dev_type_3.toString()+dev_type_2.toString()+dev_type_1.toString();
var dev_type_final = parseInt(dev_type_bin, 2);// Device Type: ADC=>2 ; BLE=>4
var adc_group =(bytes[0] >> 4) & 0x01; // 0: ADC Group 0
return {
data: {
Reading_Type: bytes[0] & 0x01,
Device_Type: dev_type_final,
ADC_group: adc_group,
battery: battery_final,
ADC1: (bytes[3] << 8) | bytes[2],
ADC2: (bytes[5] << 8) | bytes[4],
ADC4: (bytes[7] << 8) | bytes[6],
ADC6: (bytes[9] << 8) | bytes[8],
}
};
}
if(payloadlens==9){
//WIFI uplink payload
var wifi_mac_sum = bytes[6].toString(16).padStart(2, "0")+
bytes[5].toString(16).padStart(2, "0")+
bytes[4].toString(16).padStart(2, "0")+
bytes[3].toString(16).padStart(2, "0")+
bytes[2].toString(16).padStart(2, "0")+
bytes[1].toString(16).padStart(2, "0");
var rssi_cal = 0 - bytes[7];
var battery_cal = (bytes[8]/63.75)*100;
var battery_final = parseFloat(battery_cal.toFixed(2));
var wifi_macs_b1 = (bytes[0] >> 1) & 0x01;
var wifi_macs_b2 = (bytes[0] >> 2) & 0x01;
var wifi_macs_b3 = (bytes[0] >> 3) & 0x01;
var wifi_macs_bin = wifi_macs_b3.toString()+wifi_macs_b2.toString()+wifi_macs_b1.toString();
var wifi_macs_final = parseInt(wifi_macs_bin, 2);// found WiFi MAC Numbers
var pk_seq_n1 = (bytes[0] >> 4) & 0x01;
var pk_seq_n2 = (bytes[0] >> 5) & 0x01;
var pk_seq_n3 = (bytes[0] >> 6) & 0x01;
var pk_seq_bin = pk_seq_n3.toString()+pk_seq_n2.toString()+pk_seq_n1.toString();
var pk_seq_final = parseInt(pk_seq_bin, 2);//WiFi Packet Sequence serial number
return {
data: {
Reading_Type: bytes[0] & 0x01,
WiFi_MACs_found: wifi_macs_final,
packet_seq_number: pk_seq_final,
wifi_mac: wifi_mac_sum,
RSSI: rssi_cal,
battery: battery_final,
}
};
}
case 64:
//BLE uplink payload
var ble_mac_sum = bytes[6].toString(16).padStart(2, "0")+
bytes[5].toString(16).padStart(2, "0")+
bytes[4].toString(16).padStart(2, "0")+
bytes[3].toString(16).padStart(2, "0")+
bytes[2].toString(16).padStart(2, "0")+
bytes[1].toString(16).padStart(2, "0");
var battery_cal = (bytes[9]/63.75)*100;
var battery_final = parseFloat(battery_cal.toFixed(2));
var dev_type_1 = (bytes[0] >> 1) & 0x01;
var dev_type_2 = (bytes[0] >> 2) & 0x01;
var dev_type_3 = (bytes[0] >> 3) & 0x01;
var dev_type_bin = dev_type_3.toString()+dev_type_2.toString()+dev_type_1.toString();
var dev_type_final = parseInt(dev_type_bin, 2);// Device Type: ADC=>2 ; BLE=>4
var ble_beacons_f1 = (bytes[0] >> 4) & 0x01;
var ble_beacons_f2 = (bytes[0] >> 5) & 0x01;
var ble_beacons_f3 = (bytes[0] >> 6) & 0x01;
var ble_beacons_bin = ble_beacons_f3.toString()+ble_beacons_f2.toString()+ble_beacons_f1.toString();
var ble_beacons_final = parseInt(ble_beacons_bin, 2);//The numbers of BLE Beacon found
return {
data: {
Reading_Type: bytes[0] & 0x01,
Device_Type: dev_type_final,
found_beacons: ble_beacons_final,
ble_mac: ble_mac_sum,
pressure: (bytes[8] << 8) | bytes[7],
battery_main: battery_final,
battery_transducer: bytes[10],
}
};
default:
return {
errors: ['unknown FPort'],
};
}
}
Binary file added vendor/browan/l0010.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
54 changes: 54 additions & 0 deletions vendor/browan/l0010.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
name: Gasmatic Sensor
description: Gasmatic Sensor is designed for in-home and in-building usage for consumer or facility management applications. The design is optimized for high-volume manufacturing, optimal battery lifetime, and pleasing aesthetics for in-building placement.

hardwareVersions:
- version: '1.0'
numeric: 1

firmwareVersions:
- # Firmware version
version: '1.0.1' # unknown
numeric: 1
hardwareVersions:
- '1.0'

profiles:
EU863-870:
id: merryiot-profile
lorawanCertified: true
codec: l0010-codec
US902-928:
id: merryiot-profile
lorawanCertified: true
codec: l0010-codec

#sensors:
# - gasmatic sensor

dimensions:
width: 180
length: 100
height: 65

weight: 380

battery:
replaceable: true
type: 3.6V Li-ER34615 19000mAh

operatingConditions:
temperature:
min: 0
max: 50

ipCode: IPX0

productURL: https://www.browan.com/product/XP/Rd

photos:
main: l0010.png

keySecurity: none

keyProvisioning:
- manifest
8 changes: 8 additions & 0 deletions vendor/browan/merryiot-profile.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
vendorProfileID: 613
supportsClassB: false
supportsClassC: false
macVersion: 1.0.3
regionalParametersVersion: RP001-1.0.3-RevA
supportsJoin: true
maxEIRP: 16
supports32bitFCnt: true
Loading

0 comments on commit 2f5bd40

Please sign in to comment.