Exemple #1
0
def test_mqtt_subscribe():
    MQTT.setup()

    def callback(client, data, message):
        print(message.payload)

    while True:
        res, id = MQTT.subscribe('hello', callback)
        if res == 0:
            break
        time.sleep(1)

    while True:
        pass
Exemple #2
0
def main():
    config = None
    args = parser.parse_args() 

    if args.generate_config:
        Config.generate_config('config.yaml')
        sys.exit(0)

    if args.install_service:
        username = input("User to run service as [pi]: ") or 'pi'
        config_path = input("Enter full path to config.yaml: ")
        # _path = input("Path rpi2mqtt executable (run `which rpi2mqtt`): ")
        _path = subprocess.check_output(['which', 'rpi2mqtt']).decode().strip()
        install_service(username, _path, config_path)
        sys.exit(0)

    scanner = None

    if args.config:
        config = Config.get_instance(filename=args.config)

    if not config:
        logging.error("No configuration file present.")
        sys.exit(1)

    # start MQTT client
    from rpi2mqtt.mqtt import MQTT
    MQTT.setup()

    sensor_list = []
    if len(config.sensors) >0:
        for sensor in config.sensors:
            s = None
            if sensor.type == 'dht22':
                s = DHT(sensor.pin, sensor.topic, sensor.name, 'sensor', sensor.type)
            elif sensor.type == 'ibeacon':
                s = Scanner(sensor.name, sensor.topic, sensor.uuid, sensor.away_timeout)
            elif sensor.type == 'switch':
                s = Switch(sensor.name, sensor.pin, sensor.topic)
            elif sensor.type == 'reed':
                s = ReedSwitch(sensor.name, sensor.pin, sensor.topic, sensor.normally_open, sensor.get('device_type'))
            elif sensor.type == 'bme280':
                s = BME280(sensor.name, sensor.topic)
            elif sensor.type == 'hestiapi':
                s = HestiaPi(sensor.name, sensor.topic, sensor.heat_setpoint, sensor.cool_setpoint, dry_run=args.dry_run)
            elif sensor.type == 'onewire':
                s = OneWire(sensor.name, sensor.topic)
            else:
                logging.warn('Sensor {} found in config, but was not setup.'.format(sensor.name))
            if s:
                sensor_list.append(s)

        try:
            scanner = BeaconScanner(sensor_list[1].process_ble_update) # TODO update to search sensor list and setup scanner accordingly.
            scanner.start()
        except:
            logging.error("Beacon scanner did not start")
    else:
        logging.warn("No sensors defined in {}".format(args.config))

    try:
        while True:

            for sensor in sensor_list:
                sensor.callback()

            time.sleep(config.polling_interval)
            MQTT.ping_subscriptions()

    except:
        traceback.print_exc()
        MQTT.client.loop_stop()

        if scanner:
            scanner.stop()
Exemple #3
0
def main():
    logging.debug('debug message')
    logging.info('info message')
    logging.warning('warning')
    logging.error('error')
    MQTT.setup()