Skip to content

Commit

Permalink
Add senseclimate (#856)
Browse files Browse the repository at this point in the history
Co-authored-by: Jaime Trinidad <[email protected]>
  • Loading branch information
arifuleee and Jaime-Trinidad authored Dec 12, 2024
1 parent 82e9e6e commit f6b5404
Show file tree
Hide file tree
Showing 8 changed files with 362 additions and 0 deletions.
3 changes: 3 additions & 0 deletions vendor/index.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2118,3 +2118,6 @@ vendors:
facebook: https://www.facebook.com/yobiiq
twitter: yobiiq
github: Yobiiq-BV

- id: southerniot
name: Southern IoT
17 changes: 17 additions & 0 deletions vendor/southerniot/index.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# This example contains just one end device: windsensor. It is referenced here in the index.

endDevices:
# Unique identifier of the end device (lowercase, alphanumeric with dashes, max 36 characters)
- senseclimate # look in senseclimate.yaml for the end device definition

# The profileIDs is a distinct value for every unique profile listed in the vendor's folder.
# This value can be freely issued by the vendor and is also used on the QR code for LoRaWAN devices, see
# https://lora-alliance.org/wp-content/uploads/2020/11/TR005_LoRaWAN_Device_Identification_QR_Codes.pdf#page=8
# It can either be a combo of device ID + hardware version + firmware version + region, or profile ID + codec ID
# NOTE: The profileIDs is different from the vendorID.
# profileIDs:
# '1':
# endDeviceID: 'windsensor'
# firmwareVersion: '1.0'
# hardwareVersion: '1.0'
# region: 'EU863-870'
12 changes: 12 additions & 0 deletions vendor/southerniot/senseclimate-codec.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
uplinkDecoder:
fileName: senseclimate.js
# Examples (optional)
examples:
- description: 10 degrees
input:
fPort: 1
bytes: [10, 70]
output:
data:
temperature: 10
humidity: 70
47 changes: 47 additions & 0 deletions vendor/southerniot/senseclimate-profile-868.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# LoRaWAN MAC version: 1.0, 1.0.1, 1.0.2, 1.0.3, 1.0.4 or 1.1
macVersion: '1.0.3'
# LoRaWAN Regional Parameters version. Values depend on the LoRaWAN version:
# 1.0: TS001-1.0
# 1.0.1: TS001-1.0.1
# 1.0.2: RP001-1.0.2 or RP001-1.0.2-RevB
# 1.0.3: RP001-1.0.3-RevA
# 1.0.4: RP002-1.0.0 or RP002-1.0.1
# 1.1: RP001-1.1-RevA or RP001-1.1-RevB
regionalParametersVersion: 'RP001-1.0.3-RevA'

# Whether the end device supports join (OTAA) or not (ABP)
supportsJoin: true
# If your device is an ABP device (supportsJoin is false), uncomment the following fields:
# RX1 delay
#rx1Delay: 5
# RX1 data rate offset
#rx1DataRateOffset: 0
# RX2 data rate index
#rx2DataRateIndex: 0
# RX2 frequency (MHz)
#rx2Frequency: 869.525
# Factory preset frequencies (MHz)
#factoryPresetFrequencies: [868.1, 868.3, 868.5, 867.1, 867.3, 867.5, 867.7, 867.9]

# Maximum EIRP
maxEIRP: 16
# Whether the end device supports 32-bit frame counters
supports32bitFCnt: true

# Whether the end device supports class B
supportsClassB: false
# If your device supports class B, uncomment the following fields:
# Maximum delay for the end device to answer a MAC request or confirmed downlink frame (seconds)
#classBTimeout: 60
# Ping slot period (seconds)
#pingSlotPeriod: 128
# Ping slot data rate index
#pingSlotDataRateIndex: 0
# Ping slot frequency (MHz). Set to 0 if the band supports ping slot frequency hopping.
#pingSlotFrequency: 869.525

# Whether the end device supports class C
supportsClassC: false
# If your device supports class C, uncomment the following fields:
# Maximum delay for the end device to answer a MAC request or confirmed downlink frame (seconds)
#classCTimeout: 60
47 changes: 47 additions & 0 deletions vendor/southerniot/senseclimate-profile-915.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# LoRaWAN MAC version: 1.0, 1.0.1, 1.0.2, 1.0.3, 1.0.4 or 1.1
macVersion: '1.0.3'
# LoRaWAN Regional Parameters version. Values depend on the LoRaWAN version:
# 1.0: TS001-1.0
# 1.0.1: TS001-1.0.1
# 1.0.2: RP001-1.0.2 or RP001-1.0.2-RevB
# 1.0.3: RP001-1.0.3-RevA
# 1.0.4: RP002-1.0.0 or RP002-1.0.1
# 1.1: RP001-1.1-RevA or RP001-1.1-RevB
regionalParametersVersion: 'RP001-1.0.3-RevA'

# Whether the end device supports join (OTAA) or not (ABP)
supportsJoin: true
# If your device is an ABP device (supportsJoin is false), uncomment the following fields:
# RX1 delay
#rx1Delay: 5
# RX1 data rate offset
#rx1DataRateOffset: 0
# RX2 data rate index
#rx2DataRateIndex: 0
# RX2 frequency (MHz)
#rx2Frequency: 869.525
# Factory preset frequencies (MHz)
#factoryPresetFrequencies: [868.1, 868.3, 868.5, 867.1, 867.3, 867.5, 867.7, 867.9]

# Maximum EIRP
maxEIRP: 27
# Whether the end device supports 32-bit frame counters
supports32bitFCnt: true

# Whether the end device supports class B
supportsClassB: false
# If your device supports class B, uncomment the following fields:
# Maximum delay for the end device to answer a MAC request or confirmed downlink frame (seconds)
#classBTimeout: 60
# Ping slot period (seconds)
#pingSlotPeriod: 128
# Ping slot data rate index
#pingSlotDataRateIndex: 0
# Ping slot frequency (MHz). Set to 0 if the band supports ping slot frequency hopping.
#pingSlotFrequency: 869.525

# Whether the end device supports class C
supportsClassC: false
# If your device supports class C, uncomment the following fields:
# Maximum delay for the end device to answer a MAC request or confirmed downlink frame (seconds)
#classCTimeout: 60
68 changes: 68 additions & 0 deletions vendor/southerniot/senseclimate.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
// var directions = ['N', 'E', 'S', 'W'];
// var colors = ['red', 'green'];
// var degrees = {
// N: 0,
// E: 90,
// S: 180,
// W: 270,
// };

function decodeUplink(input) {
switch (input.fPort) {
case 1:
return {
// Decoded data
data: {
temperature : input.bytes[0],
humidity : input.bytes[1]
},
};
default:
return {
errors: ['unknown FPort'],
};
}
}

// function normalizeUplink(input) {
// return {
// // Normalized data
// data: {
// wind: {
// direction: degrees[input.data.direction], // letter to degrees
// speed: input.data.speed * 0.5144, // knots to m/s
// },
// },
// };
// }

// function encodeDownlink(input) {
// var i = colors.indexOf(input.data.led);
// if (i === -1) {
// return {
// errors: ['invalid LED color'],
// };
// }
// return {
// // LoRaWAN FPort used for the downlink message
// fPort: 2,
// // Encoded bytes
// bytes: [i],
// };
// }

// function decodeDownlink(input) {
// switch (input.fPort) {
// case 2:
// return {
// // Decoded downlink (must be symmetric with encodeDownlink)
// data: {
// led: colors[input.bytes[0]],
// },
// };
// default:
// return {
// errors: ['invalid FPort'],
// };
// }
// }
Binary file added vendor/southerniot/senseclimate.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
168 changes: 168 additions & 0 deletions vendor/southerniot/senseclimate.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,168 @@
name: senseclimate # Device name can not contain the vendor name
description: Climate Sensor with temperature and humidity

# Hardware versions (optional, use when you have revisions)
hardwareVersions:
- version: '1.0'
numeric: 1
- version: '1.0-rev-A'
numeric: 2

# Firmware versions (at least one is mandatory)
firmwareVersions:
- # Firmware version
version: '1.0'
numeric: 1
# Corresponding hardware versions (optional)
hardwareVersions:
- '1.0'

# Firmware features (optional)
# Valid values are: remote rejoin (trigger a join from the application layer), transmission interval (configure how
# often he device sends a message).
features:
- remote rejoin
- transmission interval

# LoRaWAN Device Profiles per region
# Supported regions are EU863-870, US902-928, AU915-928, AS923, CN779-787, EU433, CN470-510, KR920-923, IN865-867,
# RU864-870
profiles:
EU863-870:
# Optional identifier of the vendor of the profile. When you specify the vendorID, the profile is loaded from
# the vendorID's folder. This allows you to reuse profiles from module or LoRaWAN end device stack vendors.
# If vendorID is empty, the current vendor ID is used. In this example, the vendorID is the current vendor ID,
# which is verbose.
vendorID: southerniot
# Identifier of the profile (lowercase, alphanumeric with dashes, max 36 characters)
id: senseclimate-profile-868
lorawanCertified: true
codec: senseclimate-codec
US902-928:
id: senseclimate-profile-915
lorawanCertified: true
codec: senseclimate-codec

# Sensors that this device features (optional)
# Valid values are:
# 4-20 ma, accelerometer, altitude, analog input, auxiliary, barometer, battery, button, bvoc, co, co2, conductivity, current, digital input,
# digital output, dissolved oxygen, distance, dust, energy, gps, gyroscope, h2s, hall effect, humidity, iaq, infrared, leaf wetness, level,
# light, lightning, link, magnetometer, moisture, motion, nfc, no, no2, o3, occupancy, optical meter, particulate matter, ph, pir,
# pm2.5, pm10, potentiometer, power, precipitation, pressure, proximity, pulse count, pulse frequency, radar, rainfall, reed switch, rssi,
# sap flow, smart valve, smoke, snr, so2, solar radiation, sound, strain, surface temperature, switch, temperature, tilt, time, turbidity,
# tvoc, uv, vapor pressure, velocity, vibration, voltage, water potential, water, weight, wifi ssid, wind direction, wind speed.
sensors:
- temperature
- humidity

# Additional radios that this device has (optional)
# Valid values are: ble, nfc, wifi, cellular.
additionalRadios:
- ble
- cellular

# Bridge interfaces (optional)
# Valid values are: modbus, m-bus, can bus, rs-485, sdi-12, analog, ethernet.
bridgeInterfaces:
- m-bus
- rs-485

# Dimensions in mm (optional)
# Use width, height, length and/or diameter
dimensions:
width: 34
length: 26
height: 77

# Weight in grams (optional)
weight: 350

# Battery information (optional)
battery:
replaceable: true
type: AA

# Operating conditions (optional)
operatingConditions:
# Temperature (Celsius)
temperature:
min: -30
max: 85
# Relative humidity (fraction of 1)
relativeHumidity:
min: 0
max: 0.97

# IP rating (optional)
ipCode: IP64

# Key provisioning (optional)
# Valid values are: custom (user can configure keys), join server and manifest.
keyProvisioning:
- custom
- join server

# Key programming (optional)
# Valid values are: bluetooth, nfc, wifi, ethernet (via a webpage), serial (when the user has a serial interface to set the keys)
# and firmware (when the user should change the firmware to set the keys).
keyProgramming:
- serial
- firmware

# Key security (optional)
# Valid values are: none, read protected and secure element.
keySecurity: none

# Firmware programming (optional)
# Valid values are: serial (when the user has a serial interface to update the firmware), ethernet, fuota lorawan (when the device
# supports LoRaWAN FUOTA via standard interfaces) and fuota other (other wireless update mechanism).
firmwareProgramming:
- serial
- fuota lorawan

# Product and data sheet URLs (optional)
productURL: https://example.org/wind-sensor
dataSheetURL: https://example.org/wind-sensor/datasheet.pdf
# Link to simple, easy onboarding instructions for the device (optional).
# Please do not use this for marketing or overly technical documents like a data sheet.
onboardingGuideURL: https://www.thethingsindustries.com/docs/devices/models/windsensor

# Commercial information
resellerURLs:
- name: 'Reseller 1'
region: # valid regions are: Argentina, Australia, Brazil, Canada, China, European Union, India, Indonesia.
# Japan, Mexico, Russia, Saudi Arabia, South Africa, South Korea, Turkey, United States, United Kingdom, Other
- European Union
url: https://example.org/reseller1
- name: 'Reseller 2'
region:
- United States
- Canada
url: https://example.org/reseller2
msrp:
EUR: 90
USD: 120

# Photos
photos:
main: senseclimate.png # Image needs to have a transparent background

# Youtube or Vimeo Video (optional)
videos:
main: https://www.youtube.com/watch?v=JHzxcD2oEn8

# Regulatory compliances (optional)
compliances:
safety:
- body: IEC
norm: EN
standard: 62368-1
radioEquipment:
- body: ETSI
norm: EN
standard: 301 489-1
version: 2.2.0
- body: ETSI
norm: EN
standard: 301 489-3
version: 2.1.0

0 comments on commit f6b5404

Please sign in to comment.