mirror of https://github.com/merbanan/rtl_433.git
62 lines
1.6 KiB
Python
Executable File
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()
|