Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
co2ampel
ampel-firmware
Commits
95964301
Commit
95964301
authored
Feb 28, 2022
by
Eric Duminil
Browse files
Adding MQTT_TOPIC_PREFIX in config
parent
02389ab5
Changes
4
Hide whitespace changes
Inline
Side-by-side
ampel-firmware/config.public.h
View file @
95964301
...
...
@@ -41,8 +41,8 @@
// AMPEL_CONFIG_VERSION should be defined, and have exactly 3 characters.
// If you modify this string, every parameter saved on the Ampel will be replaced by the ones in config.h.
// AMPEL_CONFIG_VERSION should also be updated if the configuration structure is modified.
// The structure of the Ampel configuration has been modified 1
0
times, so it's called "a1
0
" for now.
# define AMPEL_CONFIG_VERSION "a1
0
"
// The structure of the Ampel configuration has been modified 1
1
times, so it's called "a1
1
" for now.
# define AMPEL_CONFIG_VERSION "a1
1
"
/**
* SERVICES
...
...
@@ -150,6 +150,7 @@
# define MQTT_ENCRYPTED true // Set to false for unencrypted MQTT (e.g. with port 1883).
# define MQTT_USER ""
# define MQTT_PASSWORD ""
# define MQTT_TOPIC_PREFIX "CO2sensors/" // ESPxxxxxx will be added to the prefix, so complete topic will be "CO2sensors/ESPxxxxxx"
/**
* LoRaWAN
...
...
ampel-firmware/mqtt.cpp
View file @
95964301
...
...
@@ -33,13 +33,13 @@ namespace mqtt {
unsigned
long
last_failed_at
=
0
;
bool
connected
=
false
;
char
publish_topic
[
2
1
];
// e.g. "CO2sensors/ESPxxxxxx\0"
char
publish_topic
[
4
2
];
//
"MQTT_TOPIC_PREFIX/ESPxxxxxx\0",
e.g. "CO2sensors/ESPxxxxxx\0"
const
char
*
json_sensor_format
;
char
last_successful_publish
[
23
]
=
""
;
void
initialize
(
const
char
*
sensorId
)
{
json_sensor_format
=
PSTR
(
"{
\"
time
\"
:
\"
%s
\"
,
\"
co2
\"
:%d,
\"
temp
\"
:%.1f,
\"
rh
\"
:%.1f}"
);
snprintf
(
publish_topic
,
sizeof
(
publish_topic
),
"
CO2sensors/%s"
,
sensorId
);
snprintf
(
publish_topic
,
sizeof
(
publish_topic
),
"
%s%s"
,
config
::
mqtt_topic_prefix
,
sensorId
);
if
(
config
::
mqtt_encryption
)
{
// The sensor doesn't check the fingerprint of the MQTT broker, because otherwise this fingerprint should be updated
...
...
@@ -62,11 +62,13 @@ namespace mqtt {
void
publish
(
const
char
*
timestamp
,
int16_t
co2
,
float
temperature
,
float
humidity
)
{
if
(
wifi
::
connected
()
&&
mqttClient
.
connected
())
{
led_effects
::
onBoardLEDOn
();
Serial
.
print
(
F
(
"MQTT - Publishing message ... "
));
Serial
.
print
(
F
(
"MQTT - Publishing message to '"
));
Serial
.
print
(
publish_topic
);
Serial
.
print
(
F
(
"' ... "
));
char
payload
[
75
];
// Should be enough for json...
snprintf
(
payload
,
sizeof
(
payload
),
json_sensor_format
,
timestamp
,
co2
,
temperature
,
humidity
);
// Topic is
the same as clientID. e.g. 'CO2sensors/ESP3d03da
'
// Topic is
'MQTT_TOPIC_PREFIX/ESP123456
'
if
(
mqttClient
.
publish
(
publish_topic
,
payload
))
{
Serial
.
println
(
F
(
"OK"
));
ntp
::
getLocalTime
(
last_successful_publish
);
...
...
@@ -130,7 +132,7 @@ namespace mqtt {
if
(
connected
)
{
if
(
config
::
allow_mqtt_commands
)
{
char
control_topic
[
6
0
];
// Should be enough for "
CO2sensors
/ESPd03cc5/control"
char
control_topic
[
5
0
];
// Should be enough for "
MQTT_TOPIC_PREFIX
/ESPd03cc5/control
\0
"
snprintf
(
control_topic
,
sizeof
(
control_topic
),
"%s/control"
,
publish_topic
);
mqttClient
.
subscribe
(
control_topic
);
mqttClient
.
setCallback
(
controlSensorCallback
);
...
...
@@ -184,7 +186,7 @@ namespace mqtt {
// If the sensor can be reach by MQTT, it can answer with info about local_ip and ssid.
// The sensor will send the info to "CO2sensors/ESP123456/info".
void
sendInfoAboutLocalNetwork
()
{
char
info_topic
[
6
0
];
// Should be enough for "
CO2sensors
/ESP123456/info"
char
info_topic
[
5
0
];
// Should be enough for "
MQTT_TOPIC_PREFIX
/ESP123456/info"
snprintf
(
info_topic
,
sizeof
(
info_topic
),
"%s/info"
,
publish_topic
);
char
payload
[
75
];
// Should be enough for info json...
...
...
ampel-firmware/web_config.cpp
View file @
95964301
...
...
@@ -6,7 +6,7 @@
#define STRINGIFY(x) STRING(x) // Allows to call STRINGIFY(SOME_MACRO) and convert the value of SOME_MACRO to string
#include
"config.h"
#ifndef
AMPEL_PASSWORD
#ifndef
MQTT_TOPIC_PREFIX
# error Missing config.h file. Please copy config.public.h to config.h.
# warning config.h has a new structure (e.g. AMPEL_WIFI should be set to true or false)
#endif
...
...
@@ -118,6 +118,8 @@ namespace web_config {
PasswordTParameter
<
STRING_LEN
>
mqttPasswordParam
=
Builder
<
PasswordTParameter
<
STRING_LEN
>>
(
"mqtt_password"
).
label
(
"MQTT password"
).
defaultValue
(
MQTT_PASSWORD
).
build
();
TextTParameter
<
STRING_LEN
>
mqttTopicPrefixParam
=
Builder
<
TextTParameter
<
STRING_LEN
>>
(
"mqtt_topic"
).
label
(
"MQTT Topic prefix"
).
defaultValue
(
MQTT_TOPIC_PREFIX
).
build
();
/**
* NTP Time
*/
...
...
@@ -204,6 +206,7 @@ namespace web_config {
mqttParams
.
addItem
(
&
mqttPortParam
);
mqttParams
.
addItem
(
&
mqttUserParam
);
mqttParams
.
addItem
(
&
mqttPasswordParam
);
mqttParams
.
addItem
(
&
mqttTopicPrefixParam
);
mqttParams
.
addItem
(
&
mqttEncryptionParam
);
mqttParams
.
addItem
(
&
mqttCommandsParam
);
...
...
@@ -352,6 +355,7 @@ namespace config {
char
*
mqtt_server
=
web_config
::
mqttServerParam
.
value
();
char
*
mqtt_user
=
web_config
::
mqttUserParam
.
value
();
char
*
mqtt_password
=
web_config
::
mqttPasswordParam
.
value
();
char
*
mqtt_topic_prefix
=
web_config
::
mqttTopicPrefixParam
.
value
();
uint16_t
&
mqtt_port
=
web_config
::
mqttPortParam
.
value
();
uint16_t
&
mqtt_sending_interval
=
web_config
::
mqttIntervalParam
.
value
();
bool
&
mqtt_encryption
=
web_config
::
mqttEncryptionParam
.
value
();
...
...
ampel-firmware/web_config.h
View file @
95964301
...
...
@@ -43,6 +43,7 @@ namespace config {
extern
char
*
mqtt_server
;
extern
char
*
mqtt_user
;
extern
char
*
mqtt_password
;
extern
char
*
mqtt_topic_prefix
;
extern
uint16_t
&
mqtt_port
;
extern
uint16_t
&
mqtt_sending_interval
;
// [s]
extern
bool
&
mqtt_encryption
;
// [true / false]
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment