Difference between revisions of "Sensor-data-bridge"

From RevSpace
Jump to navigation Jump to search
(Created page with "== What is this == This is a Java application that sends airborne particulate matter measurement data from TheThingsNetwork and forwards it to sensor.community (formerly Luftd...")
 
Line 14: Line 14:
 
To compile the software:
 
To compile the software:
 
* clone the software from my github archive
 
* clone the software from my github archive
...
+
  git clone https://github.com/bertrik/LoraLuftdatenForwarder.git
 
* enter the LoraLuftdatenForwarder/gradle directory
 
* enter the LoraLuftdatenForwarder/gradle directory
 
cd LoraLuftdatenForwarder/gradle
 
cd LoraLuftdatenForwarder/gradle
 
* run the gradle script to build the software
 
* run the gradle script to build the software
 
./gradlew assemble
 
./gradlew assemble
 +
* the application zip is now available in LoraLuftdatenForwarder/LoraLuftdatenForwarder/build/distributions
 +
 +
To update to the latest version:
 +
* Update software from github archive:
 +
  git pull
 +
* perform the steps above again
  
 
== Installation ==
 
== Installation ==
Line 26: Line 32:
 
   tar xvf code/LoraLuftdatenForwarder/LoraLuftdatenForwarder/build/distributions/LoraLuftdatenForwarder.tar
 
   tar xvf code/LoraLuftdatenForwarder/LoraLuftdatenForwarder/build/distributions/LoraLuftdatenForwarder.tar
  
 +
== Configuration ==
 +
 +
=== Device side ===
 +
The particulate matter measurement device needs to send data in the Cayenne format.
 +
I used the following conventions:
 +
* PM10 is encoded as analog value on channel 1
 +
* PM2.5 is encoded as analog value on channel 2
 +
* PM11.0 is encoded as analog value on channel 0 (optional)
 +
* Temperature is encoded using standard Cayenne encoding (optional)
 +
* Humidity is encoded using standard Cayenne encoding (optional)
 +
* Barometric pressure is encoded using standard Cayenne encoding (optional)
 +
 +
=== TheThingsNetwork ===
 +
You need to define an 'application' on TheTheThingsNetwork.
  
 +
* Go the TTN console: https://console.cloud.thethings.network/ and log in
 +
* You need an 'application', create a new one, or use an existing one
 +
* Within the application, ou need a 'device', create a new one, or use an existing one:
 +
** OTAA
 +
** Use the application keys as specified in my [[https://revspace.nl/LoraWanDustSensor]] page
 +
** Enter the device EUI as displayed on the display
 +
* You need an API key
 +
** Create this on the TTN console, for now just create a key that grants all rights
 +
** NOTE: you have only one chance to copy this key somewhere, so copy/paste it locally to a text file or something
  
 +
=== This application ===
 +
To configure the application:
 +
* Start the application without a configuration file, this will create a default template, stop the application again
 +
  cd LoraLuftdatenForwarder
 +
  bin/LoraLuftdatenForwarder
 +
  (ctrl-C)
 +
* Edit the loraluftdatenforwarder.yaml file
  
== Configuration ==
+
=== Sensor.community ===
 +
TODO
 +
* Go to https://devices.sensor.community/ and log in
 +
* Register a node with id 'TTN-<device-EUI-as-shown-on-display>'
 +
* Register it with the proper configuration, e.g. SDS011 with BME280
 +
 
 +
=== Opensensemap ===
 +
TODO
 +
* Create a node with the proper configuration
 +
* Copy the opensensenmap 'box id'
 +
* Add an attribute in the TTN console:
 +
** Go to the TTN console, General settings of the device
 +
** Add attribute, name = 'opensense-id', value = box id that you just copied
 +
* The boxid should be picked up automatically by the forwarder, within an hour

Revision as of 12:07, 7 March 2021

What is this

This is a Java application that sends airborne particulate matter measurement data from TheThingsNetwork and forwards it to sensor.community (formerly Luftdaten).

It is used in combination with my LoraWanDustSensor: the sensor sends measurement data to TheThingsNetwork, this application picks up the data from TheThingsNetwork and forwards it to sensor.community and to opensensemap.org.

Requirements

You need the following:

  • a server that is always on and connected to the internet, can be Linux or Windows
  • a Java installation (JDK to compile), at least version 8
  • some configuration on TheThingsNetwork side
  • some configuration of my application (YAML file)

Compilation

To compile the software:

  • clone the software from my github archive
 git clone https://github.com/bertrik/LoraLuftdatenForwarder.git
  • enter the LoraLuftdatenForwarder/gradle directory

cd LoraLuftdatenForwarder/gradle

  • run the gradle script to build the software

./gradlew assemble

  • the application zip is now available in LoraLuftdatenForwarder/LoraLuftdatenForwarder/build/distributions

To update to the latest version:

  • Update software from github archive:
 git pull
  • perform the steps above again

Installation

Unzip the distribution file somewhere on your system. I put it in my home directory, for example

 cd
 tar xvf code/LoraLuftdatenForwarder/LoraLuftdatenForwarder/build/distributions/LoraLuftdatenForwarder.tar

Configuration

Device side

The particulate matter measurement device needs to send data in the Cayenne format. I used the following conventions:

  • PM10 is encoded as analog value on channel 1
  • PM2.5 is encoded as analog value on channel 2
  • PM11.0 is encoded as analog value on channel 0 (optional)
  • Temperature is encoded using standard Cayenne encoding (optional)
  • Humidity is encoded using standard Cayenne encoding (optional)
  • Barometric pressure is encoded using standard Cayenne encoding (optional)

TheThingsNetwork

You need to define an 'application' on TheTheThingsNetwork.

  • Go the TTN console: https://console.cloud.thethings.network/ and log in
  • You need an 'application', create a new one, or use an existing one
  • Within the application, ou need a 'device', create a new one, or use an existing one:
    • OTAA
    • Use the application keys as specified in my [[1]] page
    • Enter the device EUI as displayed on the display
  • You need an API key
    • Create this on the TTN console, for now just create a key that grants all rights
    • NOTE: you have only one chance to copy this key somewhere, so copy/paste it locally to a text file or something

This application

To configure the application:

  • Start the application without a configuration file, this will create a default template, stop the application again
 cd LoraLuftdatenForwarder
 bin/LoraLuftdatenForwarder
 (ctrl-C)
  • Edit the loraluftdatenforwarder.yaml file

Sensor.community

TODO

  • Go to https://devices.sensor.community/ and log in
  • Register a node with id 'TTN-<device-EUI-as-shown-on-display>'
  • Register it with the proper configuration, e.g. SDS011 with BME280

Opensensemap

TODO

  • Create a node with the proper configuration
  • Copy the opensensenmap 'box id'
  • Add an attribute in the TTN console:
    • Go to the TTN console, General settings of the device
    • Add attribute, name = 'opensense-id', value = box id that you just copied
  • The boxid should be picked up automatically by the forwarder, within an hour