Skip to content

Commit 90c2a89

Browse files
committed
refactor led stuff
1 parent 4599866 commit 90c2a89

File tree

6 files changed

+94
-68
lines changed

6 files changed

+94
-68
lines changed

src/boot.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414

1515
print('Check Firmware:')
1616
assert esp.check_fw() is True, "Firmware error?!?"
17-
esp.osdebug(None) # turn off vendor O/S debugging messages
18-
esp.sleep_type(esp.SLEEP_NONE) # Don't go into sleep mode
17+
esp.osdebug(None) # turn off vendor O/S debugging messages
18+
esp.sleep_type(esp.SLEEP_NONE) # Don't go into sleep mode
1919

2020

21-
print('boot.py END')
21+
print('boot.py END')

src/leds.py

Lines changed: 21 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,22 @@
1-
import gc
2-
3-
import machine
1+
import pins
42
import utime as time
53

64

75
class Led:
8-
def __init__(self, no):
9-
self.pin = machine.Pin(no, machine.Pin.OUT)
6+
def __init__(self, name, pin, on, off):
7+
self.name = name
8+
self.pin = pin
9+
self._on = on
10+
self._off = off
1011

1112
def on(self):
12-
""" turn LED on """
13-
self.pin.value(0)
13+
self.pin.value(self._on)
1414

1515
def off(self):
16-
""" turn LED off """
17-
self.pin.value(1)
16+
self.pin.value(self._off)
1817

1918
def toggle(self):
20-
self.pin.value(0 if self.pin.value() else 1)
19+
self.pin.value(self._off if self.pin.value() else self._on)
2120

2221
def flash(self, sleep=0.01, count=5):
2322
self._flash(sleep, count)
@@ -29,38 +28,21 @@ def _flash(self, sleep, count):
2928
time.sleep(sleep)
3029
self.pin.value(old_value)
3130

31+
@property
32+
def state(self):
33+
if self._on:
34+
return 'ON' if self.pin.value() else 'OFF'
35+
else:
36+
return 'OFF' if self.pin.value() else 'ON'
3237

33-
class PowerLed(Led):
34-
def __init__(self):
35-
super().__init__(no=13)
36-
37-
38-
power_led = PowerLed()
39-
40-
41-
def test():
42-
print('test starts...')
43-
print('off')
44-
power_led.off()
45-
time.sleep(1)
46-
print('on')
47-
power_led.on()
48-
time.sleep(1)
49-
print('toggle 1')
50-
power_led.toggle()
51-
time.sleep(1)
52-
print('toggle 2')
53-
power_led.toggle()
54-
time.sleep(1)
38+
def __str__(self):
39+
return '%s %s: %s' % (self.name, self.pin, self.state)
5540

56-
print('flash')
57-
power_led.flash(sleep=0.1, count=5)
5841

59-
gc.collect()
60-
print('test ends.')
42+
power_led = Led(name='power', pin=pins.power_led_pin, on=0, off=1)
43+
relay = Led(name='relay', pin=pins.relay_pin, on=1, off=0)
6144

6245

6346
if __name__ == '__main__':
64-
print('LED test start...')
65-
test()
66-
print('LED test end')
47+
print(relay)
48+
print(power_led)

src/leds_test.py

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import utime as time
2+
from leds import power_led, relay
3+
4+
5+
def test():
6+
print('test starts...')
7+
print('off')
8+
relay.off()
9+
print(relay)
10+
power_led.off()
11+
print(power_led)
12+
13+
time.sleep(1)
14+
15+
print('on')
16+
power_led.on()
17+
print(power_led)
18+
19+
time.sleep(1)
20+
21+
print('toggle 1')
22+
power_led.toggle()
23+
24+
time.sleep(1)
25+
26+
print('toggle 2')
27+
power_led.toggle()
28+
29+
time.sleep(1)
30+
31+
print('flash')
32+
power_led.flash(sleep=0.1, count=20)
33+
34+
relay.on()
35+
print(relay)
36+
37+
print('test ends.')
38+
39+
40+
if __name__ == '__main__':
41+
print('LED test start...')
42+
test()
43+
print('LED test end')

src/main.py

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,30 @@
11
import gc
22

3-
import machine
43
import micropython
5-
import utime as time
64

75
micropython.alloc_emergency_exception_buf(128)
86

9-
for no in range(3, 0, -1):
10-
print('%i main.py wait...' % no)
11-
time.sleep(1)
7+
# init own stuff:
128

