Fix a bug in device.py around the type of keywords, add logging and
[python_utils.git] / smart_home / device.py
index 04b0bfee8abee690ab857692b15e928abf3bae03..06187d7a6578e2eaedb5d86e6173977d62b6288d 100644 (file)
@@ -8,17 +8,17 @@ import arper
 
 class Device(object):
     def __init__(
-            self,
-            name: str,
-            mac: str,
-            keywords: Optional[List[str]],
+        self,
+        name: str,
+        mac: str,
+        keywords: Optional[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: List[str] = keywords.split(' ')
         else:
             self.kws = []
 
@@ -28,9 +28,20 @@ class Device(object):
     def get_mac(self) -> str:
         return self.mac
 
-    def get_ip(self) -> str:
+    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