Page 1 of 1

HC2 och Home Assistant REST API

Posted: 06 May 2016, 16:59
by Svartbacken
Hej

Hittar inget om att någon kör Home Assistant här, men skickar ut en fråga ändå.

Jag försöker styra ett antal Nexa brytare i Telldus Live via Home Assistant (HA) på en Raspberry Pi. Det fungerar bra att slå av dom i HA och det finns ett REST API med JSON.
https://home-assistant.io/developers/rest_api/
Jag har skapat en VD i min HC2 och allt verkar fungera bra förutom att at switchen i HA ställer tillbaka sig efter ca 5 sekunder.



local thisdevice = fibaro:getSelfId()
local ip = fibaro:getValue(thisdevice, 'IPAddress')
local port = fibaro:getValue(thisdevice, 'TCPPort')
local httpSession = Net.FHttp(ip, port);

--jsonTable = { attributes = { assumed_state = true}, state = "on" }
jsonTable = { state = "on" }
jsonString = json.encode(jsonTable)

response, status, errorCode = httpSession:POST('/api/states/switch.trappa', jsonString)

fibaro:debug("Response = "..response)
fibaro:debug("Status = "..status)
fibaro:debug("ErrorCode = "..errorCode)


Några ideér på vad jag skall göra?

Re: HC2 och Home Assistant REST API

Posted: 14 May 2016, 15:24
by Svartbacken
Fick till det efter lite ....

För att slå på en switch device:

local switch = "switch.tv_fonster" -- Name of the light dimmer in Home Assistant
local thisdevice = fibaro:getSelfId()
local ip = fibaro:getValue(thisdevice, 'IPAddress')
local port = fibaro:getValue(thisdevice, 'TCPPort')
local httpSession = Net.FHttp(ip, port);

jsonTable = { entity_id = switch }
jsonString = json.encode(jsonTable)

response, status, errorCode = httpSession:POST("/api/services/switch/turn_on", jsonString)

För att slå på en dimmer device:

local light = "light.tv_fonster_dim" -- Name of the light dimmer in Home Assistant
local thisdevice = fibaro:getSelfId()
local ip = fibaro:getValue(thisdevice, 'IPAddress')
local port = fibaro:getValue(thisdevice, 'TCPPort')
local httpSession = Net.FHttp(ip, port);

local sliderValue = fibaro:getValue(thisdevice, "ui.Slider1.value") -- Get Fibaro Slider Value

if tonumber(sliderValue) <= 5
then
jsonTable = { entity_id = light, brightness = "100" }
elseif tonumber(sliderValue) <= 20
then
jsonTable = { entity_id = light, brightness = math.floor((sliderValue*2.55)+0.5) }
else
jsonTable = { entity_id = light, brightness = "100" }
end

jsonString = json.encode(jsonTable)
response, status, errorCode = httpSession:POST("/api/services/light/turn_on", jsonString)


I dimmer har jag tagit hänsyn till att in tända lamporna för stark eller för svagt. Då sätter den 100 av dom 255 möjliga i Home Assistant. Dock är max i HC2 100 så där av om räkningen med 2.55.


Så nu kan jag köra Tellstick eller Telldus Live från min Fibaro via Home Assistant (körs på en Raspberry Pi).