From 5e0a98512b3b80833aaeddef952f6d526f837603 Mon Sep 17 00:00:00 2001 From: michael carter Date: Tue, 21 Sep 2021 12:24:01 +0100 Subject: [PATCH 1/2] Add battery voltage --- RX_FSK/src/RS41.cpp | 1 + RX_FSK/src/Sonde.h | 1 + 2 files changed, 2 insertions(+) diff --git a/RX_FSK/src/RS41.cpp b/RX_FSK/src/RS41.cpp index aa66d46..83d2a5b 100644 --- a/RX_FSK/src/RS41.cpp +++ b/RX_FSK/src/RS41.cpp @@ -685,6 +685,7 @@ int RS41::decode41(byte *data, int maxlen) Serial.print("; RS41 ID "); snprintf(buf, 10, "%.8s ", data+p+2); Serial.print(buf); + sonde.si()->batteryVoltage = data[p+10] / 10.0f; si->type=STYPE_RS41; if(strncmp(si->id, (const char *)(data+p+2), 8)) { // ID changed, i.e. new sonde on same frequency. clear calibration data diff --git a/RX_FSK/src/Sonde.h b/RX_FSK/src/Sonde.h index d16dbd0..fdf79cb 100644 --- a/RX_FSK/src/Sonde.h +++ b/RX_FSK/src/Sonde.h @@ -110,6 +110,7 @@ typedef struct st_sondeinfo { float temperature = -300.0; // platinum resistor temperature float tempRHSensor = -300.0; // temperature of relative humidity sensor float relativeHumidity = -1.0; // relative humidity + float batteryVoltage = -1; } SondeInfo; // rxStat: 3=undef[empty] 1=timeout[.] 2=errro[E] 0=ok[|] 4=no valid position[°] From 9ae8b790f0b2ba156e210b13f3f77f838d6c5fa1 Mon Sep 17 00:00:00 2001 From: michael carter Date: Mon, 4 Oct 2021 07:04:51 +0100 Subject: [PATCH 2/2] add values to mqtt --- RX_FSK/src/mqtt.cpp | 21 +++++++++++++++++++-- RX_FSK/src/mqtt.h | 1 + 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/RX_FSK/src/mqtt.cpp b/RX_FSK/src/mqtt.cpp index 435fd9e..727eb19 100644 --- a/RX_FSK/src/mqtt.cpp +++ b/RX_FSK/src/mqtt.cpp @@ -3,6 +3,7 @@ #include #include #include +#include "RS41.h" TimerHandle_t mqttReconnectTimer; @@ -85,8 +86,7 @@ void MQTT::publishPacket(SondeInfo *si) "\"launchKT\": %d," "\"burstKT\": %d," "\"countKT\": %d," - "\"crefKT\": %d" - "}", + "\"crefKT\": %d", (int)si->active, si->freq, s->id, @@ -116,6 +116,23 @@ void MQTT::publishPacket(SondeInfo *si) s->countKT, s->crefKT ); + if ( !isnan( s->temperature ) ) { + snprintf(payload, 1024, "%s%s%.1f", payload, ",\"temperature\": ", s->temperature ); + } + if ( !isnan( s->relativeHumidity ) ) { + snprintf(payload, 1024, "%s%s%.1f", payload, ",\"relativeHumidity\": ", s->relativeHumidity ); + } + if ( !isnan( s->pressure ) ) { + snprintf(payload, 1024, "%s%s%.1f", payload, ",\"pressure\": ", s->pressure ); + } + if ( !isnan( s->batteryVoltage && s->batteryVoltage > 0 ) ) { + snprintf(payload, 1024, "%s%s%.1f", payload, ",\"batteryVoltage\": ", s->batteryVoltage ); + } + char subtype[11]; + if ( RS41::getSubtype( subtype, 11, si) == 0 ) { + snprintf(payload, 1024, "%s%s%s%s", payload, ",\"subtype\": \"", subtype, "\"" ); + } + snprintf(payload, 1024, "%s%s", payload, "}" ); // terminate payload string char topic[128]; snprintf(topic, 128, "%s%s", this->prefix, "packet"); diff --git a/RX_FSK/src/mqtt.h b/RX_FSK/src/mqtt.h index 0ccd377..a24a8b1 100644 --- a/RX_FSK/src/mqtt.h +++ b/RX_FSK/src/mqtt.h @@ -4,6 +4,7 @@ #include #include #include "Sonde.h" +#include "RS41.h" class MQTT {