Created At
Nov 11, 2020
Created By Marzena Kula
Fibaro HC3 event messages via Alexa speaker
Created At
Nov 11, 2020
Last Update
Nov 12, 2020
Platforms
HC 3 Lite, Z-box Hub, Yubii Home Pro, Yubii Home, Venture WISE, HC 3
Views
4105
Download
104
Would you like to integrate the Amazon Alexa Echo with your existing Home Automation solution? With the service www.IJPUK.com you can create as many doorbells as you like, then get the Amazon Alexa Echo device to announce and or chime when your doorbell is pressed.
Perhaps your doorbell is not loud enough? Or, you sometimes find you can not hear your doorbell in certain rooms of your house? Use your Amazon Alexa as an extension and make sure you never miss your doorbell ring again!
Once you have linked your Alexa device, created a door bell or two, you can test them out to ensure that they sound your chosen chime, all free of charge.
The Amazon Alexa system can go further than this through the use of Alexa Routines. These are scenes (as shown below) that you can easily create to run when something triggers them, a doorbell press is just one of the many trigger inputs available, you could think of this, not as creating doorbells, but as creating triggers.
| Trigger | Actions |
![]() |
![]() |
When you are ready to embed this into your home automation controller, you can make use of our API service.
-- Fibaro HC3 edition - Donated by Tony - Thank you
function QuickApp:onInit()
baseUrl = "https://api.ijpuk.com"
-- Visit https://www.ijpuk.com to create an account and get your doorbell key
local ijpukUserName = "Your login"
local ijpukPassword = "Your password"
local doorbellKey = "Your doorbell key"
---------------------- Please dont change below this line ----------------------
local http = net.HTTPClient({timeout=2000})
-- Utility function to send requests to email bridge
function sendRequest(url, method, headers, data, next, fail)
http:request(baseUrl .. url,
{
options = {
method = method,
headers = headers,
data = data,
timeout = 5000,
checkCertificate = false
},
success = function(response)
local status = response.status
if (status == 200 and next ~= nil) then
next(response);
elseif (status ~= 200 and fail ~= nil) then
fail(response);
end
end,
error = function(err)
if (fail ~= nil) then
fail(err);
end
end
})
end
function decode(d)
local isError, err = pcall(
function()
error({ data = json.decode(d) })
end
)
if isError then
local badData = json.encode(d)
self:debug(badData)
end
return err.data
end
-- Utility function to encode a string into Base64
local b='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
function base64Enc(data)
return ((data:gsub('.', function(x)
local r, b='', x:byte()
for i=8, 1, -1 do r=r..(b%2^i-b%2^(i-1)>0 and '1' or '0') end
return r;
end)..'0000'):gsub('%d%d%d?%d?%d?%d?', function(x)
if (#x < 6) then return '' end
local c=0
for i=1,6 do c=c+(x:sub(i,i)=='1' and 2^(6-i) or 0) end
return b:sub(c+1,c+1)
end)..({ '', '==', '=' })[#data%3+1])
end
local userNamePasswordBase64Encoded = base64Enc(ijpukUserName .. ":" .. ijpukPassword)
sendRequest("/api/v1/Doorbell/" .. doorbellKey, "POST", {
['Authorization'] = "Basic " .. userNamePasswordBase64Encoded
}, "", function(response)
local result = decode(response.data)
if result ~= nil and result.success == true then
self:debug("Success response received")
elseif result ~= nil and result.success == false then
self:debug("Error occured: " .. result.error)
end
end,
function(response)
self:debug("An error occurred")
local status = response.status
if status == 401 then
self:debug("Username or password were invalid")
elseif status == 403 then
self:debug("Missing or expired Premium subscription")
else
self:debug("An unknown error occurred : " .. status)
end
end
)
end





--Copy in triggers/conditions (left side of script page)
{
conditions = { {
isTrigger = true,
operator = "!=",
property = "Alexa_Key",
type = "global-variable",
value = " Dummy "
} },
operator = "any"
}
QA_ID = your QA id.
debug = false
function log(message)
if debug then
fibaro.debug("",message);
end
end
--TTS message and clear it after reading
log("executed")
message= fibaro.getGlobalVariable("Alexa_Key")
log(message)
if message ~= nil and message ~= "Dummy" then
fibaro.call(QA_ID, "onInit") --Id QA TTS read
fibaro.sleep(1000)
fibaro.setGlobalVariable("Alexa_Key", "Dummy") --Reset global variable
log("done")
else log("Unvalid message")
log(message)
end

If you want to make more notifications (DoorBell - ijpuk.com) you need to correct the value of "Alexa_key" to the new value "Alexa_kay1" in Quick App and Lua Scene
If you don't want Alexa to hear "Someone is on ..." before every notification, use the routine function in Amazon Alexa. You could create a routine that makes an Announcement, and then set this Announcement to be whatever you want.
Many thanks to Ian from www.ijpuk.com for support and help -
we have it all thanks to him
RIGHTS