diff options
author | pks <pks@pks.rocks> | 2021-05-01 06:17:55 +0200 |
---|---|---|
committer | pks <pks@pks.rocks> | 2021-05-01 06:17:55 +0200 |
commit | f461190e22a97bde985b067ce01c4ed9c74f7e62 (patch) | |
tree | 0c2c48d1933765f83d083241df2dd74c6603f2bc /fill-db.rb | |
parent | 63fbf0f3aadb4b6d037a8164b501fe836d9c361d (diff) |
v1
Diffstat (limited to 'fill-db.rb')
-rwxr-xr-x | fill-db.rb | 71 |
1 files changed, 0 insertions, 71 deletions
diff --git a/fill-db.rb b/fill-db.rb deleted file mode 100755 index 1bfc0f2..0000000 --- a/fill-db.rb +++ /dev/null @@ -1,71 +0,0 @@ -#!/usr/bin/env ruby - -require 'sqlite3' - -int = Proc.new do |x| - x.to_i -end -float = Proc.new do |x| - x.to_f -end -str = Proc.new do |x| - x.to_s -end -common_conv = { "db" => str, "timestamp"=>float, "device_type"=>str, "type"=>str, "device_id"=>str, "battery" => int, "battery_numeric" => int, "rssi" => int, "rssi_numeric" => int } -rain_conv = {"rain_rate"=>float, "rain_total"=>float}.merge(common_conv) -wind_conv = {"chill"=>float, "temperature"=>float,"average_speed"=>float,"direction"=>int,"gust"=>float}.merge(common_conv) -temp_conv = {"humidity"=>float, "humidity_status"=>str,"humidity_status_numeric"=>int,"temperature"=>float}.merge(common_conv) -conv = { "rain" => rain_conv, "wind" => wind_conv, "temp" => temp_conv } - -$db = SQLite3::Database.new("db/weather.db") - -def parse_to_hash s, conv - h = {} - s.split("\t").map { |i| i=i.split("::"); h[i[0]] = conv[i[0]].call(i[1]) } - return h -end - -def db_execute s, d - begin - $db.execute(s, d) - rescue SQLite3::BusyException - sleep 3 - begin - $db.execute(s, d) - rescue SQLite3::BusyException - STDERR.write "db busy, skipping data point '#{d.to_s}'\n" - end - end -end - -def insert_rain h - #db::rain type::PCR800 device_id::eb:00 battery::9 rain_rate::0.0 rain_total::0.9 rssi::6 - db_execute("INSERT INTO rain(timestamp, device_type, device_id, battery, rssi, rain_rate, rain_total) VALUES(?,?,?,?,?,?,?)", [h["timestamp"], h["device_type"],h["device_id"], h["battery"], h["rssi"], h["rain_rate"], h["rain_total"]]) -end - -def insert_wind h - # db::wind type::WGR800 device_id::04:00 battery::9 chill::0.0 rssi::5 temperature::0.0 average_speed::0.0 direction::270gust::0.0 - db_execute("INSERT INTO wind(timestamp, device_type, device_id, battery, rssi, chill, temperature, average_speed, direction, gust) VALUES(?,?,?,?,?,?,?,?,?,?)", [h["timestamp"], h["device_type"],h["device_id"], h["battery"], h["rssi"], h["chill"], h["temperature"], h["average_speed"], h["direction"], h["gust"]]) -end - -def insert_temp h - #db::temp type::THGR810, THGN800 device_id::10:02 battery::9 humidity::80 humidity_status::wet humidity_status_numeric::3 rssi::5 temperature::2.6 - #db::temp type::THGR810, THGN800 device_id::25:01 battery::0 humidity::94 humidity_status::wet humidity_status_numeric::3 rssi::6 temperature::1.1 - db_execute("INSERT INTO temp(timestamp, device_type, device_id, battery, rssi, humidity, humidity_status, humidity_status_numeric, temperature) VALUES(?,?,?,?,?,?,?,?,?)",[h["timestamp"], h["device_type"],h["device_id"], h["battery"], h["rssi"], h["humidity"], h["humidity_status"], h["humidity_status_numeric"], h["temperature"]]) -end - -while line = STDIN.gets - break if line.strip=="stop" - db = line.split("\t").first.split("::")[1] - h = parse_to_hash(line, conv[db]) - if db == "rain" - insert_rain h - elsif db == "wind" - insert_wind h - elsif db == "temp" - insert_temp h - end -end - -$db.close - |