diff options
Diffstat (limited to 'db-from-log.rb')
-rwxr-xr-x | db-from-log.rb | 64 |
1 files changed, 0 insertions, 64 deletions
diff --git a/db-from-log.rb b/db-from-log.rb deleted file mode 100755 index dd4d379..0000000 --- a/db-from-log.rb +++ /dev/null @@ -1,64 +0,0 @@ -#!/usr/bin/env ruby - -require 'json' -require 'sqlite3' -require 'time' - -def db_execute db, 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 parse_log_line line - _, topic, data = line.split "\t" - topic_parts = topic.split "/" - if topic_parts.size == 5 # old format, no hostname in topic - _, _, device_location_1, device_location_2, _ = topic_parts - device_name = "" - else - _, device_name, _, device_location_1, device_location_2, _ = topic_parts - end - device_location = [device_location_1, device_location_2] - data.gsub!("'", '"') - data = JSON.parse data - - return device_name, device_location, data -end - -def insert_power db, device_name, device_location, data - if data.has_key? "ENERGY" - timestamp = Time.parse(data["Time"]).utc.to_i - total_start_time = Time.parse(data["ENERGY"]["TotalStartTime"]).utc.to_i - db_execute db, \ - "INSERT INTO power(timestamp, device_name, device_location_primary, device_location_secondary, total, total_start_time) VALUES(?,?,?,?,?,?)", \ - [timestamp, device_name, device_location[0], device_location[1], data["ENERGY"]["Total"], total_start_time] - end -end - -def main - db = SQLite3::Database.open ARGV[0] - while line = STDIN.gets - begin - device_name, device_location, data = parse_log_line line - insert_power db, device_name, device_location, data - rescue - STDERR.write "Cannot insert log entry '#{line.strip}'\n" - end - if File.exist? "#{File.expand_path(File.dirname(__FILE__))}/stop" - STDERR.write "Stopping loop\n" - break - end - end - db.close -end - - -main |