record tele topic and content
authorDobrica Pavlinusic <dpavlin@rot13.org>
Sun, 28 Oct 2018 11:45:59 +0000 (12:45 +0100)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Sun, 28 Oct 2018 11:45:59 +0000 (12:45 +0100)
mqtt-tele-pgsql.service [new file with mode: 0644]
mqtt-tele-pgsql.sh [new file with mode: 0755]
tele.sql [new file with mode: 0644]

diff --git a/mqtt-tele-pgsql.service b/mqtt-tele-pgsql.service
new file mode 100644 (file)
index 0000000..ce3c70d
--- /dev/null
@@ -0,0 +1,10 @@
+[Unit]
+Description=mqtt-tele-pgsql
+
+[Service]
+User=dpavlin
+ExecStart=/klin/rtl433-sensors/mqtt-tele-pgsql.sh
+Restart=on-failure
+
+[Install]
+WantedBy=multi-user.target
diff --git a/mqtt-tele-pgsql.sh b/mqtt-tele-pgsql.sh
new file mode 100755 (executable)
index 0000000..e276ef6
--- /dev/null
@@ -0,0 +1,7 @@
+#!/bin/sh -x
+
+mosquitto_sub -h 10.13.37.5 -t 'tele/#' -v | while read topic json ; do
+       echo $json > /dev/shm/tele.json
+#      psql -c "copy tele (json) from '/dev/shm/tele.json'" rot13
+       psql -c "insert into tele (topic,json) values ('$topic','$json');" rot13
+done
diff --git a/tele.sql b/tele.sql
new file mode 100644 (file)
index 0000000..30a7a1d
--- /dev/null
+++ b/tele.sql
@@ -0,0 +1,23 @@
+drop table tele;
+create table tele (
+       _id serial,
+       time timestamp without time zone default now(),
+       topic text not null,
+       json jsonb
+);
+
+CREATE OR REPLACE FUNCTION json_tele_fn()
+  RETURNS TRIGGER AS
+$func$
+BEGIN
+   NEW := jsonb_populate_record(NEW, NEW.json); -- or hstore alternative
+   NEW.time = NEW.json->'Time';
+   RETURN NEW;
+END
+$func$ LANGUAGE plpgsql;
+
+CREATE TRIGGER json_tele_trigger
+BEFORE INSERT OR UPDATE ON tele FOR EACH ROW
+EXECUTE PROCEDURE json_tele_fn();
+
+