public DeviceController(DeviceConfiguration config) { this.config = config; plugInterface = new PlugInterface(config.Host); emeter = new EMeter(plugInterface); emeter.Updated += Emeter_Updated; emeter.Start(); }
private bool EnrollDevice(DeviceSettings device) { string alias = device.alias ?? defaults.alias; string mac = device.mac ?? defaults.mac; string ip = device.ip ?? defaults.ip; string ssid = device.ssid ?? defaults.ssid; string password = device.password ?? defaults.password; var enctype = device.encryptionType ?? defaults.encryptionType ?? WLanKeyType.WPA; var iface = new PlugInterface(ip); try { var sysconfig = new PlugSystem(iface); var clock = new Clock(iface); var wlan = new WLan(iface); sysconfig.Refresh(); if (!string.IsNullOrEmpty(mac)) { if (mac != sysconfig.MacAddress) { Console.WriteLine($"Skipping device (mac mismatch {mac} != {sysconfig.MacAddress}"); return(true); } } Console.WriteLine($"MAC={sysconfig.MacAddress} DID={sysconfig.DeviceId} FID={sysconfig.FirmwareId} Alias={sysconfig.Alias}"); if (!string.IsNullOrEmpty(alias)) { Console.Write("Setting alias..."); sysconfig.SetAlias(alias); Console.WriteLine("OK"); } Console.Write("Setting date/time..."); clock.DateTime = DateTime.Now; Console.WriteLine("OK"); Console.Write("Setting WLAN params..."); wlan.AssociateWithStation(ssid, password, enctype); Console.WriteLine("OK"); return(true); } catch (Exception any) { Console.WriteLine($"error: {any.Message}"); return(false); } }
static void Main(string[] args) { var options = new OptionSet(); options.Add("ip=", "IP address of device", (string ip) => { IPAddress = ip; }); if (args.Length == 0) { ShowUsage(options); return; } List <string> extra; try { extra = options.Parse(args); } catch (OptionException ex) { Console.WriteLine(ex.Message); ShowUsage(options); return; } Console.Clear(); var iface = new PlugInterface(IPAddress); var emeter = new EMeter(iface); Console.CancelKeyPress += (e, a) => { Environment.Exit(0); }; emeter.Updated += Emeter_Updated; emeter.Start(); while (true) { Console.CursorLeft = 0; Console.CursorTop = 0; Console.WriteLine("Press CTRL+C to exit"); Console.WriteLine(); Console.WriteLine($"\t{emeter.Voltage}V {emeter.Current}A {emeter.Power}W {emeter.TotalPower}kWh".PadRight(Console.BufferWidth - 1)); Console.WriteLine($"\tVGain: {emeter.VGain} IGain: {emeter.IGain}".PadRight(Console.BufferWidth - 1)); Console.WriteLine(); Console.WriteLine("Q - increase VGain, A - decrease VGain"); Console.WriteLine("W - increase IGain, S - decrease IGain"); Console.WriteLine("Shift - adjust by 1000 units, Alt - adjust by 10 units, no key - 100 units"); if (Console.KeyAvailable && emeter.VGain > 0 && emeter.IGain > 0) { var key = Console.ReadKey(true); int adjustment = 100; if ((key.Modifiers & ConsoleModifiers.Shift) == ConsoleModifiers.Shift) { adjustment = 1000; } if ((key.Modifiers & ConsoleModifiers.Alt) == ConsoleModifiers.Alt) { adjustment = 10; } switch (key.Key) { case ConsoleKey.Q: Console.WriteLine($"Adjusting VGain by +{adjustment}..."); emeter.SetGain(emeter.VGain + adjustment, emeter.IGain); break; case ConsoleKey.A: Console.WriteLine($"Adjusting VGain by -{adjustment}..."); emeter.SetGain(emeter.VGain - adjustment, emeter.IGain); break; case ConsoleKey.W: Console.WriteLine($"Adjusting IGain by +{adjustment}..."); emeter.SetGain(emeter.VGain, emeter.IGain + adjustment); break; case ConsoleKey.S: Console.WriteLine($"Adjusting IGain by -{adjustment}..."); emeter.SetGain(emeter.VGain, emeter.IGain - adjustment); break; } Console.Clear(); } Thread.Sleep(100); } }