Code Monkey home page Code Monkey logo

catena-sketches's Introduction

Catena-Sketches

This repository contains top-level Arduino sketches for the Catena family of LoRaWAN® technology remote sensors made by MCCI.

GitHub release GitHub commits Build Status

Picture of Catena 4450

This repository is the top-level repository for the software. In order to build, you will have to download a number of additional libraries from the MCCI Catena github page; the repositories needed vary depending on the sketch you want to build. A bash script is provided to simplify this process.

Contents:

Getting Started

If you're getting started with Catenas, please check the detailed instructions at catena4450m101_sensor/README.md.

Sketch Overview

There are two kinds of sketches here:

  • test programs (catena4450_test01, catena461x_hwtest, catena461x_test01, etc.), and
  • full sensor programs (catena4450m101_sensor1, catena4450m102_pond, catena4460_aqi, catena4460_bsec_ulp, catena4612_simple, catena4617_simple, catea4618_simple, catena4410_sensor1).

The sketches that use LoRaWAN take advantage of the MCCI arduino-lorawan library to cleanly separate the application from the network transport.

Most of these sketches also use the Catena-Arduino-Platform library to provide common services and make things a little more portable.

Full Sensor Programs

catena4450m101_sensor1

This is the application written for the Catena 4450 power monitoring node used in the Ithaca Power Project. It uses FRAM-based provisioning (so there is no need to edit code to change LoRaWAN keys or other settings).

catena4450m102_pond

This is the Tzu Chi University / Asolar Hualian research farm project sketch, upgraded for use with the Catena 4450. It uses the integrated FRAM for provisioning, auto-detects the attached sensors, and transmits data in format 0x15.

catena4450m102_waterlevel

This application is used by Auroville for monitring well water depth.

catena4460_aqi

This sketch collects and transmits air-quality information using the Bosch BME680 sensor on the MCCI Catena 4460. It transmits data in format 0x17.

catena4460_bsec_ulp

This sketch uses the official (but closed source) library from Bosch Sensortec for the BME680 sensor on the Catena 4460. It also transmits data in format 0x17.

catena4612_simple

This sketch uses the on-board sensors of the Catena 4612 (or 4610), and transmits the data to a LoRaWAN network. It doesn't support external sensors. It transmits on port 0x02, and doesn't use a format byte.

catena4617_simple

This sketch uses the on-board sensors of the Catena 4617, and transmits the data to a LoRaWAN network. It doesn't support external sensors. It transmits on port 0x03, and doesn't use a format byte.

catena4618_simple

This sketch uses the on-board sensors of the Catena 4618, and transmits the data to a LoRaWAN network. It doesn't support external sensors. It transmits on port 0x03, and doesn't use a format byte.

catena4410_sensor1

This sketch is the application written for the Tzu Chi University / Asolar Hualian research farm project. One firmware image is used for a variety of sensors. You can configure a given sensor as a general purpose device or as a specific subset, referencing back to the Atmel SAMD21 CPU's unique identifier. All provisioning is done at compile time, but the network keys and other sensitive information is placed in a special library that is outside the normal set of repositories.

The sketch transmits data in format 0x11.

Test programs

catena4410_test3

This is the primary test app used when bringing up and provisioning Catena 4410 units for use with The Things Network.

catena4410_test1, catena4410_test2

These are simpler test programs. They were rarely used after test3 was ready, but they may be useful for test of future Catena 441x variants with different sensor configurations.

catena4450_test01

This is the primary (non-LoRaWAN) test sketch for the Catena 4450.

Extras

The directory extras contains documentation and sample scripts for decoding the various formats.

Required Board-Support Packages

All board support packages are maintained by MCCI. You should add the path to the reference Json file in your Arduino preferences. See the README.md for arduino-boards for instructions.

Required Libraries

A number of libraries are required by this code. The top-level of this repository contains a Bash script git-boot.sh that can be used to download all the libraries, using a simple database stored in a file named git-repos.dat. Different sketches have different needs, and so each one has its own git-repos.dat. For an example, see catena4450m101_sensor/git-repos.dat.

Libraries for sensor work

Related Work

Boilerplate

MCCI work is released under the MIT public license. All other work from contributors (repositories forked to the MCCI Catena github page) are licensed according to the terms of those modules.

