Hallo ich bin seit einem halben Jahr mit HC2 unterwegs und habe eine Reihe an Aktoren von Fibaro und anderen Herstellern in Verwendung und mittlerweile an die 40 Lua Szenen gut laufen. Nun möchte ich meine Mobile Alerts Sensoren auslesen und auch nutzen um z.B. Temperaturen zu überwachen.
Es gibt dazu auch im Netz eine Dokumentation, die ich im folgenden übernommen habe.
Mir ist jedoch nicht klar, wie ich Header und Datenblock so gestalte, dass ich die Daten nachher verwenden kann. Verwende ich die URL mit meiner PhoneID im Browser bekomme ich eine schöne Übersicht all meiner Sensoren mit ihren Messwerten, aber wie drücke ich dies in meiner LUA Szene für das Homecenter2 aus?
Hier die RestAPI Angaben zu Mobile Alerts und darunter meinen kläglichen Skriptversuch, der im Debug mit der print Meldung ERROR und Operation canceled als Status quittiert wird.
Ich bin für Eure Hinweise dankbar.
https://github.com/sarnau/MMMMobileAlerts/blob/master/MobileAlertsGatewayRESTAPI.markdown
Mobile Alerts REST API
The REST API provides read access to the most recent received measurement
for ID01, ID08, ID09, ID0B and ID0E sensors.
Overview
Requests are made using HTTPS. All requests are POST request. Request
parameters are encoded in the “application/x-www-form-urlencoded” format.
All requests return data encoded in json. Datetime values are encoded as the
number of seconds since 1.1.1970.
The base url of the REST API is https://www.data199.com/api/pv1.
Successfull calls return json using the following structure:
{
„success“ : true,
[Response data],
}
Calls with errors return json using the following structure:
{
„success“ : false,
„errorcode“ : 1,
„errormessage“ : „Some error message“,
}
local url= „https://measurements.mobile-alerts.eu/Home/SensorsOverview?phoneid=123456789“ – hier steht natürlich die richtige ID
local self = net.HTTPClient({timeout=2000})
self:request(url, {
options={
headers = self.controlHeaders,
method = ‚POST‘,
data = requestBody,
timeout = 5000,
checkCertificate = false
},
success = function(status)
local result = json.decode(status.data)
if result[1] then
if result[1].error then
print („ERROR „… result[1].status)
print (“ type: " … result[1].error.type)
print (“ address: " … result[1].error.address)
print (" description: " … result[1].error.description)
elseif result[1].success then
print „SUCCESS“
print (result[1].devices)
self:updateProperty(„userName“, result[1].success.username)
else
print ("unknown response structure: ")
print(status)
end
else
print ("unknown response structure: ")
print(status)
end
end,
error = function(error)
print „ERROR“
print(error)
end
})