payload encoder and readme.md updated

This commit is contained in:
Klaus K Wilting 2018-07-15 19:08:18 +02:00
parent b75337c679
commit 48d1c3d3e2
5 changed files with 54 additions and 30 deletions

View File

@ -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. 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:** **Port #1:** Paxcount data
Paxcounter data
byte 1-2: Number of unique pax, first seen on Wifi 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] byte 3-4: Number of unique pax, first seen on Bluetooth [0 if BT disabled]
bytes 5-18: GPS data (only, if GPS is present and has a fix) format see Port #4
GPS data (only, if GPS is present and has a fix) **Port #2:** Device status query result
bytes 5-8: GPS latitude byte 1-2: Voltage [mV]
bytes 9-12: GPS longitude byte 3-11: Uptime [seconds]
bytes 13-14: GPS number of satellites bytes 12-16: CPU temperate [°C]
bytes 15-16: GPS HDOP
bytes 17-18: GPS altitude [meter]
**LoRaWAN Port #2:** **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) [**plain_decoder.js**](src/TTN/plain_decoder.js)

View File

@ -9,12 +9,11 @@ function Converter(decoded, port) {
converted.pax = converted.ble + converted.wifi; converted.pax = converted.ble + converted.wifi;
} }
/*
if (port === 2) { if (port === 2) {
converted.voltage /= 1000; converted.voltage /= 1000;
converted.uptime /= 60; converted.uptime /= 60;
} }
*/
return converted; return converted;
} }

View File

@ -18,15 +18,19 @@ function Decoder(bytes, port) {
if (port === 2) { if (port === 2) {
// device status data // device status data
if (bytes.length === 12) { return decode(bytes, [uint16, uptime, temperature], ['voltage', 'uptime', 'cputemp']);
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']);
}
} }
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']);
}
} }

View File

@ -41,14 +41,15 @@
#define MEM_LOW 2048 // [Bytes] low memory threshold triggering a send cycle #define MEM_LOW 2048 // [Bytes] low memory threshold triggering a send cycle
#define RETRANSMIT_RCMD 5 // [seconds] wait time before retransmitting rcommand results #define RETRANSMIT_RCMD 5 // [seconds] wait time before retransmitting rcommand results
#define PAYLOAD_BUFFER_SIZE 51 // maximum size of payload block per transmit #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 LORASFDEFAULT 9 // 7 ... 12 SF, according to LoRaWAN specs
#define MAXLORARETRY 500 // maximum count of TX retries if LoRa busy #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 // Ports on which the device sends and listenes on LoRaWAN and SPI
#define STATUSPORT 2 // LoRaWAN Port on which device sends remote command results #define PAYLOADPORT 1 // Port on which device sends counts
#define GPSPORT 3 // LoRaWAN Port on which device sends gps query results #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 %) // Default RGB LED luminosity (in %)
#define RGBLUMINOSITY 30 // 30% #define RGBLUMINOSITY 30 // 30%

View File

@ -273,7 +273,7 @@ void get_config(uint8_t val) {
ESP_LOGI(TAG, "Remote command: get device configuration"); ESP_LOGI(TAG, "Remote command: get device configuration");
payload.reset(); payload.reset();
payload.addConfig(cfg); payload.addConfig(cfg);
senddata(STATUSPORT); senddata(CONFIGPORT);
}; };
void get_status(uint8_t val) { void get_status(uint8_t val) {