![]() |
|
Siegenia AEROPAC - Printable Version +- LogicMachine Forum (https://forum.logicmachine.net) +-- Forum: LogicMachine eco-system (https://forum.logicmachine.net/forumdisplay.php?fid=1) +--- Forum: Gateway (https://forum.logicmachine.net/forumdisplay.php?fid=10) +--- Thread: Siegenia AEROPAC (/showthread.php?tid=2265) |
Siegenia AEROPAC - gjniewenhuijse - 04.10.2019 Next device to control: the Siegenia AEROPAC Smart There is one product on the web that supports this device, iobroker: https://github.com/Apollon77/ioBroker.siegenia Is it easy to control them with a LM/HL? I see they use a websocket in: https://github.com/Apollon77/ioBroker.siegenia/blob/master/lib/siegenia.js RE: Siegenia AEROPAC - admin - 04.10.2019 See this thread for websocket library: https://forum.logicmachine.net/showthread.php?tid=1294&pid=7823#pid7823 RE: Siegenia AEROPAC - gjniewenhuijse - 29.10.2019 mmm i only receive a 1006 error Code: * arg: 1
* nil
* arg: 2
* nil
* arg: 3
* bool: false
* arg: 4
* number: 1006
* arg: 5
* string: wrong stateCode: iIp = '192.168.x.x'
iUsr = 'admin'
iPwd = 'xxxxxxxx'
if not ws then
ws = require('user.websocket')
url = 'wss://'..iUsr..':'..iPwd..'@'..iIp..':443/WebSocket'
-- mode is either sync or copas, second parameter sets timeout in seconds
client = ws.client('sync', 10)
client:connect(url)
end
log(client:receive())Anyone a suggestion how to find a detailed error? 30-10-2019: change the protocol from ws to wss gives no error 1006, but how to control the box? RE: Siegenia AEROPAC - gjniewenhuijse - 30.10.2019 i like to turn this device on/off and set my fanlevel. Who can help me? RE: Siegenia AEROPAC - admin - 30.10.2019 From JS code it looks like you don't have to pass user/password via URL but send a login request via WS. Each request is encoded using JSON: Code: login = json.encode({
command = 'login',
user = user,
password = password,
long_life = false,
})For On/Off and fan control try this (change deviceactive value as needed): Code: req = json.encode({
command = 'setDeviceParams',
params = {
devicestate = { deviceactive = true },
fanlevel = 3, -- 0..7
fanpower = 50, -- 0..100
}
})RE: Siegenia AEROPAC - admin - 30.10.2019 There's missing id parameter in my example. Use this helper function to send requests: Code: function send(data)
reqid = (reqid or 0) + 1
data.id = reqid
data = json.encode(data)
return client:send(data)
end
send({
command = 'login',
user = iUsr,
password = iPwd,
long_life = false,
})
send({
command = 'setDeviceParams',
params = {
devicestate = { deviceactive = false },
fanlevel = 0, -- 0..7
}
})
send({
command = 'logout'
})If you want to keep the connection open then you should send keep-alive every 10 seconds or so: Code: send({
command = 'keepAlive',
param = {
extend_session = true
}
})RE: Siegenia AEROPAC - gjniewenhuijse - 30.10.2019 (30.10.2019, 14:40)admin Wrote: There's missing id parameter in my example. Use this helper function to send requests: Many thanks, it works great..
|