Skip to content

Commit

Permalink
Merge pull request #7 from waggle-sensor/test
Browse files Browse the repository at this point in the history
added back the device removed in Waggle
  • Loading branch information
FranciscoLozCoding authored Aug 31, 2024
2 parents acfd25e + d3136f3 commit 4de6b53
Show file tree
Hide file tree
Showing 7 changed files with 371 additions and 0 deletions.
1 change: 1 addition & 0 deletions vendor/waggle/index.yaml
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
endDevices:
# Unique identifier of the end device (lowercase, alphanumeric with dashes, max 36 characters)
- windsensor # look in windsensor.yaml for the end device definition
- esp32-paxcounter # look in esp32-paxcounter.yaml for the end device definition
66 changes: 66 additions & 0 deletions vendor/waggle/windsensor-codec.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
# Uplink decoder decodes binary data uplink into a JSON object (optional)
# For documentation on writing encoders and decoders, see: https://www.thethingsindustries.com/docs/integrations/payload-formatters/javascript/
uplinkDecoder:
fileName: windsensor.js
# Examples (optional)
examples:
- description: 32 knots from the North
input:
fPort: 1
bytes: [0, 32]
output:
data:
direction: 'N'
speed: 32
# Normalized output, uses the normalizeUplink function (optional)
normalizedOutput:
data:
- wind:
speed: 16.4608
direction: 0
- description: 42 knots from the East
input:
fPort: 1
bytes: [1, 42]
output:
data:
direction: 'E'
speed: 42
- description: Unknown FPort
input:
fPort: 42
bytes: [1, 42]
output:
errors:
- unknown FPort

# Downlink encoder encodes JSON object into a binary data downlink (optional)
downlinkEncoder:
fileName: windsensor.js
examples:
- description: Turn green
input:
data:
led: green
output:
bytes: [1]
fPort: 2
- description: Invalid color
input:
data:
led: blue
output:
errors:
- invalid LED color

# Downlink decoder decodes the encoded downlink message (optional, must be symmetric with downlinkEncoder)
downlinkDecoder:
fileName: windsensor.js
examples:
- description: Turn green
input:
fPort: 2
bytes: [1]
output:
data:
led: green
Binary file added vendor/waggle/windsensor-package.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
52 changes: 52 additions & 0 deletions vendor/waggle/windsensor-profile.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# Vendor profile ID, can be freely issued by the vendor
# This vendor profile ID is also used on the QR code for LoRaWAN devices, see
# https://lora-alliance.org/sites/default/files/2020-10/LoRa_Alliance_Vendor_ID_for_QR_Code.pdf
vendorProfileID: 0

# 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
Binary file added vendor/waggle/windsensor.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
68 changes: 68 additions & 0 deletions vendor/waggle/windsensor.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: {
direction: directions[input.bytes[0]],
speed: 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'],
};
}
}
184 changes: 184 additions & 0 deletions vendor/waggle/windsensor.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,184 @@
name: Wind Sensor
description: Wind Sensor with controllable LED

# 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: waggle
# Identifier of the profile (lowercase, alphanumeric with dashes, max 36 characters)
id: windsensor-profile
lorawanCertified: true
codec: windsensor-codec
US902-928:
id: windsensor-profile
lorawanCertified: true
codec: windsensor-codec

- # You can add more firmware versions and use different profiles per version
version: '2.0'
numeric: 2
hardwareVersions:
- '1.0-rev-A'
profiles:
EU863-870:
id: windsensor-profile
lorawanCertified: true
codec: windsensor-codec
US902-928:
id: windsensor-profile
lorawanCertified: true
codec: windsensor-codec
AS923:
id: windsensor-profile
codec: windsensor-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, dissolved oxygen, distance, dust, energy, gps, gyroscope, h2s, humidity, iaq, level, light,
# lightning, link, magnetometer, moisture, motion, no, no2, o3, particulate matter, ph, pir, pm2.5, pm10, potentiometer,
# power, precipitation, pressure, proximity, pulse count, pulse frequency, radar, rainfall, rssi, smart valve, snr, so2,
# solar radiation, sound, strain, surface temperature, temperature, tilt, time, tvoc, uv, vapor pressure, velocity,
# vibration, voltage, water potential, water, weight, wifi ssid, wind direction, wind speed.
sensors:
- wind direction
- wind speed

# 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.
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, 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), 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

# Commercial information
resellerURLs:
- name: 'Reseller 1'
region:
- 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: windsensor.jpg
other:
- windsensor-package.jpg

# 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 4de6b53

Please sign in to comment.