|
|
@ -0,0 +1,60 @@ |
|
|
|
/*
|
|
|
|
|
|
|
|
HOME ASSISTANT MODULE |
|
|
|
|
|
|
|
Copyright (C) 2017 by Xose Pérez <xose dot perez at gmail dot com> |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
#if HOMEASSISTANT_SUPPORT
|
|
|
|
|
|
|
|
void haSend() { |
|
|
|
|
|
|
|
DEBUG_MSG_P(PSTR("[HA] Sending autodiscovery MQTT message\n")); |
|
|
|
|
|
|
|
String component = String("light"); |
|
|
|
|
|
|
|
DynamicJsonBuffer jsonBuffer; |
|
|
|
JsonObject& root = jsonBuffer.createObject(); |
|
|
|
|
|
|
|
root["name"] = getSetting("hostname"); |
|
|
|
root["platform"] = "mqtt"; |
|
|
|
|
|
|
|
if (relayCount()) { |
|
|
|
root["state_topic"] = getTopic(MQTT_TOPIC_RELAY, 0, false); |
|
|
|
root["command_topic"] = getTopic(MQTT_TOPIC_RELAY, 0, true); |
|
|
|
} |
|
|
|
|
|
|
|
#if LIGHT_PROVIDER != LIGHT_PROVIDER_NONE
|
|
|
|
|
|
|
|
if (lightHasColor()) { |
|
|
|
root["brightness"] = 1; |
|
|
|
root["brightness_state_topic"] = getTopic(MQTT_TOPIC_BRIGHTNESS, false); |
|
|
|
root["brightness_command_topic"] = getTopic(MQTT_TOPIC_BRIGHTNESS, true); |
|
|
|
root["rgb"] = 1; |
|
|
|
root["rgb_state_topic"] = getTopic(MQTT_TOPIC_COLOR, false); |
|
|
|
root["rgb_command_topic"] = getTopic(MQTT_TOPIC_COLOR, true); |
|
|
|
root["color_temp"] = 1; |
|
|
|
root["color_temp_command_topic"] = getTopic(MQTT_TOPIC_MIRED, true); |
|
|
|
} |
|
|
|
|
|
|
|
if (lightChannels() > 3) { |
|
|
|
root["white_value"] = 1; |
|
|
|
root["white_value_state_topic"] = getTopic(MQTT_TOPIC_CHANNEL, 3, false); |
|
|
|
root["white_value_command_topic"] = getTopic(MQTT_TOPIC_CHANNEL, 3, true); |
|
|
|
} |
|
|
|
|
|
|
|
#endif // LIGHT_PROVIDER != LIGHT_PROVIDER_NONE
|
|
|
|
|
|
|
|
String output; |
|
|
|
root.printTo(output); |
|
|
|
|
|
|
|
String topic = getSetting("haPrefix", HOMEASSISTANT_PREFIX) |
|
|
|
+ String("/") + component + "/" + getSetting("hostname"); |
|
|
|
|
|
|
|
mqttSendRaw(topic.c_str(), output.c_str()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
#endif // HOMEASSISTANT_SUPPORT
|