payload encoder and readme.md updated
This commit is contained in:
parent
b75337c679
commit
48d1c3d3e2
48
README.md
48
README.md
@ -121,26 +121,46 @@ If you're using [TheThingsNetwork](https://www.thethingsnetwork.org/) (TTN) you
|
||||
|
||||
To track a paxcounter device with on board GPS and at the same time contribute to TTN coverage mapping, you simply activate the [TTNmapper integration](https://www.thethingsnetwork.org/docs/applications/ttnmapper/) in TTN Console. The formats *plain* and *packed* generate the fields `latitude`, `longitude` and `hdop` required by ttnmapper.
|
||||
|
||||
Hereafter described is the default *plain* format.
|
||||
Hereafter described is the default *plain* format, which uses MSB bit numbering.
|
||||
|
||||
**LoRaWAN Port #1:**
|
||||
|
||||
Paxcounter data
|
||||
**Port #1:** Paxcount data
|
||||
|
||||
byte 1-2: Number of unique pax, first seen on Wifi
|
||||
byte 3-4: Number of unique pax, first seen on Bluetooth [0 if BT disabled]
|
||||
|
||||
GPS data (only, if GPS is present and has a fix)
|
||||
|
||||
bytes 5-8: GPS latitude
|
||||
bytes 9-12: GPS longitude
|
||||
bytes 13-14: GPS number of satellites
|
||||
bytes 15-16: GPS HDOP
|
||||
bytes 17-18: GPS altitude [meter]
|
||||
bytes 5-18: GPS data (only, if GPS is present and has a fix) format see Port #4
|
||||
|
||||
**LoRaWAN Port #2:**
|
||||
**Port #2:** Device status query result
|
||||
|
||||
byte 1-2: Voltage [mV]
|
||||
byte 3-11: Uptime [seconds]
|
||||
bytes 12-16: CPU temperate [°C]
|
||||
|
||||
**Port #3:** Device configuration query result
|
||||
|
||||
byte 1: LoRa spread factor
|
||||
byte 2: ADR mode on/off
|
||||
byte 3: Screensaver on/off
|
||||
byte 4: Display on/off
|
||||
byte 5: Counter mode
|
||||
bytes 6-7: RSSI limit
|
||||
byte 8: Payload send cycle
|
||||
byte 9: Wifi channel switch cycle
|
||||
byte 10: Bluetooth scan duration
|
||||
byte 11: Bluetooth scanning on/off
|
||||
byte 12: Wifi antenna internal/external
|
||||
byte 13: Vendortfilter on/off
|
||||
byte 14: RGB Led luminosity [%]
|
||||
byte 15: GPS data on/off
|
||||
bytes 16-26: Software version in ASCII
|
||||
|
||||
**Port #4:** GPS query result
|
||||
|
||||
bytes 1-4: GPS latitude
|
||||
bytes 5-8: GPS longitude
|
||||
bytes 9-10: GPS number of satellites
|
||||
bytes 11-12: GPS HDOP
|
||||
bytes 13-14: GPS altitude [meter]
|
||||
|
||||
- see remote control -
|
||||
|
||||
[**plain_decoder.js**](src/TTN/plain_decoder.js)
|
||||
|
||||
|
@ -9,12 +9,11 @@ function Converter(decoded, port) {
|
||||
converted.pax = converted.ble + converted.wifi;
|
||||
}
|
||||
|
||||
/*
|
||||
if (port === 2) {
|
||||
converted.voltage /= 1000;
|
||||
converted.uptime /= 60;
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
return converted;
|
||||
}
|
@ -18,15 +18,19 @@ function Decoder(bytes, port) {
|
||||
|
||||
if (port === 2) {
|
||||
// device status data
|
||||
if (bytes.length === 12) {
|
||||
return decode(bytes, [uint16, uptime, temperature], ['voltage', 'uptime', 'cputemp']);
|
||||
}
|
||||
// device config data
|
||||
if (bytes.length === 8) {
|
||||
return decode(bytes, [uint8, uint16, uint8, uint8, uint8, uint8, bitmap], ['lorasf', 'rssilimit', 'sendcycle', 'wifichancycle', 'blescantime', 'rgblum', 'flags']);
|
||||
}
|
||||
return decode(bytes, [uint16, uptime, temperature], ['voltage', 'uptime', 'cputemp']);
|
||||
}
|
||||
|
||||
|
||||
if (port === 3) {
|
||||
// device config data
|
||||
return decode(bytes, [uint8, uint16, uint8, uint8, uint8, uint8, bitmap], ['lorasf', 'rssilimit', 'sendcycle', 'wifichancycle', 'blescantime', 'rgblum', 'flags']);
|
||||
}
|
||||
|
||||
if (port === 4) {
|
||||
// gps data
|
||||
return decode(bytes, [latLng, latLng, uint8, hdop, uint16], ['latitude', 'longitude', 'sats', 'hdop', 'altitude']);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -41,14 +41,15 @@
|
||||
#define MEM_LOW 2048 // [Bytes] low memory threshold triggering a send cycle
|
||||
#define RETRANSMIT_RCMD 5 // [seconds] wait time before retransmitting rcommand results
|
||||
#define PAYLOAD_BUFFER_SIZE 51 // maximum size of payload block per transmit
|
||||
|
||||
// Default LoRa Spreadfactor
|
||||
#define LORASFDEFAULT 9 // 7 ... 12 SF, according to LoRaWAN specs
|
||||
#define MAXLORARETRY 500 // maximum count of TX retries if LoRa busy
|
||||
#define PAYLOADPORT 1 // LoRaWAN Port on which device sends counts
|
||||
#define RCMDPORT 2 // LoRaWAN Port on which device listenes for remote commands
|
||||
#define STATUSPORT 2 // LoRaWAN Port on which device sends remote command results
|
||||
#define GPSPORT 3 // LoRaWAN Port on which device sends gps query results
|
||||
|
||||
// Ports on which the device sends and listenes on LoRaWAN and SPI
|
||||
#define PAYLOADPORT 1 // Port on which device sends counts
|
||||
#define RCMDPORT 2 // Port on which device listenes for remote commands
|
||||
#define STATUSPORT 2 // Port on which device sends remote command results
|
||||
#define CONFIGPORT 3 // Port on which device sends gps query results
|
||||
#define GPSPORT 4 // Port on which device sends gps query results
|
||||
|
||||
// Default RGB LED luminosity (in %)
|
||||
#define RGBLUMINOSITY 30 // 30%
|
||||
|
@ -273,7 +273,7 @@ void get_config(uint8_t val) {
|
||||
ESP_LOGI(TAG, "Remote command: get device configuration");
|
||||
payload.reset();
|
||||
payload.addConfig(cfg);
|
||||
senddata(STATUSPORT);
|
||||
senddata(CONFIGPORT);
|
||||
};
|
||||
|
||||
void get_status(uint8_t val) {
|
||||
|
Loading…
Reference in New Issue
Block a user