Arduino sketch templates used by the openSenseMap-api
See CHANGELOG.md
Install via npm install --save @sensebox/sketch-templater
or yarn add @sensebox/sketch-templater
const Sketcher = require('@sensebox/sketch-templater');
const mySketcher = new Sketcher('<your api post domain>');
// generate Sketch
const mySketch = mySketcher.generateSketch(box);
const mySketchBase64 = mySketcher.generateSketch(box, { encoding: 'base64' });
To add new templates, just create a new .tpl
file in the templates
directory. A template consists of two parts. The first line contains a JSON object for configuration. The second line until the end is used as the template text.
Specify a single model:
{ "model": "homeEthernet" }
Specify multiple models:
{ "models": ["homeWifi", "homeWifiFeinstaub"] }
The templater uses special transformers to process the templates. The transformers are applied through searching for @@SUB_TEMPLATE_KEY@@
occurrences in the template files. Each replacement starts and ends with a double @
. To specify a transformer, append a pipe (|
) and the transformer name. When no transformer is specified, it just returns the input variable. For adding new template transformers, see Adding Transformers.
As of writing this, the following replacements can be made:
Template text | Replacement |
---|---|
@@SENSEBOX_ID@@ |
the senseBox ID |
@@SENSOR_IDS@@ |
sensor IDs |
@@NUM_SENSORS@@ |
the number of sensors |
@@INGRESS_DOMAIN@@ |
the domain of your ingress server |
Additionally, the following transformers are implemented:
Transformer name | Description |
---|---|
as-is |
Do nothing. |
toDefine |
Transform an array of sensors to multiple #define statements. |
toProgmem |
Transform an array of sensors to multiple const char xxSENSOR_ID[] PROGMEM = "<id>"; statements. |
In order to add a new transformer, just add a function in src/transformers.js
to the module.exports
. The function should return a string.
Add your additional replacements in src/index.js
in the method _cloneBox
to the second parameter of the Object.assign
call.