working smart variable
This commit is contained in:
parent
1b2a270d38
commit
1d977c5bdf
2 changed files with 60 additions and 7 deletions
|
@ -17,14 +17,22 @@ void SmartVariable::begin(size_t size)
|
|||
|
||||
void SmartVariable::enableIoT(ESPMegaIoT *iot, const char *topic)
|
||||
{
|
||||
bool iotEnabled = true;
|
||||
this->iot = iot;
|
||||
this->iotEnabled = true;
|
||||
this->topic = topic;
|
||||
ESP_LOGV("SmartVariable", "Binding MQTT Callback");
|
||||
auto bindedMqttCallback = std::bind(&SmartVariable::handleMqttCallback, this, std::placeholders::_1, std::placeholders::_2);
|
||||
this->iot->registerRelativeMqttCallback(bindedMqttCallback);
|
||||
this->iot->registerMqttCallback(bindedMqttCallback);
|
||||
ESP_LOGV("SmartVariable", "Binding MQTT Subscription");
|
||||
auto bindedMqttSubscription = std::bind(&SmartVariable::subscribeMqtt, this);
|
||||
this->iot->registerSubscribeCallback(bindedMqttSubscription);
|
||||
ESP_LOGI("SmartVariable", "Calling MQTT Subscribe");
|
||||
this->subscribeMqtt();
|
||||
}
|
||||
|
||||
void SmartVariable::enableValueRequest(const char *valueRequestTopic)
|
||||
{
|
||||
ESP_LOGD("SmartVariable", "Enabling Value Request");
|
||||
this->useValueRequest = true;
|
||||
this->valueRequestTopic = valueRequestTopic;
|
||||
this->subscribeMqtt();
|
||||
|
@ -54,8 +62,18 @@ void SmartVariable::enableSetValue(const char *setValueTopic)
|
|||
|
||||
void SmartVariable::publishValue()
|
||||
{
|
||||
if (this->iotEnabled)
|
||||
if (this->iotEnabled) {
|
||||
if (this->value == nullptr) {
|
||||
ESP_LOGE("SmartVariable", "Value is NULL");
|
||||
return;
|
||||
}
|
||||
if (this->topic == nullptr) {
|
||||
ESP_LOGE("SmartVariable", "Topic is NULL");
|
||||
return;
|
||||
}
|
||||
ESP_LOGV("SmartVariable", "Publishing Value: %s to %s", this->value, this->topic);
|
||||
this->iot->publish(this->topic, this->value);
|
||||
}
|
||||
}
|
||||
|
||||
void SmartVariable::bindFRAM(FRAM *fram, uint32_t framAddress)
|
||||
|
@ -112,12 +130,29 @@ void SmartVariable::handleMqttCallback(char *topic, char *payload)
|
|||
|
||||
void SmartVariable::subscribeMqtt()
|
||||
{
|
||||
|
||||
if (this->iotEnabled)
|
||||
{
|
||||
if (this->useValueRequest)
|
||||
ESP_LOGV("SmartVariable", "IoT Enabled, running MQTT Subscribe");
|
||||
ESP_LOGV("SmartVariable", "Value Request: %d, Set Value: %d", this->useValueRequest, this->setValueEnabled);
|
||||
if (this->useValueRequest) {
|
||||
if (this->valueRequestTopic == nullptr) {
|
||||
ESP_LOGE("SmartVariable", "Value Request Topic is NULL");
|
||||
return;
|
||||
}
|
||||
ESP_LOGV("SmartVariable", "Subscribing to %s", this->valueRequestTopic);
|
||||
this->iot->subscribe(this->valueRequestTopic);
|
||||
if (this->setValueEnabled)
|
||||
}
|
||||
if (this->setValueEnabled) {
|
||||
if (this->setValueTopic == nullptr) {
|
||||
ESP_LOGE("SmartVariable", "Set Value Topic is NULL");
|
||||
return;
|
||||
}
|
||||
ESP_LOGV("SmartVariable", "Subscribing to %s", this->setValueTopic);
|
||||
this->iot->subscribe(this->setValueTopic);
|
||||
}
|
||||
ESP_LOGV("SmartVariable", "Publishing Value");
|
||||
this->publishValue();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue