Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add vendor AccuWatch and Battery Voltage Sensor device #823

Merged
merged 4 commits into from
Sep 20, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
34 changes: 34 additions & 0 deletions vendor/accuwatch/3chbatteryvoltagesensor-codec.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# 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: 3chbatteryvoltagesensor.js
# # 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
47 changes: 47 additions & 0 deletions vendor/accuwatch/3chbatteryvoltagesensor-profile.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
41 changes: 41 additions & 0 deletions vendor/accuwatch/3chbatteryvoltagesensor.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
function decodeUplink(input) {
// Helper function to convert bytes to float
function bytesToFloat(bytes) {
var bits = (bytes[3] << 24) | (bytes[2] << 16) | (bytes[1] << 8) | bytes[0];
var sign = (bits & 0x80000000) ? -1 : 1;
var exponent = ((bits >> 23) & 0xFF) - 127;
var significand = (bits & ~(-1 << 23));

if (exponent === 128)
return sign * ((significand) ? NaN : Infinity);

if (exponent === -127) {
if (significand === 0) return sign * 0.0;
exponent = -126;
significand /= (1 << 22);
} else significand = (significand | (1 << 23)) / (1 << 23);

return sign * significand * Math.pow(2, exponent);
}

// Decode each float from the 12-byte payload
var sensor1Voltage = bytesToFloat(input.bytes.slice(0, 4));
var sensor2Voltage = bytesToFloat(input.bytes.slice(4, 8));
var sensor3Voltage = bytesToFloat(input.bytes.slice(8, 12));

// Round the float values to 2 decimal places
sensor1Voltage = Math.round(sensor1Voltage * 100) / 100;
sensor2Voltage = Math.round(sensor2Voltage * 100) / 100;
sensor3Voltage = Math.round(sensor3Voltage * 100) / 100;

// Return decoded values
return {
data: {
sensor1Voltage: sensor1Voltage.toFixed(2),
sensor2Voltage: sensor2Voltage.toFixed(2),
sensor3Voltage: sensor3Voltage.toFixed(2)
},
warnings: [],
errors: []
};
}
Binary file added vendor/accuwatch/3chbatteryvoltagesensor.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
166 changes: 166 additions & 0 deletions vendor/accuwatch/3chbatteryvoltagesensor.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,166 @@
name: LoRaWAN Voltage Sensor # Device name can not contain the vendor name
description: 3 Channel Battery Volrage Sensor # Description of the device

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

# Type of device (optional)
# Valid values are: devkit, module, cots
deviceType: cots

# 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:
- voltage

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

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

# Dimensions in mm (optional)
# Use width, height, length and/or diameter
dimensions:
width: 65
length: 115
height: 40

# Weight in grams (optional)
weight: 190

# 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: IP67

# 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://accuwatch.nl/LoRaWAN-voltage-sensor
# dataSheetURL: https://accuwatch.nl/LoRaWAN-voltage-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, Other
# - European Union
# url: https://accuwatch.nl/reseller1
# - name: 'Reseller 2'
# region:
# - United States
# - Canada
# url: https://accuwatch.nl/reseller2
# msrp:
# EUR: 90
# USD: 120

# Photos
photos:
main: 3chbatteryvoltagesensor.png # Image needs to have a transparent background
other:
- 3chbatteryvoltagesensor-1.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
Binary file added vendor/accuwatch/accuwatch.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
17 changes: 17 additions & 0 deletions vendor/accuwatch/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)
- 3chbatteryvoltagesensor # look in 3chbatteryvoltagesensor.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: '3chbatteryvoltagesensor'
firmwareVersion: '1.0'
hardwareVersion: '1.0'
region: 'EU863-870'
Binary file added vendor/accuwatch/logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 6 additions & 0 deletions vendor/index.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2088,3 +2088,9 @@ vendors:
social:
facebook: https://www.facebook.com/jooby.eu
github: jooby-dev

- id: accuwatch
name: Accuwatch
description: Accuwatch is a company that provides a range of IoT solutions for various industries.
logo: accuwatch.png
website: https://accuwatch.nl/
Loading