|
7 | 7 |
|
8 | 8 | @click.group(context_settings={"help_option_names": ["-h", "--help"], "auto_envvar_prefix": "IOT"}, invoke_without_command=False)
|
9 | 9 | @click.version_option(version=__version__, prog_name="iot-state")
|
10 |
| -@click.option('--redis-host', help="Redis instance host", default='localhost') |
11 |
| -@click.option('--redis-port', help="Redis instance port", default=6479, type=int) |
| 10 | +@click.option('--redis-username', help="Redis instance username", default='', type=str) |
| 11 | +@click.option('--redis-password', help="Redis instance password", default='', type=str) |
| 12 | +@click.option('--redis-host', help="Redis instance host", default='localhost', type=str) |
| 13 | +@click.option('--redis-port', help="Redis instance port", default=6379, type=int) |
12 | 14 | @click.option('--redis-db', help="Redis instance DB number", default=0, type=int)
|
13 | 15 | @click.pass_context
|
14 |
| -def iot_state(ctx, redis_host, redis_port, redis_db): |
15 |
| - ctx.ensure_object(dict) |
16 |
| - ctx.obj['redis_host'] = redis_host |
17 |
| - ctx.obj['redis_port'] = redis_port |
18 |
| - ctx.obj['redis_db'] = redis_db |
19 |
| - click.echo("Starting IOT state platform") |
| 16 | +def iot_state(ctx, redis_username, redis_password, redis_host, redis_port, redis_db): |
| 17 | + ctx.ensure_object(dict) |
| 18 | + |
| 19 | + if redis_username or redis_password: |
| 20 | + if not redis_username or not redis_password: |
| 21 | + click.echo("Provide both username and password for redis") |
| 22 | + die() |
| 23 | + ctx.obj['redis_url'] = f"redis://{redis_username}:{redis_password}@{redis_host}:{redis_port}/{redis_db}" |
| 24 | + else: |
| 25 | + ctx.obj['redis_url'] = f"redis://{redis_host}:{redis_port}/{redis_db}" |
| 26 | + click.echo("Starting IOT state platform") |
| 27 | + |
20 | 28 | @iot_state.command()
|
21 | 29 | @click.option('--platform', help="The platform to publish to", required=True,
|
22 | 30 | type=click.Choice(['mqtt'], case_sensitive=False))
|
| 31 | +@click.option('--mqtt-host', help="The MQTT host to connect to", default='localhost', type=str) |
| 32 | +@click.option('--mqtt-port', help="The port to use to connect to the MQTT host", default=1883, type=int) |
23 | 33 | @click.pass_context
|
24 |
| -def publisher(ctx, platform): |
25 |
| - match platform: |
26 |
| - case 'mqtt': |
27 |
| - click.echo("mqtt platform selected") |
28 |
| - mqtt.run( |
29 |
| - redis_host=ctx.obj['redis_host'], |
30 |
| - redis_port=ctx.obj['redis_port'], |
31 |
| - redis_db=ctx.obj['redis_db']) |
32 |
| - case _: |
33 |
| - die() |
| 34 | +def publisher(ctx, platform, mqtt_host, mqtt_port): |
| 35 | + mqtt_url = "" |
| 36 | + match platform: |
| 37 | + case 'mqtt': |
| 38 | + click.echo("mqtt platform selected") |
| 39 | + mqtt.run( |
| 40 | + redis_url=ctx.obj['redis_url'], |
| 41 | + publisher={ |
| 42 | + "mqtt_host": mqtt_host, |
| 43 | + "mqtt_port": mqtt_port |
| 44 | + } |
| 45 | + ) |
| 46 | + case _: |
| 47 | + die() |
0 commit comments