Hallo,
habe das Script von Boomx zur Anbindung der Netatmo Kamera (http://www.siio.de/sicherheitalarm/netatmo-welcome-status-mit-dem-fibaro-homecenter-2-auslesen/) ausprobiert und bekomme leider keine Verbindung zur API (siehe Beiträge unter dem vorherigen Link).
Das Script habe ich 1:1 übernommen, nichts geändert, nur oben meine Daten (Client-ID,Client secret und Netatmo Zugangsdaten) eingegeben. Das VD habe ich auskommentiert.
My-Netatmo zeigt die Kamera, keine Probleme.Erhalte auch Push-Nachrichten auf mein Handy, wenn sich etwas tut.
Auf der dev.Netatmo.com Seite logge ich mich mit den gleichen Daten ein, erstelle eine App und nehme die dann gelieferten Client-Daten für das Script.
Leider bekomme ich immer nur die Fehlermeldung, dass o2 auth keine Werte liefert, bisher konnte ich also auch keine Variablen auslesen / anlegen.
Ich vermute, dass ich bei der API etwas falsch mache, habe aber keine Ahnung, was?
Offenbar hat mimitoe ähnliche Probleme…
LG TT
Hier nochmal das Script:
--[[
%% properties
%% autostart
%% globals
--]]
-- DIESE DATEN ANPASSEN
local client_id = 'aus API'
local client_secret = 'aus API'
local username = 'my.Netatmo User'
local password = 'my.Netatmo PW'
local refresh = 20
local debug = 1
--local vd_ID = 179
-- AB HIER NICHTS MEHR ANPASSEN
local token = ''
local request_body = ''
Debug = function ( color, message )
if (debug == 1) then
fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span"))
elseif (debug == 0) then
end
end
DebugChange = function ( color, message )
fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span"))
end
DebugError = function ( color, message )
fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span"))
end
fibaro:debug('netatmo welcome Integration v.1.0 gestartet.')
if (debug == 0) then
fibaro:debug('Debug = 0. Es wird bis auf Fehler und Status-Änderungen nichts debuggt.')
else
fibaro:debug('Debug = 1. Es wird alles debuggt.')
end
fibaro:debug('Szene wird alle ' ..refresh.. ' Sekunden ausgeführt')
local sourceTrigger = fibaro:getSourceTrigger();
function oAuth(nextFunction)
local request_body = 'grant_type=password&client_id=' .. client_id .. '&client_secret=' .. client_secret .. '&username=' .. username .. '&password=' .. password .. '&scope=read_camera'
getResponseData('https://api.netatmo.net/oauth2/token', request_body,
function(data)
if (data.access_token ~= nil) then
token = data.access_token
gethomedata()
else
DebugError( "red", "oAuth-API-Call konnte nicht durchgeführt werden! oAuth 2.0 lieferte keinen Wert zurück");
end
end
)
setTimeout(oAuth, refresh*1000)
end
function getResponseData(url, body, func)
local http = net.HTTPClient()
http:request(url, {
options = {
method = 'POST',
headers = {
['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8'
},
data = body
},
success = function(response)
func(json.decode(response.data))
end
})
end
function gethomedata()
request_body_cam = 'access_token=' ..token.. ''
getResponseData('https://api.netatmo.net/api/gethomedata', request_body_cam,
function(getData)
if (getData.body ~= nil) then
for w, v in pairs(getData.body.homes) do
--fibaro:debug('tabelle auslesen')
for a, b in pairs(v.persons) do
if (b.pseudo ~= nil) then
if (b.out_of_sight == false) then
if (fibaro:getGlobalValue(b.pseudo..'_status') ~= nil and fibaro:getGlobalValue(b.pseudo..'_lastseen') ~= nil) then
fibaro:setGlobal(b.pseudo.. "_lastseen", b.last_seen)
local change_var = tonumber(fibaro:getGlobalValue(b.pseudo..'_status'))
if (change_var == 0) then
DebugChange( "green", b.pseudo.. ' ist jetzt anwesend. Setze den Status 1 in der globalen Variblen')
fibaro:setGlobal(b.pseudo.. "_status", "1")
else
Debug( "white", b.pseudo.. 's Status hat sich nicht geändert. Mache nichts')
end
else
DebugError( "red", "ACHTUNG: Die Varaiblen " ..b.pseudo.. "_status & " ..b.pseudo.. "_lastseen müssen eingerichtet werden!")
end
else
if (fibaro:getGlobalValue(b.pseudo..'_status') ~= nil and fibaro:getGlobalValue(b.pseudo..'_lastseen') ~= nil) then
fibaro:setGlobal(b.pseudo.. "_lastseen", b.last_seen)
local change_var2 = tonumber(fibaro:getGlobalValue(b.pseudo..'_status'))
if (change_var2 == 1) then
DebugChange( "orange", b.pseudo.. ' ist jetzt abwesend. Setze den Status 0 in der globalen Variblen')
fibaro:setGlobal(b.pseudo.. "_status", "0")
else
Debug( "white", b.pseudo.. 's Status hat sich nicht geändert. Mache nichts')
end
else
DebugError( "red", "ACHTUNG: Die Varaiblen " ..b.pseudo.. "_status & " ..b.pseudo.. "_lastseen müssen eingerichtet werden!")
end
end
end
end
end
else
DebugError( "red", "API-Call konnte nicht durchgeführt werden! Möglicherweise ist die Refresh-Rate zu klein!")
end
fibaro:call(vd_ID, "pressButton", "9")
end
)
end
if (sourceTrigger["type"] == "autostart") then
oAuth()
end