X-Git-Url: https://wannabe.guru.org/gitweb/?a=blobdiff_plain;f=smart_home%2Fdevice.py;h=9675b7c66ed26527d6c389854a8cf488a012f530;hb=eb9e6df32ed696158bf34dba6464277b648f5c74;hp=0953b8dadccc886376c164fe1bef6a2bb7dd9c96;hpb=29ee1f98654a689e9cab76b0c7c68428faa43a8c;p=python_utils.git diff --git a/smart_home/device.py b/smart_home/device.py index 0953b8d..9675b7c 100644 --- a/smart_home/device.py +++ b/smart_home/device.py @@ -3,6 +3,8 @@ import re from typing import List, Optional +import arper + class Device(object): def __init__( @@ -14,6 +16,7 @@ class Device(object): self.name = name self.mac = mac self.keywords = keywords + self.arper = arper.Arper() if keywords is not None: self.kws = keywords.split() else: @@ -25,8 +28,19 @@ class Device(object): def get_mac(self) -> str: return self.mac - def get_ip(self) -> str: - pass + def get_ip(self) -> Optional[str]: + return self.arper.get_ip_by_mac(self.mac) + + def has_static_ip(self) -> bool: + for kw in self.kws: + m = re.search(r'static:([\d\.]+)', kw) + if m is not None: + ip = m.group(1) + assert self.get_ip() == ip + return True + return False + + # Add command -> URL logic here. def get_keywords(self) -> Optional[List[str]]: return self.kws