예제 #1
0
def main():
    if os.environ.get('MOCK', default='0') == '1':
        status_handler = LogStatusHandler()
        readers = [
            MockWaterMeterDeviceReader('TestMeter1'),
            MockWaterMeterDeviceReader('TestMeter2'),
        ]
    else:
        pi = pigpio.pi()
        status_handler = LedStatusHandler(green_led=LED(pi, GREEN_LED_PIN),
                                          red_led=LED(pi, RED_LED_PIN))
        readers = [
            WaterMeterDeviceReader('JimenezWaterMeter', pi,
                                   JIMENEZ_SENSOR_PIN),
            WaterMeterDeviceReader('PahuckiWaterMeter', pi, PAHUCKI_SENSOR_PIN)
        ]

    metering = None
    try:
        logger.info('Starting metering...')
        metering = Metering(readers, socket.gethostname(), status_handler, 15,
                            True)
        status_handler.ok()
        metering.run()
    except Exception:
        logger.critical('Exiting due to unexpected error %s' %
                        traceback.format_exc())
        status_handler.not_ok()
    except KeyboardInterrupt:
        logger.info('Exiting at user request...')
        status_handler.not_ok()

    logger.info('Stopping metering...')
    metering.stop()
    logger.info('Done.')
예제 #2
0
def main():
    gpio_classes = [
    ]  # Add any GPIO class we use, so we can clean up at the end

    try:

        buzzerController = Buzzer()
        ledController = LED()

        gpio_classes.append(buzzerController)
        gpio_classes.append(ledController)
        sensor = UltraSonic()
        socket = ServerSocket()
        socket.setLightsUpdated(ledController.setState)
        sensor.setHandDetectedCallback(lambda: (buzzerController.playSound(
        ) or True) and socket.sendFlameState(True))
        sensor.setHandRemovedCallback(lambda: socket.sendFlameState(False))
        sensor.start()

        while True:
            time.sleep(1)

    except KeyboardInterrupt:
        print("Program stopped...")
        for g in gpio_classes:
            g.cleanup()
예제 #3
0
파일: server.py 프로젝트: sunilkr/bb_demo
    def handle(self):
        req_raw = self.request.recv(1024)
        self.logger.debug("Recv from:{0}, data:{1}".format(
            self.client_address, req_raw))
        try:
            req = json.loads(req_raw)
        except Exception:
            self.logger.exception(
                "Failed to parse request: {0}".format(req_raw))
            socket.sendto(json.dumps({
                "code": -1,
                "data": "Error"
            }), self.client_address)
            return

        if req['cmd'] == 'led-control':
            data = req['data']
            led = LED(LED_NAMES.get(data['led-name'].upper()))
            if data['op'].lower() == 'blink':
                if led.blink(count=data.get('count', 1),
                             delay=data.get('delay', 0.5)):
                    self.request.sendall(json.dumps({"code": 0, "data": "OK"}))
                else:
                    self.request.sendall(
                        json.dumps({
                            "code": 1,
                            "data": "FAIL"
                        }))
        elif req['cmd'] == 'quit':
            tcp_stop_event.set()
            self.request.sendall(json.dumps({"code": 1, "data": "OK"}))
        self.logger.debug("Request handled.")
예제 #4
0
def exportAni():

    global saved
    FILE=open('animation8x8.py','w')
    FILE.write('from sense_emu import SenseHat\n')
    FILE.write('import time\n')
    FILE.write('sh=SenseHat()\n')
    FILE.write('FRAMES = [\n')
    global leds
    global frame_number
    animation[frame_number] = copy.deepcopy(leds)
    #print 'length of ani is ' + str(len(animation))
    for playframe in range(1,(len(animation)+1)):
        #print(playframe)
        leds =[]
        for x in range(0, 8):
            for y in range(0, 8):
                led = LED(radius=20,pos=(x, y))
                leds.append(led)
            for saved_led in animation[playframe]:
                if saved_led.lit:
                    for led in leds:
                        if led.pos == saved_led.pos:
                            led.color = saved_led.color
                            led.lit = True
        grid, png_grid = buildGrid()

        FILE.write(str(grid))
        FILE.write(',\n')
    FILE.write(']\n')
    FILE.write('for x in FRAMES:\n')
    FILE.write('\t sh.set_pixels(x)\n')
    FILE.write('\t time.sleep('+ str(1.0/fps) + ')\n')
    FILE.close()
    saved = True