Support inquiries may be filed at https:://portal.mcci.com or as tickets on github. We are very busy, so we can't promise to help; but we'll do our best.

Commercial support is also available; contact MCCI for more information via our support portal or our web site.

Thanks, Acknowledgments, Notes

Thanks to Amy Chen of Asolar, Josh Yu, and to Tzu-Chih University for funding the Hualian Garden project.

Further thanks to Adafruit for the wonderful Feather M0 LoRa platform, to The Things Network for the LoRaWAN-based infrastructure, to The Things Network New York and TTN Ithaca for the inspiration and support, and to the myriad people who have contributed to the Arduino and LoRaWAN infrastructure.

MCCI and MCCI Catena are registered trademarks of MCCI Corporation.

LoRa is a registered trademark of Semtech Corporation.

LoRaWAN is a registered trademark of the LoRa Alliance.

All other trademarks are the property of their respective owners.

Support Open Source Hardware and Software

MCCI invests time and resources providing this open source code, please support MCCI and open-source hardware by purchasing products from MCCI, Adafruit and other open-source hardware/software vendors!

For information about MCCI's products, please visit store.mcci.com.

catena-sketches's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

catena-sketches's Issues

Add README.md for catena4410_test02.ino

Every sketch needs a README.md explaining (at a minimum):

  • what the sketch is intended to do, and when to use it
  • which Catenas are supported
  • what external hardware is required, and what external hardware is optionally supported
  • what libraries are needed
    • how to set up libraries using git-boot.sh (if using git-boot.sh)
    • how to set up libraries from the Arduino environment (if using the environment)
  • data format (pointing to extras and the appropriate docs)
  • how to provision (pointing to the general instructions)
  • how to verify that it's working

Water Depth Sensor

In the catena4450m102_waterlevel sketch, you refer to an RC601 water pressure transducer, which uses an I2C interface.

Do you have a link to this device, or a datasheet? I can't find a reference to it anywhere on the web.
I am using this bluerobotics bar02 sensor but it's quite expensive (although it is super accurate, and low power).

Always looking for alternatives!

Add README.md for catena461x_hwtest.ino

Every sketch needs a README.md explaining (at a minimum):

  • what the sketch is intended to do, and when to use it
  • which Catenas are supported
  • what external hardware is required, and what external hardware is optionally supported
  • what libraries are needed
    • how to set up libraries using git-boot.sh (if using git-boot.sh)
    • how to set up libraries from the Arduino environment (if using the environment)
  • data format (pointing to extras and the appropriate docs)
  • how to provision (pointing to the general instructions)
  • how to verify that it's working

BSEC library has been updated - Need update for catena4460_bsec_ulp.ino

Bosch has updated the library for BSEC and the latest version is v1.4.7.2.

Sketch catena4460_bsec_ulp.ino has been written based on BSEC software v1.4.6.0, so the sketch has to be updated to work with BSEC v1.4.7.2. Please find the code part need to be updated below:

bsec_virtual_sensor_t sensorList[7] =
{
BSEC_OUTPUT_RAW_TEMPERATURE,
BSEC_OUTPUT_RAW_PRESSURE,
BSEC_OUTPUT_RAW_HUMIDITY,
BSEC_OUTPUT_RAW_GAS,
BSEC_OUTPUT_IAQ_ESTIMATE,
BSEC_OUTPUT_SENSOR_HEAT_COMPENSATED_TEMPERATURE,
BSEC_OUTPUT_SENSOR_HEAT_COMPENSATED_HUMIDITY,
};

Here in the sensor list, Bosch have changed output (virtual) sensor BSEC_OUTPUT_IAQ_ESTIMATE to BSEC_OUTPUT_IAQ in their library bsec_datatypes.h under "BSEC_1.4.7.2_Generic_Release_20190122\Arduino\BSEC\src\inc". Also they have added three other output (virtual) sensors in their library:

BSEC_OUTPUT_STATIC_IAQ = 2,                             /*!< Unscaled indoor-air-quality estimate */ 
BSEC_OUTPUT_CO2_EQUIVALENT = 3,                         /*!< co2 equivalent estimate [ppm] */   
BSEC_OUTPUT_BREATH_VOC_EQUIVALENT = 4,                  /*!< breath VOC concentration estimate [ppm] */

