Payload Format Changes

This commit is contained in:
seiichiro 2020-01-20 14:33:10 +01:00
parent 68697a4b19
commit c4cd51a791

View file

@ -159,30 +159,42 @@ void setup()
void loop() void loop()
{ {
// Without Sensor (Beacon Mode) just send the Battery Voltage // Create Data Structure for Sensor Data
// Use less acurate Battery Voltage Reading (100mv Steps) to be
// Compatible with IOT-Usergroup Basenodes
#ifdef HAS_NO_SENSOR #ifdef HAS_NO_SENSOR
uint8_t data[1]; struct lora_data {
uint8_t bat;
} __attribute__ ((packed)) data;
#elif defined HAS_SHT21
struct lora_data {
uint8_t bat;
int32_t temperature;
int32_t humidity;
} __attribute__ ((packed)) data;
#elif defined HAS_BME280
struct lora_data {
uint8_t bat;
int32_t temperature;
int32_t humidity;
int32_t pressure;
} __attribute__ ((packed)) data;
#endif #endif
// Get Sensor Data // Get Sensor Data
#ifdef HAS_BME280 #ifdef HAS_BME280
int32_t data[4] = {0, 0, 0, 0};
sensor.getData(&data[0], &data[1], &data[2]); sensor.getData(&data.temperature, &data.pressure, &data.humidity);
#endif #endif
#ifdef HAS_SHT21 #ifdef HAS_SHT21
int32_t data[4] = {0, 0, 0, 0}; data.temperature = (int32_t)(sensor.getTemperature()*100);
data[0] = (int32_t)(sensor.getTemperature()*100); data.humidity = (int32_t)(sensor.getHumidity()*100);
data[2] = (int32_t)(sensor.getHumidity()*100);
#endif #endif
#ifdef HAS_NO_SENSOR // Add Battery Voltage, 20mv steps, encoded into 1 Byte
data[0] = (uint8_t)(readVcc()/20); uint32_t batv = readVcc();
#else data.bat = (uint8_t)(batv/20);
data[3] = readVcc(); if (batv % 20 > 9)
#endif data.bat += 1;
// LED On before Sending // LED On before Sending
#ifdef LED_PIN #ifdef LED_PIN
@ -191,12 +203,12 @@ void loop()
#ifdef RF_LORA #ifdef RF_LORA
// Send LoRa Packet, Increment Frame Counter // Send LoRa Packet, Increment Frame Counter
lora.Send_Data((unsigned char *)data, sizeof(data), Frame_Counter_Tx, SF7BW125); lora.Send_Data((unsigned char *)&data, sizeof(data), Frame_Counter_Tx, SF7BW125);
Frame_Counter_Tx++; Frame_Counter_Tx++;
#endif #endif
#ifdef RF_RFM69 #ifdef RF_RFM69
radio.send(RFM69_GATEWAY, data, sizeof(data)); radio.send(RFM69_GATEWAY, &data, sizeof(data));
radio.sleep(); radio.sleep();
#endif #endif