139
from watchdog import watchdog # noqa isort:skip
1410
from wifi import wifi # noqa isort:skip
1511
from ntp import ntp_sync # noqa isort:skip
16-
from leds import power_led # noqa isort:skip
12+
from leds import power_led, relay # noqa isort:skip
1713
import button_handler # noqa isort:skip
1814

1915
print('watchdog:', watchdog)
2016
print('wifi:', wifi)
2117
print('ntp_sync:', ntp_sync)
2218
print('power_led:', power_led)
19+
print('relay:', relay)
2320

24-
21+
print('main.py wait with power led flash...')
22+
power_led.flash(sleep=0.1, count=20)
2523

2624
print('gc.collect()')
2725
gc.collect()
2826

2927

28+
# Start the Webserver:
3029
from webswitch import main # noqa isort:skip
3130
main()

src/pins.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import machine
2+
3+
power_led_pin = machine.Pin(13, machine.Pin.OUT)
4+
relay_pin = machine.Pin(12, machine.Pin.OUT) # relay + red led
5+
button_pin = machine.Pin(0, machine.Pin.IN)

src/webswitch.py

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@
1010
from ntp import ntp_sync
1111
from watchdog import watchdog
1212
from wifi import wifi
13+
from leds import power_led, relay
1314

1415
rtc = machine.RTC()
15-
relay_pin = machine.Pin(12, machine.Pin.OUT, value=0) # turn replay off
1616
button_pin = machine.Pin(0, machine.Pin.IN)
1717

1818

@@ -21,14 +21,9 @@ def send_web_page(writer, message=''):
2121
yield from writer.awrite('Content-type: text/html; charset=utf-8\r\n')
2222
yield from writer.awrite('Connection: close\r\n\r\n')
2323

24-
if relay_pin.value() == 1:
25-
state = 'ON'
26-
else:
27-
state = 'OFF'
28-
2924
with open('webswitch.html', 'r') as f:
3025
yield from writer.awrite(f.read().format(
31-
state=state,
26+
state=relay.state,
3227
message=message,
3328

3429
wifi=wifi,
@@ -42,8 +37,9 @@ def send_web_page(writer, message=''):
4237
gc.collect()
4338

4439

45-
@asyncio.coroutine
46-
def request_handler(reader, writer):
40+
async def request_handler(reader, writer):
41+
power_led.off()
42+
4743
print('\nWait for request on %s...' % wifi.station.ifconfig()[0])
4844
gc.collect()
4945

@@ -84,17 +80,17 @@ def request_handler(reader, writer):
8480
not_found = False
8581

8682
elif url == '/?power=on':
87-
relay_pin.value(1)
83+
relay.on()
8884
yield from send_web_page(writer, message='power on')
8985
not_found = False
9086

9187
elif url == '/?power=off':
92-
relay_pin.value(0)
88+
relay.off()
9389
yield from send_web_page(writer, message='power off')
9490
not_found = False
9591

9692
elif url == '/?soft_reset':
97-
relay_pin.value(0)
93+
relay.off()
9894
yield from send_web_page(
9995
writer,
10096
message=(
@@ -106,7 +102,7 @@ def request_handler(reader, writer):
106102
not_found = False
107103

108104
elif url == '/?hard_reset':
109-
relay_pin.value(0)
105+
relay.off()
110106
yield from send_web_page(
111107
writer,
112108
message=(
@@ -124,24 +120,25 @@ def request_handler(reader, writer):
124120
gc.collect()
125121

126122
if hard_reset:
127-
for no in range(3, 0, -1):
128-
print('Hard reset device %i wait...' % no)
129-
time.sleep(1)
123+
print('Hard reset device wait with flash LED...')
124+
power_led.flash(sleep=0.1, count=20)
130125
print('Hard reset device...')
131126
machine.reset()
132127
sys.exit()
133128

134129
if soft_reset:
135-
for no in range(3, 0, -1):
136-
print('Soft reset device %i wait...' % no)
137-
time.sleep(1)
130+
print('Soft reset device wait with flash LED...')
131+
power_led.flash(sleep=0.1, count=20)
138132
print('Soft reset device...')
139133
sys.exit()
140134

141135
watchdog.feed()
136+
power_led.on()
142137

143138

144139
def main():
140+
power_led.off()
141+
145142
s = 1
146143
while not wifi.is_connected:
147144
print('Wait for WiFi connection %s sec.' % s)

0 commit comments

Comments
 (0)