예제 #5
0
    def __init__(self, rows, columns, serial_type=1, led_pin=18):
        ##
        # serial_type 信号线连接方式, 1表示弓字形连线,2表示Z字形连线
        ##
        self.rows = rows
        self.columns = columns
        self.led_numbers = rows * columns
        self._mod = 1
        self.leds = []
        for i in range(self.led_numbers):
            self.leds.append(LED(i))

        self.led_index = [[0 for i in range(self.columns)]
                          for i in range(self.rows)]
        if (serial_type == 1):
            for i in range(0, rows, 2):
                for j in range(0, self.columns):
                    self.led_index[i][j] = i * self.columns + j

            for i in range(1, rows, 2):
                for j in range(0, self.columns):
                    self.led_index[i][j] = (i + 1) * self.columns - (j + 1)
        elif (serial_type == 2):
            for i in range(0, rows):
                for j in range(0, columns):
                    self.led_index[i][j] = i * self.columns + j

        self.strip = PixelStrip(self.led_numbers, led_pin)
        self.strip.begin()
        self.strip.setBrightness(255)
예제 #6
0
 def __init__(self, pin_config):
     self.data = Data()
     self.led = LED()
     self.temp_hum = Temp_Hum()
     self.led_color = (0, 0, 0)
     self.pump = GPIOOut(pin_config.pump_pin)
     self.valve_active = GPIOOut(pin_config.valve_pin)
     self.water_level = GPIOIn(pin_config.water_level_pin)
     self.fan = GPIOOut(pin_config.fan_pin)
예제 #7
0
def initLEDs(config):
	"""
	Given a LockingConfigParser configuration instance, create a dictionary of 
	GPIOLED instances to control the various LEDs.
	"""
	
	# Create the GPIOLED instances
	leds = {}
	for color in ('red', 'yellow', 'green'):
		try:
			pin = config.get('LED', '%spin' % color)
			leds[color] = LED(pin)
			
		except NoSectionError:
			leds[color] = LED(-1)
			
	# Done
	return leds
예제 #8
0
def importAni():
    global leds
    global frame_number
    with open('animation8x8.py') as ll:
        line_count = sum(1 for _ in ll)
    ll.close()

    #animation = {}
    frame_number = 1
    file = open('animation8x8.py')
    for r in range(3):
        file.readline()

    for frame in range(line_count - 8):
        buff = file.readline()

        load_frame = buff.split('], [')
        #print load_frame
        counter = 1
        leds = []
        for f in load_frame:

            if counter == 1:
                f = f[3:]
            elif counter == 64:
                f = f[:-5]
            elif counter % 8 == 0 and counter != 64:
                f = f[:-1]
            elif (counter - 1) % 8 == 0:
                f = f[1:]

            y = int((counter - 1) / 8)
            x = int((counter - 1) % 8)
            #print(counter,x,y)

            #print(str(counter) + ' ' + f + ' x= ' + str(x) + ' y= ' + str(y))
            led = LED(radius=20, pos=(x, y))
            if f == '0, 0, 0':
                led.lit = False

            else:
                led.lit = True
                f_colours = f.split(',')
                #print(f_colours)
                led.color = [
                    int(f_colours[0]),
                    int(f_colours[1]),
                    int(f_colours[2])
                ]
            leds.append(led)
            counter += 1
        animation[frame_number] = copy.deepcopy(leds)
        frame_number += 1
        counter += 1

    file.close()
