class Hardware(object): __metaclass__ = ABCMeta def __init__(self): self._init_pins() self._init_parts() @abstractmethod def _init_pins(self): raise NotImplementedError() def _init_parts(self): self.r_led = Led(self.red_led_pin) self.g_led = Led(self.green_led_pin) self.lock = Lock(self.relay_pin) self.black_btn = PushButton(self.black_btn_pin) # add button self.red_btn = PushButton(self.red_btn_pin) # delete button self.r_led.off() self.g_led.off()
import sys sys.path.append('../src') from led import Led import json import time myled = Led(21) fname = './web/led.json' try: while True: try: f = open(fname, 'r') json_dict = json.load(f) if json_dict['status'] == 'on': myled.on() else: myled.off() except ValueError: print('ValueError') time.sleep(0.2) except KeyboardInterrupt: pass
class RunLoop: SLEEP_MS_DEFAULT = 20 LED_TOGGLE_DEFAULT = 500 def __init__(self, config, verbose=0): self.verbose = verbose # ------------------------------------------------------------------------------------------------------------ # self.exit = False self.config = config # ------------------------------------------------------------------------------------------------------------ # self.sleep_ms = self.SLEEP_MS_DEFAULT # ------------------------------------------------------------------------------------------------------------ # # Initialise required services # ------------------------------------------------------------------------------------------------------------ # if self.config['pinout']['led'] is None: from led import MockLed self.led = MockLed() else: from led import Led self.led = Led(self.config['pinout']['led']['pin'], self.config['pinout']['led']['on_level']) # ------------------------------------------------------------------------------------------------------------ # if self.config['pinout']['button'] is None: from button import MockButton self.button = MockButton() else: from button import Button self.button = Button(self.config['pinout']['button']['pin'], self.config['pinout']['button']['on_level']) # ------------------------------------------------------------------------------------------------------------ # if self.config['pinout']['relay'] is None: from relay import MockRelay self.relay = MockRelay() else: from relay import Relay self.relay = Relay(self.config['pinout']['relay']['pin'], self.config['pinout']['relay']['on_level']) # ------------------------------------------------------------------------------------------------------------ # self.wifi = WiFi(self.config) # , verbose=self.verbose) self.device_id = self.wifi.device_id() self.messaging = Messaging(self.config, self.device_id) # ------------------------------------------------------------------------------------------------------------ # # Application ready feedback --------------------------------------------------------------------------------- # self.led.on(poll=True) sleep(2) self.led.off(poll=True) # ------------------------------------------------------------------------------------------------------------ # if self.wifi.connected(): self.on_wifi_connected(be_verbose=False) # ------------------------------------------------------------------------------------------------------------ # if self.verbose: print('<{} with id {}>'.format(self.config['device']['type'], self.device_id)) print(self.led) print(self.button) print(self.relay) print(self.wifi) print(self.messaging) def on_wifi_connected(self, be_verbose=True): if be_verbose and self.verbose: print(self.wifi) self.led.toggle(self.LED_TOGGLE_DEFAULT) if not self.messaging.connected(): self.messaging.connect() def run(self): if self.verbose: print('Run loop ' 'started') while not self.exit: # ======================================================================================================== # self.led.poll() self.button.poll() # -------------------------------------------------------------------------------------------------------- # if self.relay.state( ) == self.relay.STATE_OFF and self.button.pressed( ) == self.button.SHORT_PRESS: if self.verbose: print('<Button: SHORT_PRESS ' '0' '>') self.messaging.publish({ 'state': '<Button: SHORT_PRESS ' 'relay state: ' 'on' '>' }) self.relay.on() self.button.clear() elif self.relay.state( ) == self.relay.STATE_ON and self.button.pressed( ) > self.button.NOT_PRESSED: if self.verbose: print('<Button: SHORT_PRESS ' '1' '>') self.messaging.publish({ 'state': '<Button: SHORT_PRESS ' 'relay state: ' 'off' '>' }) self.relay.off() self.button.clear() elif self.led.enabled() is True and self.button.pressed( ) == self.button.LONG_PRESS: if self.verbose: print('<Button: LONG_PRESS ' '0' '>') self.messaging.publish({ 'state': '<Button: LONG_PRESS ' 'led enabled: ' 'off' '>' }) self.led.enable(False) self.led.off() self.button.clear() elif self.led.enabled() is False and self.button.pressed( ) > self.button.NOT_PRESSED: if self.verbose: print('<Button: LONG_PRESS ' '2' '>') self.messaging.publish( {'state': '<Button: LONG_PRESS ' 'led enabled: ' 'on' '>'}) self.led.enable(True) self.led.toggle(self.LED_TOGGLE_DEFAULT) self.button.clear() # -------------------------------------------------------------------------------------------------------- # if self.wifi.connected(): if self.messaging.connected() is False: self.on_wifi_connected() if self.messaging.poll(): if 'action' in self.messaging.msg: if self.messaging.msg['action'] == 'on': if self.verbose: print('<Relay: ' 'on' '>') self.relay.on() elif self.messaging.msg['action'] == 'off': if self.verbose: print('<Relay: ' 'off' '>') self.relay.off() elif self.messaging.msg['action'] == 'exit': if self.verbose: print('<Application: ' 'exit' '>') self.exit = True self.messaging.completed() elif self.wifi.connected() is False: if self.wifi.connecting() is False: self.led.toggle(250) self.led.on(poll=True, save_state=True) if self.wifi.connect() is True: self.led.off(poll=True, restore_state=True) # ======================================================================================================== # sleep_ms(self.sleep_ms) # Reduce the tightness of the run loop # ======================================================================================================== # if self.verbose: print('Run loop ' 'exited') def close(self): self.exit = True if self.led: self.led.close() if self.button: self.button.close() if self.relay: self.relay.close() if self.messaging: self.messaging.disconnect() # if self.wifi: # self.wifi.disconnect() # Don't do this, you will loose connection to the REPL if self.verbose: print('Run loop ' 'closed')
import time import RPi.GPIO as GPIO from led import Led GPIO.setmode(GPIO.BCM) GPIO.setwarnings(False) redled = Led(18, "RED", 5) yellowled = Led(8, "YELLOW", 2) greenled = Led(20, "GREEN", 0) whiteled = Led(17, "WHITE", 3) flashled = Led(27, "FLASH", 0) redled.on() redled.off() greenled.on() whiteled.on() whiteled.off() flashled.flash() greenled.off() yellowled.on() yellowled.off() flashled.off() redled.on() redled.off() GPIO.cleanup()
logger.out(logger.INFO, "Difference between scans: " + str(diff)) # Save scan result in non-volatile RAM scanner.writeStore() logger.out(logger.INFO, "LoRa join started.") led.on(led.RED, 10) # ABP join #lora = Transceiver(dev_addr = dev_addr, nwk_swkey = nwk_swkey, app_swkey = app_swkey, dataRate = 0, adr = True, useSavedState = useSavedState) # OTAA join lora = Transceiver(app_eui=app_eui, app_key=app_key, dataRate=0, adr=True, useSavedState=True) led.off() logger.out(logger.INFO, "LoRa join finished. Dev EUI: " + lora.getMac()) # Create an empty LoRa message sMessage = bytearray() # Add type to the LoRa message sMessage.append(0x00) # Add list with bssid and rssi to the LoRa message sMessage = sMessage + scanner.createMessage() logger.out( logger.INFO, "LoRa transmit start. Message: " + str(binascii.hexlify(sMessage).upper().decode('utf-8'))) led.on(led.BLUE, 10) lora.transmit(sMessage) led.off()
import sys sys.path.append('../src') from led import Led #import RPi.GPIO as GPIO import time start = time.time() current = start myled1 = Led(21) myled2 = Led(20) switch1 = False switch2 = False t1 = 0.0 t2 = 0.0 myled1.off() myled2.off() while (current - start) < 5: current = time.time() if (current - start - t1) > 1.0: t1 = t1 + 1.0 if switch1: myled1.off() else: myled1.on() switch1 = not switch1 if (current - start - t2) > 0.4: t2 = t2 + 0.4 if switch2:
def test(): print("*** Testing: LED ***") led = Led() print("Red 100%") led.on(led.RED, 100) sleep(0.5) print("Red 75%") led.on(led.RED, 75) sleep(0.5) print("Red 50%") led.on(led.RED, 50) sleep(0.5) print("Red 25%") led.on(led.RED, 25) sleep(0.5) print("White 100%") led.on(led.WHITE, 100) sleep(0.5) print("White 75%") led.on(led.WHITE, 75) sleep(0.5) print("White 50%") led.on(led.WHITE, 50) sleep(0.5) print("White 25%") led.on(led.WHITE, 25) sleep(0.5) led.off() print("*** Testing: WiFi scanner ***") # Initialize the scanner scanner = Scanner() scanner.get(True, None) messageStr = bytearr2string(scanner.createMessage()) print("Test scanning (no networks) => len = {}, message = {}".format( scanner.netsCnt, messageStr)) nets = [] nets.append( scanner.net(ssid='ssid', bssid=b'\xA1\xA2\xA3\xA4\xA5\xA6', sec=0, channel=13, rssi=-100)) scanner.get(True, nets) messageStr = bytearr2string(scanner.createMessage()) print("Test scanning (one network) => len = {}, message = {}".format( scanner.netsCnt, messageStr)) nets = [] nets.append( scanner.net(ssid='ssid', bssid=b'\xA1\xA2\xA3\xA4\xA5\xA6', sec=0, channel=13, rssi=-100)) nets.append( scanner.net(ssid='ssid', bssid=b'\xB1\xB2\xB3\xB4\xB5\xB6', sec=0, channel=13, rssi=-100)) scanner.get(True, nets) messageStr = bytearr2string(scanner.createMessage()) print("Test scanning (two networks) => len = {}, message = {}".format( scanner.netsCnt, messageStr)) nets = [] nets.append( scanner.net(ssid='ssid', bssid=b'\xA1\xA2\xA3\xA4\xA5\xA6', sec=0, channel=13, rssi=-100)) nets.append( scanner.net(ssid='ssid', bssid=b'\xB1\xB2\xB3\xB4\xB5\xB6', sec=0, channel=13, rssi=-100)) nets.append( scanner.net(ssid='ssid', bssid=b'\xC1\xC2\xC3\xC4\xC5\xC6', sec=0, channel=13, rssi=-100)) scanner.get(True, nets) messageStr = bytearr2string(scanner.createMessage()) print("Test scanning (three networks) => len = {}, message = {}".format( scanner.netsCnt, messageStr)) nets = [] nets.append( scanner.net(ssid='ssid', bssid=b'\xA1\xA2\xA3\xA4\xA5\xA6', sec=0, channel=13, rssi=-100)) nets.append( scanner.net(ssid='ssid', bssid=b'\xB1\xB2\xB3\xB4\xB5\xB6', sec=0, channel=13, rssi=-100)) nets.append( scanner.net(ssid='ssid', bssid=b'\xC1\xC2\xC3\xC4\xC5\xC6', sec=0, channel=13, rssi=-100)) nets.append( scanner.net(ssid='ssid', bssid=b'\xD1\xD2\xD3\xD4\xD5\xD6', sec=0, channel=13, rssi=-100)) scanner.get(True, nets) messageStr = bytearr2string(scanner.createMessage()) print("Test scanning (four networks) => len = {}, message = {}".format( scanner.netsCnt, messageStr)) nets = [] nets.append( scanner.net(ssid='ssid', bssid=b'\xA1\xA2\xA3\xA4\xA5\xA6', sec=0, channel=13, rssi=-100)) nets.append( scanner.net(ssid='ssid', bssid=b'\xB1\xB2\xB3\xB4\xB5\xB6', sec=0, channel=13, rssi=-100)) nets.append( scanner.net(ssid='ssid', bssid=b'\xC1\xC2\xC3\xC4\xC5\xC6', sec=0, channel=13, rssi=-100)) nets.append( scanner.net(ssid='ssid', bssid=b'\xD1\xD2\xD3\xD4\xD5\xD6', sec=0, channel=13, rssi=-100)) nets.append( scanner.net(ssid='ssid', bssid=b'\xE1\xE2\xE3\xE4\xE5\xE6', sec=0, channel=13, rssi=-100)) nets.append( scanner.net(ssid='ssid', bssid=b'\xF1\xF2\xF3\xF4\xF5\xF6', sec=0, channel=13, rssi=-100)) nets.append( scanner.net(ssid='ssid', bssid=b'\xC1\xC2\xC3\xC4\xC5\xC6', sec=0, channel=13, rssi=-100)) nets.append( scanner.net(ssid='ssid', bssid=b'\x01\x02\x03\x04\x05\x06', sec=0, channel=13, rssi=-100)) nets.append( scanner.net(ssid='ssid', bssid=b'\x11\x12\x13\x14\x15\x16', sec=0, channel=13, rssi=-100)) nets.append( scanner.net(ssid='ssid', bssid=b'\x21\x22\x23\x24\x25\x26', sec=0, channel=13, rssi=-100)) scanner.get(True, nets) messageStr = bytearr2string(scanner.createMessage()) print("Test scanning (ten networks) => len = {}, message = {}".format( scanner.netsCnt, messageStr)) print("*** Finish unit testing ***") return
#!/usr/bin/python3 from led import Led from buzzer import Buzzer import RPi.GPIO as GPIO import time red = Led(37) green = Led(33) blue = Led(35) yellow = Led(31) try: while True: red.off() green.on() blue.off() yellow.off() Buzzer.success() time.sleep(2) red.on() green.off() blue.off() yellow.off() Buzzer.error() time.sleep(2) except KeyboardInterrupt: GPIO.cleanup()
while True: first = button_left.state() second = button_right.state() if first and not second: #amarelo intermitente currentColor.off() led_yellow.blink(1000) while first: #esperar que o user deixe de pressionar o botao first = button_left.state() while not first: led_yellow.proc() first = button_left.state() led_yellow.off() currentColor.on() last_change_time = ticks_ms() while first: #esperar que o user deixe de pressionar o botao first = button_left.state() first = button_left.state() second = button_right.state() if second and currentColor == led_green: #botão dos peões while ticks_diff(ticks_ms(),last_change_time) < 4000: #se o tempo estiver abaixo dos 4s, não fazer nada pass currentColor.off() #quando atinge os 4s, desligar o led verde e passar para as proximas cores currentColor = getNextColor(currentColor) currentColor.on() last_change_time = ticks_ms()