Ugh, a bunch of things. @overrides. --lmodule. Chromecasts. etc...
[python_utils.git] / smart_home / device.py
index 0953b8dadccc886376c164fe1bef6a2bb7dd9c96..9675b7c66ed26527d6c389854a8cf488a012f530 100644 (file)
@@ -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