Link for BSEC software: https://www.bosch-sensortec.com/bst/products/all_products/bsec#

Update README.md for catena4460_bsec_ulp.ino

The README.md need to be updated to conform to the documentation ukaze.

Every sketch needs a README.md explaining (at a minimum):

  • what the sketch is intended to do, and when to use it
  • which Catenas are supported
  • what external hardware is required, and what external hardware is optionally supported
  • what libraries are needed
    • how to set up libraries using git-boot.sh (if using git-boot.sh)
    • how to set up libraries from the Arduino environment (if using the environment)
  • data format (pointing to extras and the appropriate docs)
  • how to provision (pointing to the general instructions) plus any info about platform GUIDs
  • how to verify that it's working

Add README.md for catena4410_test01.ino

Every sketch needs a README.md explaining (at a minimum):

  • what the sketch is intended to do, and when to use it
  • which Catenas are supported
  • what external hardware is required, and what external hardware is optionally supported
  • what libraries are needed
    • how to set up libraries using git-boot.sh (if using git-boot.sh)
    • how to set up libraries from the Arduino environment (if using the environment)
  • data format (pointing to extras and the appropriate docs)
  • how to provision (pointing to the general instructions)
  • how to verify that it's working

Add README.md for catena4410_sensor1.ino

Every sketch needs a README.md explaining (at a minimum):

  • what the sketch is intended to do, and when to use it
  • which Catenas are supported
  • what external hardware is required, and what external hardware is optionally supported
  • what libraries are needed
    • how to set up libraries using git-boot.sh (if using git-boot.sh)
    • how to set up libraries from the Arduino environment (if using the environment)
  • data format (pointing to extras and the appropriate docs)
  • how to provision (pointing to the general instructions)
  • how to verify that it's working

Move examples to catena-arduino-platform library

See mcci-catena/Catena-Arduino-Platform#24 -- the sketches here, and the following material, need to be incorporated into the Arduino platform.

Add README.md for Catena4410_test03.ino

Every sketch needs a README.md explaining (at a minimum):

  • what the sketch is intended to do, and when to use it
  • which Catenas are supported
  • what external hardware is required, and what external hardware is optionally supported
  • what libraries are needed
    • how to set up libraries using git-boot.sh (if using git-boot.sh)
    • how to set up libraries from the Arduino environment (if using the environment)
  • data format (pointing to extras and the appropriate docs)
  • how to provision (pointing to the general instructions) plus any info about platform GUIDs
  • how to verify that it's working

Refactor catena4450m101_sensor README.md to put central info centrally

Per the documentation ukaze, we need to pull the info out of here that is not specific to the 4450, and put it someplace central. Then this readme will follow the pattern.

Every sketch needs a README.md explaining (at a minimum):

  • what the sketch is intended to do, and when to use it
  • which Catenas are supported
  • what external hardware is required, and what external hardware is optionally supported
  • what libraries are needed
    • how to set up libraries using git-boot.sh (if using git-boot.sh)
    • how to set up libraries from the Arduino environment (if using the environment)
  • data format (pointing to extras and the appropriate docs)
  • how to provision (pointing to the general instructions) plus any info about platform GUIDs
  • how to verify that it's working

Compilation failures with 1.8.8

Arduino: 1.8.8 (Mac OS X), Board: "MCCI Catena 4450, North America 915 MHz"

catena4450m101_sensor:85:45: error: 'void txFailedDoneCb(osjob_t*)' was declared 'extern' and later 'static' [-fpermissive]
 static void txFailedDoneCb(osjob_t *pSendJob);
                                             ^
catena4450m101_sensor:599:6: error: previous declaration of 'void txFailedDoneCb(osjob_t*)' [-fpermissive]
 
      ^
catena4450m101_sensor:87:40: error: 'void sendBufferDoneCb(void*, bool)' was declared 'extern' and later 'static' [-fpermissive]
 static Arduino_LoRaWAN::SendBufferCbFn sendBufferDoneCb;
                                        ^
catena4450m101_sensor:574:6: error: previous declaration of 'void sendBufferDoneCb(void*, bool)' [-fpermissive]
 
      ^
exit status 1
'void txFailedDoneCb(osjob_t*)' was declared 'extern' and later 'static' [-fpermissive]

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

