04b0bfee8abee690ab857692b15e928abf3bae03
[python_utils.git] / smart_home / device.py
1 #!/usr/bin/env python3
2
3 import re
4 from typing import List, Optional
5
6 import arper
7
8
9 class Device(object):
10     def __init__(
11             self,
12             name: str,
13             mac: str,
14             keywords: Optional[List[str]],
15     ):
16         self.name = name
17         self.mac = mac
18         self.keywords = keywords
19         self.arper = arper.Arper()
20         if keywords is not None:
21             self.kws = keywords.split()
22         else:
23             self.kws = []
24
25     def get_name(self) -> str:
26         return self.name
27
28     def get_mac(self) -> str:
29         return self.mac
30
31     def get_ip(self) -> str:
32         return self.arper.get_ip_by_mac(self.mac)
33
34     def get_keywords(self) -> Optional[List[str]]:
35         return self.kws
36
37     def has_keyword(self, keyword: str) -> bool:
38         for kw in self.kws:
39             if kw == keyword:
40                 return True
41         return False
42
43     def get_on_limit_seconds(self) -> Optional[int]:
44         for kw in self.kws:
45             m = re.search(r"timeout:(\d+)", kw)
46             if m is not None:
47                 return int(m.group(1)) * 60
48         return None