public Jacuzzi(JacuzziParameters parameters, string host) { _parameters = parameters; Client = new ModbusClientTcp(); Host = host; /*TempsActivation = 5; * TempsDesactivation = 15;*/ _pompeTimer = new DownTimer(TimeSpan.FromMinutes(TempsActivation)); PompeMode = true; PompeManuel = false; Projecteur = false; LumiereSol = false; WaterMain = false; WaterRefill = false; /*HistoriqueCountMax = 144; * IntervalSecondsMesureTemperature = 600;*/ _measureTimer = new DownTimer(TimeSpan.Zero); /*HistoriqueTemperatureEau = new List<MesureTemperature>(HistoriqueCountMax); * HistoriqueTemperatureAir = new List<MesureTemperature>(HistoriqueCountMax);*/ CleanHistorique(); }
public void UpdateHistoriqueTemperature() { if (_measureTimer.Elapsed) { _measureTimer.SetTimeout(TimeSpan.FromSeconds(IntervalSecondsMesureTemperature)); _measureTimer.Restart(); HistoriqueTemperatureAir.Add(new MesureTemperature() { x = DateTime.Now.ToString(DateTimeFormat), y = TemperatureAir }); HistoriqueTemperatureEau.Add(new MesureTemperature() { x = DateTime.Now.ToString(DateTimeFormat), y = TemperatureEau }); CleanHistorique(); /* * while (HistoriqueTemperatureAir.Count >= HistoriqueCountMax) * { * HistoriqueTemperatureAir.RemoveAt(0); * } * * while (HistoriqueTemperatureEau.Count >= HistoriqueCountMax) * { * HistoriqueTemperatureEau.RemoveAt(0); * }*/ JacuzziParameters.Serialize(_parameters); } }
public static void Serialize(JacuzziParameters param) { XmlSerializer serializer = new XmlSerializer(typeof(JacuzziParameters)); using (StreamWriter writer = new StreamWriter("Jacuzzi.xml")) { serializer.Serialize(writer, param); } }
static void Main(string[] args) { int refresh = ManageRefreshArg(args); VerboseMode = ManageVerboseArg(args); try { JacuzziParameters parameters = JacuzziParameters.DeSerializeOrCreate(); Jacuzzi root = new Jacuzzi(parameters, ManageHostArg(args)); using (WoopsaServer woopsaServer = new WoopsaServer(root, 10001)) { woopsaServer.BeforeWoopsaModelAccess += (object sender, EventArgs e) => { Monitor.Enter(root.locker); }; woopsaServer.AfterWoopsaModelAccess += (object sender, EventArgs e) => { Monitor.Exit(root.locker); }; woopsaServer.WebServer.Routes.Add("web", HTTPMethod.GET, new RouteHandlerEmbeddedResources("HTML", Assembly.GetEntryAssembly())); woopsaServer.WebServer.Routes.Add("web", HTTPMethod.GET, new RouteHandlerEmbeddedResources("HTML.index.html", Assembly.GetEntryAssembly())); Console.WriteLine("Woopsa server started. Client at http://localhost:10001/web/"); for (;;) { try { lock (root.locker) root.CyclicUpdate(); } catch (Exception e) { ManageException(e); Thread.Sleep(refresh * 3); } Thread.Sleep(refresh); } } } catch (Exception e) { ManageException(e); } }
public static JacuzziParameters DeSerializeOrCreate() { try { XmlSerializer serializer = new XmlSerializer(typeof(JacuzziParameters)); using (StreamReader reader = new StreamReader("Jacuzzi.xml")) { return(serializer.Deserialize(reader) as JacuzziParameters); } } catch { JacuzziParameters param = new JacuzziParameters(); param.HistoriqueCountMax = 144; param.IntervalSecondsMesureTemperature = 600; param.TempsActivation = 10; param.TempsDesactivation = 20; return(param); } }