public ProgramBlock SaveMacro(string options) { RecordingDisable(); // var program = new ProgramBlock(); program.Name = "New Macro"; program.Address = masterControlProgram.GeneratePid(); program.Type = "Wizard"; foreach (var migCommand in macroCommands) { var command = new ProgramCommand(); command.Domain = migCommand.Domain; command.Target = migCommand.NodeId; command.CommandString = migCommand.Command; command.CommandArguments = ""; if (!string.IsNullOrEmpty(migCommand.GetOption(0)) && migCommand.GetOption(0) != "null") { //TODO: should we pass entire command option string? migCmd.OptionsString command.CommandArguments = migCommand.GetOption(0) + (options != "" && options != "null" ? "/" + options : ""); } program.Commands.Add(command); } masterControlProgram.ProgramAdd(program); // return(program); }
public ProgramBlock SaveMacro(string options) { RecordingDisable(); // ProgramBlock pb = new ProgramBlock(); pb.Name = "New Macro"; pb.Address = _mastercontrolprogram.GeneratePid(); pb.Type = "Wizard"; foreach (MIGInterfaceCommand mc in _macrocommands) { ProgramCommand pc = new ProgramCommand(); pc.Domain = mc.domain; pc.Target = mc.nodeid; pc.CommandString = mc.command; pc.CommandArguments = ""; if (!string.IsNullOrEmpty(mc.GetOption(0)) && mc.GetOption(0) != "null") { //TODO: should we pass entire command option string? migCmd.OptionsString pc.CommandArguments = mc.GetOption(0) + (options != "" && options != "null" ? "/" + options : ""); } pb.Commands.Add(pc); } _mastercontrolprogram.ProgramAdd(pb); // return(pb); }
public void LoadConfiguration() { LoadSystemConfig(); // // load modules data // LoadModules(); // // load last saved groups data into controlGroups list try { var serializer = new XmlSerializer(typeof(List<Group>)); using (var reader = new StreamReader(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "groups.xml"))) controlGroups = (List<Group>)serializer.Deserialize(reader); } catch { //TODO: log error } // // load last saved automation groups data into automationGroups list try { var serializer = new XmlSerializer(typeof(List<Group>)); using (var reader = new StreamReader(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "automationgroups.xml"))) automationGroups = (List<Group>)serializer.Deserialize(reader); } catch { //TODO: log error } // // load last saved programs data into masterControlProgram.Programs list // if (masterControlProgram != null) { masterControlProgram.Enabled = false; masterControlProgram.StopEngine(); masterControlProgram = null; } masterControlProgram = new ProgramEngine(this); try { var serializer = new XmlSerializer(typeof(List<ProgramBlock>)); using (var reader = new StreamReader(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "programs.xml"))) { var programs = (List<ProgramBlock>)serializer.Deserialize(reader); foreach (var program in programs) { program.IsRunning = false; // backward compatibility with hg < 0.91 if (program.Address == 0) { // assign an id to program if unassigned program.Address = masterControlProgram.GeneratePid(); } masterControlProgram.ProgramAdd(program); } } } catch (Exception ex) { LogError( Domains.HomeAutomation_HomeGenie, "LoadConfiguration()", ex.Message, "Exception.StackTrace", ex.StackTrace ); } // // load last saved scheduler items data into masterControlProgram.SchedulerService.Items list // try { var serializer = new XmlSerializer(typeof(List<SchedulerItem>)); using (var reader = new StreamReader(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "scheduler.xml"))) { var schedulerItems = (List<SchedulerItem>)serializer.Deserialize(reader); masterControlProgram.SchedulerService.Items.AddRange(schedulerItems); } } catch { //TODO: log error } // force re-generation of Modules list modules_RefreshAll(); // // enable automation programs engine // masterControlProgram.Enabled = true; }
public void LoadConfiguration() { LoadSystemConfig(); // // load modules data // LoadModules(); // // load last saved groups data into controlGroups list try { var serializer = new XmlSerializer(typeof(List<Group>)); var reader = new StreamReader(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "groups.xml")); controlGroups = (List<Group>)serializer.Deserialize(reader); reader.Close(); } catch { //TODO: log error } // // load last saved automation groups data into automationGroups list try { var serializer = new XmlSerializer(typeof(List<Group>)); var reader = new StreamReader(Path.Combine( AppDomain.CurrentDomain.BaseDirectory, "automationgroups.xml" )); automationGroups = (List<Group>)serializer.Deserialize(reader); reader.Close(); } catch { //TODO: log error } // // load last saved programs data into masterControlProgram.Programs list // if (masterControlProgram != null) { masterControlProgram.Enabled = false; masterControlProgram.StopEngine(); masterControlProgram = null; } masterControlProgram = new ProgramEngine(this); try { var serializer = new XmlSerializer(typeof(List<ProgramBlock>)); var reader = new StreamReader(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "programs.xml")); var programs = (List<ProgramBlock>)serializer.Deserialize(reader); foreach (var program in programs) { program.IsRunning = false; //program.IsEvaluatingConditionBlock = false; //program.ScriptErrors = ""; // backward compatibility with hg < 0.91 if (program.Address == 0) { // assign an id to program if unassigned program.Address = masterControlProgram.GeneratePid(); } // in case of c# script preload assembly from generated .dll if (program.Type.ToLower() == "csharp" && !program.AssemblyLoad()) { program.ScriptErrors = "Program update is required."; } //else //{ // program.ScriptErrors = ""; //} masterControlProgram.ProgramAdd(program); } reader.Close(); } catch (Exception ex) { //TODO: log error HomeGenieService.LogEvent( Domains.HomeAutomation_HomeGenie, "LoadConfiguration()", ex.Message, "Exception.StackTrace", ex.StackTrace ); } // // load last saved scheduler items data into masterControlProgram.SchedulerService.Items list // try { var serializer = new XmlSerializer(typeof(List<SchedulerItem>)); var reader = new StreamReader(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "scheduler.xml")); var schedulerItems = (List<SchedulerItem>)serializer.Deserialize(reader); masterControlProgram.SchedulerService.Items.AddRange(schedulerItems); reader.Close(); } catch { //TODO: log error } // // start MIG Interfaces // try { migService.StartInterfaces(); } catch { //TODO: log error } // force re-generation of Modules list //_jsonSerializedModules(false); modules_RefreshAll(); // // enable automation programs engine // masterControlProgram.Enabled = true; }