Wifi managers improvements (#503)
* Add parameters to wifi manager: gateway name and base topic Enable to restart the ESP and erase the parameters by MQTT
This commit is contained in:
1 parent
a05fd01505
commit
4b1f09b06b
41 files changed
+308
-196
No files matched your search
@@ -61,7 +61,8 @@ module.exports = {
|
|||||||
children: [
|
children: [
|
||||||
'upload/binaries',
|
'upload/binaries',
|
||||||
'upload/pio',
|
'upload/pio',
|
||||||
'upload/arduino-ide'
|
'upload/arduino-ide',
|
||||||
|
'upload/portal'
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -75,7 +76,8 @@ module.exports = {
|
|||||||
'use/gsm',
|
'use/gsm',
|
||||||
'use/rfm69',
|
'use/rfm69',
|
||||||
'use/sensors',
|
'use/sensors',
|
||||||
'use/actuators'
|
'use/actuators',
|
||||||
|
'use/gateway'
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
*Example for the use of RF gateway*
|
*Example for the use of RF gateway*
|
||||||
```C++
|
```C++
|
||||||
#define ZgatewayRF "RF" //ESP8266, Arduino, ESP32
|
#define ZgatewayRF "RF" //ESP8266, Arduino, ESP32
|
||||||
//#define ZgatewayIR "IR" //ESP8266, Arduino, Sonoff RF Bridge
|
//#define ZgatewayIR "IR" //ESP8266, Arduino, Sonoff RF Bridge
|
||||||
//#define ZgatewayLORA "LORA" //ESP8266, Arduino, ESP32
|
//#define ZgatewayLORA "LORA" //ESP8266, Arduino, ESP32
|
||||||
//#define ZgatewayPilight "Pilight" //ESP8266, Arduino, ESP32
|
//#define ZgatewayPilight "Pilight" //ESP8266, Arduino, ESP32
|
||||||
//#define ZgatewayBT "BT" //ESP8266, ESP32
|
//#define ZgatewayBT "BT" //ESP8266, ESP32
|
||||||
@@ -24,3 +24,5 @@
|
|||||||
* Open the serial monitor and set 115200 bauds
|
* Open the serial monitor and set 115200 bauds
|
||||||
* Upload ➡️
|
* Upload ➡️
|
||||||
* You should see the logs into the serial monitor
|
* You should see the logs into the serial monitor
|
||||||
|
|
||||||
|
With an ESP if you did not set your network and mqtt parameters manualy you can now open the [web portal configuration](portal.md).
|
||||||
+2
-18
@@ -32,22 +32,6 @@ https://github.com/marcelstoer/nodemcu-pyflasher/releases
|
|||||||
* Click on *FlashNodeMCU*
|
* Click on *FlashNodeMCU*
|
||||||
The upload details appears.
|
The upload details appears.
|
||||||
|
|
||||||
|
With an ESP if you did not set your network and mqtt parameters manualy you can now open the [web portal configuration](portal.md).
|
||||||
|
|
||||||
Note that to reset the wifi and mqtt settings you can check *yes, wipes all data*
|
Note that to reset the wifi and mqtt settings you can check *yes, wipes all data*
|
||||||
|
|
||||||
Once loaded into your board you have to set your network parameters with wifi manager portal
|
|
||||||
From your smartphone search for your OpenMQTTGateway wifi network and connect to it, a web page will appear
|
|
||||||
* Select your wifi
|
|
||||||
* Set your wifi password
|
|
||||||
* Set your MQTT Server IP
|
|
||||||
* Set your MQTT Server username (not compulsory)
|
|
||||||
* Set your MQTT Server password (not compulsory)
|
|
||||||
|
|
||||||
The ESP restart and connect to your network. Note that your credentials are saved into the ESP memory, if you want to redo the configuration you have to erase the ESP memory with the flash download tool.
|
|
||||||
|
|
||||||
_The default password for wifi manager is "your_password"_
|
|
||||||
|
|
||||||
Once done the gateway should connect to your network and your broker, you should see it into the broker in the form of the following messages:
|
|
||||||
```
|
|
||||||
home/OpenMQTTGateway/LWT Online
|
|
||||||
home/OpenMQTTGateway/version
|
|
||||||
```
|
|
||||||
@@ -111,3 +111,5 @@ If you want to use HASS MQTT discovery you need to have
|
|||||||
`#define ZmqttDiscovery "HADiscovery"`
|
`#define ZmqttDiscovery "HADiscovery"`
|
||||||
uncommented.
|
uncommented.
|
||||||
Added to that auto discovery box should be selected into your Home Assistant MQTT integration configuration.
|
Added to that auto discovery box should be selected into your Home Assistant MQTT integration configuration.
|
||||||
|
|
||||||
|
With an ESP if you did not set your network and mqtt parameters manualy you can now open the [web portal configuration](portal.md).
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
# Wifi and MQTT configuration portal
|
||||||
|
|
||||||
|
Once loaded into your board and if you don't use the manual configuration you have to set your network parameters with wifi manager portal.
|
||||||
|
From your smartphone search for your OpenMQTTGateway wifi network and connect to it, a web page will appear
|
||||||
|
* Select your wifi
|
||||||
|
* Set your wifi password
|
||||||
|
* Set your MQTT Server IP
|
||||||
|
* Set your MQTT Server username (not compulsory)
|
||||||
|
* Set your MQTT Server password (not compulsory)
|
||||||
|
* Set your MQTT base topic (you must keep the / at the end)
|
||||||
|
* Set your gateway name
|
||||||
|
|
||||||
|
The ESP restart and connect to your network. Note that your credentials are saved into the ESP memory, if you want to redo the configuration you have to erase the ESP memory with the flash download tool.
|
||||||
|
|
||||||
|
_The default password for wifi manager is "your_password"_
|
||||||
|
|
||||||
|
Once done the gateway should connect to your network and your broker, you should see it into the broker in the form of the following messages:
|
||||||
|
```
|
||||||
|
home/OpenMQTTGateway/LWT Online
|
||||||
|
home/OpenMQTTGateway/version
|
||||||
|
```
|
||||||
|
|
||||||
|
Note that the web portal appears only on first boot, if you want to configure again the setting you can do a long press on TRIGGER_PIN.
|
||||||
|
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
# System commands (ESP only)
|
||||||
|
|
||||||
|
## Restart the ESP
|
||||||
|
|
||||||
|
`mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoSYS/set" -m '{"cmd":"restart"}'`
|
||||||
|
|
||||||
|
## Erase the ESP settings
|
||||||
|
|
||||||
|
`mosquitto_pub -t "home/OpenMQTTGateway/commands/MQTTtoSYS/set" -m '{"cmd":"erase"}'`
|
||||||
+23
-12
@@ -50,6 +50,7 @@
|
|||||||
#ifndef Gateway_Name
|
#ifndef Gateway_Name
|
||||||
#define Gateway_Name "OpenMQTTGateway"
|
#define Gateway_Name "OpenMQTTGateway"
|
||||||
#endif
|
#endif
|
||||||
|
#define Base_Topic "home/"
|
||||||
|
|
||||||
/*-------------DEFINE YOUR NETWORK PARAMETERS BELOW----------------*/
|
/*-------------DEFINE YOUR NETWORK PARAMETERS BELOW----------------*/
|
||||||
#if defined(ESP8266)||defined(ESP32) // for nodemcu, weemos and esp8266
|
#if defined(ESP8266)||defined(ESP32) // for nodemcu, weemos and esp8266
|
||||||
@@ -71,11 +72,14 @@
|
|||||||
/*-------------DEFINE YOUR MQTT PARAMETERS BELOW----------------*/
|
/*-------------DEFINE YOUR MQTT PARAMETERS BELOW----------------*/
|
||||||
//MQTT Parameters definition
|
//MQTT Parameters definition
|
||||||
//#define mqtt_server_name "www.mqtt_broker.com" // instead of defining the server by its IP you can define it by its name, uncomment this line and set the correct MQTT server host name
|
//#define mqtt_server_name "www.mqtt_broker.com" // instead of defining the server by its IP you can define it by its name, uncomment this line and set the correct MQTT server host name
|
||||||
char mqtt_user[20] = "your_username"; // not compulsory only if your broker needs authentication
|
#define parameters_size 20
|
||||||
char mqtt_pass[30] = "your_password"; // not compulsory only if your broker needs authentication
|
#define mqtt_topic_max_size 100
|
||||||
char mqtt_server[40] = "192.168.1.17";
|
char mqtt_user[parameters_size] = "your_username"; // not compulsory only if your broker needs authentication
|
||||||
|
char mqtt_pass[parameters_size] = "your_password"; // not compulsory only if your broker needs authentication
|
||||||
|
char mqtt_server[parameters_size] = "192.168.1.17";
|
||||||
char mqtt_port[6] = "1883";
|
char mqtt_port[6] = "1883";
|
||||||
|
char mqtt_topic[mqtt_topic_max_size] = Base_Topic;
|
||||||
|
char gateway_name[parameters_size * 2] = Gateway_Name;
|
||||||
//uncomment the line below to integrate msg value into the subject when receiving
|
//uncomment the line below to integrate msg value into the subject when receiving
|
||||||
//#define valueAsASubject true
|
//#define valueAsASubject true
|
||||||
|
|
||||||
@@ -119,9 +123,8 @@ const byte Dns[] = { 0, 0, 0, 0 }; //ip adress, if first value is different from
|
|||||||
const byte subnet[] = { 255, 255, 255, 0 }; //ip adress
|
const byte subnet[] = { 255, 255, 255, 0 }; //ip adress
|
||||||
|
|
||||||
/*-------------DEFINE YOUR MQTT ADVANCED PARAMETERS BELOW----------------*/
|
/*-------------DEFINE YOUR MQTT ADVANCED PARAMETERS BELOW----------------*/
|
||||||
#define Base_Topic "home/"
|
#define version_Topic "/version"
|
||||||
#define version_Topic Base_Topic Gateway_Name "/version"
|
#define will_Topic "/LWT"
|
||||||
#define will_Topic Base_Topic Gateway_Name "/LWT"
|
|
||||||
#define will_QoS 0
|
#define will_QoS 0
|
||||||
#define will_Retain true
|
#define will_Retain true
|
||||||
#define will_Message "offline"
|
#define will_Message "offline"
|
||||||
@@ -182,9 +185,16 @@ const byte subnet[] = { 255, 255, 255, 0 }; //ip adress
|
|||||||
#endif
|
#endif
|
||||||
/*--------------MQTT general topics-----------------*/
|
/*--------------MQTT general topics-----------------*/
|
||||||
// global MQTT subject listened by the gateway to execute commands (send RF, IR or others)
|
// global MQTT subject listened by the gateway to execute commands (send RF, IR or others)
|
||||||
#define subjectMQTTtoX Base_Topic Gateway_Name "/commands/#"
|
#define subjectMQTTtoX "/commands/#"
|
||||||
#define subjectMultiGTWKey "toMQTT"
|
#define subjectMultiGTWKey "toMQTT"
|
||||||
#define subjectGTWSendKey "MQTTto"
|
#define subjectGTWSendKey "MQTTto"
|
||||||
|
|
||||||
|
// key used for launching commands to the gateway
|
||||||
|
#define restartCmd "restart"
|
||||||
|
#define eraseCmd "erase"
|
||||||
|
|
||||||
|
// define if we concatenate the values into the topic
|
||||||
|
//#define valueAsASubject true
|
||||||
|
|
||||||
//variables to avoid duplicates
|
//variables to avoid duplicates
|
||||||
#define time_avoid_duplicate 3000 // if you want to avoid duplicate mqtt message received set this to > 0, the value is the time in milliseconds during which we don't publish duplicates
|
#define time_avoid_duplicate 3000 // if you want to avoid duplicate mqtt message received set this to > 0, the value is the time in milliseconds during which we don't publish duplicates
|
||||||
@@ -197,9 +207,10 @@ const byte subnet[] = { 255, 255, 255, 0 }; //ip adress
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define TimeBetweenReadingSYS 120000 // time between system readings (like memory)
|
#define TimeBetweenReadingSYS 120000 // time between system readings (like memory)
|
||||||
#define subjectSYStoMQTT Base_Topic Gateway_Name "/SYStoMQTT"
|
#define subjectSYStoMQTT "/SYStoMQTT"
|
||||||
|
#define subjectMQTTtoSYSset "/commands/MQTTtoSYS/set"
|
||||||
|
|
||||||
//#define subjectTRACEtoMQTT Base_Topic Gateway_Name "/log" //uncomment if you want to see traces on /log topic
|
//#define subjectTRACEtoMQTT "OpenMQTTGateway/log" //uncomment if you want to see traces on OpenMQTTGateway/log topic
|
||||||
|
|
||||||
/*-------------------ACTIVATE TRACES----------------------*/
|
/*-------------------ACTIVATE TRACES----------------------*/
|
||||||
#define TRACE 1 // commented = trace off, uncommented = trace on
|
#define TRACE 1 // commented = trace off, uncommented = trace on
|
||||||
|
|||||||
@@ -127,14 +127,12 @@ void MQTTtoFASTLEDJSON(char *topicOri, JsonObject& jsonData)
|
|||||||
{
|
{
|
||||||
trc(F("MQTTtoFASTLEDJSON: "));
|
trc(F("MQTTtoFASTLEDJSON: "));
|
||||||
currentLEDState = GENERAL;
|
currentLEDState = GENERAL;
|
||||||
String topic = topicOri;
|
trc(topicOri);
|
||||||
|
|
||||||
trc(topic);
|
|
||||||
//number = (long)strtol(&datacallback[1], NULL, 16);
|
//number = (long)strtol(&datacallback[1], NULL, 16);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (topic == subjectMQTTtoFASTLEDsetled)
|
if (strstr(topicOri,catToMainTopic(subjectMQTTtoFASTLEDsetled)) != NULL)
|
||||||
{
|
{
|
||||||
trc(F("JSON parsed"));
|
trc(F("JSON parsed"));
|
||||||
int ledNr = jsonData["led"];
|
int ledNr = jsonData["led"];
|
||||||
@@ -160,10 +158,9 @@ void MQTTtoFASTLED(char *topicOri, char *datacallback)
|
|||||||
{
|
{
|
||||||
trc(F("MQTTtoFASTLED: "));
|
trc(F("MQTTtoFASTLED: "));
|
||||||
currentLEDState = GENERAL;
|
currentLEDState = GENERAL;
|
||||||
String topic = topicOri;
|
|
||||||
long number = 0;
|
long number = 0;
|
||||||
trc(topic);
|
trc(topicOri);
|
||||||
if (topic == subjectMQTTtoFASTLED)
|
if (strstr(topicOri,catToMainTopic(subjectMQTTtoFASTLED)) != NULL)
|
||||||
{
|
{
|
||||||
number = (long)strtol(&datacallback[1], NULL, 16);
|
number = (long)strtol(&datacallback[1], NULL, 16);
|
||||||
trc(number);
|
trc(number);
|
||||||
@@ -173,18 +170,18 @@ void MQTTtoFASTLED(char *topicOri, char *datacallback)
|
|||||||
}
|
}
|
||||||
FastLED.show();
|
FastLED.show();
|
||||||
}
|
}
|
||||||
else if (topic == subjectMQTTtoFASTLEDsetbrightness)
|
else if (strstr(topicOri,catToMainTopic(subjectMQTTtoFASTLEDsetbrightness)) != 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 (topic == subjectMQTTtoFASTLEDsetanimation)
|
else if (strstr(topicOri,catToMainTopic(subjectMQTTtoFASTLEDsetanimation)) != NULL)
|
||||||
{
|
{
|
||||||
String payload = datacallback;
|
String payload = datacallback;
|
||||||
trc(payload);
|
trc(payload);
|
||||||
if (payload.equals("fire"))
|
if ( strstr(datacallback,"fire") != NULL)
|
||||||
{
|
{
|
||||||
currentLEDState = FIRE;
|
currentLEDState = FIRE;
|
||||||
gPal = HeatColors_p;
|
gPal = HeatColors_p;
|
||||||
|
|||||||
@@ -33,7 +33,7 @@
|
|||||||
#ifdef jsonReceiving
|
#ifdef jsonReceiving
|
||||||
void MQTTtoONOFF(char * topicOri, JsonObject& ONOFFdata){
|
void MQTTtoONOFF(char * topicOri, JsonObject& ONOFFdata){
|
||||||
|
|
||||||
if (strcmp(topicOri,subjectMQTTtoONOFF) == 0){
|
if (strstr(topicOri,catToMainTopic(subjectMQTTtoONOFF)) != 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,subjectMQTTtoONOFF) != NULL) ){
|
if ((strstr(topicOri,catToMainTopic(subjectMQTTtoONOFF)) != 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
|
||||||
@@ -69,7 +69,8 @@ void MQTTtoONOFF(char * topicOri, char * datacallback) {
|
|||||||
|
|
||||||
digitalWrite(pin, ON);
|
digitalWrite(pin, ON);
|
||||||
// we acknowledge the sending by publishing the value to an acknowledgement topic
|
// we acknowledge the sending by publishing the value to an acknowledgement topic
|
||||||
pub(subjectGTWONOFFtoMQTT, ON);
|
char b = ON;
|
||||||
|
pub(subjectGTWONOFFtoMQTT, &b);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
+4
-4
@@ -107,7 +107,7 @@ bool _2GtoMQTT(){
|
|||||||
String data = datacallback;
|
String data = datacallback;
|
||||||
String topic = topicOri;
|
String topic = topicOri;
|
||||||
|
|
||||||
if (topic == subjectMQTTto2G) {
|
if (strstr(topicOri,catToMainTopic(subjectMQTTto2G)) != NULL) {
|
||||||
trc(F("MQTTto2G data analysis"));
|
trc(F("MQTTto2G data analysis"));
|
||||||
// 2G DATA ANALYSIS
|
// 2G DATA ANALYSIS
|
||||||
String phone_number = "";
|
String phone_number = "";
|
||||||
@@ -122,7 +122,7 @@ bool _2GtoMQTT(){
|
|||||||
if (A6l.sendSMS(phone_number,data) == A6_OK ) {
|
if (A6l.sendSMS(phone_number,data) == A6_OK ) {
|
||||||
trc(F("SMS OK"));
|
trc(F("SMS OK"));
|
||||||
// Acknowledgement to the GTW2G topic
|
// Acknowledgement to the GTW2G topic
|
||||||
pub(subjectGTW2GtoMQTT, datacallback);// we acknowledge the sending by publishing the value to an acknowledgement topic, for the moment even if it is a signal repetition we acknowledge also
|
pub(subjectGTW2GtoMQTT, "SMS OK");// we acknowledge the sending by publishing the value to an acknowledgement topic, for the moment even if it is a signal repetition we acknowledge also
|
||||||
}else{
|
}else{
|
||||||
trc(F("SMS KO"));
|
trc(F("SMS KO"));
|
||||||
// Acknowledgement to the GTW2G topic
|
// Acknowledgement to the GTW2G topic
|
||||||
@@ -138,7 +138,7 @@ bool _2GtoMQTT(){
|
|||||||
#ifdef jsonReceiving
|
#ifdef jsonReceiving
|
||||||
void MQTTto2G(char * topicOri, JsonObject& SMSdata) {
|
void MQTTto2G(char * topicOri, JsonObject& SMSdata) {
|
||||||
|
|
||||||
if (strcmp(topicOri,subjectMQTTto2G) == 0){
|
if (strstr(topicOri,catToMainTopic(subjectMQTTto2G)) != 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"));
|
||||||
@@ -148,7 +148,7 @@ bool _2GtoMQTT(){
|
|||||||
if (A6l.sendSMS(String(phone),String(sms)) == A6_OK ) {
|
if (A6l.sendSMS(String(phone),String(sms)) == A6_OK ) {
|
||||||
trc(F("SMS OK"));
|
trc(F("SMS OK"));
|
||||||
// Acknowledgement to the GTW2G topic
|
// Acknowledgement to the GTW2G topic
|
||||||
pub(subjectGTW2GtoMQTT, SMSdata);// we acknowledge the sending by publishing the value to an acknowledgement topic, for the moment even if it is a signal repetition we acknowledge also
|
pub(subjectGTW2GtoMQTT, "SMS OK");// we acknowledge the sending by publishing the value to an acknowledgement topic, for the moment even if it is a signal repetition we acknowledge also
|
||||||
}else{
|
}else{
|
||||||
trc(F("SMS KO"));
|
trc(F("SMS KO"));
|
||||||
pub(subjectGTW2GtoMQTT, "SMS KO");// we acknowledge the sending by publishing the value to an acknowledgement topic, for the moment even if it is a signal repetition we acknowledge also
|
pub(subjectGTW2GtoMQTT, "SMS KO");// we acknowledge the sending by publishing the value to an acknowledgement topic, for the moment even if it is a signal repetition we acknowledge also
|
||||||
|
|||||||
+9
-3
@@ -530,7 +530,12 @@ void MiBandDiscovery(char * mac){
|
|||||||
while(true){
|
while(true){
|
||||||
trc(taskMessage);
|
trc(taskMessage);
|
||||||
delay(BLEinterval);
|
delay(BLEinterval);
|
||||||
BLEscan();
|
if (client.state() == 0) {
|
||||||
|
BLEscan();
|
||||||
|
}else{
|
||||||
|
trc("MQTT client disconnected no BLE scan");
|
||||||
|
delay(1000);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -993,12 +998,13 @@ void haRoomPresence(JsonObject& HomePresence){
|
|||||||
HomePresence["distance"] = distance;
|
HomePresence["distance"] = distance;
|
||||||
trc(F("BLE DISTANCE :"));
|
trc(F("BLE DISTANCE :"));
|
||||||
trc(distance);
|
trc(distance);
|
||||||
pub(subjectHomePresence,HomePresence);
|
String topic = String(Base_Topic) + "home_presence/" + String(gateway_name);
|
||||||
|
pub_custom_topic((char *)topic.c_str(),HomePresence);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void MQTTtoBT(char * topicOri, JsonObject& BTdata) { // json object decoding
|
void MQTTtoBT(char * topicOri, JsonObject& BTdata) { // json object decoding
|
||||||
if (strcmp(topicOri,subjectMQTTtoBTset) == 0){
|
if (strstr(topicOri,catToMainTopic(subjectMQTTtoBTset)) != NULL){
|
||||||
trc(F("MQTTtoBT json set"));
|
trc(F("MQTTtoBT json set"));
|
||||||
|
|
||||||
// Black list & white list set
|
// Black list & white list set
|
||||||
|
|||||||
+2
-2
@@ -152,7 +152,7 @@ void IRtoMQTT(){
|
|||||||
storeValue(MQTTvalue);
|
storeValue(MQTTvalue);
|
||||||
if (repeatIRwMQTT){
|
if (repeatIRwMQTT){
|
||||||
trc(F("Pub. IR for rpt"));
|
trc(F("Pub. IR for rpt"));
|
||||||
pub(subjectMQTTtoIR,MQTTvalue);
|
pubMQTT(subjectMQTTtoIR,MQTTvalue);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -274,7 +274,7 @@ void IRtoMQTT(){
|
|||||||
#ifdef jsonReceiving
|
#ifdef jsonReceiving
|
||||||
void MQTTtoIR(char * topicOri, JsonObject& IRdata) {
|
void MQTTtoIR(char * topicOri, JsonObject& IRdata) {
|
||||||
|
|
||||||
if (strcmp(topicOri,subjectMQTTtoIR) == 0){
|
if (strstr(topicOri,catToMainTopic(subjectMQTTtoIR)) != 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"];
|
||||||
|
|||||||
@@ -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 (strcmp(topicOri,subjectMQTTtoLORA) == 0){
|
if (strstr(topicOri,catToMainTopic(subjectMQTTtoLORA)) != 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 (strcmp(topicOri,subjectMQTTtoLORA) == 0){
|
if (strstr(topicOri,catToMainTopic(subjectMQTTtoLORA)) != NULL){
|
||||||
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 (strcmp(topicOri,subjectMQTTtoPilight) == 0){
|
if (strstr(topicOri,catToMainTopic(subjectMQTTtoPilight)) != 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
-3
@@ -132,7 +132,7 @@ void MQTTtoRF(char * topicOri, char * datacallback) {
|
|||||||
trc(valueBITS);
|
trc(valueBITS);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((topic == subjectMQTTtoRF) && (valuePRT == 0) && (valuePLSL == 0) && (valueBITS == 0)){
|
if ((strstr(topicOri,catToMainTopic(subjectMQTTtoRF)) != 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,8 +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 (strcmp(topicOri,subjectMQTTtoRF) == 0){
|
|
||||||
trc(F("MQTTtoRF json"));
|
trc(F("MQTTtoRF json"));
|
||||||
unsigned long data = RFdata["value"];
|
unsigned long data = RFdata["value"];
|
||||||
if (data != 0) {
|
if (data != 0) {
|
||||||
|
|||||||
@@ -202,11 +202,11 @@ void rf2Callback(unsigned int period, unsigned long address, unsigned long group
|
|||||||
trc(F("Adv data MQTTtoRF2 push state via RF2toMQTT"));
|
trc(F("Adv data MQTTtoRF2 push state via RF2toMQTT"));
|
||||||
if (isDimCommand) {
|
if (isDimCommand) {
|
||||||
MQTTRF2string = subjectRF2toMQTT+String("/")+RF2codeKey+MQTTAddress+String("/")+RF2unitKey+MQTTunit+String("/")+RF2groupKey+MQTTgroupBit+String("/")+RF2dimKey+String("/")+RF2periodKey+MQTTperiod;
|
MQTTRF2string = subjectRF2toMQTT+String("/")+RF2codeKey+MQTTAddress+String("/")+RF2unitKey+MQTTunit+String("/")+RF2groupKey+MQTTgroupBit+String("/")+RF2dimKey+String("/")+RF2periodKey+MQTTperiod;
|
||||||
pub(MQTTRF2string,MQTTdimLevel);
|
pub((char *)MQTTRF2string.c_str(),(char *)MQTTdimLevel.c_str());
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
MQTTRF2string = subjectRF2toMQTT+String("/")+RF2codeKey+MQTTAddress+String("/")+RF2unitKey+MQTTunit+String("/")+RF2groupKey+MQTTgroupBit+String("/")+RF2periodKey+MQTTperiod;
|
MQTTRF2string = subjectRF2toMQTT+String("/")+RF2codeKey+MQTTAddress+String("/")+RF2unitKey+MQTTunit+String("/")+RF2groupKey+MQTTgroupBit+String("/")+RF2periodKey+MQTTperiod;
|
||||||
pub(MQTTRF2string,MQTTswitchType);
|
pub((char *)MQTTRF2string.c_str(),(char *)MQTTswitchType.c_str());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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 (strcmp(topicOri,subjectMQTTtoRF2) == 0){
|
if (strstr(topicOri,catToMainTopic(subjectMQTTtoRF2)) != 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) {
|
||||||
|
|||||||
@@ -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, subjectMQTTtoRFM69) != NULL){
|
if(strstr(topicOri,catToMainTopic(subjectMQTTtoRFM69)) != 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 (strcmp(topicOri,subjectMQTTtoRFM69) == 0){
|
if (strstr(topicOri,catToMainTopic(subjectMQTTtoRFM69)) != 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){
|
||||||
|
|||||||
@@ -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 (strcmp(topicOri,subjectMQTTtoSRFB) == 0){
|
if (strstr(topicOri,catToMainTopic(subjectMQTTtoSRFB)) != 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"));
|
||||||
|
|||||||
@@ -93,7 +93,7 @@ void createDiscovery(char * sensor_type,
|
|||||||
sensor.set("device", device); //device sensor is connected to
|
sensor.set("device", device); //device sensor is connected to
|
||||||
}
|
}
|
||||||
String topic = String(discovery_Topic) + "/" + String(sensor_type) + "/" + String(unique_id) + "/config";
|
String topic = String(discovery_Topic) + "/" + String(sensor_type) + "/" + String(unique_id) + "/config";
|
||||||
pub((char *)topic.c_str(), sensor);
|
pub_custom_topic((char *)topic.c_str(), sensor);
|
||||||
}
|
}
|
||||||
|
|
||||||
void pubMqttDiscovery()
|
void pubMqttDiscovery()
|
||||||
|
|||||||
+3
-3
@@ -32,9 +32,9 @@ extern void MQTTto2G(char * topicOri, char * datacallback);
|
|||||||
extern void MQTTto2G(char * topicOri, JsonObject& SMSdata);
|
extern void MQTTto2G(char * topicOri, JsonObject& SMSdata);
|
||||||
/*-------------------2G topics & parameters----------------------*/
|
/*-------------------2G topics & parameters----------------------*/
|
||||||
//433Mhz MQTT Subjects and keys
|
//433Mhz MQTT Subjects and keys
|
||||||
#define subjectMQTTto2G Base_Topic Gateway_Name "/commands/MQTTto2G"
|
#define subjectMQTTto2G "/commands/MQTTto2G"
|
||||||
#define subject2GtoMQTT Base_Topic Gateway_Name "/2GtoMQTT"
|
#define subject2GtoMQTT "/2GtoMQTT"
|
||||||
#define subjectGTW2GtoMQTT Base_Topic Gateway_Name "/2GtoMQTT"
|
#define subjectGTW2GtoMQTT "/2GtoMQTT"
|
||||||
#define _2GPhoneKey "PHO_" // phone number define the phone number to send the SMS MQTT->2G
|
#define _2GPhoneKey "PHO_" // phone number define the phone number to send the SMS MQTT->2G
|
||||||
|
|
||||||
#define _2G_MODULE_BAUDRATE 9600
|
#define _2G_MODULE_BAUDRATE 9600
|
||||||
|
|||||||
+1
-1
@@ -30,7 +30,7 @@ extern void setupADC();
|
|||||||
extern void ADCtoMQTT();
|
extern void ADCtoMQTT();
|
||||||
/*----------------------------USER PARAMETERS-----------------------------*/
|
/*----------------------------USER PARAMETERS-----------------------------*/
|
||||||
/*-------------DEFINE YOUR MQTT PARAMETERS BELOW----------------*/
|
/*-------------DEFINE YOUR MQTT PARAMETERS BELOW----------------*/
|
||||||
#define ADCTOPIC Base_Topic Gateway_Name "/ADCtoMQTT"
|
#define ADCTOPIC "/ADCtoMQTT"
|
||||||
#define TimeBetweenReadingADC 500 // time between 2 ADC readings, minimum 200 to let the time of the ESP to keep the connection
|
#define TimeBetweenReadingADC 500 // time between 2 ADC readings, minimum 200 to let the time of the ESP to keep the connection
|
||||||
#define ThresholdReadingADC 50 // following the comparison between the previous value and the current one +- the threshold the value will be published or not
|
#define ThresholdReadingADC 50 // following the comparison between the previous value and the current one +- the threshold the value will be published or not
|
||||||
|
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ extern void BH1750toMQTT();
|
|||||||
|
|
||||||
/*----------------------------USER PARAMETERS-----------------------------*/
|
/*----------------------------USER PARAMETERS-----------------------------*/
|
||||||
/*-------------DEFINE YOUR MQTT PARAMETERS BELOW----------------*/
|
/*-------------DEFINE YOUR MQTT PARAMETERS BELOW----------------*/
|
||||||
#define subjectBH1750toMQTT Base_Topic Gateway_Name "/BH1750toMQTT"
|
#define subjectBH1750toMQTT "/BH1750toMQTT"
|
||||||
//Time used to wait for an interval before resending measured values
|
//Time used to wait for an interval before resending measured values
|
||||||
unsigned long timebh1750 = 0;
|
unsigned long timebh1750 = 0;
|
||||||
int BH1750_i2c_addr = 0x23; // Light Sensor I2C Address
|
int BH1750_i2c_addr = 0x23; // Light Sensor I2C Address
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ extern void BME280toMQTT();
|
|||||||
|
|
||||||
/*----------------------------USER PARAMETERS-----------------------------*/
|
/*----------------------------USER PARAMETERS-----------------------------*/
|
||||||
/*-------------DEFINE YOUR MQTT PARAMETERS BELOW----------------*/
|
/*-------------DEFINE YOUR MQTT PARAMETERS BELOW----------------*/
|
||||||
#define BMETOPIC Base_Topic Gateway_Name "/CLIMAtoMQTT/bme"
|
#define BMETOPIC "/CLIMAtoMQTT/bme"
|
||||||
|
|
||||||
//Time used to wait for an interval before resending measured values
|
//Time used to wait for an interval before resending measured values
|
||||||
unsigned long timebme280 = 0;
|
unsigned long timebme280 = 0;
|
||||||
|
|||||||
+4
-4
@@ -30,10 +30,10 @@ extern void setupBT();
|
|||||||
extern bool BTtoMQTT();
|
extern bool BTtoMQTT();
|
||||||
extern void MQTTtoBT(char * topicOri, JsonObject& RFdata);
|
extern void MQTTtoBT(char * topicOri, JsonObject& RFdata);
|
||||||
/*----------------------BT topics & parameters-------------------------*/
|
/*----------------------BT topics & parameters-------------------------*/
|
||||||
#define subjectBTtoMQTT Base_Topic Gateway_Name "/BTtoMQTT/"
|
#define subjectBTtoMQTT "/BTtoMQTT/"
|
||||||
#define subjectMQTTtoBTset Base_Topic Gateway_Name "/commands/MQTTtoBT/set"
|
#define subjectMQTTtoBTset "/commands/MQTTtoBT/set"
|
||||||
#define TimeBtw_Read 55555 //define default time between 2 scans
|
#define TimeBtw_Read 55555 //define default time between 2 scans
|
||||||
#define MinimumRSSI -90 //default minimum rssi value, all the devices below -90 will not be reported
|
#define MinimumRSSI -100 //default minimum rssi value, all the devices below -90 will not be reported
|
||||||
#define Scan_duration 10 //define the time for a scan
|
#define Scan_duration 10 //define the time for a scan
|
||||||
#define HM-10
|
#define HM-10
|
||||||
//#define HM-11 // uncomment this line if you use HM-11 and comment the line above
|
//#define HM-11 // uncomment this line if you use HM-11 and comment the line above
|
||||||
@@ -43,7 +43,7 @@ extern void MQTTtoBT(char * topicOri, JsonObject& RFdata);
|
|||||||
|
|
||||||
/*-------------------HOME ASSISTANT ROOM PRESENCE ----------------------*/
|
/*-------------------HOME ASSISTANT ROOM PRESENCE ----------------------*/
|
||||||
// if not commented Home presence integration with HOME ASSISTANT is activated
|
// if not commented Home presence integration with HOME ASSISTANT is activated
|
||||||
#define subjectHomePresence Base_Topic "home_presence/" Gateway_Name // will send Home Assistant room presence message to this topic (first part is same for all rooms, second is room name)
|
#define subjectHomePresence "home_presence/" // will send Home Assistant room presence message to this topic (first part is same for all rooms, second is room name)
|
||||||
|
|
||||||
unsigned int BLEinterval ; //time between 2 scans
|
unsigned int BLEinterval ; //time between 2 scans
|
||||||
int Minrssi ; //minimum rssi value
|
int Minrssi ; //minimum rssi value
|
||||||
|
|||||||
+1
-1
@@ -30,7 +30,7 @@ extern void setupDHT();
|
|||||||
extern void DHTtoMQTT();
|
extern void DHTtoMQTT();
|
||||||
/*----------------------------USER PARAMETERS-----------------------------*/
|
/*----------------------------USER PARAMETERS-----------------------------*/
|
||||||
/*-------------DEFINE YOUR MQTT PARAMETERS BELOW----------------*/
|
/*-------------DEFINE YOUR MQTT PARAMETERS BELOW----------------*/
|
||||||
#define DHTTOPIC Base_Topic Gateway_Name "/DHTtoMQTT/dht1"
|
#define DHTTOPIC "/DHTtoMQTT/dht1"
|
||||||
#define dht_always true // if false when the current value for temp or hum is the same as previous one don't send it by MQTT
|
#define dht_always true // if false when the current value for temp or hum is the same as previous one don't send it by MQTT
|
||||||
#define TimeBetweenReadingDHT 30000 // time between 2 DHT readings
|
#define TimeBetweenReadingDHT 30000 // time between 2 DHT readings
|
||||||
/*-------------DHT SENSOR TYPE-------------*/
|
/*-------------DHT SENSOR TYPE-------------*/
|
||||||
|
|||||||
+5
-10
@@ -23,16 +23,11 @@
|
|||||||
|
|
||||||
/*-------------------FASTLED topics & parameters----------------------*/
|
/*-------------------FASTLED topics & parameters----------------------*/
|
||||||
//FASTLED MQTT Subjects
|
//FASTLED MQTT Subjects
|
||||||
#define subjectMQTTtoFASTLED Base_Topic Gateway_Name "/commands/MQTTtoFASTLED"
|
#define subjectMQTTtoFASTLED "/commands/MQTTtoFASTLED"
|
||||||
#define subjectMQTTtoFASTLEDsetled Base_Topic Gateway_Name "/commands/MQTTtoFASTLED/setled" //set only one LED with JSON struct {"led":0-x,"hex":"#000000","blink":true/false}
|
#define subjectMQTTtoFASTLEDsetled "/commands/MQTTtoFASTLED/setled" //set only one LED with JSON struct {"led":0-x,"hex":"#000000","blink":true/false}
|
||||||
#define subjectMQTTtoFASTLEDsetbrightness Base_Topic Gateway_Name "/commands/MQTTtoFASTLED/setbrightness" //set the brightness 0-255
|
#define subjectMQTTtoFASTLEDsetbrightness "/commands/MQTTtoFASTLED/setbrightness" //set the brightness 0-255
|
||||||
#define subjectMQTTtoFASTLEDsetanimation Base_Topic Gateway_Name "/commands/MQTTtoFASTLED/setanimation" //Animation Fire2012 by Mark Kriegsman
|
#define subjectMQTTtoFASTLEDsetanimation "/commands/MQTTtoFASTLED/setanimation" //Animation Fire2012 by Mark Kriegsman
|
||||||
#define subjectGTWFASTLEDtoMQTT Base_Topic Gateway_Name "/FASTLEDtoMQTT" //same color on all LEDs in #RRGGBB
|
#define subjectGTWFASTLEDtoMQTT "/FASTLEDtoMQTT" //same color on all LEDs in #RRGGBB
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// How many leds in your strip?
|
// How many leds in your strip?
|
||||||
#define FASTLED_NUM_LEDS 16
|
#define FASTLED_NUM_LEDS 16
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ extern void setupGPIOInput();
|
|||||||
extern void GPIOInputtoMQTT();
|
extern void GPIOInputtoMQTT();
|
||||||
/*----------------------------USER PARAMETERS-----------------------------*/
|
/*----------------------------USER PARAMETERS-----------------------------*/
|
||||||
/*-------------DEFINE YOUR MQTT PARAMETERS BELOW----------------*/
|
/*-------------DEFINE YOUR MQTT PARAMETERS BELOW----------------*/
|
||||||
#define subjectGPIOInputtoMQTT Base_Topic Gateway_Name "/GPIOInputtoMQTT"
|
#define subjectGPIOInputtoMQTT "/GPIOInputtoMQTT"
|
||||||
#define GPIOInputDebounceDelay 60 //debounce time, increase if there are issues
|
#define GPIOInputDebounceDelay 60 //debounce time, increase if there are issues
|
||||||
|
|
||||||
/*-------------------PIN DEFINITIONS----------------------*/
|
/*-------------------PIN DEFINITIONS----------------------*/
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ extern void setupGPIOKeyCode();
|
|||||||
extern void GPIOKeyCodetoMQTT();
|
extern void GPIOKeyCodetoMQTT();
|
||||||
/*----------------------------USER PARAMETERS-----------------------------*/
|
/*----------------------------USER PARAMETERS-----------------------------*/
|
||||||
/*-------------DEFINE YOUR MQTT PARAMETERS BELOW----------------*/
|
/*-------------DEFINE YOUR MQTT PARAMETERS BELOW----------------*/
|
||||||
#define subjectGPIOKeyCodetoMQTT Base_Topic Gateway_Name "/keycode"
|
#define subjectGPIOKeyCodetoMQTT "/keycode"
|
||||||
#define subjectGPIOKeyCodeStatetoMQTT subjectGPIOKeyCodetoMQTT "/status"
|
#define subjectGPIOKeyCodeStatetoMQTT subjectGPIOKeyCodetoMQTT "/status"
|
||||||
#define GPIOKeyCodeDebounceDelay 60 //debounce time, increase if there are issues
|
#define GPIOKeyCodeDebounceDelay 60 //debounce time, increase if there are issues
|
||||||
|
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ extern void MeasureDistance();
|
|||||||
|
|
||||||
/*----------------------------USER PARAMETERS-----------------------------*/
|
/*----------------------------USER PARAMETERS-----------------------------*/
|
||||||
/*-------------DEFINE YOUR MQTT PARAMETERS BELOW----------------*/
|
/*-------------DEFINE YOUR MQTT PARAMETERS BELOW----------------*/
|
||||||
#define subjectHCSR04 Base_Topic Gateway_Name "/DISTtoMQTT/sr04"
|
#define subjectHCSR04 "/DISTtoMQTT/sr04"
|
||||||
|
|
||||||
/*-------------------PIN DEFINITIONS----------------------*/
|
/*-------------------PIN DEFINITIONS----------------------*/
|
||||||
#if defined(ESP8266)
|
#if defined(ESP8266)
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ extern void setupHCSR501();
|
|||||||
extern void HCSR501toMQTT();
|
extern void HCSR501toMQTT();
|
||||||
/*----------------------------USER PARAMETERS-----------------------------*/
|
/*----------------------------USER PARAMETERS-----------------------------*/
|
||||||
/*-------------DEFINE YOUR MQTT PARAMETERS BELOW----------------*/
|
/*-------------DEFINE YOUR MQTT PARAMETERS BELOW----------------*/
|
||||||
#define subjectHCSR501toMQTT Base_Topic Gateway_Name "/HCSR501toMQTT"
|
#define subjectHCSR501toMQTT "/HCSR501toMQTT"
|
||||||
|
|
||||||
#define TimeBeforeStartHCSR501 60000 //define the time necessary for HC SR501 init
|
#define TimeBeforeStartHCSR501 60000 //define the time necessary for HC SR501 init
|
||||||
|
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ extern void setupINA226();
|
|||||||
extern void INA226toMQTT();
|
extern void INA226toMQTT();
|
||||||
/*----------------------------USER PARAMETERS-----------------------------*/
|
/*----------------------------USER PARAMETERS-----------------------------*/
|
||||||
/*-------------DEFINE YOUR MQTT PARAMETERS BELOW----------------*/
|
/*-------------DEFINE YOUR MQTT PARAMETERS BELOW----------------*/
|
||||||
#define subjectINA226toMQTT Base_Topic Gateway_Name "/INA226toMQTT"
|
#define subjectINA226toMQTT "/INA226toMQTT"
|
||||||
#define TimeBetweenReadingINA226 30000 // time between 2 INA226 readings
|
#define TimeBetweenReadingINA226 30000 // time between 2 INA226 readings
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
+3
-3
@@ -32,9 +32,9 @@ extern void MQTTtoIR(char * topicOri, char * datacallback);
|
|||||||
extern void MQTTtoIR(char * topicOri, JsonObject& RFdata);
|
extern void MQTTtoIR(char * topicOri, JsonObject& RFdata);
|
||||||
/*-------------------IR topics & parameters----------------------*/
|
/*-------------------IR topics & parameters----------------------*/
|
||||||
//IR MQTT Subjects
|
//IR MQTT Subjects
|
||||||
#define subjectGTWIRtoMQTT Base_Topic Gateway_Name "/IRtoMQTT"
|
#define subjectGTWIRtoMQTT "/IRtoMQTT"
|
||||||
#define subjectIRtoMQTT Base_Topic Gateway_Name "/IRtoMQTT"
|
#define subjectIRtoMQTT "/IRtoMQTT"
|
||||||
#define subjectMQTTtoIR Base_Topic Gateway_Name "/commands/MQTTtoIR"
|
#define subjectMQTTtoIR "/commands/MQTTtoIR"
|
||||||
|
|
||||||
// subject monitored to listen traffic processed by other gateways to store data and avoid ntuple
|
// subject monitored to listen traffic processed by other gateways to store data and avoid ntuple
|
||||||
#define subjectMultiGTWIR "+/+/IRtoMQTT"
|
#define subjectMultiGTWIR "+/+/IRtoMQTT"
|
||||||
|
|||||||
+3
-3
@@ -31,9 +31,9 @@ extern void LORAtoMQTT();
|
|||||||
extern void MQTTtoLORA(char * topicOri, char * datacallback);
|
extern void MQTTtoLORA(char * topicOri, char * datacallback);
|
||||||
extern void MQTTtoLORA(char * topicOri, JsonObject& RFdata);
|
extern void MQTTtoLORA(char * topicOri, JsonObject& RFdata);
|
||||||
/*----------------------LORA topics & parameters-------------------------*/
|
/*----------------------LORA topics & parameters-------------------------*/
|
||||||
#define subjectLORAtoMQTT Base_Topic Gateway_Name "/LORAtoMQTT"
|
#define subjectLORAtoMQTT "/LORAtoMQTT"
|
||||||
#define subjectMQTTtoLORA Base_Topic Gateway_Name "/commands/MQTTtoLORA"
|
#define subjectMQTTtoLORA "/commands/MQTTtoLORA"
|
||||||
#define subjectGTWLORAtoMQTT Base_Topic Gateway_Name "/LORAtoMQTT"
|
#define subjectGTWLORAtoMQTT "/LORAtoMQTT"
|
||||||
|
|
||||||
//Default parameters used when the parameters are not set in the json data
|
//Default parameters used when the parameters are not set in the json data
|
||||||
#define LORA_BAND 868E6
|
#define LORA_BAND 868E6
|
||||||
|
|||||||
+2
-2
@@ -31,8 +31,8 @@ extern void MQTTtoONOFF(char * topicOri, char * datacallback);
|
|||||||
extern void MQTTtoONOFF(char * topicOri, JsonObject& RFdata);
|
extern void MQTTtoONOFF(char * topicOri, JsonObject& RFdata);
|
||||||
/*----------------------------USER PARAMETERS-----------------------------*/
|
/*----------------------------USER PARAMETERS-----------------------------*/
|
||||||
/*-------------DEFINE YOUR MQTT PARAMETERS BELOW----------------*/
|
/*-------------DEFINE YOUR MQTT PARAMETERS BELOW----------------*/
|
||||||
#define subjectMQTTtoONOFF Base_Topic Gateway_Name "/commands/MQTTtoONOFF"
|
#define subjectMQTTtoONOFF "/commands/MQTTtoONOFF"
|
||||||
#define subjectGTWONOFFtoMQTT Base_Topic Gateway_Name "/ONOFFtoMQTT"
|
#define subjectGTWONOFFtoMQTT "/ONOFFtoMQTT"
|
||||||
|
|
||||||
#define ONKey "setON"
|
#define ONKey "setON"
|
||||||
#define OFFKey "setOFF"
|
#define OFFKey "setOFF"
|
||||||
|
|||||||
+9
-9
@@ -49,9 +49,9 @@
|
|||||||
#endif
|
#endif
|
||||||
/*-------------------RF topics & parameters----------------------*/
|
/*-------------------RF topics & parameters----------------------*/
|
||||||
//433Mhz MQTT Subjects and keys
|
//433Mhz MQTT Subjects and keys
|
||||||
#define subjectMQTTtoRF Base_Topic Gateway_Name "/commands/MQTTto433"
|
#define subjectMQTTtoRF "/commands/MQTTto433"
|
||||||
#define subjectRFtoMQTT Base_Topic Gateway_Name "/433toMQTT"
|
#define subjectRFtoMQTT "/433toMQTT"
|
||||||
#define subjectGTWRFtoMQTT Base_Topic Gateway_Name "/433toMQTT"
|
#define subjectGTWRFtoMQTT "/433toMQTT"
|
||||||
#define RFprotocolKey "433_" // protocol will be defined if a subject contains RFprotocolKey followed by a value of 1 digit
|
#define RFprotocolKey "433_" // protocol will be defined if a subject contains RFprotocolKey followed by a value of 1 digit
|
||||||
#define RFbitsKey "RFBITS_" // bits will be defined if a subject contains RFbitsKey followed by a value of 2 digits
|
#define RFbitsKey "RFBITS_" // bits will be defined if a subject contains RFbitsKey followed by a value of 2 digits
|
||||||
#define repeatRFwMQTT false // do we repeat a received signal by using mqtt with RF gateway
|
#define repeatRFwMQTT false // do we repeat a received signal by using mqtt with RF gateway
|
||||||
@@ -73,9 +73,9 @@ RF supported protocols
|
|||||||
|
|
||||||
/*-------------------RF2 topics & parameters----------------------*/
|
/*-------------------RF2 topics & parameters----------------------*/
|
||||||
//433Mhz newremoteswitch MQTT Subjects and keys
|
//433Mhz newremoteswitch MQTT Subjects and keys
|
||||||
#define subjectMQTTtoRF2 Base_Topic Gateway_Name "/commands/MQTTtoRF2"
|
#define subjectMQTTtoRF2 "/commands/MQTTtoRF2"
|
||||||
#define subjectRF2toMQTT Base_Topic Gateway_Name "/RF2toMQTT"
|
#define subjectRF2toMQTT "/RF2toMQTT"
|
||||||
#define subjectGTWRF2toMQTT Base_Topic Gateway_Name "/433toMQTT"
|
#define subjectGTWRF2toMQTT "/433toMQTT"
|
||||||
#define RF2codeKey "ADDRESS_" // code will be defined if a subject contains RF2codeKey followed by a value of 7 digits
|
#define RF2codeKey "ADDRESS_" // code will be defined if a subject contains RF2codeKey followed by a value of 7 digits
|
||||||
#define RF2periodKey "PERIOD_" // period will be defined if a subject contains RF2periodKey followed by a value of 3 digits
|
#define RF2periodKey "PERIOD_" // period will be defined if a subject contains RF2periodKey followed by a value of 3 digits
|
||||||
#define RF2unitKey "UNIT_" // number of your unit value will be defined if a subject contains RF2unitKey followed by a value of 1-2 digits
|
#define RF2unitKey "UNIT_" // number of your unit value will be defined if a subject contains RF2unitKey followed by a value of 1-2 digits
|
||||||
@@ -84,9 +84,9 @@ RF supported protocols
|
|||||||
|
|
||||||
/*-------------------ESPPiLight topics & parameters----------------------*/
|
/*-------------------ESPPiLight topics & parameters----------------------*/
|
||||||
//433Mhz Pilight MQTT Subjects and keys
|
//433Mhz Pilight MQTT Subjects and keys
|
||||||
#define subjectMQTTtoPilight Base_Topic Gateway_Name "/commands/MQTTtoPilight"
|
#define subjectMQTTtoPilight "/commands/MQTTtoPilight"
|
||||||
#define subjectPilighttoMQTT Base_Topic Gateway_Name "/PilighttoMQTT"
|
#define subjectPilighttoMQTT "/PilighttoMQTT"
|
||||||
#define subjectGTWPilighttoMQTT Base_Topic Gateway_Name "/PilighttoMQTT"
|
#define subjectGTWPilighttoMQTT "/PilighttoMQTT"
|
||||||
#define PilightRAW "RAW"
|
#define PilightRAW "RAW"
|
||||||
#define repeatPilightwMQTT false // do we repeat a received signal by using mqtt with Pilight gateway
|
#define repeatPilightwMQTT false // do we repeat a received signal by using mqtt with Pilight gateway
|
||||||
|
|
||||||
|
|||||||
+3
-3
@@ -33,13 +33,13 @@ extern void MQTTtoRFM69(char * topicOri, JsonObject& RFdata);
|
|||||||
/*----------------------RFM69 topics & parameters -------------------------*/
|
/*----------------------RFM69 topics & parameters -------------------------*/
|
||||||
// Topic where the message from RFM69 will be published by the gateway,
|
// Topic where the message from RFM69 will be published by the gateway,
|
||||||
// appended with the nodeID of the sender
|
// appended with the nodeID of the sender
|
||||||
#define subjectRFM69toMQTT Base_Topic Gateway_Name "/RFM69toMQTT"
|
#define subjectRFM69toMQTT "/RFM69toMQTT"
|
||||||
|
|
||||||
// Topic subscribed by the gateway. Messages received will be sent to RFM69
|
// Topic subscribed by the gateway. Messages received will be sent to RFM69
|
||||||
#define subjectMQTTtoRFM69 Base_Topic Gateway_Name "/commands/MQTTtoRFM69"
|
#define subjectMQTTtoRFM69 "/commands/MQTTtoRFM69"
|
||||||
#define RFM69receiverKey "RCV_" // receiver id will be defined if a subject contains RFM69receiverKey followed by a value of 3 digits
|
#define RFM69receiverKey "RCV_" // receiver id will be defined if a subject contains RFM69receiverKey followed by a value of 3 digits
|
||||||
// On reception of an ack from RFM69, the message that has been sent is published here
|
// On reception of an ack from RFM69, the message that has been sent is published here
|
||||||
#define subjectGTWRFM69toMQTT Base_Topic Gateway_Name "/RFM69toMQTT/acked"
|
#define subjectGTWRFM69toMQTT "/RFM69toMQTT/acked"
|
||||||
#define defaultRFM69ReceiverId 99
|
#define defaultRFM69ReceiverId 99
|
||||||
|
|
||||||
// Default values
|
// Default values
|
||||||
|
|||||||
+4
-4
@@ -33,10 +33,10 @@ extern void MQTTtoSRFB(char * topicOri, char * datacallback);
|
|||||||
extern void MQTTtoSRFB(char * topicOri, JsonObject& RFdata);
|
extern void MQTTtoSRFB(char * topicOri, JsonObject& RFdata);
|
||||||
/*-------------------RF topics & parameters----------------------*/
|
/*-------------------RF topics & parameters----------------------*/
|
||||||
//433Mhz MQTT Subjects and keys
|
//433Mhz MQTT Subjects and keys
|
||||||
#define subjectMQTTtoSRFB Base_Topic Gateway_Name "/commands/MQTTtoSRFB"
|
#define subjectMQTTtoSRFB "/commands/MQTTtoSRFB"
|
||||||
#define subjectMQTTtoSRFBRaw Base_Topic Gateway_Name "/commands/MQTTtoSRFB/Raw"
|
#define subjectMQTTtoSRFBRaw "/commands/MQTTtoSRFB/Raw"
|
||||||
#define subjectSRFBtoMQTT Base_Topic Gateway_Name "/SRFBtoMQTT"
|
#define subjectSRFBtoMQTT "/SRFBtoMQTT"
|
||||||
#define subjectGTWSRFBtoMQTT Base_Topic Gateway_Name "/SRFBtoMQTT"
|
#define subjectGTWSRFBtoMQTT "/SRFBtoMQTT"
|
||||||
#define SRFBRptKey "RPT_"
|
#define SRFBRptKey "RPT_"
|
||||||
#define SRFBmaxipulselengthKey "Thigh_"
|
#define SRFBmaxipulselengthKey "Thigh_"
|
||||||
#define SRFBminipulselengthKey "Tlow_"
|
#define SRFBminipulselengthKey "Tlow_"
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ extern void TSL2561toMQTT();
|
|||||||
#define TimeBetweenReadingtsl2561 30000
|
#define TimeBetweenReadingtsl2561 30000
|
||||||
/*----------------------------USER PARAMETERS-----------------------------*/
|
/*----------------------------USER PARAMETERS-----------------------------*/
|
||||||
/*-------------DEFINE YOUR MQTT PARAMETERS BELOW----------------*/
|
/*-------------DEFINE YOUR MQTT PARAMETERS BELOW----------------*/
|
||||||
#define subjectTSL12561toMQTT Base_Topic Gateway_Name "/LIGHTtoMQTT"
|
#define subjectTSL12561toMQTT "/LIGHTtoMQTT"
|
||||||
|
|
||||||
//Time used to wait for an interval before resending measured values
|
//Time used to wait for an interval before resending measured values
|
||||||
unsigned long timetsl2561 = 0;
|
unsigned long timetsl2561 = 0;
|
||||||
|
|||||||
@@ -38,7 +38,6 @@ extern void createDiscovery(char * sensor_type,
|
|||||||
|
|
||||||
#define discovery_Topic "homeassistant"
|
#define discovery_Topic "homeassistant"
|
||||||
|
|
||||||
#define DEVICENAME "OpenMQTTGateway " Gateway_Name
|
|
||||||
#define DEVICEMANUFACTURER "OMG_community"
|
#define DEVICEMANUFACTURER "OMG_community"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
+133
-64
@@ -204,7 +204,7 @@ void trc(String msg){
|
|||||||
digitalWrite(led_info, HIGH);
|
digitalWrite(led_info, HIGH);
|
||||||
#endif
|
#endif
|
||||||
#ifdef subjectTRACEtoMQTT
|
#ifdef subjectTRACEtoMQTT
|
||||||
pub(subjectTRACEtoMQTT,msg);
|
pubMQTT(subjectTRACEtoMQTT,msg);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -214,7 +214,7 @@ void trc(int msg){
|
|||||||
digitalWrite(led_info, HIGH);
|
digitalWrite(led_info, HIGH);
|
||||||
#endif
|
#endif
|
||||||
#ifdef subjectTRACEtoMQTT
|
#ifdef subjectTRACEtoMQTT
|
||||||
pub(subjectTRACEtoMQTT,msg);
|
pubMQTT(subjectTRACEtoMQTT,msg);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -224,7 +224,7 @@ void trc(unsigned int msg){
|
|||||||
digitalWrite(led_info, HIGH);
|
digitalWrite(led_info, HIGH);
|
||||||
#endif
|
#endif
|
||||||
#ifdef subjectTRACEtoMQTT
|
#ifdef subjectTRACEtoMQTT
|
||||||
pub(subjectTRACEtoMQTT,msg);
|
pubMQTT(subjectTRACEtoMQTT,msg);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -234,7 +234,7 @@ void trc(long msg){
|
|||||||
digitalWrite(led_info, HIGH);
|
digitalWrite(led_info, HIGH);
|
||||||
#endif
|
#endif
|
||||||
#ifdef subjectTRACEtoMQTT
|
#ifdef subjectTRACEtoMQTT
|
||||||
pub(subjectTRACEtoMQTT,msg);
|
pubMQTT(subjectTRACEtoMQTT,msg);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -244,7 +244,7 @@ void trc(unsigned long msg){
|
|||||||
digitalWrite(led_info, HIGH);
|
digitalWrite(led_info, HIGH);
|
||||||
#endif
|
#endif
|
||||||
#ifdef subjectTRACEtoMQTT
|
#ifdef subjectTRACEtoMQTT
|
||||||
pub(subjectTRACEtoMQTT,msg);
|
pubMQTT(subjectTRACEtoMQTT,msg);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -254,7 +254,7 @@ void trc(double msg){
|
|||||||
digitalWrite(led_info, HIGH);
|
digitalWrite(led_info, HIGH);
|
||||||
#endif
|
#endif
|
||||||
#ifdef subjectTRACEtoMQTT
|
#ifdef subjectTRACEtoMQTT
|
||||||
pub(subjectTRACEtoMQTT,msg);
|
pubMQTT(subjectTRACEtoMQTT,msg);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -264,25 +264,25 @@ void trc(float msg){
|
|||||||
digitalWrite(led_info, HIGH);
|
digitalWrite(led_info, HIGH);
|
||||||
#endif
|
#endif
|
||||||
#ifdef subjectTRACEtoMQTT
|
#ifdef subjectTRACEtoMQTT
|
||||||
pub(subjectTRACEtoMQTT,msg);
|
pubMQTT(subjectTRACEtoMQTT,msg);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void trc(JsonObject& data){
|
void trc(JsonObject& data){
|
||||||
char JSONmessageBuffer[JSON_MSG_BUFFER];
|
char JSONmessageBuffer[JSON_MSG_BUFFER];
|
||||||
data.printTo(JSONmessageBuffer, sizeof(JSONmessageBuffer));
|
data.printTo(JSONmessageBuffer, sizeof(JSONmessageBuffer));
|
||||||
trc(JSONmessageBuffer);
|
trc(JSONmessageBuffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
void pub(char * topic, char * payload, bool retainFlag){
|
void pub(char * topicori, char * payload, bool retainFlag){
|
||||||
client.publish(topic, payload, retainFlag);
|
String topic = String(mqtt_topic) + String(topicori);
|
||||||
|
client.publish((char *)topic.c_str(), payload, retainFlag);
|
||||||
}
|
}
|
||||||
|
|
||||||
void pub(char * topicori, JsonObject& data){
|
void pub(char * topicori, JsonObject& data){
|
||||||
if(client.connected()) {
|
if(client.connected()) {
|
||||||
digitalWrite(led_receive, HIGH);
|
digitalWrite(led_receive, HIGH);
|
||||||
|
String topic = String(mqtt_topic) + String(topicori);
|
||||||
String topic = topicori;
|
|
||||||
#ifdef valueAsASubject
|
#ifdef valueAsASubject
|
||||||
unsigned long value = data["value"];
|
unsigned long value = data["value"];
|
||||||
if (value != 0){
|
if (value != 0){
|
||||||
@@ -296,7 +296,7 @@ void pub(char * topicori, JsonObject& data){
|
|||||||
trc(topic);
|
trc(topic);
|
||||||
data.printTo(JSONmessageBuffer, sizeof(JSONmessageBuffer));
|
data.printTo(JSONmessageBuffer, sizeof(JSONmessageBuffer));
|
||||||
trc(JSONmessageBuffer);
|
trc(JSONmessageBuffer);
|
||||||
pub(topic, JSONmessageBuffer);
|
pubMQTT(topic, JSONmessageBuffer);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef simplePublishing
|
#ifdef simplePublishing
|
||||||
@@ -310,22 +310,22 @@ void pub(char * topicori, JsonObject& data){
|
|||||||
trc(p.key);
|
trc(p.key);
|
||||||
trc(p.value.as<unsigned long>());
|
trc(p.value.as<unsigned long>());
|
||||||
if (strcmp(p.key, "value") == 0){ // if data is a value we don't integrate the name into the topic
|
if (strcmp(p.key, "value") == 0){ // if data is a value we don't integrate the name into the topic
|
||||||
pub(topic,p.value.as<unsigned long>());
|
pubMQTT(topic,p.value.as<unsigned long>());
|
||||||
}else{ // if data is not a value we integrate the name into the topic
|
}else{ // if data is not a value we integrate the name into the topic
|
||||||
pub(topic + "/" + String(p.key),p.value.as<unsigned long>());
|
pubMQTT(topic + "/" + String(p.key),p.value.as<unsigned long>());
|
||||||
}
|
}
|
||||||
}else if (p.value.is<int>()) {
|
}else if (p.value.is<int>()) {
|
||||||
trc(p.key);
|
trc(p.key);
|
||||||
trc(p.value.as<int>());
|
trc(p.value.as<int>());
|
||||||
pub(topic + "/" + String(p.key),p.value.as<int>());
|
pubMQTT(topic + "/" + String(p.key),p.value.as<int>());
|
||||||
} else if (p.value.is<float>()) {
|
} else if (p.value.is<float>()) {
|
||||||
trc(p.key);
|
trc(p.key);
|
||||||
trc(p.value.as<float>());
|
trc(p.value.as<float>());
|
||||||
pub(topic + "/" + String(p.key),p.value.as<float>());
|
pubMQTT(topic + "/" + String(p.key),p.value.as<float>());
|
||||||
} else if (p.value.is<char*>()) {
|
} else if (p.value.is<char*>()) {
|
||||||
trc(p.key);
|
trc(p.key);
|
||||||
trc(p.value.as<const char*>());
|
trc(p.value.as<const char*>());
|
||||||
pub(topic + "/" + String(p.key),p.value.as<const char*>());
|
pubMQTT(topic + "/" + String(p.key),p.value.as<const char*>());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -334,76 +334,105 @@ void pub(char * topicori, JsonObject& data){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void pub(char * topic, char * payload){
|
void pub(char * topicori, char * payload){
|
||||||
|
if(client.connected()) {
|
||||||
|
String topic = String(mqtt_topic) + String(topicori);
|
||||||
|
trc(F("Pub ack into:"));
|
||||||
|
trc(topic);
|
||||||
|
pubMQTT(topic, payload);
|
||||||
|
}else{
|
||||||
|
trc("client not connected can't pub");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void pub_custom_topic(char * topicori, JsonObject& data){
|
||||||
|
if(client.connected()) {
|
||||||
|
char JSONmessageBuffer[JSON_MSG_BUFFER];
|
||||||
|
trc(F("Pub json discovery into:"));
|
||||||
|
trc(topicori);
|
||||||
|
data.printTo(JSONmessageBuffer, sizeof(JSONmessageBuffer));
|
||||||
|
trc(JSONmessageBuffer);
|
||||||
|
pubMQTT(topicori, JSONmessageBuffer);
|
||||||
|
}else{
|
||||||
|
trc("client not connected can't pub");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void pubMQTT(char * topic, char * payload){
|
||||||
client.publish(topic, payload);
|
client.publish(topic, payload);
|
||||||
}
|
}
|
||||||
|
|
||||||
void pub(String topic, char * payload){
|
void pubMQTT(String topic, char * payload){
|
||||||
client.publish((char *)topic.c_str(),payload);
|
client.publish((char *)topic.c_str(),payload);
|
||||||
}
|
}
|
||||||
|
|
||||||
void pub(char * topic, unsigned long payload){
|
void pubMQTT(char * topic, unsigned long payload){
|
||||||
char val[11];
|
char val[11];
|
||||||
sprintf(val, "%lu", payload);
|
sprintf(val, "%lu", payload);
|
||||||
client.publish(topic,val);
|
client.publish(topic,val);
|
||||||
}
|
}
|
||||||
|
|
||||||
void pub(char * topic, String payload){
|
void pubMQTT(char * topic, String payload){
|
||||||
client.publish(topic,(char *)payload.c_str());
|
client.publish(topic,(char *)payload.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
void pub(String topic, String payload){
|
void pubMQTT(String topic, String payload){
|
||||||
client.publish((char *)topic.c_str(),(char *)payload.c_str());
|
client.publish((char *)topic.c_str(),(char *)payload.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
void pub(String topic, int payload){
|
void pubMQTT(String topic, int payload){
|
||||||
char val[12];
|
char val[12];
|
||||||
sprintf(val, "%d", payload);
|
sprintf(val, "%d", payload);
|
||||||
client.publish((char *)topic.c_str(),val);
|
client.publish((char *)topic.c_str(),val);
|
||||||
}
|
}
|
||||||
|
|
||||||
void pub(String topic, float payload){
|
void pubMQTT(String topic, float payload){
|
||||||
char val[12];
|
char val[12];
|
||||||
dtostrf(payload,3,1,val);
|
dtostrf(payload,3,1,val);
|
||||||
client.publish((char *)topic.c_str(),val);
|
client.publish((char *)topic.c_str(),val);
|
||||||
}
|
}
|
||||||
|
|
||||||
void pub(char * topic, float payload){
|
void pubMQTT(char * topic, float payload){
|
||||||
char val[12];
|
char val[12];
|
||||||
dtostrf(payload,3,1,val);
|
dtostrf(payload,3,1,val);
|
||||||
client.publish(topic,val);
|
client.publish(topic,val);
|
||||||
}
|
}
|
||||||
|
|
||||||
void pub(char * topic, int payload){
|
void pubMQTT(char * topic, int payload){
|
||||||
char val[6];
|
char val[6];
|
||||||
sprintf(val, "%d", payload);
|
sprintf(val, "%d", payload);
|
||||||
client.publish(topic,val);
|
client.publish(topic,val);
|
||||||
}
|
}
|
||||||
|
|
||||||
void pub(char * topic, unsigned int payload){
|
void pubMQTT(char * topic, unsigned int payload){
|
||||||
char val[6];
|
char val[6];
|
||||||
sprintf(val, "%u", payload);
|
sprintf(val, "%u", payload);
|
||||||
client.publish(topic,val);
|
client.publish(topic,val);
|
||||||
}
|
}
|
||||||
|
|
||||||
void pub(char * topic, long payload){
|
void pubMQTT(char * topic, long payload){
|
||||||
char val[11];
|
char val[11];
|
||||||
sprintf(val, "%l", payload);
|
sprintf(val, "%l", payload);
|
||||||
client.publish(topic,val);
|
client.publish(topic,val);
|
||||||
}
|
}
|
||||||
|
|
||||||
void pub(char * topic, double payload){
|
void pubMQTT(char * topic, double payload){
|
||||||
char val[16];
|
char val[16];
|
||||||
sprintf(val, "%d", payload);
|
sprintf(val, "%d", payload);
|
||||||
client.publish(topic,val);
|
client.publish(topic,val);
|
||||||
}
|
}
|
||||||
|
|
||||||
void pub(String topic, unsigned long payload){
|
void pubMQTT(String topic, unsigned long payload){
|
||||||
char val[11];
|
char val[11];
|
||||||
sprintf(val, "%lu", payload);
|
sprintf(val, "%lu", payload);
|
||||||
client.publish((char *)topic.c_str(),val);
|
client.publish((char *)topic.c_str(),val);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char * catToMainTopic(char * toAdd){
|
||||||
|
String resultTopic = String(mqtt_topic) + String(toAdd);
|
||||||
|
return (char *)resultTopic.c_str();
|
||||||
|
}
|
||||||
|
|
||||||
void reconnect() {
|
void reconnect() {
|
||||||
|
|
||||||
#ifndef ESPWifiManualSetup
|
#ifndef ESPWifiManualSetup
|
||||||
@@ -415,22 +444,18 @@ void reconnect() {
|
|||||||
// Loop until we're reconnected
|
// Loop until we're reconnected
|
||||||
while (!client.connected()) {
|
while (!client.connected()) {
|
||||||
trc(F("MQTT connection...")); //F function enable to decrease sram usage
|
trc(F("MQTT connection...")); //F function enable to decrease sram usage
|
||||||
if (client.connect(Gateway_Name, mqtt_user, mqtt_pass, will_Topic, will_QoS, will_Retain, will_Message)) {
|
if (client.connect(gateway_name, mqtt_user, mqtt_pass, will_Topic, will_QoS, will_Retain, will_Message)) {
|
||||||
trc(F("Connected to broker"));
|
trc(F("Connected to broker"));
|
||||||
failure_number = 0;
|
failure_number = 0;
|
||||||
// Once connected, publish an announcement...
|
// Once connected, publish an announcement...
|
||||||
pub(will_Topic,Gateway_AnnouncementMsg,will_Retain);
|
pub(will_Topic,Gateway_AnnouncementMsg,will_Retain);
|
||||||
// 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(subjectMQTTtoX)) {
|
if (client.subscribe(catToMainTopic(subjectMQTTtoX))) {
|
||||||
#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
|
||||||
#ifdef ZgatewayRF315
|
|
||||||
client.subscribe(subjectMultiGTWRF315);// 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
|
|
||||||
#ifdef ZgatewayIR
|
#ifdef ZgatewayIR
|
||||||
client.subscribe(subjectMultiGTWIR);// 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(subjectMultiGTWIR);// 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
|
||||||
@@ -450,7 +475,7 @@ void reconnect() {
|
|||||||
}
|
}
|
||||||
trc(F("failed, rc="));
|
trc(F("failed, rc="));
|
||||||
trc(client.state());
|
trc(client.state());
|
||||||
delay(5000);
|
delay(10000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -473,6 +498,11 @@ void callback(char* topic, byte* payload, unsigned int length) {
|
|||||||
free(p);
|
free(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void setup_parameters()
|
||||||
|
{
|
||||||
|
strcat(mqtt_topic,gateway_name);
|
||||||
|
}
|
||||||
|
|
||||||
void setup()
|
void setup()
|
||||||
{
|
{
|
||||||
//Launch serial for debugging purposes
|
//Launch serial for debugging purposes
|
||||||
@@ -563,6 +593,8 @@ void setup()
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
setup_parameters();
|
||||||
|
|
||||||
client.setCallback(callback);
|
client.setCallback(callback);
|
||||||
|
|
||||||
delay(1500);
|
delay(1500);
|
||||||
@@ -632,7 +664,7 @@ void setup()
|
|||||||
trc(F("MQTT_MAX_PACKET_SIZE"));
|
trc(F("MQTT_MAX_PACKET_SIZE"));
|
||||||
trc(MQTT_MAX_PACKET_SIZE);
|
trc(MQTT_MAX_PACKET_SIZE);
|
||||||
#if defined(ESP8266) || defined(ESP32) || defined(__AVR_ATmega2560__) || defined(__AVR_ATmega1280__)
|
#if defined(ESP8266) || defined(ESP32) || defined(__AVR_ATmega2560__) || defined(__AVR_ATmega1280__)
|
||||||
if(MQTT_MAX_PACKET_SIZE == 128) trc(F("WRONG PUBSUBCLIENT LIBRARY USED PLEASE INSTALL THE ONE FROM OMG LIB FOLDER"));
|
if(MQTT_MAX_PACKET_SIZE == 128) trc(F("WRONG PUBSUBCLIENT LIBRARY USED PLEASE INSTALL THE ONE FROM RELEASE PAGE"));
|
||||||
#endif
|
#endif
|
||||||
trc(F("Setup OpenMQTTGateway end"));
|
trc(F("Setup OpenMQTTGateway end"));
|
||||||
}
|
}
|
||||||
@@ -693,14 +725,26 @@ void checkButton(){ // code from tzapu/wifimanager examples
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
void eraseAndRestart(){
|
||||||
|
#if defined(ESP8266)
|
||||||
|
WiFi.disconnect(true);
|
||||||
|
#else
|
||||||
|
WiFi.disconnect(true,true);
|
||||||
|
#endif
|
||||||
|
trc("Formatting requested, result:");
|
||||||
|
trc(SPIFFS.format());
|
||||||
|
#if defined(ESP8266)
|
||||||
|
ESP.reset();
|
||||||
|
#else
|
||||||
|
ESP.restart();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
void setup_wifimanager(bool reset_settings){
|
void setup_wifimanager(bool reset_settings){
|
||||||
|
|
||||||
pinMode(TRIGGER_PIN, INPUT_PULLUP);
|
pinMode(TRIGGER_PIN, INPUT_PULLUP);
|
||||||
if(reset_settings) {
|
|
||||||
trc("Formatting requested, result:");
|
if(reset_settings) eraseAndRestart();
|
||||||
trc(SPIFFS.format());
|
|
||||||
}
|
|
||||||
|
|
||||||
WiFi.mode(WIFI_STA);
|
WiFi.mode(WIFI_STA);
|
||||||
|
|
||||||
@@ -730,10 +774,12 @@ void setup_wifimanager(bool reset_settings){
|
|||||||
json.printTo(Serial);
|
json.printTo(Serial);
|
||||||
if (json.success()) {
|
if (json.success()) {
|
||||||
trc(F("\nparsed json"));
|
trc(F("\nparsed json"));
|
||||||
strcpy(mqtt_server, json["mqtt_server"]);
|
if (json.containsKey("mqtt_server")) strcpy(mqtt_server, json["mqtt_server"]);
|
||||||
strcpy(mqtt_port, json["mqtt_port"]);
|
if (json.containsKey("mqtt_port")) strcpy(mqtt_port, json["mqtt_port"]);
|
||||||
strcpy(mqtt_user, json["mqtt_user"]);
|
if (json.containsKey("mqtt_user")) strcpy(mqtt_user, json["mqtt_user"]);
|
||||||
strcpy(mqtt_pass, json["mqtt_pass"]);
|
if (json.containsKey("mqtt_pass")) strcpy(mqtt_pass, json["mqtt_pass"]);
|
||||||
|
if (json.containsKey("mqtt_topic")) strcpy(mqtt_topic, json["mqtt_topic"]);
|
||||||
|
if (json.containsKey("gateway_name")) strcpy(gateway_name, json["gateway_name"]);
|
||||||
} else {
|
} else {
|
||||||
trc(F("failed to load json config"));
|
trc(F("failed to load json config"));
|
||||||
}
|
}
|
||||||
@@ -743,11 +789,13 @@ void setup_wifimanager(bool reset_settings){
|
|||||||
// The extra parameters to be configured (can be either global or just in the setup)
|
// The extra parameters to be configured (can be either global or just in the setup)
|
||||||
// After connecting, parameter.getValue() will get you the configured value
|
// After connecting, parameter.getValue() will get you the configured value
|
||||||
// id/name placeholder/prompt default length
|
// id/name placeholder/prompt default length
|
||||||
WiFiManagerParameter custom_mqtt_server("server", "mqtt server", mqtt_server, 40);
|
WiFiManagerParameter custom_mqtt_server("server", "mqtt server", mqtt_server, parameters_size);
|
||||||
WiFiManagerParameter custom_mqtt_port("port", "mqtt port", mqtt_port, 6);
|
WiFiManagerParameter custom_mqtt_port("port", "mqtt port", mqtt_port, 6);
|
||||||
WiFiManagerParameter custom_mqtt_user("user", "mqtt user", mqtt_user, 20);
|
WiFiManagerParameter custom_mqtt_user("user", "mqtt user", mqtt_user, parameters_size);
|
||||||
WiFiManagerParameter custom_mqtt_pass("pass", "mqtt pass", mqtt_pass, 30);
|
WiFiManagerParameter custom_mqtt_pass("pass", "mqtt pass", mqtt_pass, parameters_size);
|
||||||
|
WiFiManagerParameter custom_mqtt_topic("topic", "mqtt base topic", mqtt_topic, mqtt_topic_max_size);
|
||||||
|
WiFiManagerParameter custom_gateway_name("name", "gateway name", gateway_name, parameters_size * 2);
|
||||||
|
|
||||||
//WiFiManager
|
//WiFiManager
|
||||||
//Local intialization. Once its business is done, there is no need to keep it around
|
//Local intialization. Once its business is done, there is no need to keep it around
|
||||||
|
|
||||||
@@ -766,16 +814,9 @@ void setup_wifimanager(bool reset_settings){
|
|||||||
wifiManager.addParameter(&custom_mqtt_port);
|
wifiManager.addParameter(&custom_mqtt_port);
|
||||||
wifiManager.addParameter(&custom_mqtt_user);
|
wifiManager.addParameter(&custom_mqtt_user);
|
||||||
wifiManager.addParameter(&custom_mqtt_pass);
|
wifiManager.addParameter(&custom_mqtt_pass);
|
||||||
|
wifiManager.addParameter(&custom_gateway_name);
|
||||||
|
wifiManager.addParameter(&custom_mqtt_topic);
|
||||||
|
|
||||||
if(reset_settings){
|
|
||||||
wifiManager.resetSettings();
|
|
||||||
wifiManager.erase();
|
|
||||||
#if defined(ESP8266)
|
|
||||||
ESP.reset();
|
|
||||||
#else
|
|
||||||
ESP.restart();
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
//set minimum quality of signal so it ignores AP's under that quality
|
//set minimum quality of signal so it ignores AP's under that quality
|
||||||
wifiManager.setMinimumSignalQuality(MinimumWifiSignalQuality);
|
wifiManager.setMinimumSignalQuality(MinimumWifiSignalQuality);
|
||||||
|
|
||||||
@@ -802,7 +843,9 @@ void setup_wifimanager(bool reset_settings){
|
|||||||
strcpy(mqtt_port, custom_mqtt_port.getValue());
|
strcpy(mqtt_port, custom_mqtt_port.getValue());
|
||||||
strcpy(mqtt_user, custom_mqtt_user.getValue());
|
strcpy(mqtt_user, custom_mqtt_user.getValue());
|
||||||
strcpy(mqtt_pass, custom_mqtt_pass.getValue());
|
strcpy(mqtt_pass, custom_mqtt_pass.getValue());
|
||||||
|
strcpy(mqtt_topic, custom_mqtt_topic.getValue());
|
||||||
|
strcpy(gateway_name, custom_gateway_name.getValue());
|
||||||
|
|
||||||
//save the custom parameters to FS
|
//save the custom parameters to FS
|
||||||
if (shouldSaveConfig) {
|
if (shouldSaveConfig) {
|
||||||
trc(F("saving config"));
|
trc(F("saving config"));
|
||||||
@@ -812,6 +855,8 @@ void setup_wifimanager(bool reset_settings){
|
|||||||
json["mqtt_port"] = mqtt_port;
|
json["mqtt_port"] = mqtt_port;
|
||||||
json["mqtt_user"] = mqtt_user;
|
json["mqtt_user"] = mqtt_user;
|
||||||
json["mqtt_pass"] = mqtt_pass;
|
json["mqtt_pass"] = mqtt_pass;
|
||||||
|
json["mqtt_topic"] = mqtt_topic;
|
||||||
|
json["gateway_name"] = gateway_name;
|
||||||
|
|
||||||
File configFile = SPIFFS.open("/config.json", "w");
|
File configFile = SPIFFS.open("/config.json", "w");
|
||||||
if (!configFile) {
|
if (!configFile) {
|
||||||
@@ -1227,7 +1272,7 @@ void receivingMQTT(char * topicOri, char * datacallback) {
|
|||||||
#ifdef ZactuatorFASTLED
|
#ifdef ZactuatorFASTLED
|
||||||
MQTTtoFASTLEDJSON(topicOri, jsondata);
|
MQTTtoFASTLEDJSON(topicOri, jsondata);
|
||||||
#endif
|
#endif
|
||||||
|
MQTTtoSYS(topicOri, jsondata);
|
||||||
|
|
||||||
} else { // not a json object --> simple decoding
|
} else { // not a json object --> simple decoding
|
||||||
#ifdef simpleReceiving
|
#ifdef simpleReceiving
|
||||||
@@ -1269,3 +1314,27 @@ void receivingMQTT(char * topicOri, char * datacallback) {
|
|||||||
//YELLOW OFF
|
//YELLOW OFF
|
||||||
digitalWrite(led_send, HIGH);
|
digitalWrite(led_send, HIGH);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MQTTtoSYS(char * topicOri, JsonObject& SYSdata) { // json object decoding
|
||||||
|
if (strstr(topicOri,catToMainTopic(subjectMQTTtoSYSset)) != NULL){
|
||||||
|
trc(F("MQTTtoSYS json set"));
|
||||||
|
#if defined(ESP8266) || defined(ESP32)
|
||||||
|
if (SYSdata.containsKey("cmd")){
|
||||||
|
trc(F("Command"));
|
||||||
|
const char * cmd = SYSdata["cmd"];
|
||||||
|
trc(cmd);
|
||||||
|
if (strstr(cmd,restartCmd) != NULL) {//restart
|
||||||
|
#if defined(ESP8266)
|
||||||
|
ESP.reset();
|
||||||
|
#else
|
||||||
|
ESP.restart();
|
||||||
|
#endif
|
||||||
|
}else if (strstr(cmd,eraseCmd) != NULL) {//erase and restart
|
||||||
|
setup_wifimanager(true);
|
||||||
|
}else{
|
||||||
|
trc(F("wrong command"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
+24
-12
@@ -31,7 +31,7 @@
|
|||||||
#ifndef user_config_h
|
#ifndef user_config_h
|
||||||
#define user_config_h
|
#define user_config_h
|
||||||
/*-------------------VERSION----------------------*/
|
/*-------------------VERSION----------------------*/
|
||||||
#define OMG_VERSION "0.9.2beta"
|
#define OMG_VERSION "0.9.3beta"
|
||||||
|
|
||||||
/*-------------CONFIGURE WIFIMANAGER-------------*/
|
/*-------------CONFIGURE WIFIMANAGER-------------*/
|
||||||
/*
|
/*
|
||||||
@@ -49,6 +49,10 @@
|
|||||||
* Otherwise you can provide these credentials on the web interface after connecting
|
* Otherwise you can provide these credentials on the web interface after connecting
|
||||||
* to the access point with your password (SSID: WifiManager_ssid, password: WifiManager_password)
|
* to the access point with your password (SSID: WifiManager_ssid, password: WifiManager_password)
|
||||||
*/
|
*/
|
||||||
|
#ifndef Gateway_Name
|
||||||
|
#define Gateway_Name "OpenMQTTGateway"
|
||||||
|
#endif
|
||||||
|
#define Base_Topic "home/"
|
||||||
|
|
||||||
#if defined(ESP8266) // for nodemcu, weemos and esp8266
|
#if defined(ESP8266) // for nodemcu, weemos and esp8266
|
||||||
//#define ESPWifiManualSetup true //uncomment you don't want to use wifimanager for your credential settings on ESP
|
//#define ESPWifiManualSetup true //uncomment you don't want to use wifimanager for your credential settings on ESP
|
||||||
@@ -62,15 +66,17 @@
|
|||||||
/*-------------DEFINE YOUR MQTT PARAMETERS BELOW----------------*/
|
/*-------------DEFINE YOUR MQTT PARAMETERS BELOW----------------*/
|
||||||
//MQTT Parameters definition
|
//MQTT Parameters definition
|
||||||
//#define mqtt_server_name "www.mqtt_broker.com" // instead of defining the server by its IP you can define it by its name, uncomment this line and set the correct MQTT server host name
|
//#define mqtt_server_name "www.mqtt_broker.com" // instead of defining the server by its IP you can define it by its name, uncomment this line and set the correct MQTT server host name
|
||||||
char mqtt_user[20] = "your_username"; // not compulsory only if your broker needs authentication
|
#define parameters_size 20
|
||||||
char mqtt_pass[30] = "your_password"; // not compulsory only if your broker needs authentication
|
#define mqtt_topic_max_size 100
|
||||||
char mqtt_server[40] = "192.168.1.17";
|
char mqtt_user[parameters_size] = "your_username"; // not compulsory only if your broker needs authentication
|
||||||
|
char mqtt_pass[parameters_size] = "your_password"; // not compulsory only if your broker needs authentication
|
||||||
|
char mqtt_server[parameters_size] = "192.168.1.17";
|
||||||
char mqtt_port[6] = "1883";
|
char mqtt_port[6] = "1883";
|
||||||
|
char mqtt_topic[mqtt_topic_max_size] = Base_Topic;
|
||||||
|
char gateway_name[parameters_size * 2] = Gateway_Name;
|
||||||
|
|
||||||
#define Gateway_Name "OpenMQTTGateway"
|
#define version_Topic "/version"
|
||||||
#define Base_Topic "home/"
|
#define will_Topic "/LWT"
|
||||||
#define version_Topic Base_Topic Gateway_Name "/version"
|
|
||||||
#define will_Topic Base_Topic Gateway_Name "/LWT"
|
|
||||||
#define will_QoS 0
|
#define will_QoS 0
|
||||||
#define will_Retain true
|
#define will_Retain true
|
||||||
#define will_Message "Offline"
|
#define will_Message "Offline"
|
||||||
@@ -140,10 +146,15 @@ const byte subnet[] = { 255, 255, 255, 0 }; //ip adress
|
|||||||
/*-------------------CHANGING THEM IS NOT COMPULSORY-----------------------*/
|
/*-------------------CHANGING THEM IS NOT COMPULSORY-----------------------*/
|
||||||
/*--------------MQTT general topics-----------------*/
|
/*--------------MQTT general topics-----------------*/
|
||||||
// global MQTT subject listened by the gateway to execute commands (send RF, IR or others)
|
// global MQTT subject listened by the gateway to execute commands (send RF, IR or others)
|
||||||
#define subjectMQTTtoX Base_Topic Gateway_Name "/commands/#"
|
#define subjectMQTTtoX "/commands/#"
|
||||||
#define subjectMultiGTWKey "toMQTT"
|
#define subjectMultiGTWKey "toMQTT"
|
||||||
#define subjectGTWSendKey "MQTTto"
|
#define subjectGTWSendKey "MQTTto"
|
||||||
|
|
||||||
|
// key used for launching commands to the gateway
|
||||||
|
#define restartCmd "restart"
|
||||||
|
#define eraseCmd "erase"
|
||||||
|
|
||||||
|
// define if we concatenate the values into the topic
|
||||||
#define valueAsASubject true
|
#define valueAsASubject true
|
||||||
|
|
||||||
//variables to avoid duplicates
|
//variables to avoid duplicates
|
||||||
@@ -159,6 +170,7 @@ const byte subnet[] = { 255, 255, 255, 0 }; //ip adress
|
|||||||
#define JSON_MSG_BUFFER 64 // Json message max buffer size, don't put 1024 or higher it is causing unexpected behaviour on ESP8266
|
#define JSON_MSG_BUFFER 64 // Json message max buffer size, don't put 1024 or higher it is causing unexpected behaviour on ESP8266
|
||||||
#endif
|
#endif
|
||||||
#define TimeBetweenReadingSYS 120000 // time between system readings (like memory)
|
#define TimeBetweenReadingSYS 120000 // time between system readings (like memory)
|
||||||
#define subjectSYStoMQTT Base_Topic Gateway_Name "/SYStoMQTT"
|
#define subjectSYStoMQTT "/SYStoMQTT"
|
||||||
|
#define subjectMQTTtoSYSset "/commands/MQTTtoSYS/set"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
Reference in new issue
Block a user