sinricpro / esp8266-esp32-sdk

Library for https://sinric.pro - simple way to connect your device to Alexa, Google Home, SmartThings and cloud
https://sinric.pro
Other
234 stars 125 forks source link

portal.sinric.pro Thermostat mode setting not working #91

Closed marcosmoura91 closed 3 years ago

marcosmoura91 commented 4 years ago

Hello everyone,

I'm not sure if here is the right place to post this but using the Portal I cannot update my thermostat mode. I am using debuging mode and I get no message when i set the mode, Cooling, Auto, Heat all aren't working.

For turning off, on and set point all work. I tested using Portal and also using alexa echo. The request to change the mode is not being sent from your server to my device.

sivar2311 commented 4 years ago

I did a check, and everything worked fine! Serial log (IP and DeviceId is x`ed out):

[Wifi]: Connecting.............connected!
[WiFi]: IP-Address is xxx.xxx.xxx.xxx       
Connected to SinricPro
Thermostat 5fxxxxxxxxxxxxxxxxxxxxxxxxx set to mode COOL
Thermostat 5fxxxxxxxxxxxxxxxxxxxxxxxxx set to mode HEAT
Thermostat 5fxxxxxxxxxxxxxxxxxxxxxxxxx set to mode AUTO

Using the given example

Edit: Detailed log using ENABLE_DEBUG (again, all secret part's are x`ed out):