예제 #9
0
    def add_reactor(self, button, led):
        # Setup the button
        GPIO.setup(button, GPIO.IN)
        button_obj = TactileSwitch(button)

        # Setup the LED
        GPIO.setup(led, GPIO.OUT)
        led_obj = LED(led)

        self.reactors.append((button_obj, led_obj))
    def __init__(self,
                 decoder_model,
                 led_running_pin=24,
                 led_listening_pin=15,
                 led_recording_pin=18,
                 sensitivity=[],
                 audio_gain=1,
                 continue_recording=False,
                 output_dir=".",
                 delete_active_recording=False,
                 on_beep_audio_file=None):

        self._is_running = False
        self._is_interrupted = False
        self._is_terminated = False

        GPIO.setmode(GPIO.BCM)

        self._led_running = LED(led_running_pin, 0)
        self._led_listening = LED(led_listening_pin, 0)
        self._led_recording = LED(led_recording_pin, 0)

        self._ready = False
        self._startup_anim_thread = threading.Thread(target=self._starting_up)
        self._startup_anim_thread.daemon = False
        self._startup_anim_thread.start()

        self.audio_handler = AudioHandler(
            decoder_model=decoder_model,
            sensitivity=sensitivity,
            audio_gain=audio_gain,
            output_dir=output_dir,
            continue_recording=continue_recording,
            delete_active_recording=delete_active_recording)

        if on_beep_audio_file is None:
            self.beep_handler = None
        else:
            self.beep_handler = BeepHandler(
                on_beep_audio_file=on_beep_audio_file)

        signal.signal(signal.SIGINT, self.interrupt)
        Log.debug(self._tag, "Detector created")
예제 #11
0
 def __init__(self, start, angle, nleds, spacing, task_period):
     self.start = start
     self.xstep = spacing * cos(radians(angle))
     # Invert Y because processing's coordinate system is backwards
     self.ystep = -(spacing * sin(radians(angle)))
     self.leds = [LED(5)] * nleds
     self.end = Point(self.start.x + (self.xstep * nleds),
                      self.start.y + (self.ystep * nleds))
     self.next = None
     self.colours = deque([color(0)] * nleds)
     self.task = Task(task_period)
 def __init__(self, local_led=None):
     self.valid_coins = {
         NICKEL: .05,
         DIME: 0.1,
         QUARTER: 0.25,
         DOLLAR: 1.00
     }
     self.coins = []
     self.products = {APPLE: 0.65, ORANGE: 0.75, BANANA: 1.0}
     self.green_light = local_led
     if not self.green_light:
         self.green_light = LED(LED.GREEN_LIGHT)
예제 #13
0
def main():
    '''
        Test LED
            Blink Red
            Solid Red
            Blink Green
            Solid Green
        Test Trigger
            Push trigger
            Hold trigger
        Test Send fake IR code
            Listen for callback
    '''
    led = LED()
    print("Testing LEDs.\n")
    eventOne = threading.Event()
    threadOne = threading.Thread(name='ledOnRed', target=setLED, args=(eventOne, 'red', led, 1))
    threadOne.start()
    answer = input("Is the Red LED on? y/n: ")
    eventOne.set()
    if not answer.lower() == 'y': return False
    eventTwo = threading.Event()
    threadTwo = threading.Thread(name='ledBlinkRed', target=toggleLED, args=(eventTwo, 'red', led, 1))
    threadTwo.start()
    answer = input("Is the Red LED blinking? y/n: ")
    # Get user input.
    eventTwo.set()
    if not answer.lower() == 'y': return False
    eventThree = threading.Event()
    threadThree = threading.Thread(name='ledOnGreen', target=setLED, args=(eventThree, 'green', led, 1))
    threadThree.start()
    answer = input("Is the Green LED on? y/n: ")
    eventThree.set()
    if not answer.lower() == 'y': return False
    eventFour = threading.Event()
    threadFour = threading.Thread(name='ledBlinkGreen', target=toggleLED, args=(eventFour, 'green', led, 1))
    threadFour.start()
    answer = input("Is the Green LED blinking? y/n: ")
    # Get user input.
    eventFour.set()
    if not answer.lower() == 'y': return False
    trigger = Trigger()
    print("Push and hold the trigger for 10 events.")
    i = 0
    while i < 10:
        if GPIO.input(trigger.TRIGGER) == GPIO.HIGH:
            time.sleep(0.1)
            print(("{}: Trigger detected.").format(datetime.datetime.now()))
            i += 1
    time.sleep(1)
    print("LaserPi programmed remote codes:")
    call(["irsend", "LIST", "laserpi", ""])
    return True
