SERVICE_NAME = "DB Logger" SERVICE_VERSION = "1.0.0" function thrawn_on_start() thrawn_register_service(SERVICE_NAME) thrawn_log("Starting LUA Service " .. SERVICE_NAME) --room/type/device_name/state_name --example: --wohnzimmer/lights/eckstehlampe01/on --kueche/sensors/kuehlschrank_tuer/open thrawn_subscribe("+/lights/+/on") thrawn_subscribe("+/lights/+/brightness") thrawn_subscribe("+/lights/+/color_temp") end function thrawn_on_update(state) thrawn_log("RECV: " .. state.value .. " ON TOPIC " .. state.topic) local topic_comp = thrawn_topic_components(state.topic) if #topic_comp == 4 and topic_comp[2] == "lights" then log_light(topic_comp[1], topic_comp[3], topic_comp[4], state.value) end end function log_light(room, name, type, value) local base_topic = room .. "/lights/" .. name local is_on = false local is_on_cached = tonumber(thrawn_cached_topic(base_topic .. "/on")) if is_on_cached ~= nil then is_on = is_on_cached > 0 end local brightness = tonumber(thrawn_cached_topic(base_topic .. "/brightness")) local color_temp = tonumber(thrawn_cached_topic(base_topic .. "/color_temp")) if brightness ~= nil and color_temp ~= nil then thrawn_log_light_tw(room, name, is_on, brightness, color_temp) elseif brightness ~= nil and color_temp == nil then thrawn_log_light_dimmable(room, name, is_on, brightness) elseif brightness == nil and olor_temp == nil then thrawn_log_light(room, name, is_on) end end