mirror of https://github.com/arendst/Tasmota.git
Initial version.
parent
ba81423810
commit
f45a23927f
|
@ -0,0 +1,61 @@
|
||||||
|
# Sensor API
|
||||||
|
|
||||||
|
This wiki page is an attempt to document the sensor API for sensor driver development.
|
||||||
|
|
||||||
|
## File structure
|
||||||
|
Sensor libraries are located in the `lib/` directory. Sensor drivers are located in the `sonoff/` directory. The filename of the sensor driver is `xsns_<driver_ID>_<driver_name>.ino`, e.g. `xsns_05_ds18b20.ino` where `<driver_ID>` is a _unique_ number between 01 and 90 and `<driver_name>` is a human-readable name of the driver.
|
||||||
|
|
||||||
|
## API structure
|
||||||
|
### Pre-processor directives
|
||||||
|
Conditional compiling of a sensor driver is achieved by commenting/uncommenting a pre-processor directive of the scheme `USE_<driver_name>` in `user_config.h`. Accordingly the driver code has to be wrapped in `#ifdef USE_<driver_name> ... #endif // USE_<driver_name>`. Any Sensor driver must contain a pre-processor directive defining the driver ID by the scheme `#define XSNS_<driver_ID>`.
|
||||||
|
|
||||||
|
### Callback function
|
||||||
|
Any sensor driver needs a callback function following the scheme
|
||||||
|
```
|
||||||
|
/**
|
||||||
|
* The function Xsns<driver_ID>() interfaces Tasmota with the driver.
|
||||||
|
*
|
||||||
|
* It provides the function IDs
|
||||||
|
* FUNC_INIT to initialize a driver,
|
||||||
|
* FUNC_EVERY_50_MSECOND for near real-time operation,
|
||||||
|
* FUNC_JSON_APPEND for telemetry data and
|
||||||
|
* FUNC_WEB_APPEND for displaying data in the Tasmota web-interface
|
||||||
|
* `
|
||||||
|
* @param byte function Tasmota function ID.
|
||||||
|
* @return boolean ???
|
||||||
|
* @pre None.
|
||||||
|
* @post None.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
boolean Xsns<driverID>(byte function)
|
||||||
|
{
|
||||||
|
// ???
|
||||||
|
boolean result = false;
|
||||||
|
|
||||||
|
// Check which function is called by Tasmota
|
||||||
|
switch (function) {
|
||||||
|
case <function>:
|
||||||
|
<code>
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return boolean result
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
### Function IDs
|
||||||
|
|
||||||
|
#### FUNC_INIT
|
||||||
|
FUNC_INIT initializes a sensor driver
|
||||||
|
|
||||||
|
#### FUNC_EVERY_50_MSECOND
|
||||||
|
FUNC_EVERY_50_MSECOND is called every 50 milliseconds, e.g. for near real-time operation
|
||||||
|
|
||||||
|
#### FUNC_JSON_APPEND
|
||||||
|
FUNC_JSON_APPEND is called to append telemetry data to the MQTT JSON string when `TELEPERIOD` is due.
|
||||||
|
|
||||||
|
#### FUNC_WEB_APPEND
|
||||||
|
FUNC_WEB_APPEND is called to add HTML code to the Tasmota web-interface main page.
|
||||||
|
It should be wrapped in `#ifdef USE_WEBSERVER ... #endif // USE_WEBSERVER`
|
Loading…
Reference in New Issue