rtl_433/examples/rtl_433_json_to_rtlwmbus.py

62 lines
1.6 KiB
Python
Executable File

#!/usr/bin/env python
"""
$ rtl_433 -R 104 -F json | rtl_433_json_to_rtlwmbus.py
A script to convert rtl_433 wmbus json output to rtlwmbus output
Copyright (C) 2019 Benjamin Larsson
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
"""
import sys
import json
import time;
def sanitize(text):
return text.replace(" ", "_")
def rtl_433_wmbus():
dup = {}
seconds = 10
while True:
line = sys.stdin.readline()
ts = int(time.time())
if not line:
break
try:
event = json.loads(line)
# Duplicate check + check if dictianary is initialized
id = int(event['id'])
if id in dup:
#print("if %s D:%s T:%s" % (id, dup[id], ts))
if (dup[id] + seconds) < ts:
duplicate = False
dup[id] = ts;
else:
duplicate = True
#print("Dup! %s" % (id))
else:
#print("else %s" % (id))
dup[id] = ts;
duplicate = False
if duplicate != True:
print("%s1;1;1;%s.000;54;46;%s;0x%s" % (event['mode'], event['time'], event['id'], event['data']) )
sys.stdout.flush()
except KeyError:
pass
except ValueError:
pass
if __name__ == "__main__":
dup_test = {}
rtl_433_wmbus()