Het slimme huis | Pushover stuurt je berichten over je huis
Het interne FIBARO berichtensysteem laat wat te wensen over: het is soms traag en het is (nog) niet mogelijk om berichten terug te lezen. Daarom hier een handleiding om via het populaire Pushover-systeem berichten te sturen.
- Maak eerst een account aan op de Pushover-site: https://pushover.net/. Let op: de user-key die je krijgt aan het einde van de registratie heb je straks nodig voor de LUA-code.
- Download de Pushover-app uit de appstore (iOS or Play). Je kunt 'm voor vijf dagen gebruiken, daarna kost de app ongeveer 5 euro per platform. Je kunt op ieder platform dezelfde gegevens gebruiken.
- Maak een apllicatie aan op de Pushover-website, noem het bijvoorbeeld FIBARO Home Center 2 en upload het FIBARO-logo. Onthoud de API token, die heb je straks nodig in de LUA-code. Je krijgt maximaal 7500 berichten per maand, maar dat is voor de meeste gebruikers wel genoeg.
- Stuur een testbericht vanuit de Pushover-website om te controleren of alles klopt. Je kunt per bericht een apart geluid kiezen.
- De API website van Pushover geeft informatie over alle mogelijkheden.
FIBARO Home Center 2:
- Maak een globale variabele genaamd 'pushoverBody' en geef het de waarde 0.
- Maak een LUA scene met de volgende code, en gebruik de user-key en app-key uit de Pushover-applicatie.
- Zorg ervoor dat er een vinkje staat bij: 'Do not allow alarm to stop scene while alarm is running'.
De LUA-code die je kunt gebruiken is de volgende:
-------------------------------------------
-- Pushover 3.0 -> sent notifications to your smartphone/tablet/desktop
-- part of this code is being re-used
--[[
%% properties
%% globals
pushoverBody
--]]
-- Make an account for pushover at https://pushover.net/
-- Install the app on smartphone/ tablet and login with credentials
-- Enter your pushover details here
local tkn = "amqmps3GG67kDtfdiX1avgV6nrCpQU"
local usr = "uDb1FGUckQtUodwbypNNQgHJgkbq6f"
--How to use it? Create a scene or virtual device and use this code:
-- local dvc ="iPhone_User"
-- local prio ="0"
-- local ttl ="Scene 109"
-- local msg ="Leaving the house. Lights are turned off"
-- local requestBody ='&device='..dvc ..'&priority='..prio ..'&title='..ttl ..'&message='..msg
-- fibaro:setGlobal("pushoverBody", requestBody)
-- Dont change code below, unless you know what you are doing
local var2 ="pushoverBody"
if fibaro:getGlobalValue(var2) ~= nil then
if debug==true then fibaro:debug("Variable "..var2.." already exists.") end
else
if debug==true then fibaro:debug("Variable "..var2.." created.") end
api.post("/globalVariables",
{
name=var2,
-- value="", -- optional
})
fibaro:setGlobal(var2, 1) --initial setting of home variable
end
--Prevents the scene from running again when the Global pushoverBody variable get's reset to 0 the end of this scene
if (tonumber(fibaro:getGlobalValue(var2)) == 0) then
fibaro:abort();
end
local selfhttp = net.HTTPClient({timeout=2000})
local msg = fibaro:getGlobalValue(var2)
local requestBody = 'token=' ..tkn ..'&user=' ..usr ..msg
--print(requestBody);
selfhttp:request('https://api.pushover.net/1/messages.json', {
options={
headers = selfhttp.controlHeaders,
data = requestBody,
method = 'POST',
timeout = 5000
},
success = function(status)
local result = json.decode(status.data);
print("status");
if result.status == 1 then
print("successful");
print("Request: " ..result.request);
else
print ("failed");
print(status.data);
end
end,
error = function(error)
print "ERROR"
print(error)
end
})
--Reset the global pushoverBody variable to 0, this makes sure that when the same pushover message is send again it will change the global variable and trigger this scene.
fibaro:setGlobal(var2, "0")
-------------------------------------------
- Sla de LUA-code op.
- Vanuit (andere) LUA-scenes kun je nu pushover-berichten sturen door de volgende code aan de scene toe te voegen:
-------------------------------------------
local dvc ="iPhone_User"
local prio ="0"
local ttl ="Alarm Armed"
local msg ="Alarm Armed"
local requestBody ='&device='..dvc ..'&priority='..prio ..'&title='..ttl ..'&message='..msg
fibaro:setGlobal("pushoverBody", requestBody)
-------------------------------------------
Onderstaande code stuurt iedere 30 seconden een high-priority bericht. Dit duurt 3600 seconden, totdat het bericht wordt bevestigd door de app op de telefoon, het alien-bericht wordt gebruikt en de naam van de getriggerde sensor wordt meegegeven.
-------------------------------------------
local startSource = fibaro:getSourceTrigger();
local prio ="2"
local rtr ="30"
local exp ="3600"
local snd ="alien"
local ttl ="!!! ALARM !!!"
local msg = fibaro:getName(startSource["deviceID"]).." Sensor ALARM !!!"local requestBody ='&priority='..prio ..'&retry='..rtr ..'&expire='..exp ..'&sound='
..snd ..'&title='..ttl ..'&message='..msg
fibaro:setGlobal("pushoverBody", requestBody)
-------------------------------------------
Met dank aan het originele Engelse bericht van Edwin.