public void ConfigureServices(IServiceCollection services) { services.Configure <GzipCompressionProviderOptions>(options => options.Level = CompressionLevel.Optimal); services.AddResponseCompression(options => options.Providers.Add <GzipCompressionProvider>()); services.AddMvc() .SetCompatibilityVersion(CompatibilityVersion.Version_2_1) .AddJsonOptions(options => { options.SerializerSettings.Formatting = Formatting.Indented; options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); options.SerializerSettings.Converters.Add(new StringEnumConverter { NamingStrategy = new CamelCaseNamingStrategy() }); options.SerializerSettings.Error = (object sender, Newtonsoft.Json.Serialization.ErrorEventArgs errorArgs) => { //Partial serialization //todo Logger.Error("JsonParseError: " + errorArgs.ErrorContext.Error.Message); errorArgs.ErrorContext.Handled = true; }; options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore; }); services.AddSingleton(serviceProvider => DevServerConfig.ReadFromFile()); services.AddSingleton <DevServer>(); }
static void Main(string[] args) { try { Console.Title = "TechBrain"; Trace.Listeners.Add(new TextWriterTraceListener(Console.Out)); var config = DevServerConfig.ReadFromFile(); var devServer = new DevServer(config); devServer.Start(); var devices = devServer.DeviceRepository.GetAll(); Console.Title = "TechBrain - Started"; Console.ReadLine(); //while (true) //{ //} config.SaveToFile(); devServer.DeviceRepository.Commit(); } catch (Exception ex) { Trace.WriteLine(ex); } }
static void Main(string[] args) { try { Console.Title = "Simulator_TechBrain"; Trace.Listeners.Add(new TextWriterTraceListener(Console.Out)); var config = DevServerConfig.ReadFromFile(); var devServer = new DevServer(config); if (devServer.DeviceRepository.Count == 0) { devServer = new DevServer(config, Simulator.GenerateNewDevices(config)); } devServer.Start(); var devices = devServer.DeviceRepository.GetAll(); var sim = new Simulator(config, devices); sim.Start(); foreach (var dev in devices) { dev.IpPort = config.Esp_TcpPort; dev.SleepTime = null; } Thread.Sleep(100); devServer.PauseScan(); while (true) { sim.EspSend(devices[0].SerialNumber); sim.EspSend(devices[1].SerialNumber); Wrap("ping Esp", () => devices[0].Ping(), () => devices[0].IsOnline.ToStringNull()); Wrap("ping Esp_Avr", () => devices[1].Ping(), () => devices[0].IsOnline.ToStringNull()); Wrap("time Esp_Avr", () => devices[1].SetTime(DateTime.Now)); Wrap("sensors Esp_Avr", () => devices[1].UpdateSensors(), () => "=>" + Extender.JoinToString("; ", devices[1].Sensors.Select(v => v.Value as object))); Wrap("outputs Esp", () => devices[0].SetOut(1, 23)); Wrap("outputs Esp_Avr", () => devices[1].SetOut(1, 100)); Wrap("sleep Esp", () => devices[0].Sleep(TimeSpan.FromSeconds(10))); Wrap("sleep Esp_Avr", () => devices[1].Sleep(TimeSpan.FromSeconds(40))); devServer.DeviceRepository.Commit(); Console.ReadLine(); } } catch (Exception ex) { Trace.WriteLine(ex); } }