public async Task <IActionResult> GetBControlData(bool block = true, bool update = false) { try { _logger?.LogDebug("GetBControlData()..."); if (!_bcontrol.IsLocked) { return(StatusCode(StatusCodes.Status406NotAcceptable, "Locked: update not yet finished.")); } if (update) { var status = block ? await _bcontrol.ReadBlockAllAsync() : await _bcontrol.ReadAllAsync(); if (!status.IsGood) { return(StatusCode(StatusCodes.Status502BadGateway, status)); } } return(Ok(_bcontrol.Data)); } catch (Exception ex) { return(StatusCode(StatusCodes.Status500InternalServerError, ex.Message)); } }
/// <summary> /// Method to run when command is executed. /// </summary> /// <returns>Zero if ok.</returns> public async Task <int> OnExecuteAsync(CommandLineApplication app) { try { if (CheckOptions(app)) { // Overriding BControl options. _bcontrol.TcpSlave.Address = Parent.Address; _bcontrol.TcpSlave.Port = Parent.Port; _bcontrol.TcpSlave.ID = Parent.SlaveID; if (Property.Length == 0) { Console.WriteLine($"Reading all data from BControl energy meter."); DataStatus status; if (OptionB) { status = await _bcontrol.ReadBlockAllAsync(); } else { status = await _bcontrol.ReadAllAsync(); } if (status.IsGood) { Console.WriteLine($"BControl: {JsonConvert.SerializeObject(_bcontrol, Formatting.Indented)}"); } else { Console.WriteLine($"Error reading data from BControl energy meter."); Console.WriteLine($"Reason: {status.Explanation}."); } } else if (Property.Length > 0) { Console.WriteLine($"Reading property '{Property}' from BControl energy meter:"); await _bcontrol.ReadPropertyAsync(Property); if (_bcontrol.Data.Status.IsGood) { Console.WriteLine($"Value of property '{Property}' = {_bcontrol.Data.GetPropertyValue(Property)}"); } else { Console.WriteLine($"Error reading property '{Property}' from BControl energy meter."); Console.WriteLine($"Reason: {_bcontrol.Data.Status.Explanation}."); } } } } catch (Exception ex) { _logger?.LogError(ex, $"Exception ReadCommand."); return(-1); } return(0); }
public async Task TestBControlReadAll() { await _bcontrol.ReadAllAsync(); Assert.True(_bcontrol.Data.IsGood); Assert.True(_bcontrol.InternalData.IsGood); Assert.True(_bcontrol.EnergyData.IsGood); Assert.True(_bcontrol.PnPData.IsGood); Assert.True(_bcontrol.SunSpecData.IsGood); }
public async Task TestSettings() { _bcontrol.TcpSlave.Address = "10.0.1.10"; await _bcontrol.ReadAllAsync(); Assert.True(_bcontrol.Data.IsGood); Assert.Equal(21043, _bcontrol.PnPData.ManufacturerID); Assert.Equal(18498, _bcontrol.PnPData.ProductID); Assert.Equal("Energy Manager 300", _bcontrol.PnPData.ProductName); Assert.Equal(1024, _bcontrol.PnPData.ProductVersion); Assert.Equal(516, _bcontrol.PnPData.FirmwareVersion); Assert.Equal("72130511", _bcontrol.PnPData.SerialNumber); Assert.Equal("B-control", _bcontrol.PnPData.VendorName); }
public BControlFixture() { // Set the default culture. CultureInfo.CurrentCulture = new CultureInfo("en-US"); var loggerFactory = new LoggerFactory(); var logger = loggerFactory.CreateLogger <BControl>(); BControl = new BControl(logger, new TcpClient() { TcpMaster = new TcpMasterData(), TcpSlave = new TcpSlaveData() { Address = "10.0.1.5" } }); BControl.ReadAllAsync().Wait(); }