formatter = logging.Formatter( "%(asctime)s - %(name)s - %(levelname)s - %(message)s") rainbowHandler.setFormatter(formatter) logger.addHandler(rainbowHandler) logger.setLevel(logging.DEBUG) if True: obj = '/dev/ttyAMA0' fake = False else: obj = SerialFake fake = True serial = Serial() serial.connect(obj) servo = Servo(serial, fakemode=fake) #Servo.init() #ServoSeq = Servo_Sequencer(servo) #ServoSeq.daemon = True; #ServoSeq.start() engine = Servo_Engine(servo) engine.start() SPEED = 1 CONSIGNE = 170 def test(index):
<<<<<<< HEAD if Config.FAKE_MODE: obj = SerialFake else: obj = '/dev/ttyAMA0' ======= if True: obj = '/dev/ttyAMA0' fake = False else: obj = SerialFake fake = True >>>>>>> e9ffd7ef371450a29e24962357af5942710c8547 serial = Serial() serial.connect(obj) <<<<<<< HEAD servo = Servo(serial, fakemode = Config.FAKE_MODE) ======= servo = Servo(serial, fakemode = fake) >>>>>>> e9ffd7ef371450a29e24962357af5942710c8547 servo.init() #ServoSeq = Servo_Sequencer(servo) #ServoSeq.daemon = True; #ServoSeq.start() #sspeed = Servo_SpeedStep(servo) sspeed = Servo_SpeedDelay(servo) sspeed.start()
class BleuettePi(Serial): INTA = 26 INTB = 15 INTC = 22 INTD = 12 STATUS_MAX_CURRENT_REACHED = 0 MCP_ADDRESS = 0x20 RESET_PIN = 14 serial = None mcp = None Servo = None Compass = None Accelerometer = None GroundSensor = None def __init__(self, serialDev): self.logger = logging.getLogger('BleuettePi') self.serial = Serial() self.serial.connect(serialDev) self.mcp = MCP230XX(self.MCP_ADDRESS, 16) self.Servo = Servo.Servo(self.serial, fakemode = Config.FAKE_MODE) self.Servo.init() Servo.Servo_Trim.values = Data.Instance().get(['servo', 'trims']) Servo.Servo_Limit.values = Data.Instance().get(['servo', 'limits']) self.Analog = Analog(self.serial) self.Compass = BleuettePi_Compass() self.Accelerometer = BleuettePi_Accelerometer() self.GroundSensor = BleuettePi_GroundSensor(self.mcp) # Init mode GPIO.setmode(GPIO.BOARD) GPIO.setup(self.INTA, GPIO.IN) GPIO.setup(self.INTB, GPIO.IN) GPIO.setup(self.INTC, GPIO.IN) GPIO.setup(self.INTD, GPIO.IN) GPIO.add_event_detect(self.INTA, GPIO.RISING, callback = self.interrupt, bouncetime = 300) GPIO.add_event_detect(self.INTB, GPIO.RISING, callback = self.interrupt, bouncetime = 300) GPIO.add_event_detect(self.INTC, GPIO.RISING, callback = self.interrupt, bouncetime = 300) GPIO.add_event_detect(self.INTD, GPIO.RISING, callback = self.interrupt, bouncetime = 300) self.mcp.config(self.RESET_PIN, MCP230XX.OUTPUT) #self.mcp.pullup(self.RESET_PIN, True) self.mcp.output(self.RESET_PIN, 1) def interrupt(self, index): if index == self.INTA: self.logger.info("Interrupt from GPA") elif index == self.INTB: self.logger.info("Interrupt from GPB") elif index == self.INTC: self.logger.info("Interrupt from RTC") elif index == self.INTD: self.logger.info("Interrupt from PIC") self.getStatus() ''' def setCurrentAlarmLevel(self, level): print "Level", level if level >= 1024: raise Exception('Max current alarm level is 1024 !') data = struct.pack("@i", level) level = [ data[0], data[1] ] return self.command(BPi_Cmd.SET_MAX, level) ''' # Hard reset def reset(self): self.mcp.output(self.RESET_PIN, 0) time.sleep(1) self.mcp.output(self.RESET_PIN, 1) time.sleep(1) self.Servo.init() def getStatus(self): self.serial.write(self.HEADER) self.serial.write(BPi_Cmd.STATUS) status = self.serial.read(1) if ord(status) & (1 << self.STATUS_MAX_CURRENT_REACHED): self.logger.warning("Max current reached !") return status
class BleuettePi(Serial): INTA = 26 INTB = 15 INTC = 22 INTD = 12 STATUS_MAX_CURRENT_REACHED = 0 MCP_ADDRESS = 0x20 RESET_PIN = 14 serial = None mcp = None Servo = None Compass = None Accelerometer = None GroundSensor = None def __init__(self, serialDev): self.logger = logging.getLogger('BleuettePi') self.serial = Serial() self.serial.connect(serialDev) self.mcp = MCP230XX(self.MCP_ADDRESS, 16) self.Servo = Servo.Servo(self.serial, fakemode=Config.FAKE_MODE) self.Servo.init() Servo.Servo_Trim.values = Data.Instance().get(['servo', 'trims']) Servo.Servo_Limit.values = Data.Instance().get(['servo', 'limits']) self.Analog = Analog(self.serial) self.Compass = BleuettePi_Compass() self.Accelerometer = BleuettePi_Accelerometer() self.GroundSensor = BleuettePi_GroundSensor(self.mcp) # Init mode GPIO.setmode(GPIO.BOARD) GPIO.setup(self.INTA, GPIO.IN) GPIO.setup(self.INTB, GPIO.IN) GPIO.setup(self.INTC, GPIO.IN) GPIO.setup(self.INTD, GPIO.IN) GPIO.add_event_detect(self.INTA, GPIO.RISING, callback=self.interrupt, bouncetime=300) GPIO.add_event_detect(self.INTB, GPIO.RISING, callback=self.interrupt, bouncetime=300) GPIO.add_event_detect(self.INTC, GPIO.RISING, callback=self.interrupt, bouncetime=300) GPIO.add_event_detect(self.INTD, GPIO.RISING, callback=self.interrupt, bouncetime=300) self.mcp.config(self.RESET_PIN, MCP230XX.OUTPUT) #self.mcp.pullup(self.RESET_PIN, True) self.mcp.output(self.RESET_PIN, 1) def interrupt(self, index): if index == self.INTA: self.logger.info("Interrupt from GPA") elif index == self.INTB: self.logger.info("Interrupt from GPB") elif index == self.INTC: self.logger.info("Interrupt from RTC") elif index == self.INTD: self.logger.info("Interrupt from PIC") self.getStatus() ''' def setCurrentAlarmLevel(self, level): print "Level", level if level >= 1024: raise Exception('Max current alarm level is 1024 !') data = struct.pack("@i", level) level = [ data[0], data[1] ] return self.command(BPi_Cmd.SET_MAX, level) ''' # Hard reset def reset(self): self.mcp.output(self.RESET_PIN, 0) time.sleep(1) self.mcp.output(self.RESET_PIN, 1) time.sleep(1) self.Servo.init() def getStatus(self): self.serial.write(self.HEADER) self.serial.write(BPi_Cmd.STATUS) status = self.serial.read(1) if ord(status) & (1 << self.STATUS_MAX_CURRENT_REACHED): self.logger.warning("Max current reached !") return status
from LoggingConfig import LoggingConfig parser = argparse.ArgumentParser() parser.add_argument('serial_port') parser.add_argument('mqtt_host') args = parser.parse_args() serial_baud = 9600 message_terminator = "|" logging_config = LoggingConfig() logger = logging_config.get_logger() serial = Serial(args.serial_port, serial_baud, message_terminator, logger) mqtt = MqttConnection(args.mqtt_host, logger) multisensor = Multisensor(mqtt, logger) serial.add_callback(multisensor.process_sensor) serial.connect() mqtt.connect() multisensor.init_discovery() def exit_handler(): serial.disconnect() atexit.register(exit_handler) while True: serial.loop() mqtt.loop() time.sleep(0.1)
class BleuettePi(Serial): INTA = 26 INTB = 15 INTC = 22 INTD = 12 STATUS_MAX_CURRENT_REACHED = 0 serial = None Compass = None Accelerometer = None GroundSensor = None def __init__(self, mixed): self.serial = Serial() self.serial.connect(mixed) self.Servo = Servo(self.serial, fakemode = Config.FAKE_MODE) self.Analog = Analog(self.serial) self.Compass = BleuettePi_Compass() self.Accelerometer = BleuettePi_Accelerometer() self.GroundSensor = BleuettePi_GroundSensor() # Init mode GPIO.setmode(GPIO.BOARD) GPIO.setup(self.INTA, GPIO.IN) GPIO.setup(self.INTB, GPIO.IN) GPIO.setup(self.INTC, GPIO.IN) GPIO.setup(self.INTD, GPIO.IN) GPIO.add_event_detect(self.INTA, GPIO.RISING, callback = self.interrupt, bouncetime = 300) GPIO.add_event_detect(self.INTB, GPIO.RISING, callback = self.interrupt, bouncetime = 300) GPIO.add_event_detect(self.INTC, GPIO.RISING, callback = self.interrupt, bouncetime = 300) GPIO.add_event_detect(self.INTD, GPIO.RISING, callback = self.interrupt, bouncetime = 300) def interrupt(self, index): if index == self.INTA: print "Interrupt from GPA" elif index == self.INTB: print "Interrupt from GPB" elif index == self.INTC: print "Interrupt from RTC" elif index == self.INTD: print "Interrupt from PIC !" self.getStatus() ''' def setCurrentAlarmLevel(self, level): print "Level", level if level >= 1024: raise Exception('Max current alarm level is 1024 !') data = struct.pack("@i", level) level = [ data[0], data[1] ] return self.command(BPi_Cmd.SET_MAX, level) ''' def getStatus(self): self.serial.write(self.HEADER) self.serial.write(BPi_Cmd.STATUS) status = self.serial.read(1) if ord(status) & (1 << self.STATUS_MAX_CURRENT_REACHED): print "Max current reached !" return status