-
Notifications
You must be signed in to change notification settings - Fork 389
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Co-authored-by: Jaime Trinidad <[email protected]>
- Loading branch information
1 parent
82e9e6e
commit f6b5404
Showing
8 changed files
with
362 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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'], | ||
// }; | ||
// } | ||
// } |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |