Commit 3b417c34 authored by Pavel Vainerman's avatar Pavel Vainerman

(MQTTPulisher): сделал возможность задавать не просто название ветки

где будут публиковаться датчики.. а полность задавать topic.
parent 0f8b9eb1
......@@ -22,7 +22,17 @@ MQTTPublisher::MQTTPublisher(UniSetTypes::ObjectId objId, xmlNode* cnode, UniSet
UniXML::iterator it(cnode);
topicsensors = conf->getRootSection() + "/" + conf->getArg2Param("--" + argprefix + "mqtt-topic-sensors", it.getProp("topicsensors"), "sensors");
std::string t = conf->getArg2Param("--" + argprefix + "mqtt-topic", it.getProp("topic"), "");
{
ostringstream s;
if( t.empty() )
s << conf->getRootSection() << "/sensors";
else
s << t;
topic = s.str();
}
string ff = conf->getArg2Param("--" + argprefix + "filter-field", it.getProp("filterField"), "");
string fv = conf->getArg2Param("--" + argprefix + "filter-value", it.getProp("filterValue"), "");
......@@ -68,7 +78,7 @@ MQTTPublisher::MQTTPublisher(UniSetTypes::ObjectId objId, xmlNode* cnode, UniSet
}
pubname.str("");
pubname << topicsensors << "/" << sname;
pubname << topic << "/" << sname;
MQTTInfo m(sid, pubname.str());
publist.emplace(sid, std::move(m) );
......@@ -84,7 +94,7 @@ MQTTPublisher::MQTTPublisher(UniSetTypes::ObjectId objId, xmlNode* cnode, UniSet
if( !i.find("mqtt") )
continue;
MQTTTextInfo mi(topicsensors, sit, i);
MQTTTextInfo mi(topic, sit, i);
textpublist.emplace(sid, std::move(mi) );
}
......@@ -154,8 +164,7 @@ void MQTTPublisher::help_print( int argc, const char* const* argv )
cout << "--prefix-filter-value - Значение фильтра для загрузки списка датчиков." << endl;
cout << endl;
cout << " MQTT: " << endl;
cout << "--prefix-mqtt-topic-sensors name - Name for topic. Default: 'sensors'" << endl;
cout << " Result topic: ROOT_NAME_PRROJECT/topicsensors/sensorname'" << endl;
cout << "--prefix-mqtt-topic name - Name for topic. Default: ROOT_NAME_PRROJECT/sensors/sensorname'" << endl;
cout << "--prefix-mqtt-host host - host(ip) MQTT Broker (server). Default: localhost" << endl;
cout << "--prefix-mqtt-port port - port for MQTT Broker (server). Default: 1883" << endl;
cout << "--prefix-mqtt-keepalive val - keepalive for connection to MQTT Broker (server). Default: 60" << endl;
......
......@@ -26,11 +26,12 @@
\section sec_MQTT_Conf Настройка MQTTPublisher
Топик для публикации событий имеет вид: ROOTPROJECT/topicsensors/sensorname, где
- \b ROOTPROJECT - это название корневой uniset-секции заданное в configure.xml (RootSection="..")
- \b topicsensors - это название секции для публикации в MQTT-сервере (брокере).
Название можно задать при помощи аргумента конмадной строки --prefix-mqtt-topicsensors
или в настроечной секции topicsensors="..". По умолчанию topicsensors='sensors'.
Топик для публикации событий имеет вид: TOPIC
- \b TOPIC - заданный topic.
Топик можно задать при помощи аргумента комадной строки --prefix-mqtt-topic или в настроечной секции topic="..".
По умолчанию берётся ROOTPROJECT/sensors/sensorname, где
ROOTPROJECT - это название корневой uniset-секции заданное в configure.xml (RootSection="..")
События по каким датчикам "публиковать" можно задавать при помощи filter-field и filter-value параметров.
--prefix-filter-field - задаёт фильтрующее поле для датчиков
......@@ -160,7 +161,7 @@ class MQTTPublisher:
private:
std::string prefix;
std::string topicsensors; // "топик" для публикации датчиков
std::string topic; // "топик" для публикации датчиков
bool connectOK = { false };
std::string host = { "localhost" };
int port = { 1883 };
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment