Change topics concatenation method

Correct regression introduced by #503
Nevertheless this method needs to be optimized to avoid the use of string.
This commit is contained in:
1technophile committed 2019-12-13 23:25:09 +01:00
1 parent c0ddf77c9f
commit 7f16d00a55
12 files changed
+23 -23

No files matched your search

+4 -4
View File
@@ -132,7 +132,7 @@ void MQTTtoFASTLEDJSON(char *topicOri, JsonObject& jsonData)
if (strstr(topicOri,catToMainTopic(subjectMQTTtoFASTLEDsetled)) != NULL) if (strstr(topicOri,(char *)catToMainTopic(subjectMQTTtoFASTLEDsetled).c_str()) != NULL)
{ {
trc(F("JSON parsed")); trc(F("JSON parsed"));
int ledNr = jsonData["led"]; int ledNr = jsonData["led"];
@@ -160,7 +160,7 @@ void MQTTtoFASTLED(char *topicOri, char *datacallback)
currentLEDState = GENERAL; currentLEDState = GENERAL;
long number = 0; long number = 0;
trc(topicOri); trc(topicOri);
if (strstr(topicOri,catToMainTopic(subjectMQTTtoFASTLED)) != NULL) if (strstr(topicOri,(char *)catToMainTopic(subjectMQTTtoFASTLED).c_str()) != NULL)
{ {
number = (long)strtol(&datacallback[1], NULL, 16); number = (long)strtol(&datacallback[1], NULL, 16);
trc(number); trc(number);
@@ -170,14 +170,14 @@ void MQTTtoFASTLED(char *topicOri, char *datacallback)
} }
FastLED.show(); FastLED.show();
} }
else if (strstr(topicOri,catToMainTopic(subjectMQTTtoFASTLEDsetbrightness)) != NULL) else if (strstr(topicOri,(char *)catToMainTopic(subjectMQTTtoFASTLEDsetbrightness).c_str()) != NULL)
{ {
number = (long)strtol(&datacallback[1], NULL, 16); number = (long)strtol(&datacallback[1], NULL, 16);
trc(number); trc(number);
FastLED.setBrightness(number); FastLED.setBrightness(number);
FastLED.show(); FastLED.show();
} }
else if (strstr(topicOri,catToMainTopic(subjectMQTTtoFASTLEDsetanimation)) != NULL) else if (strstr(topicOri,(char *)catToMainTopic(subjectMQTTtoFASTLEDsetanimation).c_str()) != NULL)
{ {
String payload = datacallback; String payload = datacallback;
trc(payload); trc(payload);
+2 -2
View File
@@ -33,7 +33,7 @@
#ifdef jsonReceiving #ifdef jsonReceiving
void MQTTtoONOFF(char * topicOri, JsonObject& ONOFFdata){ void MQTTtoONOFF(char * topicOri, JsonObject& ONOFFdata){
if (strstr(topicOri,catToMainTopic(subjectMQTTtoONOFF)) != NULL){ if (strstr(topicOri,(char *)catToMainTopic(subjectMQTTtoONOFF).c_str()) != NULL){
trc(F("MQTTtoONOFF json data analysis")); trc(F("MQTTtoONOFF json data analysis"));
int boolSWITCHTYPE = ONOFFdata["state"] | 99; int boolSWITCHTYPE = ONOFFdata["state"] | 99;
int pin = ONOFFdata["pin"] | ACTUATOR_ONOFF_PIN; int pin = ONOFFdata["pin"] | ACTUATOR_ONOFF_PIN;
@@ -55,7 +55,7 @@ void MQTTtoONOFF(char * topicOri, JsonObject& ONOFFdata){
#ifdef simpleReceiving #ifdef simpleReceiving
void MQTTtoONOFF(char * topicOri, char * datacallback) { void MQTTtoONOFF(char * topicOri, char * datacallback) {
if ((strstr(topicOri,catToMainTopic(subjectMQTTtoONOFF)) != NULL) ){ if ((strstr(topicOri,(char *)catToMainTopic(subjectMQTTtoONOFF).c_str()) != NULL) ){
trc(F("MQTTtoONOFF")); trc(F("MQTTtoONOFF"));
int pin = strtol(datacallback, NULL, 10); // we will not be able to pass values > 4294967295 int pin = strtol(datacallback, NULL, 10); // we will not be able to pass values > 4294967295
+2 -2
View File
@@ -107,7 +107,7 @@ bool _2GtoMQTT(){
String data = datacallback; String data = datacallback;
String topic = topicOri; String topic = topicOri;
if (strstr(topicOri,catToMainTopic(subjectMQTTto2G)) != NULL) { if (strstr(topicOri,(char *)catToMainTopic(subjectMQTTto2G).c_str()) != NULL) {
trc(F("MQTTto2G data analysis")); trc(F("MQTTto2G data analysis"));
// 2G DATA ANALYSIS // 2G DATA ANALYSIS
String phone_number = ""; String phone_number = "";
@@ -138,7 +138,7 @@ bool _2GtoMQTT(){
#ifdef jsonReceiving #ifdef jsonReceiving
void MQTTto2G(char * topicOri, JsonObject& SMSdata) { void MQTTto2G(char * topicOri, JsonObject& SMSdata) {
if (strstr(topicOri,catToMainTopic(subjectMQTTto2G)) != NULL){ if (strstr(topicOri,(char *)catToMainTopic(subjectMQTTto2G).c_str()) != NULL){
const char * sms = SMSdata["message"]; const char * sms = SMSdata["message"];
const char * phone = SMSdata["phone"]; const char * phone = SMSdata["phone"];
trc(F("MQTTto2G json data analysis")); trc(F("MQTTto2G json data analysis"));
+1 -1
View File
@@ -1044,7 +1044,7 @@ void haRoomPresence(JsonObject& HomePresence){
#endif #endif
void MQTTtoBT(char * topicOri, JsonObject& BTdata) { // json object decoding void MQTTtoBT(char * topicOri, JsonObject& BTdata) { // json object decoding
if (strstr(topicOri,catToMainTopic(subjectMQTTtoBTset)) != NULL){ if (strstr(topicOri,(char *)catToMainTopic(subjectMQTTtoBTset).c_str()) != NULL){
trc(F("MQTTtoBT json set")); trc(F("MQTTtoBT json set"));
// Black list & white list set // Black list & white list set
+1 -1
View File
@@ -274,7 +274,7 @@ void IRtoMQTT(){
#ifdef jsonReceiving #ifdef jsonReceiving
void MQTTtoIR(char * topicOri, JsonObject& IRdata) { void MQTTtoIR(char * topicOri, JsonObject& IRdata) {
if (strstr(topicOri,catToMainTopic(subjectMQTTtoIR)) != NULL){ if (strstr(topicOri,(char *)catToMainTopic(subjectMQTTtoIR).c_str()) != NULL){
trc(F("MQTTtoIR json")); trc(F("MQTTtoIR json"));
uint64_t data = IRdata["value"]; uint64_t data = IRdata["value"];
const char * raw = IRdata["raw"]; const char * raw = IRdata["raw"];
+2 -2
View File
@@ -87,7 +87,7 @@ void LORAtoMQTT(){
#ifdef jsonReceiving #ifdef jsonReceiving
void MQTTtoLORA(char * topicOri, JsonObject& LORAdata) { // json object decoding void MQTTtoLORA(char * topicOri, JsonObject& LORAdata) { // json object decoding
if (strstr(topicOri,catToMainTopic(subjectMQTTtoLORA)) != NULL){ if (strstr(topicOri,(char *)catToMainTopic(subjectMQTTtoLORA).c_str()) != NULL){
trc(F("MQTTtoLORA json")); trc(F("MQTTtoLORA json"));
const char * message = LORAdata["message"]; const char * message = LORAdata["message"];
int txPower = LORAdata["txpower"]|LORA_TX_POWER; int txPower = LORAdata["txpower"]|LORA_TX_POWER;
@@ -120,7 +120,7 @@ void LORAtoMQTT(){
#endif #endif
#ifdef simpleReceiving #ifdef simpleReceiving
void MQTTtoLORA(char * topicOri, char * LORAdata) { // json object decoding void MQTTtoLORA(char * topicOri, char * LORAdata) { // json object decoding
if (strstr(topicOri,catToMainTopic(subjectMQTTtoLORA)) != NULL){ if (strstr(topicOri,(char *)catToMainTopic(subjectMQTTtoLORA).c_str()) != NULL){
LoRa.beginPacket(); LoRa.beginPacket();
LoRa.print(LORAdata); LoRa.print(LORAdata);
LoRa.endPacket(); LoRa.endPacket();
+1 -1
View File
@@ -74,7 +74,7 @@ void MQTTtoPilight(char * topicOri, JsonObject& Pilightdata) {
int result = 0; int result = 0;
if (strstr(topicOri,catToMainTopic(subjectMQTTtoPilight)) != NULL){ if (strstr(topicOri,(char *)catToMainTopic(subjectMQTTtoPilight).c_str()) != NULL){
trc(F("MQTTtoPilight json data analysis")); trc(F("MQTTtoPilight json data analysis"));
const char * message = Pilightdata["message"]; const char * message = Pilightdata["message"];
const char * protocol = Pilightdata["protocol"]; const char * protocol = Pilightdata["protocol"];
+2 -2
View File
@@ -132,7 +132,7 @@ void MQTTtoRF(char * topicOri, char * datacallback) {
trc(valueBITS); trc(valueBITS);
} }
if ((strstr(topicOri,catToMainTopic(subjectMQTTtoRF)) != NULL) && (valuePRT == 0) && (valuePLSL == 0) && (valueBITS == 0)){ if ((strstr(topicOri,(char *)catToMainTopic(subjectMQTTtoRF).c_str()) != NULL) && (valuePRT == 0) && (valuePLSL == 0) && (valueBITS == 0)){
trc(F("MQTTtoRF dflt")); trc(F("MQTTtoRF dflt"));
mySwitch.setProtocol(1,350); mySwitch.setProtocol(1,350);
mySwitch.send(data, 24); mySwitch.send(data, 24);
@@ -156,7 +156,7 @@ void MQTTtoRF(char * topicOri, char * datacallback) {
#ifdef jsonReceiving #ifdef jsonReceiving
void MQTTtoRF(char * topicOri, JsonObject& RFdata) { // json object decoding void MQTTtoRF(char * topicOri, JsonObject& RFdata) { // json object decoding
if (strstr(topicOri,catToMainTopic(subjectMQTTtoRF)) != NULL){ if (strstr(topicOri,(char *)catToMainTopic(subjectMQTTtoRF).c_str()) != NULL){
trc(F("MQTTtoRF json")); trc(F("MQTTtoRF json"));
unsigned long data = RFdata["value"]; unsigned long data = RFdata["value"];
if (data != 0) { if (data != 0) {
+1 -1
View File
@@ -215,7 +215,7 @@ void rf2Callback(unsigned int period, unsigned long address, unsigned long group
#ifdef jsonReceiving #ifdef jsonReceiving
void MQTTtoRF2(char * topicOri, JsonObject& RF2data) { // json object decoding void MQTTtoRF2(char * topicOri, JsonObject& RF2data) { // json object decoding
if (strstr(topicOri,catToMainTopic(subjectMQTTtoRF2)) != NULL){ if (strstr(topicOri,(char *)catToMainTopic(subjectMQTTtoRF2).c_str()) != NULL){
trc(F("MQTTtoRF2 json")); trc(F("MQTTtoRF2 json"));
int boolSWITCHTYPE = RF2data["switchType"] | 99; int boolSWITCHTYPE = RF2data["switchType"] | 99;
if (boolSWITCHTYPE != 99) { if (boolSWITCHTYPE != 99) {
+2 -2
View File
@@ -184,7 +184,7 @@ bool RFM69toMQTT(void) {
#ifdef simpleReceiving #ifdef simpleReceiving
void MQTTtoRFM69(char * topicOri, char * datacallback) { void MQTTtoRFM69(char * topicOri, char * datacallback) {
if(strstr(topicOri,catToMainTopic(subjectMQTTtoRFM69)) != NULL){ if(strstr(topicOri,(char *)catToMainTopic(subjectMQTTtoRFM69).c_str()) != NULL){
trc(F("MQTTtoRFM69 data analysis")); trc(F("MQTTtoRFM69 data analysis"));
char data[RF69_MAX_DATA_LEN+1]; char data[RF69_MAX_DATA_LEN+1];
memcpy(data, (void *)datacallback, RF69_MAX_DATA_LEN); memcpy(data, (void *)datacallback, RF69_MAX_DATA_LEN);
@@ -215,7 +215,7 @@ bool RFM69toMQTT(void) {
#ifdef jsonReceiving #ifdef jsonReceiving
void MQTTtoRFM69(char * topicOri, JsonObject& RFM69data) { void MQTTtoRFM69(char * topicOri, JsonObject& RFM69data) {
if (strstr(topicOri,catToMainTopic(subjectMQTTtoRFM69)) != NULL){ if (strstr(topicOri,(char *)catToMainTopic(subjectMQTTtoRFM69).c_str()) != NULL){
const char * data = RFM69data["data"]; const char * data = RFM69data["data"];
trc(F("MQTTtoRFM69 json data analysis")); trc(F("MQTTtoRFM69 json data analysis"));
if(data){ if(data){
+1 -1
View File
@@ -280,7 +280,7 @@ bool _rfbToChar(byte * in, char * out) {
// RF DATA ANALYSIS // RF DATA ANALYSIS
const char * raw = SRFBdata["raw"]; const char * raw = SRFBdata["raw"];
int valueRPT = SRFBdata["repeat"]|1; int valueRPT = SRFBdata["repeat"]|1;
if (strstr(topicOri,catToMainTopic(subjectMQTTtoSRFB)) != NULL){ if (strstr(topicOri,(char *)catToMainTopic(subjectMQTTtoSRFB).c_str()) != NULL){
trc(F("MQTTtoSRFB json")); trc(F("MQTTtoSRFB json"));
if (raw){ // send raw in priority when defined in the json if (raw){ // send raw in priority when defined in the json
trc(F("MQTTtoSRFB raw ok")); trc(F("MQTTtoSRFB raw ok"));
+4 -4
View File
@@ -428,9 +428,9 @@ void pubMQTT(String topic, unsigned long payload){
client.publish((char *)topic.c_str(),val); client.publish((char *)topic.c_str(),val);
} }
char * catToMainTopic(char * toAdd){ String catToMainTopic(char * toAdd){
String resultTopic = String(mqtt_topic) + String(toAdd); String resultTopic = String(mqtt_topic) + String(toAdd);
return (char *)resultTopic.c_str(); return resultTopic;
} }
void reconnect() { void reconnect() {
@@ -452,7 +452,7 @@ void reconnect() {
// publish version // publish version
pub(version_Topic,OMG_VERSION,will_Retain); pub(version_Topic,OMG_VERSION,will_Retain);
//Subscribing to topic //Subscribing to topic
if (client.subscribe(catToMainTopic(subjectMQTTtoX))) { if (client.subscribe((char *)catToMainTopic(subjectMQTTtoX).c_str())) {
#ifdef ZgatewayRF #ifdef ZgatewayRF
client.subscribe(subjectMultiGTWRF); // subject on which other OMG will publish, this OMG will store these msg and by the way don't republish them if they have been already published client.subscribe(subjectMultiGTWRF); // subject on which other OMG will publish, this OMG will store these msg and by the way don't republish them if they have been already published
#endif #endif
@@ -1320,7 +1320,7 @@ digitalWrite(led_send, HIGH);
} }
void MQTTtoSYS(char * topicOri, JsonObject& SYSdata) { // json object decoding void MQTTtoSYS(char * topicOri, JsonObject& SYSdata) { // json object decoding
if (strstr(topicOri,catToMainTopic(subjectMQTTtoSYSset)) != NULL){ if (strstr(topicOri,(char *)catToMainTopic(subjectMQTTtoSYSset).c_str()) != NULL){
trc(F("MQTTtoSYS json set")); trc(F("MQTTtoSYS json set"));
#if defined(ESP8266) || defined(ESP32) #if defined(ESP8266) || defined(ESP32)
if (SYSdata.containsKey("cmd")){ if (SYSdata.containsKey("cmd")){