Hämta data från RSS?

Mek
Medlem
Posts: 38
Joined: 26 Dec 2013, 17:30
10

Hej!

Har nyligen gått från Telldus och Switchking till Fibaro HC2. Än så länge supernöjd. :D

I Switchking hämtade jag solinstrålningsdata från Göteborg energi.

http://goteborgenergi.se/Lib/EnergyView ... 2755_.ashx

Fältindex: 3
Radindex: 10

Går det att få in detta till en variabel i HC2? Eller hur funkar de?

//Mattias
dhanjel
Medlem
Posts: 264
Joined: 19 Apr 2013, 12:47
11
Contact:

Jag tror bara man kommer åt http, ftp och net-anrop i virtuella enheter.
Testa att skapa en sån. Finns lite olika exempel här och på fibaros anrop hur man gör det.
jompa68
Proffsmedlem
Posts: 735
Joined: 12 Aug 2012, 08:53
12
Location: Hofors

Mek wrote:Hej!

Har nyligen gått från Telldus och Switchking till Fibaro HC2. Än så länge supernöjd. :D

I Switchking hämtade jag solinstrålningsdata från Göteborg energi.

http://goteborgenergi.se/Lib/EnergyView ... 2755_.ashx

Fältindex: 3
Radindex: 10

Går det att få in detta till en variabel i HC2? Eller hur funkar de?

//Mattias
Kan göra en virtuell enhet åt dig ikväll.
jompa68
Proffsmedlem
Posts: 735
Joined: 12 Aug 2012, 08:53
12
Location: Hofors

Så här kan man göra
1.PNG
1.PNG (12.14 KiB) Viewed 16489 times
Skapa en variabel (Solwatt)
Skapa en virtuell enhet, lägg till 1st knapp och 2st labels.
2.PNG
2.PNG (46.86 KiB) Viewed 16489 times
Ändra på knappen ifrån String till LUA-kod och lägg in nedanstående kod. Ändra rad nr4 till din virtuella enhets id.

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")
wattTime = string.sub(response,wTimeStart+19, wTimeStop-1)
wattValue = string.sub(response,watt-2, 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)
3.PNG
3.PNG (68.83 KiB) Viewed 16489 times
Skapa en scen som hämtar värdet genom att "trycka" på virtuella enhetes "hämta" knapp.
4.PNG
4.PNG (21.92 KiB) Viewed 16456 times
Last edited by jompa68 on 07 Jan 2014, 15:07, edited 1 time in total.
Mek
Medlem
Posts: 38
Joined: 26 Dec 2013, 17:30
10

Grymt! Tackar vi för!
Ska testa detta i kväll! :D
Två frågor bara...

Går det att få den att uppdatera utan att använda knappen?
Går det att putta in värdet i en variabel?

Har inte fått kläm på alla funktioner ännu.

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

Har uppdaterat skriptet och guiden. Lycka till ;)
Mek
Medlem
Posts: 38
Joined: 26 Dec 2013, 17:30
10

Tack så mycket för hjälpen! :D

Verkar fungera som det ska, får labbs lite till helgen då jag får lite solljus att jobba med.

Hur får jag till det med att få värdet till en variabel?

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

Står i guiden ;)

// Jonny
Mek
Medlem
Posts: 38
Joined: 26 Dec 2013, 17:30
10

Ibland så är man blind! :roll:

Tack för hjälpen!!!
iSnobben
Medlem
Posts: 105
Joined: 27 Dec 2013, 20:39
10

Intressant men vad använder du det till. Har precis beställt en HC2 och det verkar gå att göra väldigt mycket mer med denna än jag först trodde.
Mek
Medlem
Posts: 38
Joined: 26 Dec 2013, 17:30
10

Använder den tills att släcka och tända lampor beroende på hur ljust det är.
Då det ibland blir det ju väldigt mörkt på dagen.
Har tänkt att skaffa ett skymningsrelä, men fram tills dess kör jag med värdet från Göteborg Energi.

//M
Mek
Medlem
Posts: 38
Joined: 26 Dec 2013, 17:30
10

Har lite problem med denna funktion, då värdet ändras från 3 siffrigt ner till 0.

Finns det någon möjlighet att läsa mellan taggarna <description>233 W/m2</description>?
Alltså använda >< som separeringstecken och läsa in det som är där i mellan?
Eller finns det någon möjlighet att välja vilken rad man ska börja leta i? Alltså rad 10, 13 tecken in...
Eftersom det finns två description taggar.

<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Solinstrålning</title>
<link>http://www.goteborgenergi.se</link>
<description>Mätvärden för Solinstrålning</description>
<item>
<title>Aktuellt mätvärde för Solinstrålning</title>
<pubDate>Fri, 24 Jan 2014 12:20:00 GMT</pubDate>
<description>233 W/m2</description>
<guid>2755:Current:2014-01-24 13:20</guid>
<link />
</item>
</channel>
</rss>

//Mattias
Mek
Medlem
Posts: 38
Joined: 26 Dec 2013, 17:30
10

Joooooompa68 hjääälp! :D

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

är det inte från samma källa som mitt tidigare inlägg som du önskar hämta data ifrån?
Mek
Medlem
Posts: 38
Joined: 26 Dec 2013, 17:30
10

Det är samma, :D men det blir problem då solvärdet varierar från 0-300. Som det är nu funkar det för 0-9.
För det funkar väl så att vi letar efter "W/m2" och backar 2 steg. wattValue = string.sub(response,watt-2, watt+3)

Så för att få till det måste man väl på något sätt peka på vilken rad att leta efter samt läsa allt mellan ><

Eller har jag fattat detta fel. :?

Så jag behöver lite experthjälp.
jompa68
Proffsmedlem
Posts: 735
Joined: 12 Aug 2012, 08:53
12
Location: Hofors

Ahh nu ser jag...ok, ge mig en stund så fixar jag ny kod.
jompa68
Proffsmedlem
Posts: 735
Joined: 12 Aug 2012, 08:53
12
Location: Hofors

Prova denna istället, borde fungera.

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")
wattTime = string.sub(response,wTimeStart+19, wTimeStop-1)
wattValue = string.sub(response,watt-15, watt-1)
fibaro:call(thisId, "setProperty", "ui.lblTime.value", wattTime);
fibaro:call(thisId, "setProperty", "ui.lblValue.value", wattValue);
fibaro:setGlobal("Solwatt", wattValue);
fibaro:log(wattTime.." "..wattValue)
Mek
Medlem
Posts: 38
Joined: 26 Dec 2013, 17:30
10

Tack för att du hjälper till, men det fungerar inte. Det den visar med denna kod är <description>0

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

Kommer göra om den, har fått lite tips. Återkommer


Jonny sent this from his iPhone using Tapatalk
Mek
Medlem
Posts: 38
Joined: 26 Dec 2013, 17:30
10

Grymt!
Du är min bästa vän! :D
//Mattias
Post Reply