Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
 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;
 }
Esempio n. 4
0
 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;
 }