This commit is contained in:
2020-11-25 23:21:43 +01:00
parent a9021604a2
commit f8c1b116a8
4 changed files with 124 additions and 0 deletions

49
TV_AVR_Input_Merge.lua Normal file
View File

@@ -0,0 +1,49 @@
SERVICE_NAME = "LGTV & Denon AVR input merge"
SERVICE_VERSION = "1.0.0"
TOPIC_TV_INPUT = "wohnzimmer/tv/input";
TOPIC_SOURCE = "wohnzimmer/tv/input/set";
TOPIC_LGTV_INPUT = "wohnzimmer/lgtv/input";
TOPIC_AVR_INPUT = "wohnzimmer/avr/input";
TOPIC_LGTV_INPUT_SET = "wohnzimmer/lgtv/input/set";
TOPIC_AVR_INPUT_SET = "wohnzimmer/avr/input/set";
AVR_INPUT_ON_TV = "hdmi3"
AVR_INPUTS = {"playstation", "xbox", "nintendo", "appletv", "wiiu"}
function thrawn_on_start()
thrawn_register_service(SERVICE_NAME)
thrawn_log("Starting LUA Service " .. SERVICE_NAME)
thrawn_subscribe(TOPIC_SOURCE)
end
function is_avr_input(input)
for _, avr_input in ipairs(AVR_INPUTS) do
if input == avr_input then
return true
end
end
return false
end
function thrawn_on_update(state)
thrawn_log("RECV: " .. state.value .. " ON TOPIC " .. state.topic)
if state.topic == TOPIC_SOURCE then
if is_avr_input(state.value) then
thrawn_publish(thrawn_create_topic_state(TOPIC_LGTV_INPUT_SET, AVR_INPUT_ON_TV))
thrawn_publish(thrawn_create_topic_state(TOPIC_AVR_INPUT_SET, state.value))
end
elseif state.topic == TOPIC_LGTV_INPUT or TOPIC_AVR_INPUT then
if TOPIC_LGTV_INPUT == AVR_INPUT_ON_TV then
thrawn_publish(thrawn_create_topic_state(TOPIC_TV_INPUT, thrawn_cached_topic(TOPIC_AVR_INPUT)))
else
thrawn_publish(thrawn_create_topic_state(TOPIC_TV_INPUT, thrawn_cached_topic(TOPIC_LGTV_INPUT)))
end
end
end