remove string usage for topic comparison
This commit is contained in:
1 parent
7f16d00a55
commit
f7ec81ffaa
13 files changed
+47
-28
No files matched your search
@@ -132,7 +132,7 @@ void MQTTtoFASTLEDJSON(char *topicOri, JsonObject& jsonData)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (strstr(topicOri,(char *)catToMainTopic(subjectMQTTtoFASTLEDsetled).c_str()) != NULL)
|
if (cmpToMainTopic(topicOri,subjectMQTTtoFASTLEDsetled))
|
||||||
{
|
{
|
||||||
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,(char *)catToMainTopic(subjectMQTTtoFASTLED).c_str()) != NULL)
|
if (cmpToMainTopic(topicOri,subjectMQTTtoFASTLED))
|
||||||
{
|
{
|
||||||
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,(char *)catToMainTopic(subjectMQTTtoFASTLEDsetbrightness).c_str()) != NULL)
|
else if (cmpToMainTopic(topicOri,subjectMQTTtoFASTLEDsetbrightness))
|
||||||
{
|
{
|
||||||
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,(char *)catToMainTopic(subjectMQTTtoFASTLEDsetanimation).c_str()) != NULL)
|
else if (cmpToMainTopic(topicOri,subjectMQTTtoFASTLEDsetanimation))
|
||||||
{
|
{
|
||||||
String payload = datacallback;
|
String payload = datacallback;
|
||||||
trc(payload);
|
trc(payload);
|
||||||
|
|||||||
@@ -33,7 +33,7 @@
|
|||||||
#ifdef jsonReceiving
|
#ifdef jsonReceiving
|
||||||
void MQTTtoONOFF(char * topicOri, JsonObject& ONOFFdata){
|
void MQTTtoONOFF(char * topicOri, JsonObject& ONOFFdata){
|
||||||
|
|
||||||
if (strstr(topicOri,(char *)catToMainTopic(subjectMQTTtoONOFF).c_str()) != NULL){
|
if (cmpToMainTopic(topicOri,subjectMQTTtoONOFF)){
|
||||||
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,(char *)catToMainTopic(subjectMQTTtoONOFF).c_str()) != NULL) ){
|
if ((cmpToMainTopic(topicOri,subjectMQTTtoONOFF)) ){
|
||||||
|
|
||||||
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
@@ -107,7 +107,7 @@ bool _2GtoMQTT(){
|
|||||||
String data = datacallback;
|
String data = datacallback;
|
||||||
String topic = topicOri;
|
String topic = topicOri;
|
||||||
|
|
||||||
if (strstr(topicOri,(char *)catToMainTopic(subjectMQTTto2G).c_str()) != NULL) {
|
if (cmpToMainTopic(topicOri,subjectMQTTto2G)) {
|
||||||
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,(char *)catToMainTopic(subjectMQTTto2G).c_str()) != NULL){
|
if (cmpToMainTopic(topicOri,subjectMQTTto2G)){
|
||||||
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
@@ -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,(char *)catToMainTopic(subjectMQTTtoBTset).c_str()) != NULL){
|
if (cmpToMainTopic(topicOri,subjectMQTTtoBTset)){
|
||||||
trc(F("MQTTtoBT json set"));
|
trc(F("MQTTtoBT json set"));
|
||||||
|
|
||||||
// Black list & white list set
|
// Black list & white list set
|
||||||
|
|||||||
+1
-1
@@ -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,(char *)catToMainTopic(subjectMQTTtoIR).c_str()) != NULL){
|
if (cmpToMainTopic(topicOri,subjectMQTTtoIR)){
|
||||||
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"];
|
||||||
|
|||||||
@@ -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,(char *)catToMainTopic(subjectMQTTtoLORA).c_str()) != NULL){
|
if (cmpToMainTopic(topicOri,subjectMQTTtoLORA)){
|
||||||
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,(char *)catToMainTopic(subjectMQTTtoLORA).c_str()) != NULL){
|
if (cmpToMainTopic(topicOri,subjectMQTTtoLORA)){
|
||||||
LoRa.beginPacket();
|
LoRa.beginPacket();
|
||||||
LoRa.print(LORAdata);
|
LoRa.print(LORAdata);
|
||||||
LoRa.endPacket();
|
LoRa.endPacket();
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ void MQTTtoPilight(char * topicOri, JsonObject& Pilightdata) {
|
|||||||
|
|
||||||
int result = 0;
|
int result = 0;
|
||||||
|
|
||||||
if (strstr(topicOri,(char *)catToMainTopic(subjectMQTTtoPilight).c_str()) != NULL){
|
if (cmpToMainTopic(topicOri,subjectMQTTtoPilight)){
|
||||||
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
@@ -132,7 +132,7 @@ void MQTTtoRF(char * topicOri, char * datacallback) {
|
|||||||
trc(valueBITS);
|
trc(valueBITS);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((strstr(topicOri,(char *)catToMainTopic(subjectMQTTtoRF).c_str()) != NULL) && (valuePRT == 0) && (valuePLSL == 0) && (valueBITS == 0)){
|
if ((cmpToMainTopic(topicOri,subjectMQTTtoRF)) && (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,(char *)catToMainTopic(subjectMQTTtoRF).c_str()) != NULL){
|
if (cmpToMainTopic(topicOri,subjectMQTTtoRF)){
|
||||||
trc(F("MQTTtoRF json"));
|
trc(F("MQTTtoRF json"));
|
||||||
unsigned long data = RFdata["value"];
|
unsigned long data = RFdata["value"];
|
||||||
if (data != 0) {
|
if (data != 0) {
|
||||||
|
|||||||
@@ -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,(char *)catToMainTopic(subjectMQTTtoRF2).c_str()) != NULL){
|
if (cmpToMainTopic(topicOri,subjectMQTTtoRF2)){
|
||||||
trc(F("MQTTtoRF2 json"));
|
trc(F("MQTTtoRF2 json"));
|
||||||
int boolSWITCHTYPE = RF2data["switchType"] | 99;
|
int boolSWITCHTYPE = RF2data["switchType"] | 99;
|
||||||
if (boolSWITCHTYPE != 99) {
|
if (boolSWITCHTYPE != 99) {
|
||||||
|
|||||||
@@ -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,(char *)catToMainTopic(subjectMQTTtoRFM69).c_str()) != NULL){
|
if(cmpToMainTopic(topicOri,subjectMQTTtoRFM69)){
|
||||||
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,(char *)catToMainTopic(subjectMQTTtoRFM69).c_str()) != NULL){
|
if (cmpToMainTopic(topicOri,subjectMQTTtoRFM69)){
|
||||||
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){
|
||||||
|
|||||||
@@ -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,(char *)catToMainTopic(subjectMQTTtoSRFB).c_str()) != NULL){
|
if (cmpToMainTopic(topicOri,subjectMQTTtoSRFB)){
|
||||||
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"));
|
||||||
|
|||||||
+14
-4
@@ -50,16 +50,21 @@ String getUniqueId(String name, String sufix)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void createDiscovery(char * sensor_type,
|
void createDiscovery(char * sensor_type,
|
||||||
char * state_topic, char * s_name, char * unique_id,
|
char * st_topic, char * s_name, char * unique_id,
|
||||||
char * availability_topic, char * device_class, char * value_template,
|
char * availability_topic, char * device_class, char * value_template,
|
||||||
char * payload_on, char * payload_off, char * unit_of_meas,
|
char * payload_on, char * payload_off, char * unit_of_meas,
|
||||||
int off_delay,
|
int off_delay,
|
||||||
char * payload_available, char * payload_not_avalaible, bool child_device , char * command_topic)
|
char * payload_available, char * payload_not_avalaible, bool child_device , char * cmd_topic)
|
||||||
{
|
{
|
||||||
const int JSON_MSG_CALC_BUFFER = JSON_OBJECT_SIZE(14) + JSON_OBJECT_SIZE(5)+ JSON_ARRAY_SIZE(1);
|
const int JSON_MSG_CALC_BUFFER = JSON_OBJECT_SIZE(14) + JSON_OBJECT_SIZE(5)+ JSON_ARRAY_SIZE(1);
|
||||||
StaticJsonBuffer<JSON_MSG_CALC_BUFFER> jsonBuffer;
|
StaticJsonBuffer<JSON_MSG_CALC_BUFFER> jsonBuffer;
|
||||||
JsonObject &sensor = jsonBuffer.createObject();
|
JsonObject &sensor = jsonBuffer.createObject();
|
||||||
|
|
||||||
|
char state_topic[mqtt_topic_max_size];
|
||||||
|
strcpy(state_topic,mqtt_topic);
|
||||||
|
strcat(state_topic,st_topic);
|
||||||
sensor.set("stat_t", state_topic); //state_topic
|
sensor.set("stat_t", state_topic); //state_topic
|
||||||
|
|
||||||
sensor.set("name", s_name); //name
|
sensor.set("name", s_name); //name
|
||||||
sensor.set("uniq_id", unique_id); //unique_id
|
sensor.set("uniq_id", unique_id); //unique_id
|
||||||
if (device_class[0]) sensor.set("dev_cla", device_class); //device_class
|
if (device_class[0]) sensor.set("dev_cla", device_class); //device_class
|
||||||
@@ -70,7 +75,13 @@ void createDiscovery(char * sensor_type,
|
|||||||
if (off_delay != 0) sensor.set("off_delay", off_delay); //off_delay
|
if (off_delay != 0) sensor.set("off_delay", off_delay); //off_delay
|
||||||
if (payload_available[0]) sensor.set("pl_avail", payload_available); // payload_on
|
if (payload_available[0]) sensor.set("pl_avail", payload_available); // payload_on
|
||||||
if (payload_not_avalaible[0]) sensor.set("pl_not_avail", payload_not_avalaible); //payload_off
|
if (payload_not_avalaible[0]) sensor.set("pl_not_avail", payload_not_avalaible); //payload_off
|
||||||
if (command_topic[0]) sensor.set("cmd_t", command_topic); //command_topic
|
|
||||||
|
if (cmd_topic[0]) {
|
||||||
|
char command_topic[mqtt_topic_max_size];
|
||||||
|
strcpy(command_topic,mqtt_topic);
|
||||||
|
strcat(command_topic,cmd_topic);
|
||||||
|
sensor.set("cmd_t", command_topic); //command_topic
|
||||||
|
}
|
||||||
|
|
||||||
/*if (strcmp(s_name, Gateway_Name) == 0){
|
/*if (strcmp(s_name, Gateway_Name) == 0){
|
||||||
JsonArray &json_attributes = sensor.createNestedArray("json_attributes");
|
JsonArray &json_attributes = sensor.createNestedArray("json_attributes");
|
||||||
@@ -80,7 +91,6 @@ void createDiscovery(char * sensor_type,
|
|||||||
json_attributes.add("SSID");
|
json_attributes.add("SSID");
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
|
|
||||||
if (child_device){
|
if (child_device){
|
||||||
const int JSON_MSG_CALC_BUFFER = JSON_OBJECT_SIZE(5) + JSON_ARRAY_SIZE(2);
|
const int JSON_MSG_CALC_BUFFER = JSON_OBJECT_SIZE(5) + JSON_ARRAY_SIZE(2);
|
||||||
StaticJsonBuffer<JSON_MSG_CALC_BUFFER> jsonDeviceBuffer;
|
StaticJsonBuffer<JSON_MSG_CALC_BUFFER> jsonDeviceBuffer;
|
||||||
|
|||||||
+14
-5
@@ -428,9 +428,15 @@ void pubMQTT(String topic, unsigned long payload){
|
|||||||
client.publish((char *)topic.c_str(),val);
|
client.publish((char *)topic.c_str(),val);
|
||||||
}
|
}
|
||||||
|
|
||||||
String catToMainTopic(char * toAdd){
|
bool cmpToMainTopic(char * topicOri, char * toAdd){
|
||||||
String resultTopic = String(mqtt_topic) + String(toAdd);
|
char topic[mqtt_topic_max_size];
|
||||||
return resultTopic;
|
strcpy(topic,mqtt_topic);
|
||||||
|
strcat(topic,toAdd);
|
||||||
|
if (strstr(topicOri,topic) != NULL){
|
||||||
|
return true;
|
||||||
|
}else{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void reconnect() {
|
void reconnect() {
|
||||||
@@ -452,7 +458,10 @@ 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((char *)catToMainTopic(subjectMQTTtoX).c_str())) {
|
char topic[mqtt_topic_max_size];
|
||||||
|
strcpy(topic,mqtt_topic);
|
||||||
|
strcat(topic,subjectMQTTtoX);
|
||||||
|
if (client.subscribe(topic)) {
|
||||||
#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 +1329,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,(char *)catToMainTopic(subjectMQTTtoSYSset).c_str()) != NULL){
|
if (cmpToMainTopic(topicOri,subjectMQTTtoSYSset)){
|
||||||
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")){
|
||||||
|
|||||||
Reference in new issue
Block a user