forked from EVNotify/EVNotiPi
-
Notifications
You must be signed in to change notification settings - Fork 0
/
wifi_ctrl.py
30 lines (25 loc) · 984 Bytes
/
wifi_ctrl.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
from subprocess import check_call, check_output
import logging
class WiFiCtrl:
def __init__(self):
self.log = logging.getLogger("EVNotiPi/WiFi")
self.log.info("Initializing WiFi")
self.log_flag = True
self.state = None
self.enable()
def enable(self):
if self.state is not True:
self.log.info("Enable WiFi")
check_call(['/bin/systemctl', 'start', 'hostapd'])
self.state = True
self.log_flag = True
def disable(self):
if self.state is not False:
if check_output(['/sbin/iw', 'dev', 'wlan0', 'station', 'dump',
'|', 'wc', '-0']) == b'':
self.log.info("Disable WiFi")
check_call(['/bin/systemctl', 'stop', 'hostapd'])
self.state = False
elif self.log_flag:
self.log.info("Clients connected, not disabling WiFi")
self.log_flag = False