49 lines
1.5 KiB
Python
Executable File
49 lines
1.5 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
import argparse
|
|
import logging
|
|
|
|
import tic
|
|
import tic_mqtt
|
|
|
|
log = logging.getLogger(__name__)
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(prog="tic2mqtt",
|
|
description="MQTT client for Linky Electricity Meters installed by Enedis in France.")
|
|
#parser.add_argument('input', nargs='?', type=argparse.FileType('rb', bufsize=0), default='-',
|
|
# help="input file or device to read TIC messages (stdin by default)")
|
|
parser.add_argument('input', nargs='?', default='/dev/stdin',
|
|
help="input file or device to read TIC messages (stdin by default)")
|
|
parser.add_argument('-m', '--mode', choices=['auto', 'historique', 'standard'], default='auto',
|
|
help='select TIC mode')
|
|
parser.add_argument('-l', '--log', choices=['debug', 'info', 'warning', 'error'], default='error',
|
|
help='set the log level')
|
|
parser.add_argument('-b', '--broker',
|
|
help='MQTT broker hostname')
|
|
args = parser.parse_args()
|
|
|
|
logging.basicConfig(level=getattr(logging, args.log.upper()))
|
|
|
|
my_tic = tic.Tic(args.input)
|
|
if args.mode == "auto":
|
|
my_tic.detect_mode()
|
|
else:
|
|
my_tic.set_mode(args.mode)
|
|
|
|
mqtt = tic_mqtt.TicPublisher(args.broker)
|
|
my_tic.set_callback_ads(mqtt.set_ads)
|
|
my_tic.set_callback_msg(mqtt.send_msg)
|
|
|
|
my_tic.run()
|
|
|
|
if mqtt:
|
|
mqtt.close()
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|
|
|