예제 #14
0
def main():
	
	action = request.values['action']

	led = LED(17)

	if action == 'on':
		led.on()

	if action == 'off':
		led.off()

	return 'success'
예제 #15
0
def importAni():
    global leds
    global frame_number
    with open('animation8x8.py') as ll:
        line_count = sum(1 for _ in ll)
    ll.close()

# start of actual good code

    #animation = {}
    frame_number = 1
    file = open('animation8x8.py')
    for r in range(line_count):
        buff = file.readline()
        if (buff[:2] == '[['):
            load_frame = buff.split('], [')
            counter = 1
            leds =[]
            for f in load_frame:

                if counter == 1:
                    f = f[2:]
                elif counter == 64:

                    f = f[:-4]

                y = int((counter-1)/8)
                x = int((counter-1)%8)

                #print(str(counter) + ' ' + f + ' x= ' + str(x) + ' y= ' + str(y))
                led = LED(radius=20,pos=(x, y))
                if f == '0, 0, 0':
                    led.lit = False

                else:
                    led.lit = True
                    f_colours = f.split(',')
                    #print(f_colours)
                    led.color = [int(f_colours[0]),int(f_colours[1]),int(f_colours[2])]
                leds.append(led)
                counter+=1
            animation[frame_number] = copy.deepcopy(leds)
            frame_number+=1
            counter+=1


##### end of actual good code



    file.close()
예제 #16
0
def heating(temperature, thermostat_temp):
    # red = [255, 0, 0]
    # black = [0, 0, 0]

    pin = 16
    led = LED(rpi, pin)
    if thermostat_temp <= temperature:
        # sense.led_2(black)
        led.turn_off()
        return "OFF"
    else:
        # sense.led_2(red)
        led.turn_on()
        return "ON"
예제 #17
0
def task2():

    sonic = sensor(21, 20)
    led = LED(19)
    email = EMAIL()

    while True:
        distance = sonic.distance()
        print(distance)
        if distance < 50:
            led.control('on')
            email.send_email()
            time.sleep(60)
            led.control('off')
        time.sleep(1)
예제 #18
0
def nextFrame():

    global frame_number
    global leds
    #print(frame_number)
    animation[frame_number] = copy.deepcopy(leds)
    #clearGrid()
    frame_number+=1
    if frame_number in animation:
        leds =[]
        for x in range(0, 8):
            for y in range(0, 8):
                led = LED(radius=20,pos=(x, y))
                leds.append(led)
        load_leds_to_animation()
예제 #19
0
def prevFrame():

	global frame_number
	global leds
	#print(frame_number)
	animation[frame_number] = copy.deepcopy(leds)
	clearGrid()
	if frame_number != 1:
		frame_number-=1
	if frame_number in animation:
		leds =[]
		for x in range(0, 8):
			for y in range(0, 8):
				led = LED(pos=(x, y))
				leds.append(led)
		load_leds_to_animation()
