Skip to content

Commit

Permalink
add wireless hydrometer name to MQTT
Browse files Browse the repository at this point in the history
  • Loading branch information
vitotai committed Feb 8, 2024
1 parent 07498d3 commit c71dda0
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 20 deletions.
23 changes: 13 additions & 10 deletions src/LogFormatter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -215,17 +215,20 @@ size_t nonNullJson(char* buffer,size_t size)
root[KeyPlato] = externalData.plato();
}

// iSpindel data
// Hydrometer data
float vol=externalData.deviceVoltage();
if(IsVoltageValid(vol)){
root[KeyVoltage] = vol;
float at=externalData.auxTemp();
if(IS_FLOAT_TEMP_VALID(at)) root[KeyAuxTemp] = at;
float tilt=externalData.tiltValue();
root[KeyTilt]=tilt;
int16_t rssi=externalData.rssi();
root[KeyIspindelRssi]=rssi;
}
if(IsVoltageValid(vol)) root[KeyVoltage] = vol;
float at=externalData.auxTemp();
if(IS_FLOAT_TEMP_VALID(at)) root[KeyAuxTemp] = at;

float tilt=externalData.tiltValue();
if(tilt >0) root[KeyTilt]=tilt;

int16_t rssi=externalData.rssi();
if(IsRssiValid(rssi)) root[KeyWirelessHydrometerRssi]=rssi;
const char *hname=externalData.getDeviceName();
if(hname) root[KeyWirelessHydrometerName] = hname;

#if ARDUINOJSON_VERSION_MAJOR == 6
return serializeJson(root,buffer,size);
#else
Expand Down
4 changes: 3 additions & 1 deletion src/LogFormatter.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,12 @@
#define KeyState "state"
#define KeyFridgeHumidity "fridgeHumidity"
#define KeyRoomHumidity "roomHumidity"
#define KeyIspindelRssi "ispindelRssi"
#define KeyWirelessHydrometerRssi "hydrometerRssi"
#define KeyWirelessHydrometerName "hydrometerName"

size_t nonNullJson(char *buffer,size_t size);
size_t dataSprintf(char *buffer,const char *format,const char* invalidStr);

#define IsRssiValid(r) ((r)> -200)

#endif
35 changes: 26 additions & 9 deletions src/MqttRemoteControl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,18 @@ uint16_t MqttRemoteControl::_publish(const char* key,char value){
}
return packetid;
}
uint16_t MqttRemoteControl::_publish(const char* key,const char* value){
DBG_PRINTF("Publish %s\n",key);

// somwhow need to be optimized
char topic[256];
int baselength=strlen(_reportBasePath);
strncpy(topic,_reportBasePath,baselength);
topic[baselength]='/';
strcpy(topic + baselength +1, key);

return _client.publish(topic,DefaultLogginQoS,true,value);
}

void MqttRemoteControl::_reportData(void){
_lastReportTime = millis();
Expand Down Expand Up @@ -154,15 +166,20 @@ void MqttRemoteControl::_reportData(void){

// iSpindel data
float vol=externalData.deviceVoltage();
if(IsVoltageValid(vol)){
lastID=_publish(KeyVoltage, vol,2);
float at=externalData.auxTemp();
if(IS_FLOAT_TEMP_VALID(at)) lastID=_publish(KeyAuxTemp, at,1);
float tilt=externalData.tiltValue();
lastID=_publish(KeyTilt,tilt,2);
int16_t rssi=externalData.rssi();
lastID=_publish(KeyIspindelRssi,(float)rssi,0);
}
if(IsVoltageValid(vol)) lastID=_publish(KeyVoltage, vol,2);

float at=externalData.auxTemp();
if(IS_FLOAT_TEMP_VALID(at)) lastID=_publish(KeyAuxTemp, at,1);

float tilt=externalData.tiltValue();
if(tilt>0) lastID=_publish(KeyTilt,tilt,2);

int16_t rssi=externalData.rssi();
if(IsRssiValid(rssi)) lastID=_publish(KeyWirelessHydrometerRssi,(float)rssi,0);

const char *hname=externalData.getDeviceName();
if(hname) lastID=_publish(KeyWirelessHydrometerName, hname);

}
_lastPacketId = lastID;
_publishing=true;
Expand Down
1 change: 1 addition & 0 deletions src/MqttRemoteControl.h
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@ class MqttRemoteControl{
void _reportData();
uint16_t _publish(const char* key,float value,int precision);
uint16_t _publish(const char* key,char value);
uint16_t _publish(const char* key,const char* value);
uint16_t _lastPacketId;
bool _publishing;
public:
Expand Down

0 comments on commit c71dda0

Please sign in to comment.