示例#1
0
        //[Route("api/HS100/{id}")]
        public ActionResult <DeviceInfo> GetById(int id)
        {
            Console.WriteLine($"GetById() Entered. deviceId: {id}");
            DeviceInfo devInfo = new DeviceInfo(id);

            //Set up the light switches starting at ip 192.168.x.65
            //API user will have to know Id;


            try
            {
                bool  isOnline;
                HS1XX mSmartPlug = getDevice(id, out isOnline);
                if (isOnline)
                {
                    devInfo = mSmartPlug.GetDeviceInfo();
                }
                else
                {
                    Console.WriteLine($"GetById(): HS100 id: ${id} is not online");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error in GetById(): {ex.Message}");
                return(NotFound());
            }


            return(devInfo);
        }
示例#2
0
        public ActionResult <string> BuildConfig(int timeout)
        {
            Console.WriteLine($"BuildConfig() Entered. Timeout {timeout}");

            var allDevices = HS1XX.GetAllDevices_TCP_Scanner(System.Net.NetworkInformation.NetworkInterfaceType.Ethernet, timeout);             //timeOut

            if (allDevices == null || allDevices.Count < 1)
            {
                return("No HS100's found during scan...");
            }

            Console.WriteLine($"Scan returned {allDevices.Count} HS100's");

            List <HS100Config> configs = new List <HS100Config>();
            //allDevices.Values.ToList().ForEach(d => configs.Add(new HS100Config() { a}))
            int deviceId = 0;

            foreach (IPAddress ip in allDevices.Keys)
            {
                var devinfo = allDevices[ip];
                var addr    = ip.ToString();
                Console.WriteLine($"Adding {addr}");
                configs.Add(new HS100Config(++deviceId, devinfo.Alias, addr, devinfo.MAC));
            }

            return(Common.getXML <List <HS100Config> >(configs));
        }
示例#3
0
        private static void showTpLinkDevices()
        {
            try
            {
                Console.WriteLine("Available TP-Link Devices");
                Console.WriteLine("");
                Console.WriteLine("IPv4 address    Name");
                Console.WriteLine("--------------------------------------------------------------------------------------");

                foreach (NetworkInterfaceType ntype in Enum.GetValues(typeof(NetworkInterfaceType)))
                {
                    foreach (KeyValuePair <IPAddress, DeviceInfo> dev_info in HS1XX.GetAllDevices_UDP_Broadcast(ntype, 2000))
                    {
                        Console.WriteLine($"{dev_info.Key.ToString().PadRight(15, ' ')} {dev_info.Value.Alias}");
                    }
                }

                Console.WriteLine("");
                showDonationInfo();
            }
            catch
            {
                throw;
            }
        }
示例#4
0
        public ActionResult <string> Discover(int timeout)
        {
            Console.WriteLine($"Discover() Entered. Timeout {timeout}");
            var allDevices = HS1XX.GetAllDevices_TCP_Scanner(System.Net.NetworkInformation.NetworkInterfaceType.Ethernet, timeout);             //timeOut

            if (allDevices == null || allDevices.Count < 1)
            {
                return("No HS100's found during scan...");
            }

            Console.WriteLine($"Scan returned {allDevices.Count} HS100's");

            return(Common.getXML <List <DeviceInfo> >(allDevices.Values.ToList()));
        }
示例#5
0
        public ActionResult <DeviceInfo> TurnOff(int deviceId)
        {
            Console.WriteLine($"TurnOff() Entered. deviceId: {deviceId}");
            bool  isOnline;
            HS1XX mSmartPlug = getDevice(deviceId, out isOnline);

            if (isOnline)
            {
                return(setRelayState(mSmartPlug, 0));
            }

            Console.WriteLine($"TurnOff(): HS100 id: ${deviceId} is not online");
            return(NotFound());
        }
示例#6
0
        public ActionResult <DeviceInfo> Toggle(int deviceId)
        {
            Console.WriteLine($"Toggle() Entered. deviceId: {deviceId}");

            bool  isOnline;
            HS1XX mSmartPlug = getDevice(deviceId, out isOnline);

            if (mSmartPlug == null)
            {
                return(NotFound());
            }

            return(toggleHS100(mSmartPlug));
        }
示例#7
0
        private ActionResult <DeviceInfo> setRelayState(HS1XX mSmartPlug, int relayState)
        {
            DeviceInfo devInfo = null;

            try
            {
                RelayAction action = (relayState == 0) ? RelayAction.TurnOff : RelayAction.TurnOn;
                mSmartPlug.SwitchRelayStateFast(action);
                devInfo = mSmartPlug.GetDeviceInfo();
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error in setRelayState(): {ex.Message}");
                return(NotFound());
            }

            return(devInfo);
        }
示例#8
0
        private DeviceInfo toggleHS100(HS1XX mSmartPlug)
        {
            DeviceInfo devInfo = null;


            try
            {
                devInfo = mSmartPlug.GetDeviceInfo();
                byte        newState = (devInfo.RelayState == 1) ? (byte)0 : (byte)1;
                RelayAction action   = (devInfo.RelayState == 1) ? RelayAction.TurnOff : RelayAction.TurnOn;
                devInfo.RelayState = newState;
                mSmartPlug.SwitchRelayStateFast(action);
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error in toggleHS100(): {ex.Message}");
            }



            return(devInfo);
        }
示例#9
0
        private HS1XX getDevice(int deviceId, out bool isOnLine)
        {
            isOnLine = false;
            var cfg = hs100Configs.Where(c => c.DeviceId == deviceId).FirstOrDefault();

            if (cfg == null && String.IsNullOrEmpty(cfg.IpAddr))
            {
                Console.WriteLine($"getDevice() failed to find device: {deviceId}");
                return(null);
            }

            HS1XX mSmartPlug = null;

            try
            {
                mSmartPlug = new HS1XX(cfg, out isOnLine, 10000, 0, 0);
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error in getDevice(): {ex.Message}");
            }
            return(mSmartPlug);
        }
示例#10
0
        public ActionResult <IEnumerable <DeviceInfo> > Get()
        {
            List <DeviceInfo> result = new List <DeviceInfo>();
            var configs = hs100Configs.OrderBy(c => c.DeviceId).ToList();

            hs100Configs = configs;

            foreach (var cfg in configs)
            {
                try
                {
                    bool  isOnLine;
                    HS1XX mSmartPlug = getDevice(cfg.DeviceId, out isOnLine);
                    if (isOnLine && mSmartPlug != null)
                    {
                        result.Add(mSmartPlug.GetDeviceInfo());
                    }
                    else
                    {
                        Console.WriteLine($"Get(): HS100 (${cfg.Name} - ${cfg.IpAddr}) is not online");
                    }
                }
                catch (ArgumentNullException ex)
                {
                    Console.WriteLine($"Get: {ex.Message}");
                }
                catch (FormatException ex)
                {
                    Console.WriteLine($"Get: {ex.Message}");
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"Get: {ex.Message}");
                }
            }
            return(result);
        }
示例#11
0
 static void Connect(string ip)
 {
     tp = new HS1XX(IPAddress.Parse(ip), 1000, 1000, 1000);
 }