From 3054b57f3fddfc5108a5b804e3568a46a9e70002 Mon Sep 17 00:00:00 2001
From: Bruce Flynn <brucef@ssec.wisc.edu>
Date: Fri, 22 Apr 2016 18:13:43 +0000
Subject: [PATCH] Example influx insert script

---
 scripts/insert_influx.py | 56 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 56 insertions(+)
 create mode 100644 scripts/insert_influx.py

diff --git a/scripts/insert_influx.py b/scripts/insert_influx.py
new file mode 100644
index 0000000..d36e146
--- /dev/null
+++ b/scripts/insert_influx.py
@@ -0,0 +1,56 @@
+import logging
+from datetime import datetime
+
+import requests
+
+from metobs.data import wind_vector_components
+from aosstower.l00.parser import read_frames
+
+LOG = logging.getLogger(__name__)
+
+
+def _mktime(frame):
+    return int((frame['stamp'] - datetime(1970, 1, 1)).total_seconds() * 10**9)
+
+
+def frame_records(frame):
+    nanos = _mktime(frame)
+    if 'wind_speed' in frame and 'wind_dir' in frame:
+        spd = frame.pop('wind_speed')
+        dr = frame.pop('wind_dir')
+        e, n, _ = wind_vector_components(spd, dr)
+        frame['wind_east'] = e
+        frame['wind_north'] = n
+    for name, value in frame.items():
+        if name == 'stamp':
+            continue
+        valstr = '{}i'.format(value) if isinstance(value, int) else str(value)
+        yield '{},inst=tower,site=aoss value={} {}'.format(name, valstr, nanos)
+
+
+def file_records(filepath):
+    lines = []
+    for frame in read_frames(filepath):
+        lines += frame_records(frame)
+    return lines
+
+
+def insert(filepath):
+    LOG.info('reading %s', filepath)
+    lines = file_records(filepath)
+    LOG.info("posting %d record from %s...", len(lines), filepath)
+    resp = requests.post(
+        'http://bikini.ssec.wisc.edu:8086/write?db=metobs',
+        data='\n'.join(lines))
+    resp.raise_for_status()
+
+
+if __name__ == '__main__':
+    import argparse
+    parser = argparse.ArgumentParser()
+    parser.add_argument('asciifile')
+    args = parser.parse_args()
+
+    logging.basicConfig(level=logging.DEBUG, format='%(asctime)s -- %(message)s')
+    logging.getLogger('requests').setLevel(logging.WARN)
+    insert(args.asciifile)
-- 
GitLab