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()
Beispiel #2
0
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
Beispiel #3
0
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()
Beispiel #5
0
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()
Beispiel #6
0
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:
Beispiel #7
0
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
Beispiel #8
0
#!/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()
Beispiel #9
0
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()