HC2 och Home Assistant REST API

Utvecklar du en smartphone-app? Datorprogramvara? Få hjälp av andra och bidra med dina egna erfaranheter.
Post Reply
Svartbacken
Medlem
Posts: 44
Joined: 02 Mar 2015, 17:01
Location: Uppsala

06 May 2016, 16:59

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?
Svartbacken
Medlem
Posts: 44
Joined: 02 Mar 2015, 17:01
Location: Uppsala

14 May 2016, 15:24

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).
Attachments
Fibaro VD for Home Assistant.zip
(3.49 KiB) Downloaded 135 times
Post Reply