Hej!
Har nyligen gått från Telldus och Switchking till Fibaro HC2. Än så länge supernöjd.
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
Hämta data från RSS?
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.
Testa att skapa en sån. Finns lite olika exempel här och på fibaros anrop hur man gör det.
Kan göra en virtuell enhet åt dig ikväll.Mek wrote:Hej!
Har nyligen gått från Telldus och Switchking till Fibaro HC2. Än så länge supernöjd.
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
Så här kan man göra
Skapa en virtuell enhet, lägg till 1st knapp och 2st labels. Ändra på knappen ifrån String till LUA-kod och lägg in nedanstående kod. Ändra rad nr4 till din virtuella enhets id.
Skapa en scen som hämtar värdet genom att "trycka" på virtuella enhetes "hämta" knapp.
Skapa en variabel (Solwatt)Skapa en virtuell enhet, lägg till 1st knapp och 2st labels. Ä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)
Last edited by jompa68 on 07 Jan 2014, 15:07, edited 1 time in total.
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
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
Det är samma, 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.
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.
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)