(11.07.2016, 08:21)jetsetter Wrote: Thank you Edgars so much for your help!
Following your example with some modifications, I am now capable to read full info from the AC controller (mode, compressor frequency, outdoor temp, indoor temp, fan speed, wings mode, power consumption etc) as well as control it to power on/off and change it's temperature setpoint!
This has open my appetite for more things to do.... Next I will try to create a complete AC widget so I can monitor and control all other parameters as well, like fan speed, fan direction, operation mode etc. (I will need relative icons though as it seems there aren't any). Talking about widgets, what happen to the Mosaic visualization? Will it continue its development (there isn't any similar widget to control AC for example)? Has it been upgraded in the upcoming release? And talking about firmware , where can I find the latest beta and when the final release will be ready?
I am quoting below the rest of the code I used (function parse(txt) from previous post has been created as a user library) if anyone else want to use it.
Resident script to read sensors and operational status:
Code:ip = '192.168.1.1' -- Daikin WiFi controller IP
http = require('socket.http')
ACON = grp.getvalue('ACON/OFF')
ACpow, ACmode, ACstemp, ACshum, ACfdir = 0
ACfrate=''
----------------------------------------------------------
url = 'http://' .. ip .. '/aircon/get_sensor_info?'
result, err = http.request(url)
if result then
data = parse(result)
grp.update('outtemp', tonumber(data.otemp), dt.float16, 1)
grp.update('intemp', tonumber(data.htemp), dt.float16, 1)
grp.update('compressorfreq', tonumber(data.cmpfreq))
else
alert('HTTP request failed: ' .. tostring(err))
end
----------------------------------------------------------
url = 'http://' .. ip .. '/aircon/get_control_info?'
result, err = http.request(url)
if result then
data = parse(result)
ACpow = tonumber(data.pow)
ACmode = tonumber(data.mode)
ACstemp = tonumber(data.stemp)
ACfrate = data.f_rate
ACfdir = tonumber(data.f_dir)
grp.update('ACpower', ACpow)
grp.update('ACsetpoint', ACstemp, dt.float16, 1)
grp.update('ACopmode', ACmode)
grp.update('ACfandir', ACfdir)
grp.update('ACfanrate', ACfrate)
else
alert('HTTP request failed: ' .. tostring(err))
end
Event-based script to power on/off:
Code:ACIO = event.getvalue()
ip = '192.168.1.1'
http = require('socket.http')
ACpow = tostring(grp.getvalue('ACpower'))
ACmode = tostring(grp.getvalue('ACopmode'))
ACstemp = grp.getvalue('ACsetpoint')
ACfdir = tostring(grp.getvalue('ACfandir'))
ACfrate = grp.getvalue('ACfanrate')
if ACIO then ACpow = 1 else ACpow = 0 end
url = 'http://' .. ip .. '/aircon/set_control_info?pow=' .. ACpow ..'&mode=' .. ACmode .. '&stemp=' .. ACstemp ..'&shum=0&frate=' .. ACfrate .. '&fdir=' .. ACfdir
result, err = http.request(url)
if result then
log(url)
else
alert('HTTP request failed: ' .. tostring(err))
end
Event-based script to change temperature:
Scheduled script (every 15 mins) for gathering hourly consumption:Code:setpoint = event.getvalue()
ip = '192.168.1.1'
http = require('socket.http')
ACpow = tostring(grp.getvalue('ACpower'))
ACmode = tostring(grp.getvalue('ACopmode'))
ACstemp = grp.getvalue('ACsetpoint')
ACstempNEW = tostring(setpoint)
ACfdir = tostring(grp.getvalue('ACfandir'))
ACfrate = grp.getvalue('ACfanrate')
url = 'http://' .. ip .. '/aircon/set_control_info?pow=' .. ACpow ..'&mode=' .. ACmode .. '&stemp=' .. ACstempNEW ..'&shum=0&frate=' .. ACfrate .. '&fdir=' .. ACfdir
result, err = http.request(url)
if result then
log(url)
else
alert('HTTP request failed: ' .. tostring(err))
end
Code:local chunks, i, value
ip = '192.168.1.1'
http = require('socket.http')
url = 'http://' .. ip .. '/aircon/get_day_power_ex?'
result, err = http.request(url)
if result then
data = parse(result)
chunks = data.curr_day_cool:split('/')
i = os.date("*t").hour
value = tonumber(chunks[i])
grp.update('ACkWh', value/10 , dt.float16, 1)
else
alert('HTTP request failed: ' .. tostring(err))
end
I will use these scripts to control en read my airco.
i can control my airco on multiple ways like IR remote or app or LM.
My question is.
Is it possible to just sent one of the value's (the value i will change)?
like just turn on/off, or change temperature?
I tried but the ways i tried didnt work.
or do i need to look at another way for doing this?
Like read the values (except the value i will change) and sent a new comment with all the value's?