X-Git-Url: https://wannabe.guru.org/gitweb/?a=blobdiff_plain;f=smart_home%2Fdevice.py;h=02717a343f433414398425c7d16e4939414ecf2a;hb=7ff2af6fe7bffea90dc4a31c93140c189917c659;hp=27860c5bbcc75bdbb97defabf820f0a601a9e0f6;hpb=2a9cbfa6e97a8cb5ed68c838f5ec09bef654c37f;p=python_utils.git diff --git a/smart_home/device.py b/smart_home/device.py index 27860c5..02717a3 100644 --- a/smart_home/device.py +++ b/smart_home/device.py @@ -1,20 +1,24 @@ #!/usr/bin/env python3 import re -from typing import Any, List, Optional, Tuple +from typing import List, Optional + +import arper + class Device(object): def __init__( - self, - name: str, - mac: str, - keywords: Optional[List[str]], + self, + name: str, + mac: str, + keywords: Optional[List[str]], ): self.name = name self.mac = mac self.keywords = keywords + self.arper = arper.Arper() if keywords is not None: - self.kws = keywords.split() + self.kws = keywords else: self.kws = [] @@ -24,6 +28,20 @@ class Device(object): def get_mac(self) -> str: return self.mac + 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