Exempelkod i C# för att hämta temperaturer från temperatur.n

Generella mjukvarufrågor som inte är beroende av vilket operativsystem som körs skall ställas i denna kategori
Kategoriregler
Vill du visa bilder i ditt inlägg? Använd funktionen "Ladda upp bilaga" nedanför textrutan!
Användarvisningsbild
elf98
Hemautomation - det är mer än en hobby
Inlägg: 5434
Blev medlem: 27 okt 2006, 13:49
Ort: Linköping
Kontakt:

Exempelkod i C# för att hämta temperaturer från temperatur.n

Inlägg av elf98 »

Det dök upp ett mail med kod som kan användas för att hämta temperaturer från temperatur.nu.

Någon kankse är intresserad?

Kod: Markera allt

using System;
using System.IO;
using System.Net;
using System.Globalization;
using System.Text.RegularExpressions;

namespace EurofireControl
{
    public class Temp
    {
        protected static Regex termoPattern = new Regex(@"Time[:][ ](\d{2}[:]\d{2})[,][ ]Date[:][ ](\d{2}[ ][a-zA-Z]{3}[ ]\d{4})[,][ ]Temp[:][ ]([-]?[0-9\.]+)", RegexOptions.Compiled|RegexOptions.IgnoreCase);

        public static bool GetCurrentTemp(out DateTime date, out double temp)
        {
            bool fStatus = false;
            date = DateTime.MinValue;
            temp = 0.0;

            // reads temp from temperatur.nu, expected format:
            // Time: 22:07, Date: 09 Jan 2008, Temp: 2.6°C
            try
            {

                WebRequest wr = HttpWebRequest.Create("http://www.temperatur.nu/termo/sollentuna/termo.txt");
                wr.Method = "GET";
                wr.Timeout = 10000;

                using(WebResponse resp = wr.GetResponse())
                {
                    using(Stream s = resp.GetResponseStream())
                    {
                        StreamReader sr = new StreamReader(s);
                        String termoLine = sr.ReadToEnd();
                        sr.Close();

                        Match termoMatch = termoPattern.Match(termoLine);
                        if(termoMatch.Success)
                        {
                            CultureInfo ci = new CultureInfo("en-US");

                            string dateTimeString = String.Format("{0} {1}", termoMatch.Groups[2].Value, termoMatch.Groups[1].Value);
                            date = DateTime.ParseExact(dateTimeString, "dd MMM yyyy HH:mm", ci);
                            ci.NumberFormat.NumberDecimalSeparator = ".";
                            temp = double.Parse(termoMatch.Groups[3].Value, NumberStyles.AllowLeadingSign | NumberStyles.AllowDecimalPoint, ci);
                            fStatus = true;
                        }
                    }
                    resp.Close();
                }
            }
            catch(Exception)
            {
            }

            return fStatus;
        }
    }
}
Koden är skriven av Johan Olofsson
Grundade m.nu & temperatur.nu

Driver temperatur.nu

Bild