tic2mqtt/tic2mqtt

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()