public static int Main(string[] args) { Log.Register(new ConsoleOutEventLog(80)); Log.Information("Initializing application..."); Console.CancelKeyPress += (object sender, ConsoleCancelEventArgs e) => { e.Cancel = true; executionLed.Low(); }; // Initializing hardware and retrieving current sensor values try { tmp102.Configure(false, TexasInstrumentsTMP102.FaultQueue.ConsecutiveFaults_6, TexasInstrumentsTMP102.AlertPolarity.AlertActiveLow, TexasInstrumentsTMP102.ThermostatMode.ComparatorMode, false, TexasInstrumentsTMP102.ConversionRate.Hz_1, false); temp = (short)tmp102.ReadTemperatureRegister(); temperatureC = temp / 256.0; for (int i = 0; i < 10; i++) { tempAvgWindow [i] = temp; } sumTemp = temp * 10; } catch (Exception ex) { Log.Exception(ex); sumTemp = 0; temperatureC = 0; errorLed.High(); } try { adc.Configure(true, false, false, false, false, false); light = adc.ReadRegistersBinary() [0]; lightPercent = (100.0 * light) / 0x0fff; for (int i = 0; i < 10; i++) { lightAvgWindow [i] = light; } sumLight = light * 10; } catch (Exception ex) { Log.Exception(ex); sumLight = 0; lightPercent = 0; errorLed.High(); } // Sampling of new Sensor Values Timer Timer = new Timer(SampleSensorValues, null, 1000 - DateTime.Now.Millisecond, 1000); // Every second. // Main loop Log.Information("Initialization complete. Application started..."); try { while (executionLed.Value) { System.Threading.Thread.Sleep(1000); } } catch (Exception ex) { Log.Exception(ex); executionLed.Low(); } finally { Log.Information("Terminating application."); Log.Flush(); Log.Terminate(); Timer.Dispose(); executionLed.Dispose(); measurementLed.Dispose(); errorLed.Dispose(); networkLed.Dispose(); motion.Dispose(); i2cBus.Dispose(); } return(0); }
public static int Main(string[] args) { Log.Register(new ConsoleOutEventLog(80)); Log.Information("Initializing application..."); HttpSocketClient.RegisterHttpProxyUse(false, false); // Don't look for proxies. DB.BackupConnectionString = "Data Source=sensor.db;Version=3;"; DB.BackupProviderName = "Clayster.Library.Data.Providers.SQLiteServer.SQLiteServerProvider"; db = DB.GetDatabaseProxy("TheSensor"); Console.CancelKeyPress += (object sender, ConsoleCancelEventArgs e) => { e.Cancel = true; executionLed.Low(); }; // Initializing hardware and retrieving current sensor values try { tmp102.Configure(false, TexasInstrumentsTMP102.FaultQueue.ConsecutiveFaults_6, TexasInstrumentsTMP102.AlertPolarity.AlertActiveLow, TexasInstrumentsTMP102.ThermostatMode.ComparatorMode, false, TexasInstrumentsTMP102.ConversionRate.Hz_1, false); temp = (short)tmp102.ReadTemperatureRegister(); temperatureC = temp / 256.0; for (int i = 0; i < 10; i++) { tempAvgWindow [i] = temp; } sumTemp = temp * 10; } catch (Exception ex) { Log.Exception(ex); sumTemp = 0; temperatureC = 0; errorLed.High(); } try { adc.Configure(true, false, false, false, false, false); light = adc.ReadRegistersBinary() [0]; lightPercent = (100.0 * light) / 0x0fff; for (int i = 0; i < 10; i++) { lightAvgWindow [i] = light; } sumLight = light * 10; } catch (Exception ex) { Log.Exception(ex); sumLight = 0; lightPercent = 0; errorLed.High(); } // Loading historical Sensor Values Log.Information("Loading Minute Values."); perMinute.AddRange(Record.LoadRecords(Rank.Minute)); Log.Information("Loading Hour Values."); perHour.AddRange(Record.LoadRecords(Rank.Hour)); Log.Information("Loading Day Values."); perDay.AddRange(Record.LoadRecords(Rank.Day)); Log.Information("Loading Month Values."); perMonth.AddRange(Record.LoadRecords(Rank.Month)); // Resuming average calculations int Pos = perSecond.Count; DateTime CurrentTime = DateTime.Now; DateTime Timestamp; while (Pos-- > 0) { Record Rec = perSecond [Pos]; Timestamp = Rec.Timestamp; if (Timestamp.Minute == CurrentTime.Minute && Timestamp.Hour == CurrentTime.Hour && Timestamp.Date == CurrentTime.Date) { sumSeconds += Rec; nrSeconds++; } else { break; } } Pos = perMinute.Count; while (Pos-- > 0) { Record Rec = perMinute [Pos]; Timestamp = Rec.Timestamp; if (Timestamp.Hour == CurrentTime.Hour && Timestamp.Date == CurrentTime.Date) { sumMinutes += Rec; nrMinutes++; } else { break; } } Pos = perHour.Count; while (Pos-- > 0) { Record Rec = perHour [Pos]; Timestamp = Rec.Timestamp; if (Timestamp.Date == CurrentTime.Date) { sumHours += Rec; nrHours++; } else { break; } } Pos = perDay.Count; while (Pos-- > 0) { Record Rec = perDay [Pos]; Timestamp = Rec.Timestamp; if (Timestamp.Month == CurrentTime.Month && Timestamp.Year == CurrentTime.Year) { sumDays += Rec; nrDays++; } else { break; } } // Sampling of new Sensor Values Timer Timer = new Timer(SampleSensorValues, null, 1000 - DateTime.Now.Millisecond, 1000); // Every second. // HTTP Interface HttpServer HttpServer = new HttpServer(80, 10, true, true, 1); Log.Information("HTTP Server receiving requests on port " + HttpServer.Port.ToString()); HttpServer.Register("/", HttpGetRoot, false); // Synchronous, no authentication HttpServer.Register("/html", HttpGetHtml, false); // Synchronous, no authentication HttpServer.Register("/historygraph", HttpGetHistoryGraph, false); // Synchronous, no authentication HttpServer.Register("/xml", HttpGetXml, false); // Synchronous, no authentication HttpServer.Register("/json", HttpGetJson, false); // Synchronous, no authentication HttpServer.Register("/turtle", HttpGetTurtle, false); // Synchronous, no authentication HttpServer.Register("/rdf", HttpGetRdf, false); // Synchronous, no authentication // HTTPS interface // Certificate must be a valid P12 (PFX) certificate file containing a private key. // X509Certificate2 Certificate = new X509Certificate2 ("Certificate.pfx", "PASSWORD"); // HttpServer HttpsServer = new HttpServer (443, 10, true, true, 1, true, false, Certificate); // // foreach (IHttpServerResource Resource in HttpServer.GetResources()) // HttpsServer.Register (Resource); // // Log.Information ("HTTPS Server receiving requests on port " + HttpsServer.Port.ToString ()); // Main loop Log.Information("Initialization complete. Application started..."); try { while (executionLed.Value) { System.Threading.Thread.Sleep(1000); } } catch (Exception ex) { Log.Exception(ex); executionLed.Low(); } finally { Log.Information("Terminating application."); Log.Flush(); Log.Terminate(); Timer.Dispose(); HttpServer.Dispose(); //HttpsServer.Dispose (); executionLed.Dispose(); measurementLed.Dispose(); errorLed.Dispose(); networkLed.Dispose(); motion.Dispose(); i2cBus.Dispose(); } return(0); }
public static int Main(string[] args) { Log.Register(new ConsoleOutEventLog(80)); Log.Information("Initializing application..."); HttpSocketClient.RegisterHttpProxyUse(false, false); // Don't look for proxies. Console.CancelKeyPress += (object sender, ConsoleCancelEventArgs e) => { e.Cancel = true; executionLed.Low(); }; // Initializing hardware and retrieving current sensor values try { tmp102.Configure(false, TexasInstrumentsTMP102.FaultQueue.ConsecutiveFaults_6, TexasInstrumentsTMP102.AlertPolarity.AlertActiveLow, TexasInstrumentsTMP102.ThermostatMode.ComparatorMode, false, TexasInstrumentsTMP102.ConversionRate.Hz_1, false); temp = (short)tmp102.ReadTemperatureRegister(); temperatureC = temp / 256.0; for (int i = 0; i < 10; i++) { tempAvgWindow [i] = temp; } sumTemp = temp * 10; } catch (Exception ex) { Log.Exception(ex); sumTemp = 0; temperatureC = 0; errorLed.High(); } try { adc.Configure(true, false, false, false, false, false); light = adc.ReadRegistersBinary() [0]; lightPercent = (100.0 * light) / 0x0fff; for (int i = 0; i < 10; i++) { lightAvgWindow [i] = light; } sumLight = light * 10; } catch (Exception ex) { Log.Exception(ex); sumLight = 0; lightPercent = 0; errorLed.High(); } // Sampling of new Sensor Values Timer Timer = new Timer(SampleSensorValues, null, 1000 - DateTime.Now.Millisecond, 1000); // Every second. // HTTP Interface HttpServer HttpServer = new HttpServer(80, 10, true, true, 1); Log.Information("HTTP Server receiving requests on port " + HttpServer.Port.ToString()); HttpServer.Register("/", HttpGetRoot, false); // Synchronous, no authentication HttpServer.Register("/html", HttpGetHtml, false); // Synchronous, no authentication HttpServer.Register("/historygraph", HttpGetHistoryGraph, false); // Synchronous, no authentication HttpServer.Register("/xml", HttpGetXml, false); // Synchronous, no authentication HttpServer.Register("/json", HttpGetJson, false); // Synchronous, no authentication HttpServer.Register("/turtle", HttpGetTurtle, false); // Synchronous, no authentication HttpServer.Register("/rdf", HttpGetRdf, false); // Synchronous, no authentication // HTTPS interface // Certificate must be a valid P12 (PFX) certificate file containing a private key. // X509Certificate2 Certificate = new X509Certificate2 ("Certificate.pfx", "PASSWORD"); // HttpServer HttpsServer = new HttpServer (443, 10, true, true, 1, true, false, Certificate); // // foreach (IHttpServerResource Resource in HttpServer.GetResources()) // HttpsServer.Register (Resource); // // Log.Information ("HTTPS Server receiving requests on port " + HttpsServer.Port.ToString ()); // Main loop Log.Information("Initialization complete. Application started..."); try { while (executionLed.Value) { System.Threading.Thread.Sleep(1000); } } catch (Exception ex) { Log.Exception(ex); executionLed.Low(); } finally { Log.Information("Terminating application."); Log.Flush(); Log.Terminate(); Timer.Dispose(); HttpServer.Dispose(); //HttpsServer.Dispose (); executionLed.Dispose(); measurementLed.Dispose(); errorLed.Dispose(); networkLed.Dispose(); motion.Dispose(); i2cBus.Dispose(); } return(0); }