예제 #20
0
    def start(self):
        led = LED()

        s = socket.socket()
        ai = socket.getaddrinfo("0.0.0.0", 8080)
        print("Bind address info:", ai)
        addr = ai[0][-1]

        s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

        s.bind(addr)
        s.listen(5)
        print("Listening, connect your browser to http://<this_host>:8080/")

        counter = 0
        while True:
            res = s.accept()
            client_s = res[0]
            client_addr = res[1]
            print("Client address:", client_addr)
            print("Client socket:", client_s)

            req = client_s.recv(4096)
            arr = req.decode().split('\n')
            dic = {}
            for line in arr:
                if line.startswith('GET /?'):
                    print(line)
                    queryString = line.split(' ')[1][2:]
                    print('queryString=', queryString)
                    params =  queryString.split('&')
                    for param in params:
                        p = param.split('=')
                        print(p)
                        dic[p[0]] = int(p[1])

                    led.set(dic)

            print(dic)

            client_s.send(CONTENT % counter)
            client_s.close()
            counter += 1
            print()
예제 #21
0
class Scan(Thread):

    # private properties
    _fb = Firebase()
    _l = LED()

    # is_working indicator
    is_working = True

    # constructor
    def __init__(self):
        # calling constructor from parent class Thread
        Thread.__init__(self)

    # scan method - scans rfid tag
    def scan(self):
        try:
            # read the uid of the tag
            reader = SimpleMFRC522()
            id_no, text = reader.read()
            # if id exists
            if id_no is not None and isinstance(id_no, int):
                # call return the book method from firebase class
                self._fb.return_the_book(str(id_no))
                #turn the LED for 2 seconds
                self._l.on()
                sleep(2)
                self._l.off()

        except ():
            # if fail clean GPIO
            GPIO.cleanup()
            raise

    # run method - called on Thread.start()
    def run(self):
        while True:
            if self.is_working:
                self.scan()
            else:
                # if is not working clean the GPIO for servo motors
                GPIO.cleanup()
                return
예제 #22
0
    def _ConfigureBoard(self):
        """Initializes the board."""
        Log('Configuring board')
        if self.status_led_pin:
            self._status_led = LED(self.status_led_pin)
        self._shutter_btn = machine.Pin(self.shutter_pin, machine.Pin.IN)
        self._shutter_btn.irq(trigger=machine.Pin.IRQ_FALLING,
                              handler=self._ShutterCallback)

        if self.next_mode_pin:
            self._next_mode_btn = machine.Pin(self.next_mode_pin,
                                              machine.Pin.IN)
            self._next_mode_btn.irq(trigger=machine.Pin.IRQ_FALLING,
                                    handler=self._ModeWheelCallback)

        if self.prev_mode_pin:
            self._prev_mode_btn = machine.Pin(self.prev_mode_pin,
                                              machine.Pin.IN)
            self._prev_mode_btn.irq(trigger=machine.Pin.IRQ_FALLING,
                                    handler=self._ModeWheelCallback)
예제 #23
0
def play():
	
	global leds
	global frame_number
	animation[frame_number] = copy.deepcopy(leds)
	#print 'length of ani is ' + str(len(animation))
	for playframe in range(1,(len(animation)+1)):
		#print(playframe) 
		leds =[]
		for x in range(0, 8):
			for y in range(0, 8):
				led = LED(pos=(x, y))
				leds.append(led)
			for saved_led in animation[playframe]:
				if saved_led.lit:
					for led in leds:
						if led.pos == saved_led.pos:
							led.color = saved_led.color
							led.lit = True
		piLoad()
		time.sleep(1.0/fps)
def task2(status='off'):  
    
    global interrupt
    
    sonic=sensor(21,20) 
    led=LED(19) 
    led.control(status) 
    
    
    while True:  
        try:
            distance=sonic.distance()   
            print (distance)
            if distance<50:  
                led.control('on')   
                interrupt=1   
                time.sleep(60) 
                led.control(status) 
            time.sleep(1)
         
        except: 
             print ('encountered hardware issue, thread 2 failed')