[Wifi]: Connecting.............connected!     
[WiFi]: IP-Address is xxx.xxx.xxx.xxx
[SinricPro]: Device "5fxxxxxxxxxxxxxxxxxxxxxx" does not exist. Creating new device
[SinricPro:add()]: Adding device with id "5fxxxxxxxxxxxxxxxxxxxxxx".
[SinricPro:Websocket]: Connecting to WebSocket Server (ws.sinric.pro)
[SinricPro:Websocket]: headers:
appkey:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
deviceids:5fxxxxxxxxxxxxxxxxxxxxxx
restoredevicestates:false
ip:xxx.xxx.xxx.xxx
mac:XX:XX:XX:XX:XX:XX
platform:ESP8266     
version:2.7.1        
[SinricPro:Websocket]: connected
Connected to SinricPro
[SinricPro:Websocket]: receiving data
[SinricPro.handleReceiveQueue()]: 1 message(s) in receiveQueue
[SinricPro.handleReceiveQueue()]: Signature is valid. Processing message...
[SinricPro:extractTimestamp(): Got Timestamp 1601998157
[SinricPro:Websocket]: receiving data
[SinricPro.handleReceiveQueue()]: 1 message(s) in receiveQueue      
[SinricPro.handleReceiveQueue()]: Signature is valid. Processing message...
[SinricPro:extractTimestamp(): Got Timestamp 1601998168
[SinricPro.handleRequest()]: handling request
{
  "header": {
    "payloadVersion": 2,
    "signatureVersion": 1
  },
  "payload": {
    "action": "setThermostatMode",
    "clientId": "sinricpro-web",  
    "createdAt": 1601998168,      
    "deviceAttributes": [],       
    "deviceId": "5fxxxxxxxxxxxxxxxxxxxxxx",
    "replyToken": "b429c796-d385-4c13-8898-510bb9a40b6f",
    "type": "request",
    "value": {
      "thermostatMode": "COOL"
    }
  },
  "signature": {
    "HMAC": "UIMBwFCDJKBi+qSgTW+DAhsHpBSBK7vjd1CwG/eO/io="
  }
}SinricProDevice::handleRequest()
Thermostat 5fxxxxxxxxxxxxxxxxxxxxxx set to mode COOL
[SinricPro:handleSendQueue()]: 1 message(s) in sendQueue
[SinricPro:handleSendQueue()]: Sending message...
{
  "header": {
    "payloadVersion": 2,
    "signatureVersion": 1
  },
  "payload": {
    "action": "setThermostatMode",
    "clientId": "sinricpro-web",
    "createdAt": 1601998169,
    "deviceId": "5fxxxxxxxxxxxxxxxxxxxxxx",
    "message": "OK",
    "replyToken": "b429c796-d385-4c13-8898-510bb9a40b6f",
    "success": true,
    "type": "response",
    "value": {
      "thermostatMode": "COOL"
    }
  },
  "signature": {
    "HMAC": "/BEuqg4Xs3czQ1Ze4h/gzWmfnfYeONf6viEd6EPe2tQ="
  }
}
[SinricPro:handleSendQueue]: Sending to websocket
[SinricPro:handleSendQueue()]: message sent.
[SinricPro:Websocket]: receiving data
[SinricPro.handleReceiveQueue()]: 1 message(s) in receiveQueue
[SinricPro.handleReceiveQueue()]: Signature is valid. Processing message...
[SinricPro:extractTimestamp(): Got Timestamp 1601998171
[SinricPro.handleRequest()]: handling request
{
  "header": {
    "payloadVersion": 2,
    "signatureVersion": 1
  },
  "payload": {
    "action": "setThermostatMode",
    "clientId": "sinricpro-web",
    "createdAt": 1601998171,
    "deviceAttributes": [],
    "deviceId": "5fxxxxxxxxxxxxxxxxxxxxxx",
    "replyToken": "45be8b45-f6fe-4c68-a8d4-7f8ece93d2ef",
    "type": "request",
    "value": {
      "thermostatMode": "HEAT"
    }
  },
  "signature": {
    "HMAC": "v0Qo/4KLOMj+2T+Hi5CSEcZU5Ol/fAzQ4n2HlgNEx/g="
  }
}SinricProDevice::handleRequest()
Thermostat 5fxxxxxxxxxxxxxxxxxxxxxx set to mode HEAT
[SinricPro:handleSendQueue()]: 1 message(s) in sendQueue
[SinricPro:handleSendQueue()]: Sending message...
{
  "header": {
    "payloadVersion": 2,
    "signatureVersion": 1
  },
  "payload": {
    "action": "setThermostatMode",
    "clientId": "sinricpro-web",
    "createdAt": 1601998171,
    "deviceId": "5fxxxxxxxxxxxxxxxxxxxxxx",
    "message": "OK",
    "replyToken": "45be8b45-f6fe-4c68-a8d4-7f8ece93d2ef",
    "success": true,
    "type": "response",
    "value": {
      "thermostatMode": "HEAT"
    }
  },
  "signature": {
    "HMAC": "UskSebrZNd1pECNVbdFVFqGd1EwUjm/O27i5D6f9gQ4="
  }
}
[SinricPro:handleSendQueue]: Sending to websocket
[SinricPro:handleSendQueue()]: message sent.
[SinricPro:Websocket]: receiving data
[SinricPro.handleReceiveQueue()]: 1 message(s) in receiveQueue
[SinricPro.handleReceiveQueue()]: Signature is valid. Processing message...
[SinricPro:extractTimestamp(): Got Timestamp 1601998175
[SinricPro.handleRequest()]: handling request
{
  "header": {
    "payloadVersion": 2,
    "signatureVersion": 1
  },
  "payload": {
    "action": "setThermostatMode",
    "clientId": "sinricpro-web",
    "createdAt": 1601998175,
    "deviceAttributes": [],
    "deviceId": "5fxxxxxxxxxxxxxxxxxxxxxx",
    "replyToken": "6887ac3c-b90c-4101-9ae9-147f9cfb4aa8",
    "type": "request",
    "value": {
      "thermostatMode": "AUTO"
    }
  },
  "signature": {
    "HMAC": "ZqIPKvFYm83cptk0Tevga4l1AO5WnOdmCT4vC2Z85xQ="
  }
}SinricProDevice::handleRequest()
Thermostat 5fxxxxxxxxxxxxxxxxxxxxxx set to mode AUTO
[SinricPro:handleSendQueue()]: 1 message(s) in sendQueue
[SinricPro:handleSendQueue()]: Sending message...
{
  "header": {
    "payloadVersion": 2,
    "signatureVersion": 1
  },
  "payload": {
    "action": "setThermostatMode",
    "clientId": "sinricpro-web",
    "createdAt": 1601998175,
    "deviceId": "5fxxxxxxxxxxxxxxxxxxxxxx",
    "message": "OK",
    "replyToken": "6887ac3c-b90c-4101-9ae9-147f9cfb4aa8",
    "success": true,
    "type": "response",
    "value": {
      "thermostatMode": "AUTO"
    }
  },
  "signature": {
    "HMAC": "5ClX+q2Ytei5fK0xSaQL3tkK6IndETfaApA/9kePzPo="
  }
}
[SinricPro:handleSendQueue]: Sending to websocket
[SinricPro:handleSendQueue()]: message sent.

Did you use ENABLE_DEBUG and did you get some similar output on your serial monitor?

marcosmoura91 commented 4 years ago

Hi, so I copy paste your example and only added my personal settings and still I can do everything except for the AC mode.

What I just noticed is that it says my device doesn't exist but I can see it on the Portal and I copy paste all ID numbers i double checked for mistakes and all good.

Also I have three different rooms setup on sinricpro. do I have to spicify which room the device is from ?

I am using sinricpro library 2.7.0 from Boris Jaeger and ArduinoJson 6.16.1.

[SinricPro]: Device "XXXXXXXXXX" does not exist. Creating new device.

WiFi: IP-Address is 192.168.1.24 Connected to SinricPro Thermostat 5e4b3945axxxxxxx turned on

Now this is my debug:

I am using the portal to click on turn on / off , set temperature and mode. When I set a mode I get no message no feedback on my esp.

WiFi: IP-Address is 192.168.1.24 [SinricPro]: Device "XXXXXXXXXX" does not exist. Creating new device [SinricPro:add()]: Adding device with id "XXXXXXXX". SinricPro:Websocket: Connecting to WebSocket Server (ws.sinric.pro)

appkey:XXXXXXXX deviceids:XXXXXXXXX restoredevicestates:false ip:192.168.1.24 mac:CC:50:E3:17:XX:XX platform:ESP8266 version:2.7.0

Connected to SinricPro SinricPro:Websocket: receiving data [SinricPro.handleReceiveQueue()]: 1 message(s) in receiveQueue [SinricPro.handleReceiveQueue()]: Signature is valid. Processing message... SinricPro:Websocketestamp(): Got Timestamp 1602025930 SinricPro:Websocket: receiving data [SinricPro.handleReceiveQueue()]: 1 message(s) in receiveQueue [SinricPro.handleReceiveQueue()]: Signature is valid. Processing message... [SinricPro:extractTimestamp(): Got Timestamp 1602026022 [SinricPro.handleRequest()]: handling request { "header": { "payloadVersion": 2, "signatureVersion": 1 }, "payload": { "action": "setPowerState", "clientId": "sinricpro-web", "createdAt": 1602026022, "deviceAttributes": [], "deviceId": "XXXXX", "replyToken": "4b942677-510c-4ba5-ae93-36e3XXXXXX", "type": "request", "value": { "state": "On" } }, "signature": { "HMAC": "iiXXXXrriN/w4wzUYqXXXXXSFBZiASBFSKv/ew=" } }SinricProDevice::handleRequest() Thermostat XXXXXXX turned on [SinricPro:handleSendQueue()]: 1 message(s) in sendQueue [SinricPro:handleSendQueue()]: Sending message... { "header": { "payloadVersion": 2, "signatureVersion": 1 }, "payload": { "action": "setPowerState", "clientId": "sinricpro-web", "createdAt": 1602026023, "deviceId": "XXXXXX", "message": "OK", "replyToken": "4b9XXXXX-510c-4ba5-ae93-36XXXX0627", "success": true, "type": "response", "value": { "state": "On" } }, "signature": { "HMAC": "ipVBMXXXX2a1uYcZXXXXXXMcvXczYXXXXX8bstr7CY=" } } [SinricPro:handleSendQueue]: Sending to websocket [SinricPro:handleSendQueue()]: message sent.

Here is my code:

// Uncomment the following line to enable serial debug output
#define ENABLE_DEBUG

#ifdef ENABLE_DEBUG
       #define DEBUG_ESP_PORT Serial
       #define NODEBUG_WEBSOCKETS
       #define NDEBUG
#endif 

#include <Arduino.h>
#ifdef ESP8266 
       #include <ESP8266WiFi.h>
#endif 
#ifdef ESP32   
       #include <WiFi.h>
#endif

#include "SinricPro.h"
#include "SinricProThermostat.h"

#define WIFI_SSID         "xxxx"    
#define WIFI_PASS         "xxxx"
#define APP_KEY           "5ecef3xxxxxxx"      // Should look like "de0ax2abxxxxxxxx"
#define APP_SECRET        "axxxxxx"   // Should look like "5f36xxxx-x3x7-4x3x-xexe-e86724a9xxxx-4c4axxxx-3x3x-x5xe-x9x3-333d65xxxxxx"
#define THERMOSTAT_ID     "5e4bxxxxxx"    // Should look like "5dc1564130xxxxxx"
#define BAUD_RATE         9600                     // Change baudrate to your need

float globalTemperature;
bool globalPowerState;

bool onPowerState(const String &deviceId, bool &state) {
  Serial.printf("Thermostat %s turned %s\r\n", deviceId.c_str(), state?"on":"off");
  globalPowerState = state; 
  return true; // request handled properly
}

bool onTargetTemperature(const String &deviceId, float &temperature) {
  Serial.printf("Thermostat %s set temperature to %f\r\n", deviceId.c_str(), temperature);
  globalTemperature = temperature;
  return true;
}

bool onAdjustTargetTemperature(const String & deviceId, float &temperatureDelta) {
  globalTemperature += temperatureDelta;  // calculate absolut temperature
  Serial.printf("Thermostat %s changed temperature about %f to %f", deviceId.c_str(), temperatureDelta, globalTemperature);
  temperatureDelta = globalTemperature; // return absolut temperature
  return true;
}

bool onThermostatMode(const String &deviceId, String &mode) {
  Serial.printf("Thermostat %s set to mode %s\r\n", deviceId.c_str(), mode.c_str());
  return true;
}

void setupWiFi() {
  Serial.printf("\r\n[Wifi]: Connecting");
  WiFi.begin(WIFI_SSID, WIFI_PASS);

  while (WiFi.status() != WL_CONNECTED) {
    Serial.printf(".");
    delay(250);
  }
  IPAddress localIP = WiFi.localIP();
  Serial.printf("connected!\r\n[WiFi]: IP-Address is %d.%d.%d.%d\r\n", localIP[0], localIP[1], localIP[2], localIP[3]);
}

void setupSinricPro() {
  SinricProThermostat &myThermostat = SinricPro[THERMOSTAT_ID];
  myThermostat.onPowerState(onPowerState);
  myThermostat.onTargetTemperature(onTargetTemperature);
  myThermostat.onAdjustTargetTemperature(onAdjustTargetTemperature);
  myThermostat.onThermostatMode(onThermostatMode);

  // setup SinricPro
  SinricPro.onConnected([](){ Serial.printf("Connected to SinricPro\r\n"); }); 
  SinricPro.onDisconnected([](){ Serial.printf("Disconnected from SinricPro\r\n"); });
  SinricPro.begin(APP_KEY, APP_SECRET);
}

void setup() {
  Serial.begin(BAUD_RATE); Serial.printf("\r\n\r\n");
  setupWiFi();
  setupSinricPro();
}

void loop() {
  SinricPro.handle();
}
marcosmoura91 commented 4 years ago

So I just did a 2nd test and used a thermostat I set on my beedroom room instead of my office room (as per sinric settings). Same code just device id is different.

I still get the message [SinricPro]: Device "5e4bxxxx" does not exist. Creating new device

but now the AC mode works now. I reverted the device id back to the one setup on my office room and still no AC mode message comming in.

Note that this test is with the same hardware, same device. just changing the deviceid.

I set my Office_AC to be attached to the bedroom room on the sinric website and still doesn't work. I completly deleted the device and added a new thermostat to the bedroom which now I have 2. Office_AC and bedroom_AC and also doesn't work.

At the end using ALEXA it's working now. I can set the mode by speaking to it. But setting the mode on the website sinric for my 2nd AC does not work.

Here is a print screen: https://ibb.co/cgrYX2n

sivar2311 commented 4 years ago

I still get the message [SinricPro]: Device "5e4bxxxx" does not exist. Creating new device

This is okay. Its a message from SDK that means that a device have been created (inside the SDK / your ESP).

but now the AC mode works now. I reverted the device id back to the one setup on my office room and still no AC mode message comming in.

Note that this test is with the same hardware, same device. just changing the deviceid.

I think there might be a problem with the deviceId. Easy solution is to create a new device (like you did) and delete the old one. But for more investigation we need the (faulty) deviceId.

I set my Office_AC to be attached to the bedroom room on the sinric website and still doesn't work. I completly deleted the device and added a new thermostat to the bedroom which now I have 2. Office_AC and bedroom_AC and also doesn't work.

Now i am confused. Was this related to the first (faulty) device or the new device?

At the end using ALEXA it's working now. I can set the mode by speaking to it. But setting the mode on the website sinric for my 2nd AC does not work.

Generally, if alexa voice commands work, portal should work too. Another problem might be the name. If they sounds too similar, alexa could get confused and may use the wrong device.

Edit: The "Office" device is shown as offline (not connected to Sinric Pro server). This device cannot work! image

marcosmoura91 commented 4 years ago

Hi, I deleted the faulty device (Work AC) and added a new one to my bedroom room and tried using this new device and it didnt work. Only the first thermostat (AC) works using the website GUI. Any new thermostat that I add only works with Alexa but not using the GUI. Strange. Did you try adding a new thermostat and tried setting the mode using the website GUI, did it work ?

sivar2311 commented 4 years ago

Can you provide a current screenshot please? I think the other thermostat is not online. See red (offline) or green (online) line above the device! Since the names are very similar, alexa is using the one which is online!

Edit: Yes, i did a full test, and everything worked fine (see my posts above!)

marcosmoura91 commented 4 years ago

Hi, I only have one physical device at the moment, in the arduino code I just switch between device IDs so there will be always one disconnected. My problem is, when I add a 2nd thermostat device and configure it on my esp8266 if I try to change the mode using the GUI it doesn't work but everything else works, On, Off and Temperature setting.

If I change my code on my ESP8266 to the first device again (AC) then the Mode setting works again but only for this first device

sivar2311 commented 4 years ago

For testing: Please let both thermostats run simultaneously on the ESP.

Please try this code: https://gist.github.com/sivar2311/4c015d6a6b4004aab21fed6f7c88af67

marcosmoura91 commented 4 years ago

Hi, ok so I just tested both online at the same time it works i receive mode change request for each individually. But If I have the first one offline (bedroom) and use only the second one set at my office room then it doesn't work..

I will post here my code when I have only my office AC online which fails to update mode using GUI: By uncommenting the 2nd Thermostat then both work using the GUI.

#define ENABLE_DEBUG

#ifdef ENABLE_DEBUG
       #define DEBUG_ESP_PORT Serial
       #define NODEBUG_WEBSOCKETS
       #define NDEBUG
#endif 

#include <Arduino.h>
#ifdef ESP8266 
       #include <ESP8266WiFi.h>
#endif 
#ifdef ESP32   
       #include <WiFi.h>
#endif

#include "SinricPro.h"
#include "SinricProThermostat.h"

#define WIFI_SSID         "xxxx"    
#define WIFI_PASS         "xxxx"
#define APP_KEY           "5ecef3xxxx"      // Should look like "de0bxxxx-1x3x-4x3x-ax2x-5dabxxxxxxxx"                      
#define APP_SECRET        "aefda0xxxxx"   // Should look like "5f36xxxx-x3x3-333d65xxxxxx"                         
#define THERMOSTAT_ID     "5f7d007d2xxxx"    // Work AC
//#define THERMOSTAT_ID2    "5f7d007d20yyyy"    // Bedroom AC
#define BAUD_RATE         9600                     // Change baudrate to your need

float globalTemperature;
bool globalPowerState;

bool onPowerState(const String &deviceId, bool &state) {
  Serial.printf("Thermostat %s turned %s\r\n", deviceId.c_str(), state?"on":"off");
  globalPowerState = state; 
  return true; // request handled properly
}

bool onTargetTemperature(const String &deviceId, float &temperature) {
  Serial.printf("Thermostat %s set temperature to %f\r\n", deviceId.c_str(), temperature);
  globalTemperature = temperature;
  return true;
}

bool onAdjustTargetTemperature(const String & deviceId, float &temperatureDelta) {
  globalTemperature += temperatureDelta;  // calculate absolut temperature
  Serial.printf("Thermostat %s changed temperature about %f to %f", deviceId.c_str(), temperatureDelta, globalTemperature);
  temperatureDelta = globalTemperature; // return absolut temperature
  return true;
}

bool onThermostatMode(const String &deviceId, String &mode) {
  Serial.printf("Thermostat %s set to mode %s\r\n", deviceId.c_str(), mode.c_str());
  return true;
}

void setupWiFi() {
  Serial.printf("\r\n[Wifi]: Connecting");
  WiFi.begin(WIFI_SSID, WIFI_PASS);

  while (WiFi.status() != WL_CONNECTED) {
    Serial.printf(".");
    delay(250);
  }
  IPAddress localIP = WiFi.localIP();
  Serial.printf("connected!\r\n[WiFi]: IP-Address is %d.%d.%d.%d\r\n", localIP[0], localIP[1], localIP[2], localIP[3]);
}

void setupSinricPro() {
  SinricProThermostat &myThermostat = SinricPro[THERMOSTAT_ID];
  //SinricProThermostat &myThermostat2 = SinricPro[THERMOSTAT_ID2];
  myThermostat.onPowerState(onPowerState);
  myThermostat.onTargetTemperature(onTargetTemperature);
  myThermostat.onAdjustTargetTemperature(onAdjustTargetTemperature);
  myThermostat.onThermostatMode(onThermostatMode);

  //myThermostat2.onPowerState(onPowerState);
  //myThermostat2.onTargetTemperature(onTargetTemperature);
  //myThermostat2.onAdjustTargetTemperature(onAdjustTargetTemperature);
  //myThermostat2.onThermostatMode(onThermostatMode);

  // setup SinricPro
  SinricPro.onConnected([](){ Serial.printf("Connected to SinricPro\r\n"); }); 
  SinricPro.onDisconnected([](){ Serial.printf("Disconnected from SinricPro\r\n"); });
  SinricPro.begin(APP_KEY, APP_SECRET);
}

void setup() {
  Serial.begin(BAUD_RATE); Serial.printf("\r\n\r\n");
  setupWiFi();
  setupSinricPro();
}

void loop() {
  SinricPro.handle();
}
sivar2311 commented 4 years ago

By uncommenting the 2nd Thermostat then both work using the GUI.

This is confusing! When there is just one thermostat online, how both can work?? Please double check your deviceIds.

What do you want to acheive? Running two devices, or just one?

marcosmoura91 commented 4 years ago

I explain you the problem. I just tried to recreate it above using one ESP8266.

I have one ESP8266 on my bedroom controlling my AC the name is AC as you see on the picture. I have a second ESP8266 on my Office room named work AC.

If my Bedroom AC esp8266 is OFF, then as consequence, I cannot control my second ESP8266 WORK AC MODE setting using the website GUI.

sivar2311 commented 4 years ago

I'cant imagine this. Ok, please delete both devices in portal and create new ones using new deviceId numbers. Update your two sketches to the new ID's, upload and connect them to SinricPro. In Portal, both devices should shown as online.

marcosmoura91 commented 4 years ago

Doesn't work.

I just deleted both Thermostats. Added two new ones. One to the Bedroom and one to my Office room. I even changed the names one is "bed AC" Another is "Offic AC" both in different rooms as the picture above.

Same problem happens. I can only set the mode for my Offic AC if I delete the bed room thermostat. The only way my Office Thermostat GUI mode setting works is only if:

Very strange I know... Somehow the thermostat from the first room effects the others... Do I have to delete all my rooms and add them again ??

All other settings work as usual. Just the MODE setting for the GUI doesn't.

sivar2311 commented 4 years ago

Please upload both sketches to gist.github.com and post the link here. I will download and try to reproduce using two NodeMCUs.

marcosmoura91 commented 4 years ago

I am using the Thermostat Example. No changes. Just added my Api ID and device ID. The same example you sent me for testing just copy and paste.

sivar2311 commented 4 years ago

Please send your sketches via e-mail to me (including your deviceIds and a screenshot of your devices tab in portal) sivar2311@gmail.com

sivar2311 commented 4 years ago

btw: Did you check "Activity Log" in portal?

marcosmoura91 commented 4 years ago

Ok so I checked the activity log,

First for double check I sent for each an ON command. and you can see position 3 and 4 of the log. After this I set the mode for the first and for the 2nd thermostat and as you can see both request go to the same Thermostat ! Some how the GUI is sending the 2nd request to the wrong thermostat.

https://ibb.co/94QyRzm

sivar2311 commented 4 years ago

I was able to reproduce the issue. @kakopappa If two thermostat devices are running, all setThermostatMode-commands are sent to only one device

kakopappa commented 4 years ago

Thanks everyone!

This will be fixed and shipped with Portal v2.11.1. Fix will be in the production with-in a week's time.

kakopappa commented 3 years ago

Hi everyone. this issue fix is in the production now. (v2.10.2)