コード例 #1
0
ファイル: chomp.py プロジェクト: stevewoolley/IoT
def receive_command(client, obj, message):
    message_json = MqttClient.parse_payload(message.payload)
    print("chomp: %s %s %s" % (mqtt.endpoint, message.topic, str(message_json)))


# parse arguments
parser = argparse.ArgumentParser()
parser.add_argument("-e", "--endpoint", help="AWS IoT endpoint")
parser.add_argument("-r", "--ca_file", help="Certificate Authority file", default='rootCA.pem')
parser.add_argument("-c", "--client_cert_file", help="Client certificate file", default='certificate.pem')
parser.add_argument("-k", "--client_key_file", help="Client Key File", default='private.pem')
parser.add_argument("-p", "--port", help="MQTT port", type=int, default=8883)
parser.add_argument("-q", "--qos", help="MQTT QoS", type=int, default=1)
parser.add_argument("-t", "--topic", help="MQTT topic")
parser.add_argument("-g", "--log_level", help="log level", type=int, default=logging.INFO)
args = parser.parse_args()

if args.endpoint is None:
    sys.exit("Error: IoT connection information needed")

# connect with Amazon IoT
mqtt = MqttClient(args.endpoint, args.log_level, args.port)
mqtt.set_tls(args.ca_file, args.client_cert_file, args.client_key_file)
mqtt.add_callback(args.topic, receive_command)
mqtt.add_subscription(args.topic, qos=args.qos)  # subscribe or not?
mqtt.loop_start()

while True:
    time.sleep(1)
コード例 #2
0
ファイル: video-monitor.py プロジェクト: stevewoolley/IoT
# logging setup
logger = set_logger(level=args.log_level)

video = Video(
    rotation=args.rotation,
    horizontal_resolution=args.horizontal_resolution,
    vertical_resolution=args.vertical_resolution
)
video.start()

pir = PIR(args.pin)
pir.start()

mqtt = MqttClient(args.endpoint, args.log_level, args.port)
mqtt.set_tls(args.ca_file, args.client_cert_file, args.client_key_file)
mqtt.add_callback(args.topic + args.subtopic, receive_command)
mqtt.add_subscription(args.topic + args.subtopic, qos=args.qos)
mqtt.loop_start()

# loop
while True:
    is_moving = pir.detects_movement()
    if is_monitoring:
        if not is_moving:
            if video.recording:
                Video.generate_thumbnail(video.stop_recording(), hres=args.horizontal_resolution,
                                         vres=args.vertical_resolution)
        elif is_moving:
            video.start_recording()
    sleep(args.wait)
コード例 #3
0
ファイル: buzzer-monitor.py プロジェクト: stevewoolley/IoT
parser.add_argument("-k", "--client_key_file", help="Client Key File", default='private.pem')
parser.add_argument("-p", "--port", help="MQTT port", type=int, default=8883)
parser.add_argument("-q", "--qos", help="MQTT QoS", type=int, default=1)

parser.add_argument("-d", "--beep_duration", help="time in seconds for a beep duration", type=float, default=0.06)
parser.add_argument("-w", "--quiet_duration", help="time in seconds between beeps", type=float, default=0.1)
parser.add_argument("-n", "--beep_count", help="number of beeps", type=int, default=2)
parser.add_argument("-i", "--pin", help="gpio pin (using BCM numbering)", type=int, default=6)
parser.add_argument("-s", "--buzzer_name", help="buzzer name", default='buzzer')
parser.add_argument("-y", "--config_file", help="yaml config file", default='buzzer.yml')
parser.add_argument("-g", "--log_level", help="log level", type=int, default=logging.INFO)
args = parser.parse_args()

# logging setup
logger = set_logger(level=args.log_level)

# read subscriptions from config and create buzzer

buzzer = Buzzer(args.buzzer_name, args.pin)
buzzer.start()

SUBSCRIPTIONS = yaml.load(open(args.config_file))

# connect with Amazon IoT and go
mqtt = MqttClient(args.endpoint, args.log_level, args.port)
mqtt.set_tls(args.ca_file, args.client_cert_file, args.client_key_file)
for sub in SUBSCRIPTIONS.keys():
    mqtt.add_callback(sub, receive_command)
    mqtt.add_subscription(sub, qos=args.qos)
mqtt.run()