public PiCollection(ILoggerFactory loggerFactory) { try { _logger = loggerFactory.CreateLogger <PiCollection>(); zeros = new List <RaspberryPi>(); List <SlaveDevice> slaves; string folder = Environment.GetEnvironmentVariable("CONFIG_FOLDER"); string file = $"{folder}/RemoteHosts.xml"; if (System.IO.File.Exists(file)) { slaves = Common.LoadFromXML <List <SlaveDevice> >(file); } else { slaves = SlaveDevice.buildMcuListForTrack(); Common.SaveToXML <List <SlaveDevice> >(slaves, file); } foreach (SlaveDevice slave in slaves.Where(pi => pi.osType == Enums.RemoteOSType.Rpi)) { try { RaspberryPi rpi; file = $"{folder}/{slave.ipAddress}.xml"; if (System.IO.File.Exists(file)) { rpi = Common.LoadFromXML <RaspberryPi>(file); } else { rpi = new RaspberryPi(slave.ipAddress, slave.port); rpi.readRemoteConfigFile(); Common.SaveToXML <RaspberryPi>(rpi, file); } zeros.Add(rpi); //foreach (var rpiDevice in rpi.Relays) //{ // RelayDevice relay = new RelayDevice((Enums.ControlledAreas)rpiDevice.area, // rpiDevice.deviceName, // rpiDevice.state == 1, // rpi.ipAddress); // relay.mcu.port = rpi.port; // _relayDevices.relays.Add(relay); //} //foreach (var rpiDevice in rpi.PirDevices) //{ // PIRDevice pir = new PIRDevice((Enums.ControlledAreas)rpiDevice.area, rpiDevice.deviceName, rpi.ipAddress); // pir.mcu.port = rpi.port; // _pirDevices.pirDevices.Add(pir); //} //foreach (var rpiDevice in rpi.RFSwitches) //{ // RFSwitchDevice sw = new RFSwitchDevice((Enums.ControlledAreas)rpiDevice.area, rpiDevice.deviceName, rpiDevice.bitLength); // sw.mcu.ipAddress = rpi.ipAddress; // sw.mcu.port = rpi.port; // rpiDevice.onCodes.Skip(1).ToList().ForEach(c => sw.addCode(true, (Convert.ToInt64(c)))); // rpiDevice.offCodes.Skip(1).ToList().ForEach(c => sw.addCode(false, (Convert.ToInt32(c)))); // _rfSwitches.areaSwitches.Add(sw); //} } catch (Exception ex) { _logger.LogError($"Constructor(): Unexpected error: {ex.Message}"); } } } catch (Exception ex) { _logger.LogError($"Constructor(): Unexpected error: {ex.Message}"); } return; }
public void load(bool startFresh) { List<SlaveDevice> slaves; zeros = new List<RaspberryPi>(); nodeMCUs = new List<NodeMCU>(); string file = $"{Common.configFolder}/RemoteHosts.xml"; if (!startFresh) { slaves = Common.LoadFromXML<List<SlaveDevice>>(file); } else { slaves = SlaveDevice.buildMcuListForTrack(Enums.RemoteOSType.Rpi | Enums.RemoteOSType.Esp8266); Common.SaveToXML<List<SlaveDevice>>(slaves, file); } foreach (SlaveDevice slave in slaves.Where(pi => pi.osType == Enums.RemoteOSType.Rpi)) { try { RaspberryPi rpi; file = $"{Common.configFolder}/{slave.ipAddress}.xml"; if (System.IO.File.Exists(file)) rpi = Common.LoadFromXML<RaspberryPi>(file); else { rpi = new RaspberryPi(slave.ipAddress, slave.port); rpi.readRemoteConfigFile(); Common.SaveToXML<RaspberryPi>(rpi, file); } zeros.Add(rpi); //foreach (var rpiDevice in rpi.Relays) //{ // RelayDevice relay = new RelayDevice((Enums.ControlledAreas)rpiDevice.area, // rpiDevice.deviceName, // rpiDevice.state == 1, // rpi.ipAddress); // relay.mcu.port = rpi.port; // _relayDevices.relays.Add(relay); //} //foreach (var rpiDevice in rpi.PirDevices) //{ // PIRDevice pir = new PIRDevice((Enums.ControlledAreas)rpiDevice.area, rpiDevice.deviceName, rpi.ipAddress); // pir.mcu.port = rpi.port; // _pirDevices.pirDevices.Add(pir); //} //foreach (var rpiDevice in rpi.RFSwitches) //{ // RFSwitchDevice sw = new RFSwitchDevice((Enums.ControlledAreas)rpiDevice.area, rpiDevice.deviceName, rpiDevice.bitLength); // sw.mcu.ipAddress = rpi.ipAddress; // sw.mcu.port = rpi.port; // rpiDevice.onCodes.Skip(1).ToList().ForEach(c => sw.addCode(true, (Convert.ToInt64(c)))); // rpiDevice.offCodes.Skip(1).ToList().ForEach(c => sw.addCode(false, (Convert.ToInt32(c)))); // _rfSwitches.areaSwitches.Add(sw); //} } catch (Exception ex) { _logger.LogError($"Constructor(): Unexpected error: {ex.Message}"); } } foreach (SlaveDevice slave in slaves.Where(pi => pi.osType == Enums.RemoteOSType.Esp8266)) { try { NodeMCU nodeMcu; file = $"{Common.configFolder}/{slave.ipAddress}.xml"; if (System.IO.File.Exists(file)) nodeMcu = Common.LoadFromXML<NodeMCU>(file); else { nodeMcu = new NodeMCU(slave.ipAddress, slave.port); nodeMcu.readRemoteConfigFile(); Common.SaveToXML<NodeMCU>(nodeMcu, file); } nodeMCUs.Add(nodeMcu); //foreach (var rpiDevice in rpi.Relays) //{ // RelayDevice relay = new RelayDevice((Enums.ControlledAreas)rpiDevice.area, // rpiDevice.deviceName, // rpiDevice.state == 1, // rpi.ipAddress); // relay.mcu.port = rpi.port; // _relayDevices.relays.Add(relay); //} //foreach (var rpiDevice in rpi.PirDevices) //{ // PIRDevice pir = new PIRDevice((Enums.ControlledAreas)rpiDevice.area, rpiDevice.deviceName, rpi.ipAddress); // pir.mcu.port = rpi.port; // _pirDevices.pirDevices.Add(pir); //} //foreach (var rpiDevice in rpi.RFSwitches) //{ // RFSwitchDevice sw = new RFSwitchDevice((Enums.ControlledAreas)rpiDevice.area, rpiDevice.deviceName, rpiDevice.bitLength); // sw.mcu.ipAddress = rpi.ipAddress; // sw.mcu.port = rpi.port; // rpiDevice.onCodes.Skip(1).ToList().ForEach(c => sw.addCode(true, (Convert.ToInt64(c)))); // rpiDevice.offCodes.Skip(1).ToList().ForEach(c => sw.addCode(false, (Convert.ToInt32(c)))); // _rfSwitches.areaSwitches.Add(sw); //} } catch (Exception ex) { _logger.LogError($"Constructor(): Unexpected error: {ex.Message}"); } } }