mirror of
https://github.com/lumapu/ahoy.git
synced 2025-04-29 10:16:21 +02:00
cbMqtt better reading
This commit is contained in:
parent
6f86557446
commit
661b559768
1 changed files with 33 additions and 12 deletions
|
@ -505,16 +505,24 @@ void app::cbMqtt(char* topic, byte* payload, unsigned int length) {
|
|||
const char *token = strtok(topic, "/");
|
||||
while (token != NULL)
|
||||
{
|
||||
if (strcmp(token,"devcontrol")==0){
|
||||
if (strcmp(token,"devcontrol")==0)
|
||||
{
|
||||
token = strtok(NULL, "/");
|
||||
uint8_t iv_id = std::stoi(token);
|
||||
if (iv_id >= 0 && iv_id <= MAX_NUM_INVERTERS){
|
||||
|
||||
if (iv_id >= 0 && iv_id <= MAX_NUM_INVERTERS)
|
||||
{
|
||||
Inverter<> *iv = this->mSys->getInverterByPos(iv_id);
|
||||
if(NULL != iv) {
|
||||
if (!iv->devControlRequest) { // still pending
|
||||
if(NULL != iv)
|
||||
{
|
||||
if (!iv->devControlRequest) // still pending
|
||||
{
|
||||
token = strtok(NULL, "/");
|
||||
switch ( std::stoi(token) ){
|
||||
case ActivePowerContr: // Active Power Control
|
||||
|
||||
switch ( std::stoi(token) )
|
||||
{
|
||||
// Active Power Control
|
||||
case ActivePowerContr:
|
||||
token = strtok(NULL, "/"); // get ControlMode aka "PowerPF.Desc" in DTU-Pro Code from topic string
|
||||
if (token == NULL) // default via mqtt ommit the LimitControlMode
|
||||
iv->powerLimit[1] = AbsolutNonPersistent;
|
||||
|
@ -534,22 +542,30 @@ void app::cbMqtt(char* topic, byte* payload, unsigned int length) {
|
|||
DPRINTLN(DBG_INFO, F("Invalid mqtt payload recevied: ") + String((char*)payload));
|
||||
}
|
||||
break;
|
||||
case TurnOn: // Turn On
|
||||
|
||||
// Turn On
|
||||
case TurnOn:
|
||||
iv->devControlCmd = TurnOn;
|
||||
DPRINTLN(DBG_INFO, F("Turn on inverter ") + String(iv->id) );
|
||||
iv->devControlRequest = true;
|
||||
break;
|
||||
case TurnOff: // Turn Off
|
||||
|
||||
// Turn Off
|
||||
case TurnOff:
|
||||
iv->devControlCmd = TurnOff;
|
||||
DPRINTLN(DBG_INFO, F("Turn off inverter ") + String(iv->id) );
|
||||
iv->devControlRequest = true;
|
||||
break;
|
||||
case Restart: // Restart
|
||||
|
||||
// Restart
|
||||
case Restart:
|
||||
iv->devControlCmd = Restart;
|
||||
DPRINTLN(DBG_INFO, F("Restart inverter ") + String(iv->id) );
|
||||
iv->devControlRequest = true;
|
||||
break;
|
||||
case ReactivePowerContr: // Reactive Power Control
|
||||
|
||||
// Reactive Power Control
|
||||
case ReactivePowerContr:
|
||||
iv->devControlCmd = ReactivePowerContr;
|
||||
if (true){ // if (std::stoi((char*)payload) > 0) error handling powerlimit needed?
|
||||
iv->devControlCmd = ReactivePowerContr;
|
||||
|
@ -559,16 +575,21 @@ void app::cbMqtt(char* topic, byte* payload, unsigned int length) {
|
|||
iv->devControlRequest = true;
|
||||
}
|
||||
break;
|
||||
case PFSet: // Set Power Factor
|
||||
|
||||
// Set Power Factor
|
||||
case PFSet:
|
||||
// iv->devControlCmd = PFSet;
|
||||
// uint16_t power_factor = std::stoi(strtok(NULL, "/"));
|
||||
DPRINTLN(DBG_INFO, F("Set Power Factor not implemented for inverter ") + String(iv->id) );
|
||||
break;
|
||||
case CleanState_LockAndAlarm: // CleanState lock & alarm
|
||||
|
||||
// CleanState lock & alarm
|
||||
case CleanState_LockAndAlarm:
|
||||
iv->devControlCmd = CleanState_LockAndAlarm;
|
||||
DPRINTLN(DBG_INFO, F("CleanState lock & alarm for inverter ") + String(iv->id) );
|
||||
iv->devControlRequest = true;
|
||||
break;
|
||||
|
||||
default:
|
||||
DPRINTLN(DBG_INFO, "Not implemented");
|
||||
break;
|
||||
|
|
Loading…
Add table
Reference in a new issue