Sending IR data rather than white-light data

This is set up here:

gSi1133.configure(0, CATENA_SI1133_MODE_SmallIR);
gSi1133.configure(1, CATENA_SI1133_MODE_White);
gSi1133.configure(2, CATENA_SI1133_MODE_UV);

This means that the first entry is "small IR". We don't want small IR as the LUX reading, we want "white" as the Lux reading.

And, in fact, this "lux sensor" is not a lux sensor, it is a W/m^2 sensor. Lux needs to be compensated for frequency. It's possible that the SI1133 does this, but it's not obvious from the datasheet. See http://www.physlink.com/Education/AskExperts/ae409.cfm for more info.

First change is to transmit element [1] rather than [0]. Second is to possibly linearize, and third is to possibly change to a proper Lux sensor .

In any case, it is a big error to transmit this with the same data format as Rohm light output, because the engineering units are not commensurate. See #39.

Update Catena4460_aqi README.md to follow pattern

Update the README.md to add required info. The info that's there is mostly fine.

Every sketch needs a README.md explaining (at a minimum):

  • what the sketch is intended to do, and when to use it
  • which Catenas are supported
  • what external hardware is required, and what external hardware is optionally supported
  • what libraries are needed
    • how to set up libraries using git-boot.sh (if using git-boot.sh)
    • how to set up libraries from the Arduino environment (if using the environment)
  • data format (pointing to extras and the appropriate docs)
  • how to provision (pointing to the general instructions) plus any info about platform GUIDs
  • how to verify that it's working

Add README.md for catena4551_test01

Every sketch needs a README.md explaining (at a minimum):

  • what the sketch is intended to do, and when to use it
  • which Catenas are supported
  • what external hardware is required, and what external hardware is optionally supported
  • what libraries are needed
    • how to set up libraries using git-boot.sh (if using git-boot.sh)
    • how to set up libraries from the Arduino environment (if using the environment)
  • data format (pointing to extras and the appropriate docs)
  • how to provision (pointing to the general instructions) plus any info about platform GUIDs
  • how to verify that it's working

Add README.md for catena4420_test01.ino

Every sketch needs a README.md explaining (at a minimum):

  • what the sketch is intended to do, and when to use it
  • which Catenas are supported
  • what external hardware is required, and what external hardware is optionally supported
  • what libraries are needed
    • how to set up libraries using git-boot.sh (if using git-boot.sh)
    • how to set up libraries from the Arduino environment (if using the environment)
  • data format (pointing to extras and the appropriate docs)
  • how to provision (pointing to the general instructions) plus any info about platform GUIDs
  • how to verify that it's working

Node-red decoder for 0x15 is incomplete.

The node-red decoder for format 0x15 is incomplete, and if cut/paste naively will simply not work.

Although each use is different, the example should be correct.

Serial.dtr

You are using this non-standard function in your code, but it's NOT in your libraries??? Nor is it documented in your getting started pages...

where can it be found?? is it from Paul's Stoffregen Teensyduino code base??

Thanks

Need troubleshooting guide

Need a guide that guides the developer if things aren't working:

Specifically for the Catena 4410 or Adafruit Feather M0 LoRa:

  1. Check the presence of the wire from D6 to DIO1 -- otherwise joins will never complete, and the TX_DATAs that are printed during join will be rare or non-existent.
  2. Check that the provisioning data is in catena-lorawan-provisioning/gk_lorawan_keys.project.cpp.
  3. Check that the mapping from CPU unique ID is present in MCCI-Catena4410-Arduino-Library/src/lib/gk_WellKnownCpuBindings.cpp
  4. Turn on unattended mode in MCCI-Catena4410-Arduino-Library/src/lib/gk_WellKnownCpuBindings.cpp if you're going to run from battery, as it's much easier to debug.

Compile error: gk_lorawan_keys.project.cpp: No such file or directory

While build the Catena4450m101_Sensor faced some minor issues. Listed it below.

  1. gk provision key not found
    Issue :

Arduino: 1.8.2 (Windows 7), Board: "Adafruit Feather M0"

C:\Users\velmurugan\Documents\Arduino\libraries\Catena4410-Arduino-Library\src\lib\Catena4410_gk_lorawan_keys.cpp:120:90: fatal error: ../../../catena-lorawan-provisioning/extra/gk_lorawan_keys.project.cpp: No such file or directory

#include "../../../catena-lorawan-provisioning/extra/gk_lorawan_keys.project.cpp"
^
compilation terminated.`

My changes:
Looks like these are needed for 4410 not for 4450.
So, I Remove/rename Catena4420_gk_lorawan_keys.cpp and Catena4410_gk_lorawan_keys.cpp.
To prevent it from compiling. (I know, There is some better way to do that).

Problems found in setting up Catena 4450

Russ Nelson had the following suggestions after setting up a 4450 recently.

  • Split out the TTN configuration information into a separate page. It's too long for a "Note".
  • Also add the note about "If you're in the US, use the us-west handler".
  • Changing registration should be a note.
  • In place of Changing registration, you should explain what the various blinks mean, and point people to the console.
  • Tell them to add the Data Storage Integration, and the Payload Decoder.
  • Then tell them to look at the Devices/Data page to see the data coming from their 4450, and that they should expect to see Activation once a minute until it succeeds, and then sensor data every six minutes

catena4450m101_sensor uses Adafruit_TSL2561_U.h

Even though the Catena4450 uses a Rohm Lux sensor, the code still #includes the header file for the TSL2561 Lux sensor. This is a problem because git-boot.sh doesn't download the relevant library.

Please delete the reference.

Need provisioning step-by-step guide

Provisioning is done in one of two ways:

Static (hard-wired in code) Provisioning

In this case, the programmer decides once and for all how a given CPU is going to be used. This is efficient but inflexible, and doesn't scale well, because all CPUs must be mentioned in a table. Still, for small projects this may be appropriate.

  1. Determine the SAMD21 CPUID using a test program.
  2. add the CPUID to SysEUI mapping in MCCI-Catena4410-Arduino-Library/src/lib/gk_WellKnownCpuBindings.cpp. This also defines the base platform to be used for this CPU.
  3. For LoRaWAN provisioning, create the keys (on The Things Network, use the console or use the ttnctl command.
  4. Copy the device-specific LoRaWAN keys to catena-lorawan-provisioning/extra/gk_lorawan_keys.project.cpp.

Dynamic (FRAM-based) Provisioining

If your platform contains a compatible FRAM chip (see, for example, the MCCI Catena 4450), you can dynamically provision your device using USB commands. There are two parts: setting up the FRAM so that the platform is correct, and setting up LoRaWAN.

Entering USB commands

USB provisioning commands are entered in the box at the top of the Arduino terminal. They can also be entered using any standard terminal program (e.g., TeraTerm). Commands are not echoed. Command lines may be terminated with carriage return or line feed.

The command parser will reply with one or more lines of text, separated by newline (line-feed) characters. The last line will either be "OK" (indicating success) or ? followed by an error code (for failure). If you get no response, you should assume that the command has not been executed.

The echo command can be used to check that the command parser is functioning. If you enter the command echo hello world, the program should display:

hello world
OK

Note: your terminal program might display something like:

hello world
                 OK

In this case, you should adjust the terminal program settings so that it displays "linefeed" as "cr-lf" or "newline".

Setting up the platform

If you're using a Feather M0 LoRa with added FRAM, use the sketch Catena4450m101_sensor1 to get started. Download it, and boot. The debug print will complain about not being configured. Don't worry yet.

  1. Determine the 64-bit SysEUI that you will use. If you don't have an IEEE OUI, you can generate a valid random SysEUI using https://github.com/things-nyc/random-eui64.
  2. Enter the following command in the Arduino terminal (using the input box at the top of the terminal screen).
    system configure syseui yoursyseui
    (Change yoursyseui to the SysEUI you selected in step 1.)
  3. If you want your program to wait for USB before proceeding, say
    system configure operatingflags 0
    Otherwise, if you want your program to boot up without waiting for USB, say
    system configure operatingflags 1
  4. Determine the platform GUID that best describes your system hardware configuration. For the Catena 4450 M101, use:
    system configure platformguid 82BF2661-70CB-45AE-B620-CAF695478BC1
    For the Catena 4450 M102, use
    system configure platformguid 2281255E-AC5C-48CB-A263-9DC890D16638

Once the platform is set up, you don't have to change it unless you complete reset the FRAM contents.

Provisioning for LoRaWAN and The Things Network

This provisioning should be repeated whenever the network keys change. Both OTAA and ABP configuration are possible, however, we strongly recommend OTAA, and we leave application of ABP to the interested user.

  1. Use the procedure defined by your LoRaWAN network to assign a DevEUI, AppEUI and AppKey. MCCI recommends setting DevEUI the same as your SysEUI, but this is not mandatory; your network provider may require that you follow a different procedure. Also, if you're replacing a broken device, it may make sense to reuse the old DevEUI.
  2. Load the DevEUI using the following command:
    lorawan configure deveui thisDevEUI
    (Change thisDevEUI to the value determined in step 1.)
  3. Load the DevEUI using the following command:
    lorawan configure appeui myAppEUI
    (Change myAppEUI to the value determined in step 1.)
  4. Load the AppKey using the following command:
    lorawan configure appkey thisAppKey
    (Change thisAppKey to the value determined in step 1.) Very important: don't use the same AppKey value for multiple devices, or you'll compromise the security of your device!
  5. Set OTAA mode:
    lorawan configure join 1
  6. Restart the Arduino. (Unfortunately, this has to be done manually.)

Reprovisioning

Reprovisioning is the same as provisioning, but you should add teh following commands to make sure all prior state is reset:

lorawan configure nwkskey 0
lorawan configure appskey 0
lorawan configure devaddr 0
lorawan configure netid 0

Then continue with provisioning as given above.

`adjust_millis_forward` function not declared.

From @svelmurugan92:

adjust_millis_forward function not declared.
Issue :

Arduino: 1.8.2 (Windows 7), Board: "Adafruit Feather M0"

E:\ThingsNetwork\Things-Network-Chennai\source\MCCI Catena\Catena4410-Sketches-master (1)\Catena4410-Sketches-master\catena4450m101_sensor\catena4450m101_sensor.ino: In function 'void settleDoneCb(osjob_t*)':

catena4450m101_sensor:551: error: 'adjust_millis_forward' was not declared in this scope

adjust_millis_forward(CATCFG_T_INTERVAL * 1000);
^
exit status 1
adjust_millis_forward' was not declared in this scope

My changes:
I think, Code not able to link proper delay.h file.
So, I copied the adjust_millis_forward function definition before the function call.
I took adjust_millis_forward function definition from file C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\delay.c

Please align m101-sensor with m101-pond

In doing Travis, I discovered that catena4450m101_sensor won't build with the stm32 BSP. This is because we haven't fixed the code to be portable. We have fixed the code in catena4450m101_pond. Can we please make the corresponding changes in _sensor, so that we can use the same apps on the newer boards? I think it's probably pretty easy. Once you do that, when I commit changes for #47, everything will build.

catena4612_simple dies on tx error

The Catena 4612_simple sketch interprets TX error as "not provisioned", and wedges itself. This is not correct; it should check provisioning status, and only stop the LMIC if the LMIC thinks it's not provisioned.

Document how to set up sleep mode for the SAMD BSP for Adafruit

It's a bit tricky to update the Adafruit BSP with the required sleep-mode changes. Please document.

  1. Need the locations on Windows, Mac, Linux.
  2. Need the instructions:
    % cd {somewhere}/arduino15/packages/adafruit/hardware/samd/1.0.13
    % git remote add mcci https://github.com/mcci-catena/ArduinoCore-samd.git
    % git pull mcci

Add README.md to catena4450m102_waterlevel.ino

Every sketch needs a README.md explaining (at a minimum):

  • what the sketch is intended to do, and when to use it
  • which Catenas are supported
  • what external hardware is required, and what external hardware is optionally supported
  • what libraries are needed
    • how to set up libraries using git-boot.sh (if using git-boot.sh)
    • how to set up libraries from the Arduino environment (if using the environment)
  • data format (pointing to extras and the appropriate docs)
  • how to provision (pointing to the general instructions) plus any info about platform GUIDs
  • how to verify that it's working

Add downlink ability to set sample rate

A downlink message on port 1 shall set the sample rate.

The data format is:

bytes 0..1: uint16_t, big-endian. This sets the reporting rate, in seconds.

byte 2 (optional): uint8_t: this sets how long the rate setting should persist, in reports. If not present, the default is used (15 reports). If present and zero, the setting persists until the next boot or until a new setting is downloaded. If present and non-zero, the setting persists for that number of reports.

Add README.md for catena4551_test02.ino

Every sketch needs a README.md explaining (at a minimum):

  • what the sketch is intended to do, and when to use it
  • which Catenas are supported
  • what external hardware is required, and what external hardware is optionally supported
  • what libraries are needed
    • how to set up libraries using git-boot.sh (if using git-boot.sh)
    • how to set up libraries from the Arduino environment (if using the environment)
  • data format (pointing to extras and the appropriate docs)
  • how to provision (pointing to the general instructions) plus any info about platform GUIDs
  • how to verify that it's working

Add README.md to catena4450m102_pond.ino

Every sketch needs a README.md explaining (at a minimum):

  • what the sketch is intended to do, and when to use it
  • which Catenas are supported
  • what external hardware is required, and what external hardware is optionally supported
  • what libraries are needed
    • how to set up libraries using git-boot.sh (if using git-boot.sh)
    • how to set up libraries from the Arduino environment (if using the environment)
  • data format (pointing to extras and the appropriate docs)
  • how to provision (pointing to the general instructions) plus any info about platform GUIDs
  • how to verify that it's working

Add README.md for Catena4450_test01.ino

Every sketch needs a README.md explaining (at a minimum):

  • what the sketch is intended to do, and when to use it
  • which Catenas are supported
  • what external hardware is required, and what external hardware is optionally supported
  • what libraries are needed
    • how to set up libraries using git-boot.sh (if using git-boot.sh)
    • how to set up libraries from the Arduino environment (if using the environment)
  • data format (pointing to extras and the appropriate docs)
  • how to provision (pointing to the general instructions) plus any info about platform GUIDs
  • how to verify that it's working

Need explanation of how to set up LoRaWAN keys

The instructions currently don't mention that you need to have an Arduino library named catena-lorawan-provisioning, with files catena-lorawan-provisioning/gk_lorawan_keys.project.cpp and catena-lorawan-provisioning/gk_lorawan_keys.4420.cpp. Only one file is used, depending on whether your project uses class object derived from Catena4410 or from Catena4420. There are two problems:

  1. There's no guidance on setting up these files
  2. Only one file should be needed, but both are currently required (due to the Arduino environment's "compile everything" philosophy). The one that isn't required for a given project should be empty.

Consider providing a repo that can be downloaded and configured using a bash script.

Add README.md for Catena461x_test01.ino

Every sketch needs a README.md explaining (at a minimum):

  • what the sketch is intended to do, and when to use it
  • which Catenas are supported
  • what external hardware is required, and what external hardware is optionally supported
  • what libraries are needed
    • how to set up libraries using git-boot.sh (if using git-boot.sh)
    • how to set up libraries from the Arduino environment (if using the environment)
  • data format (pointing to extras and the appropriate docs)
  • how to provision (pointing to the general instructions) plus any info about platform GUIDs
  • how to verify that it's working

`git-boot.sh` doesn't detect conflicts

git-boot.sh silently proceeds if any library in the Arduino/libraries folder conflicts with a library specified in git-repos.dat. It will appear to succeed, but it will leave the old library unchanged. This causes no end of user confusion.

It's not clear what the tool should do, other than failing. The Arduino environment doesn't support side-by-side installs of different library versions for different sketches. Perhaps the suggestion would be similar to what I tell people when helping them get started: move any conflicting library to a new directory Arduino/libraries.hide. It feels like there's something too-clever-by-half that we could do with symbolic links on Linux and macOS. But that's still not a first-class Windows feature.

git-boot.sh should support runtime selection of git@ and https: methods

git-boot.sh expects the input file to give fully-qualified strings that are to be used as "urls" for git clone. However, sometimes one wants to use git/ssh access (for development) and other times one wants to use https (when just installing read-only).

To fix this:

  • allow lines in git-repos.dat to have two fields. In this case, the first field is the name of the server (github.com, gitlab.com, etc.); the second field is the path to the repository.
  • add a -g option to select use of git/ssh (as opposed to the default https) access method for repos specified using "two-part" form.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.