Søk i nettsamfunnet
Viser resultater for emneknaggene 'badetemperatur'.
Fant 1 resultat
-
For å teste meg litt så satte jeg igang med ett script (c#) for å hente badetemperaturer fra yr. Yr legger alle badetemperaturer ut som en xml fil på adressen http://om.yr.no/badetemperatur/badetemperatur.xml Jeg har laget en liten scriptsnutt som henter ned xml, plukker ut fylket. Løper igjennom alle temperaturer for fylket og gir ett snitt. Grunnen til at jeg kan ta for hele fylket er at så lenge jeg har fulgt med så har Østfold kun fått varsling for 2 steder og begge er på Jeløya. Og siden det er der jeg bor så tenkte jeg i utgangspunktet å ta snittet. Mulig jeg kommer til å flikke mer på scriptet etterhvert for i tillegg å plukke ut høyeste og laveste. Hva gjør man for å bruke dette scriptet? Først lager du en virtual device Og i den spesifiserer du ett navn, setter den som Status Only Device Setter grafikk hvis det interresserer deg Og til slutt går inn på advanced (jeg er usikker på om ID er laget idet man trykker for ny device eller om du må inn etter at du har lagret første gangen). Det som er viktig her er Reference ID. Legg til scriptet under i homeseer sin scriptkatalog (hos meg er den å finne i C:\Program Files (x86)\HomeSeer HS3\scripts). Filen må ha endelse/extension .cs. I mitt tilfelle har jeg kalt det YrBadetemperatur.cs som gir full path: C:\Program Files (x86)\HomeSeer HS3\scripts\YrBadetemperatur.cs using System; using System.Collections.Generic; using System.IO; using System.IO.Compression; using System.Linq; using System.Net; using System.Text; using System.Threading.Tasks; using System.Xml; public object Main(object[] Parms) { int virtualDeviceId = 154; //Virtuell device reference id som man har definert for å legge inn tekstverdien fra yr string countyId = "01"; //Hvilket fylke man skal hente inn verdier fra string logName="GuahtdimYrBade";//Her kan man sette inn hva man vil. Det er første kolonne i loggen hs.WriteLog(logName,"Start Yr badetemp" ); System.Net.WebRequest webRequest = System.Net.WebRequest.Create(@"http://om.yr.no/badetemperatur/badetemperatur.xml"); System.IO.Stream content; System.Net.WebResponse response = webRequest.GetResponse(); //Håndtere gzip av content if (((System.Net.HttpWebResponse)response).ContentEncoding =="gzip") { content = new System.IO.Compression.GZipStream(response.GetResponseStream(), System.IO.Compression.CompressionMode.Decompress); } else { content = response.GetResponseStream(); } System.IO.StreamReader reader = new System.IO.StreamReader(content); string strContent = reader.ReadToEnd(); if (strContent.Length > 0) { int startPoint = strContent.IndexOf("\n", StringComparison.InvariantCulture) + 1;//Fjerner første xml linje <?xml version="1.0" encoding="UTF-8"?> strContent = strContent.Substring(startPoint); System.Xml.XmlDocument xmlDocument = new System.Xml.XmlDocument(); xmlDocument.LoadXml(strContent); System.Xml.XmlNode ostfoldNode = xmlDocument.SelectSingleNode("//badetemp/badetemperaturer/county[@id='" + countyId + "']"); if (ostfoldNode != null) { System.Xml.XmlNodeList tempNodes = ostfoldNode.SelectNodes("//county[@id='" + countyId + "']/place/temperature"); if (tempNodes != null) { int totaltTemp = 0; int counter = 0; //Henter inn alle vanntemperaturer for fylket og gjør det mulig å lage snitt foreach (System.Xml.XmlNode tempNode in tempNodes) { System.Xml.XmlAttribute test = tempNode.Attributes["water"]; totaltTemp += int.Parse(test.Value); counter++; } decimal avgTemp =(decimal) (totaltTemp/counter); string badeTempString = "Vanntemperatur Jeløya(snitt): " + avgTemp.ToString("0.0") + "\u00B0C"; hs.SetDeviceString(virtualDeviceId,badeTempString,true); //string stringValue=hs.DeviceString(virtualDeviceId); //hs.WriteLog("From device", stringValue); hs.WriteLog(logName,badeTempString ); } } } hs.WriteLog(logName,"Done" ); return 0; } Etter dette bør du lage en event som tar seg av innhenting av verdier. Jeg har gjort det som bildet under viser Det er bare å komme med spørsmål og ønsker.