diff --git a/vendor/index.yaml b/vendor/index.yaml index d7bace61dc..2274f04c70 100644 --- a/vendor/index.yaml +++ b/vendor/index.yaml @@ -2118,3 +2118,6 @@ vendors: facebook: https://www.facebook.com/yobiiq twitter: yobiiq github: Yobiiq-BV + + - id: southerniot + name: Southern IoT diff --git a/vendor/southerniot/index.yaml b/vendor/southerniot/index.yaml new file mode 100644 index 0000000000..bc45e93bf3 --- /dev/null +++ b/vendor/southerniot/index.yaml @@ -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' diff --git a/vendor/southerniot/senseclimate-codec.yaml b/vendor/southerniot/senseclimate-codec.yaml new file mode 100644 index 0000000000..d64c51da49 --- /dev/null +++ b/vendor/southerniot/senseclimate-codec.yaml @@ -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 diff --git a/vendor/southerniot/senseclimate-profile-868.yaml b/vendor/southerniot/senseclimate-profile-868.yaml new file mode 100644 index 0000000000..e6cbc7fc49 --- /dev/null +++ b/vendor/southerniot/senseclimate-profile-868.yaml @@ -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 diff --git a/vendor/southerniot/senseclimate-profile-915.yaml b/vendor/southerniot/senseclimate-profile-915.yaml new file mode 100644 index 0000000000..a225b412eb --- /dev/null +++ b/vendor/southerniot/senseclimate-profile-915.yaml @@ -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 diff --git a/vendor/southerniot/senseclimate.js b/vendor/southerniot/senseclimate.js new file mode 100644 index 0000000000..6a31efd38c --- /dev/null +++ b/vendor/southerniot/senseclimate.js @@ -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'], +// }; +// } +// } diff --git a/vendor/southerniot/senseclimate.png b/vendor/southerniot/senseclimate.png new file mode 100644 index 0000000000..e4d2910cdf Binary files /dev/null and b/vendor/southerniot/senseclimate.png differ diff --git a/vendor/southerniot/senseclimate.yaml b/vendor/southerniot/senseclimate.yaml new file mode 100644 index 0000000000..b19a8d0332 --- /dev/null +++ b/vendor/southerniot/senseclimate.yaml @@ -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