payload encoder and readme.md updated
This commit is contained in:
parent
b75337c679
commit
48d1c3d3e2
44
README.md
44
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.
|
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)
|
||||||
|
|
||||||
|
@ -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;
|
||||||
}
|
}
|
@ -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']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (port === 3) {
|
||||||
// device config data
|
// 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, [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 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%
|
||||||
|
@ -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) {
|
||||||
|
Loading…
Reference in New Issue
Block a user