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. | 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) |  | ||||||
| 	 |  | ||||||
| 	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] |  | ||||||
| 
 | 
 | ||||||
| **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) | [**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']); |  | ||||||
|         } |  | ||||||
|         // 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']); | ||||||
|  |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -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