Esempio n. 1
0
        public HomeKitServer(ILogger logger, int port, string name, string ltsk, string ltpk, string deviceId, string pairCode, string manufacturer, string bridgeName, int configVersion)
        {
            if (!HomeKitSetup.IsSetupCodeValid(pairCode))
            {
                throw new ArgumentException($"{nameof(pairCode)} is not valid...");
            }

            if (configVersion <= 0)
            {
                configVersion = 1;
            }

            Manufacturer = manufacturer;
            BridgeName   = bridgeName;
            var hapPort = port;

            _bonjour   = new BonjourService(logger, Convert.ToUInt16(hapPort), name, deviceId, configVersion);
            _hapServer = new HapControllerServer(logger, this, hapPort, ltsk, ltpk, deviceId, pairCode);

            _bonjour.AlreadyPaired = !string.IsNullOrEmpty(ltpk);

            _hapServer.PairingCompleted += HapServerOnPairingCompleted;

            var bridgeAccessory = new Accessory
            {
                Id = 1
            };

            bridgeAccessory.Services.Add(AccessoryFactory.CreateAccessoryInfo(bridgeAccessory, 1, bridgeName, manufacturer, ServerInfo.ServerUid.ToString()));
            _accessoryContainer.AddAccessory(bridgeAccessory);
        }
Esempio n. 2
0
        static async Task Main(string[] args)
        {
            Console.WriteLine("Hello World!");

            HomeKitServer.Init();

            var logger = new ConsoleLogger("mylogger", (s, level) => true, false);

            string ltpk = null;

            if (File.Exists("LTPK"))
            {
                ltpk = File.ReadAllText("LTPK");
            }

            string ltsk = null;

            if (File.Exists("LTSK"))
            {
                ltsk = File.ReadAllText("LTSK");
            }

            var homekit = new HomeKitServer(logger, 52765, "11automaticacore-1ad18", ltsk, ltpk, "BA:2F:FA:1A:CD:AA",
                                            "123-45-555", "AutomaticaCore123", "1AutomaticaCoreBridge");

            homekit.PairingCompleted += Homekit_PairingCompleted;

            var lightAccessory          = AccessoryFactory.CreateLightBulbAccessory("Light1", "AutomaticaCore", "123456", false);
            var outletAccessory         = AccessoryFactory.CreateOutletAccessory("Outlet", "AutomaticaCore", "123456", false);
            var switchAccessory         = AccessoryFactory.CreateSwitchAccessory("Switch1", "AutomaticaCore", "123456", false);
            var contactSensorAcceessory = AccessoryFactory.CreateContactSensorAccessory("Contact1", "AutomaticaCore", "123456", 0);

            homekit.AddAccessory(lightAccessory);
            homekit.AddAccessory(outletAccessory);
            homekit.AddAccessory(switchAccessory);
            homekit.AddAccessory(contactSensorAcceessory);
            homekit.AddAccessory(AccessoryFactory.CreateTemperatureSensorAccessory("Temperature1", "AutomaticaCore", "asdfasdf", 22.9));

            homekit.ValueChanged += (sender, eventArgs) =>
                                    Console.WriteLine($"Value changed {eventArgs.Characteristic.Value}");

            await homekit.Start();

            Console.ReadLine();

            var onoff = lightAccessory.Services[1].Characteristics.SingleOrDefault(a => a.Id == 8);

            homekit.SetCharacteristicValue(onoff, true);

            Console.ReadLine();

            await homekit.Stop();
        }
Esempio n. 3
0
        public override IDriverNode CreateDriverNode(IDriverContext ctx)
        {
            if (ctx.NodeInstance.This2NodeTemplateNavigation.Key == "pairing-key")
            {
                _pairingNode = new PairingKeyNode(ctx);

                return(_pairingNode);
            }

            Accessory accessory = null;


            switch (ctx.NodeInstance.This2NodeTemplateNavigation.Key)
            {
            case "light-bulb-folder":
                accessory = AccessoryFactory.CreateLightBulbAccessory(ctx.NodeInstance.Name, "AutomaticaCore",
                                                                      ctx.NodeInstance.ObjId.ToString(), false);
                break;

            case "power-outlet-folder":
                accessory = AccessoryFactory.CreateOutletAccessory(ctx.NodeInstance.Name, "AutomaticaCore",
                                                                   ctx.NodeInstance.ObjId.ToString(), false);
                break;

            case "contact-sensor-folder":
                accessory = AccessoryFactory.CreateContactSensorAccessory(ctx.NodeInstance.Name, "AutomaticaCore",
                                                                          ctx.NodeInstance.ObjId.ToString(), 1);
                break;

            case "switch-folder":
                accessory = AccessoryFactory.CreateSwitchAccessory(ctx.NodeInstance.Name, "AutomaticaCore",
                                                                   ctx.NodeInstance.ObjId.ToString(), false);
                break;

            case "temperature-sensor-folder":
                accessory = AccessoryFactory.CreateTemperatureSensorAccessory(ctx.NodeInstance.Name, "AutomaticaCore",
                                                                              ctx.NodeInstance.ObjId.ToString(), 0);
                break;
            }

            if (accessory == null)
            {
                return(null);
            }

            _accessories.Add(accessory);

            return(new FolderNodeInstance(ctx, this, accessory));
        }
        public void TakeDamage(int damage)
        {
            if (_accessory != null)
            {
                _accessory.Health -= damage;
                var temp = _accessory.Health;                         //temp health for leftover damage

                if (_accessory.Health <= 0 && _accessory.Type == "R") //dead zombie
                {
                    Die();
                }
                else if (_accessory.Health <= 50 && _accessory.Type != "R") //become regular zombie if health is below 50 (regular zombie max health)
                {
                    _accessory        = AccessoryFactory.GetAccessory("1");
                    _accessory.Health = temp;
                    Console.Write(" Becoming Regular zombie.");
                }
            }
        }
