Browse Source

wmbus: add script for converting wmbus json to rtlwmbus format

Benjamin Larsson 1 month ago
parent
commit
668c1e692f
1 changed files with 61 additions and 0 deletions
  1. 61 0
      examples/rtl_433_json_to_rtlwmbus.py

+ 61 - 0
examples/rtl_433_json_to_rtlwmbus.py

@@ -0,0 +1,61 @@
+#!/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()