Hämta data från RSS?

jompa68
Proffsmedlem
Posts: 735
Joined: 12 Aug 2012, 08:53
12
Location: Hofors

Prova denna

Code: Select all

HC2 = Net.FHttp("www.goteborgenergi.se") 
response, status, errorcode = HC2:GET("/Lib/EnergyView/Rss.ashx?MeasureId=2755&Type=Current&Images=False")

thisId = 242 --ID på virtuella enheten

wTimeStart = string.find(response,"<guid>")
wTimeStop = string.find(response,"</guid>")
watt = string.find(response,"W/m2</description>")
wattTime = string.sub(response,wTimeStart+19, wTimeStop-1)
wattValue = string.sub(response,watt-3, watt+3)

fibaro:call(thisId, "setProperty", "ui.lblTime.value", wattTime);
fibaro:call(thisId, "setProperty", "ui.lblValue.value", wattValue);
fibaro:setGlobal("Solwatt", wattValue);
fibaro:log(wattTime.." "..wattValue)
Lundan
Medlem
Posts: 44
Joined: 18 Oct 2013, 09:57
11

Om det gäller solinstrålningsvärdet från Göteborg Energi så har jag löst det som följande:

Code: Select all

startTag = "<description>"
stopTag = " W/m2</description>"
unitText = "Solinstrålning = "
unitValue = " W/m2"
timeStartTag = "<guid>2755:Current:"
timeStopTag = "</guid>"

DATA = Net.FHttp("www.goteborgenergi.se", 80) 

response, status, errorCode = DATA:GET("/Lib/EnergyView/Rss.ashx?MeasureId=2755&Type=Current&Images=False")

if tonumber(status) == 200 and errorCode == 0
then
    startValue = string.find(response,startTag, 275)
    stopValue = string.find(response,stopTag, 275)
    Value= string.sub(response,startValue+string.len(startTag),stopValue-1)
 
    timeStartValue = string.find(response,timeStartTag)
    timeStopValue = string.find(response,timeStopTag)
    timeValue= string.sub(response,timeStartValue+string.len(timeStartTag),timeStopValue-1):sub(12,19)
 
    fibaro:setGlobal("insolation", Value)
 
    fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label1.value", (Value..unitValue))
    fibaro:call(fibaro:getSelfId(), "setProperty", "ui.Label2.value", timeValue..":00")
 
    fibaro:debug(unitText..Value..unitValue)
    fibaro:debug("Tid = "..timeValue)
    fibaro:log(Value..unitValue.." ("..timeValue..":00)")
  else
    fibaro:debug("ErrorCode = "..errorCode)
    fibaro:debug("Status = "..status)
    fibaro:log("Status = "..status.." ErrorCode = "..errorCode)
end
Skrivet på en iPad, så det kan ha smugit sig in något fel...
Mek
Medlem
Posts: 38
Joined: 26 Dec 2013, 17:30
10

Ska testa båda! :D
Tack så grymt mycket för hjälpen!
//Mattias
Post Reply