Esempio n. 5
0
        public HomeKitServer(ILogger logger, int port, string name, string ltsk, string ltpk, string deviceId, string pairCode, string manufacturer, string bridgeName)
        {
            Manufacturer = manufacturer;
            BridgeName   = bridgeName;
            var hapPort = port;

            _bonjour   = new BonjourService(logger, hapPort, name);
            _hapServer = new HapControllerServer(logger, this, hapPort, ltsk, ltpk, deviceId, pairCode);

            _hapServer.PairingCompleted += HapServerOnPairingCompleted;

            var bridgeAccessory = new Accessory
            {
                Id = 1
            };

            bridgeAccessory.Services.Add(AccessoryFactory.CreateAccessoryInfo(bridgeAccessory, 1, bridgeName, manufacturer, ServerInfo.ServerUid.ToString()));
            _accessory.Accessories.Add(bridgeAccessory);
        }
Esempio n. 6
0
        static async Task Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            var logger = new ConsoleLogger();

            HomeKitServer.Init(logger);


            string ltpk = null;

            if (File.Exists("LTPK"))
            {
                ltpk = File.ReadAllText("LTPK");
            }

            string ltsk = null;

            if (File.Exists("LTSK"))
            {
                ltsk = File.ReadAllText("LTSK");
            }

            ServerInfo.ServerUid = Guid.NewGuid();

            var    objId = new Guid("e00b1712-a2bf-4420-b3e5-c9b9a0c4a5f2").ToString().Replace("-", "");
            string code  = $"{CreateRandom(100, 999)}-{CreateRandom(10, 99)}-{CreateRandom(100, 999)}";

            code = "111-23-222";

            Console.WriteLine($"Code is {code}");

            var homekitId =
                $"{objId[0]}{objId[1]}:{objId[2]}{objId[3]}:{objId[4]}{objId[5]}:{objId[6]}{objId[7]}:{objId[8]}{objId[9]}:{objId[10]}{objId[11]}";

            var homekit = new HomeKitServer(logger, 54321, "HomeKitA", ltsk, ltpk, homekitId,
                                            code, "demo", "demo" + homekitId, 6);

            homekit.PairingCompleted += Homekit_PairingCompleted;

            var lightAccessory           = AccessoryFactory.CreateLightBulbAccessory(0, "Light1", "AutomaticaCore", "123456", false);
            var lightAccessory2          = AccessoryFactory.CreateLightBulbAccessory(1, "Light2", "AutomaticaCore", "12345", false);
            var lightAccessory3          = AccessoryFactory.CreateLightBulbAccessory(3, "Light3", "AutomaticaCore", "1234567", false);
            var outletAccessory          = AccessoryFactory.CreateOutletAccessory(4, "Outlet", "AutomaticaCore", "123", false);
            var switchAccessory          = AccessoryFactory.CreateSwitchAccessory(5, "Switch1", "AutomaticaCore", "1456", false);
            var contactSensorAcceessory  = AccessoryFactory.CreateContactSensorAccessory(6, "Contact1", "AutomaticaCore", "d123456", 0);
            var contactSensorAcceessory2 = AccessoryFactory.CreateContactSensorAccessory(7, "Contact2", "AutomaticaCore", "1b23456", 0);
            var contactSensorAcceessory3 = AccessoryFactory.CreateContactSensorAccessory(10, "Contact3", "AutomaticaCore", "1b23456d", 0);
            var lightAccessory4          = AccessoryFactory.CreateLightBulbAccessory(9, "Light4", "AutomaticaCore", "asdf1234567", false);

            homekit.AddAccessory(lightAccessory);
            homekit.AddAccessory(lightAccessory2);
            homekit.AddAccessory(lightAccessory3);
            homekit.AddAccessory(lightAccessory4);
            homekit.AddAccessory(outletAccessory);
            homekit.AddAccessory(switchAccessory);
            homekit.AddAccessory(contactSensorAcceessory);
            homekit.AddAccessory(contactSensorAcceessory2);
            homekit.AddAccessory(contactSensorAcceessory3);
            homekit.AddAccessory(AccessoryFactory.CreateTemperatureSensorAccessory(8, "Temperature1", "AutomaticaCore", "asdfasdf", 22.9));

            homekit.ValueChanged += (sender, eventArgs) =>
                                    Console.WriteLine($"Value changed {eventArgs.Characteristic.Value}");

            homekit.PairingCompleted += (sender, eventArgs) =>
            {
                Console.WriteLine($"Paring completed...");
            };

            await homekit.Start();


            ThreadPool.QueueUserWorkItem(async state =>
            {
                var value = true;
                while (true)
                {
                    var onoff = contactSensorAcceessory.Services[1].Characteristics.SingleOrDefault(a => a.Id == 8);
                    homekit.SetCharacteristicValue(onoff, value);

                    value = !value;
                    await Task.Delay(1000);
                }
            });

            Console.ReadLine();

            await homekit.Stop();
        }
 public Zombie(string accessoryType)
 {
     isAlive    = true;
     health     = 50;
     _accessory = AccessoryFactory.GetAccessory(accessoryType);
 }