17.02.2023, 09:30
(17.02.2023, 09:14)admin Wrote: Use this. Make sure you have the latest firmware as requests in such format won't work on older versions.
Change unitid, username, password as needed. unitid is the ID that you see when opening the status page (https://pool.aseko.com/XYZ/data/actual). Sometimes the login fails with gateway timeout, just run the script again if it happens.
Code:json = require('json')
http = require('socket.http')
unitid = '1234'
username = 'user@example.com'
password = 'password'
body = json.encode({
username = username,
password = password,
agree = 'on'
})
resp, code, hdrs, stat = http.request({
url = 'https://pool.aseko.com/api/login',
method = 'POST',
headers = {
['Content-Type'] = 'application/json',
['Content-Length'] = #body,
},
body = body
})
setcookie = hdrs['set-cookie'] or ''
cookie = setcookie:split(';')[1]
if not cookie then
log('login failed', resp)
return
end
resp, code, hdrs, stat = http.request({
url = 'https://pool.aseko.com/api/units/' .. unitid,
method = 'GET',
headers = {
['Cookie'] = cookie
}
})
data = json.pdecode(resp)
if type(data) ~= 'table' then
log('data request failed', resp)
return
end
values = {}
for _, var in ipairs(data.variables) do
values[ var.type ] = var.currentValue
end
grp.checkupdate('1/1/1', values.rx)
grp.checkupdate('1/1/2', values.waterTemp)
grp.checkupdate('1/1/3', values.ph)
Works like a charm.
I put this script as a resident script and after a while I get this error
Code:
string: {"status":401,"error":"You've been signed out","message":"Your session has expired. Please sign in again with your credentials."}