rgbcw discovery self test

This commit is contained in:
openshwprojects
2023-05-01 13:20:33 +02:00
parent d03ad98910
commit 31aa46c1a1
2 changed files with 69 additions and 4 deletions

View File

@@ -120,7 +120,48 @@ void Test_HassDiscovery_LED_RGB() {
}
void Test_HassDiscovery_LED_RGBCW() {
// TODO
const char *shortName = "RGBCWtest";
const char *fullName = "Windows Fake RGBCW";
const char *mqttName = "testRGBCW";
SIM_ClearOBK(shortName);
SIM_ClearAndPrepareForMQTTTesting(mqttName, "bekens");
PIN_SetPinRoleForPinIndex(24, IOR_PWM);
PIN_SetPinChannelForPinIndex(24, 1);
PIN_SetPinRoleForPinIndex(26, IOR_PWM);
PIN_SetPinChannelForPinIndex(26, 2);
PIN_SetPinRoleForPinIndex(9, IOR_PWM);
PIN_SetPinChannelForPinIndex(9, 3);
PIN_SetPinRoleForPinIndex(6, IOR_PWM);
PIN_SetPinChannelForPinIndex(6, 4);
PIN_SetPinRoleForPinIndex(7, IOR_PWM);
PIN_SetPinChannelForPinIndex(7, 5);
SIM_ClearMQTTHistory();
CMD_ExecuteCommand("scheduleHADiscovery 1", 0);
Sim_RunSeconds(10, false);
// OBK device should publish JSON on MQTT topic "homeassistant"
SELFTEST_ASSERT_HAS_MQTT_JSON_SENT("homeassistant", true);
//SELFTEST_ASSERT_HAS_MQTT_JSON_SENT_ANY("homeassistant", true, "dev", 0, "name", shortName);
SELFTEST_ASSERT_HAS_MQTT_JSON_SENT_ANY("homeassistant", true, 0, 0, "bri_cmd_t", "cmnd/testRGBCW/led_dimmer");
SELFTEST_ASSERT_HAS_MQTT_JSON_SENT_ANY("homeassistant", true, 0, 0, "bri_stat_t", "~/led_dimmer/get");
SELFTEST_ASSERT_HAS_MQTT_JSON_SENT_ANY("homeassistant", true, 0, 0, "bri_scl", "100");
SELFTEST_ASSERT_HAS_MQTT_JSON_SENT_ANY("homeassistant", true, 0, 0, "~", mqttName);
SELFTEST_ASSERT_HAS_MQTT_JSON_SENT_ANY("homeassistant", true, 0, 0, "rgb_stat_t", "~/led_basecolor_rgb/get");
SELFTEST_ASSERT_HAS_MQTT_JSON_SENT_ANY("homeassistant", true, 0, 0, "rgb_cmd_t", "cmnd/testRGBCW/led_basecolor_rgb");
SELFTEST_ASSERT_HAS_MQTT_JSON_SENT_ANY("homeassistant", true, 0, 0, "clr_temp_cmd_t", "cmnd/testRGBCW/led_temperature");
SELFTEST_ASSERT_HAS_MQTT_JSON_SENT_ANY("homeassistant", true, 0, 0, "clr_temp_stat_t", "~/led_temperature/get");
SELFTEST_ASSERT_HAS_MQTT_JSON_SENT_ANY("homeassistant", true, 0, 0, "cmd_t", "cmnd/testRGBCW/led_enableAll");
SELFTEST_ASSERT_HAS_MQTT_JSON_SENT_ANY("homeassistant", true, 0, 0, "stat_t", "~/led_enableAll/get");
}
void Test_HassDiscovery_LED_SingleColor() {
// TODO

View File

@@ -65,6 +65,18 @@ bool SIM_CheckMQTTHistoryForString(const char *topic, const char *value, bool bR
}
return false;
}
bool ST_IsIntegerString(const char *s) {
if (s == 0)
return false;
if (*s == 0)
return false;
while (*s) {
if (isdigit(*s) == false)
return false;
s++;
}
return true;
}
bool SIM_HasMQTTHistoryStringWithJSONPayload(const char *topic, bool bPrefixMode, const char *object1, const char *object2, const char *key, const char *value) {
mqttHistoryEntry_t *ne;
int cur = history_tail;
@@ -96,9 +108,21 @@ bool SIM_HasMQTTHistoryStringWithJSONPayload(const char *topic, bool bPrefixMode
if (tmp) {
tmp = cJSON_GetObjectItemCaseSensitive(tmp, key);
if (tmp) {
const char *ret = tmp->valuestring;
if (!strcmp(ret, value)) {
return true;
if (tmp->valuestring) {
const char *ret = tmp->valuestring;
if (!strcmp(ret, value)) {
return true;
}
}
else {
if (ST_IsIntegerString(value)) {
if (atoi(value) == tmp->valueint) {
return true;
}
}
else {
printf("TODO: float compare selftest");
}
}
}
}