예제 #25
0
def main():
    global g_event, g_led

    cwd = os.path.abspath(os.path.dirname(__file__))
    logging.basicConfig(filename=cwd+'/log.log',level=logging.DEBUG,format='%(asctime)s %(filename)s[line:%(lineno)d] %(message)s',datefmt='%Y-%m-%d %H:%M:%S')

    # 初始化 event
    g_event = threading.Event()

    # 初始化 gpio
    GPIO.setwarnings(True) # Ignore warning for now
    GPIO.setmode(GPIO.BOARD) # Use physical pin numbering

    # 初始化 LED
    g_led = LED()
    g_led.set_value(15)

    regist_button()

    b_reboot = False
    try:
        # 等待事件触发
        g_event.wait()
        b_reboot = True

    except KeyboardInterrupt as e:
        logging.warning("KeyboardInterrupted")
        pass

    # 清理GPIO
    logging.debug("gpio cleaning")
    GPIO.cleanup() # Clean up
    logging.debug("gpio cleaned")

    if b_reboot:
        logging.debug("shutting down")
        os.system('shutdown -r 0')
예제 #26
0
from led import LED

# 实例化一个LED
led = LED(0)
# 设置LED的亮度
led.intensity(500)
예제 #27
0
sys.path.append("./modules/button")
from Button import Button

sys.path.append("./modules")
from led import LED
import json

GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)

GPIO.setup(2, GPIO.OUT)  #LED to GPIO2 for available led
GPIO.output(2, False)

print("-----E-Stand-----")
led1 = LED()
led1.clear()

# Define Variables
#MQTT_HOST = "172.16.116.150"
MQTT_HOST = "broker.hivemq.com"
MQTT_PORT = 1883
MQTT_KEEPALIVE_INTERVAL = 45
MQTT_getLED = "stand/ledconfig"
MQTT_getRickshaw = "stand/getrickshaw"
#

standid = -1
ledArr = [0] * 8
pressed = 0
try:
예제 #28
0

def getLitLEDs():

    points = []
    for led in leds:
        if led.lit:
            points.append(led.pos)
    return points

# Main program body - set up leds and buttons

leds = []
for x in range(0, 8):
    for y in range(0, 8):
        led = LED(radius=20,pos=(x, y))
        leds.append(led)
buttons = []
buttons_warn = []
animation={}
#global frame_number

def play():

    global leds
    global frame_number
    animation[frame_number] = copy.deepcopy(leds)
    #print 'length of ani is ' + str(len(animation))
    for playframe in range(1,(len(animation)+1)):
        #print(playframe)
        leds =[]
예제 #29
0
파일: app.py 프로젝트: Yzhao1125/3DP2
import threading
from apscheduler.schedulers.background import BackgroundScheduler

if platform.system() == 'Linux':
    COM = glob.glob(r'/dev/ttyUSB*') + glob.glob(r'/dev/ttyACM*')
    if len(COM) == 0:
        COM = '/dev/ttyUSB0'
    else:
        COM = COM[0]
else:
    COM = 'COM6'

app = Flask(__name__)
#p = Printer(COM)
#u = Uploader(p)
l = LED()
i = 0
aps = BackgroundScheduler()
settings = {'ssid': '', 'psw': '', 'ip': '', 'eid': '', 'pw': ''}


@app.route('/')
def enter():
    if os.path.isfile('settings.txt'):
        return render_template('index.html')
    else:
        return render_template('wizard.html')


@app.route('/index')
def index():
예제 #30
0

def getLitLEDs():

	points = []
	for led in leds:
		if led.lit:
			points.append(led.pos)
	return points

# Programme principal - configure les leds et les boutons

leds = []
for x in range(0, 8):
	for y in range(0, 8):
		led = LED(pos=(x, y))
		leds.append(led)
buttons = []
buttons_warn = []
animation={}
#global frame_number

def play():
	
	global leds
	global frame_number
	animation[frame_number] = copy.deepcopy(leds)
	#print 'length of ani is ' + str(len(animation))
	for playframe in range(1,(len(animation)+1)):
		#print(playframe) 
		leds =[]