[P019] Implement Switch MQTT Device Class setting and Inverted Switch discovery

This commit is contained in:
Ton Huisman
2025-05-21 22:45:38 +02:00
parent 831107c72f
commit 36d958187d
2 changed files with 27 additions and 1 deletions
+24 -1
View File
@@ -71,7 +71,7 @@ boolean Plugin_019(uint8_t function, struct EventStruct *event, String& string)
}
addFormSelectorI2C(F("pi2c"), 16, i2cAddressValues, address);
const FormSelectorOptions selector(8, portNames, portValues);
selector.addFormSelector(F("Port"), F("pport"), port);
selector.addFormSelector(F("Port"), F("pport"), port);
addFormNote(F("PCF8574 uses addresses 0x20..0x27, PCF8574<b>A</b> uses addresses 0x38..0x3F."));
} else {
success = intArrayContains(16, i2cAddressValues, event->Par1);
@@ -107,6 +107,13 @@ boolean Plugin_019(uint8_t function, struct EventStruct *event, String& string)
P019_LP_MIN_INT,
P019_SAFE_BTN);
# if FEATURE_MQTT_DISCOVER && FEATURE_MQTT_DEVICECLASS
addFormSelector_binarySensorDeviceClass(F("MQTT Device class"),
F("devcls"),
P019_MQTT_DEVICECLASS);
# endif // if FEATURE_MQTT_DISCOVER && FEATURE_MQTT_DEVICECLASS
success = true;
break;
}
@@ -131,10 +138,26 @@ boolean Plugin_019(uint8_t function, struct EventStruct *event, String& string)
P019_LP_MIN_INT,
P019_SAFE_BTN);
# if FEATURE_MQTT_DISCOVER && FEATURE_MQTT_DEVICECLASS
P019_MQTT_DEVICECLASS = getFormItemInt(F("devcls"));
# endif // if FEATURE_MQTT_DISCOVER && FEATURE_MQTT_DEVICECLASS
success = true;
break;
}
# if FEATURE_MQTT_DISCOVER
case PLUGIN_GET_DISCOVERY_VTYPES:
success = getDiscoveryVType(event, Settings.TaskDevicePin1Inversed[event->TaskIndex]
? Plugin_QueryVType_BinarySensorInv
: Plugin_QueryVType_BinarySensor, 255, event->Par5);
# if FEATURE_MQTT_DEVICECLASS
string = MQTT_binary_deviceClassName(P019_MQTT_DEVICECLASS); // User selected device_cLass/dev_cls value
# endif // if FEATURE_MQTT_DEVICECLASS
break;
# endif // if FEATURE_MQTT_DISCOVER
case PLUGIN_INIT:
{
// apply INIT only if PIN is in range. Do not start INIT if pin not set in the device page.
+3
View File
@@ -41,6 +41,9 @@
# define P019_LP_MIN_INT PCONFIG_FLOAT(2)
# define P019_SAFE_BTN PCONFIG_FLOAT(3)
# if FEATURE_MQTT_DISCOVER && FEATURE_MQTT_DEVICECLASS
# define P019_MQTT_DEVICECLASS PCONFIG(6)
# endif // if FEATURE_MQTT_DISCOVER && FEATURE_MQTT_DEVICECLASS
struct P019_data_struct : public PluginTaskData_base {
static uint8_t getI2C_address(struct EventStruct *event);