Mercurial > ~darius > hgwebdir.cgi > vanlogger
comparison vanlogger.py @ 23:efe1954da8ca
merge
author | Daniel O'Connor <darius@dons.net.au> |
---|---|
date | Sun, 22 Jul 2018 12:56:29 +0930 |
parents | 65be58857ed4 59cf68be7feb |
children | 718b963b0dfa |
comparison
equal
deleted
inserted
replaced
21:65be58857ed4 | 23:efe1954da8ca |
---|---|
6 import datetime | 6 import datetime |
7 import epro.epro as epro | 7 import epro.epro as epro |
8 import giant.giant as giant | 8 import giant.giant as giant |
9 import serial | 9 import serial |
10 import sqlite3 | 10 import sqlite3 |
11 import sys | |
11 | 12 |
12 def create(cur): | 13 def create(cur): |
13 cur.execute(''' | 14 cur.execute(''' |
14 CREATE TABLE IF NOT EXISTS eprolog( | 15 CREATE TABLE IF NOT EXISTS eprolog( |
15 tstamp INTEGER NOT NULL, | 16 tstamp INTEGER NOT NULL, |
167 | 168 |
168 row['tstamp'] = int(datetime.datetime.now().strftime('%s')) | 169 row['tstamp'] = int(datetime.datetime.now().strftime('%s')) |
169 cur.execute('INSERT INTO giantlog VALUES(:tstamp, :ac_act_power, :ac_app_power, :ac_frequency, :ac_volts, :batt_chr_curr, :batt_dis_curr, :battery_cap, :battery_volts, :batt_volt_ofs, :bus_voltage, :grid_frequency, :grid_volts, :hs_temperature, :load_pct, :pv1_chrg_pow, :pv1_current, :pv1_volts, :scc1_volts, :scc1_charging, :switch, :float_charge, :ac_charging, :sbu_prio, :b_volt_steady, :charging)', row) | 170 cur.execute('INSERT INTO giantlog VALUES(:tstamp, :ac_act_power, :ac_app_power, :ac_frequency, :ac_volts, :batt_chr_curr, :batt_dis_curr, :battery_cap, :battery_volts, :batt_volt_ofs, :bus_voltage, :grid_frequency, :grid_volts, :hs_temperature, :load_pct, :pv1_chrg_pow, :pv1_current, :pv1_volts, :scc1_volts, :scc1_charging, :switch, :float_charge, :ac_charging, :sbu_prio, :b_volt_steady, :charging)', row) |
170 | 171 |
171 def main(): | 172 def main(): |
173 print 'Started' | |
172 dbh = sqlite3.connect('/home/pi/vanlogger/log.db') | 174 dbh = sqlite3.connect('/home/pi/vanlogger/log.db') |
173 cur = dbh.cursor() | 175 cur = dbh.cursor() |
174 create(cur) | 176 create(cur) |
175 s = serial.Serial('/dev/ttyS0', 2400, parity='E') | 177 s = serial.Serial('/dev/ttyS0', 2400, parity='E') |
176 s.timeout = 0.2 | 178 s.timeout = 0.2 |
177 | 179 |
178 p = epro.Processor() | 180 p = epro.Processor() |
179 ips = giant.GiantIPS() | 181 ips = giant.GiantIPS() |
180 | 182 |
181 then = None | 183 then = None |
184 lasteprolog = datetime.datetime.now() | |
185 lastgiantlog = datetime.datetime.now() | |
182 while True: | 186 while True: |
187 if datetime.datetime.now() - lasteprolog > datetime.timedelta(hours = 1): | |
188 print('Stale ePro data') | |
189 sys.exit(1) | |
190 if datetime.datetime.now() - lastgiantlog > datetime.timedelta(hours = 1): | |
191 print('Stale Giant data') | |
192 sys.exit(1) | |
183 dolog = False | 193 dolog = False |
184 if then == None or datetime.datetime.now() - then > datetime.timedelta(seconds = 60): | 194 if then == None or datetime.datetime.now() - then > datetime.timedelta(seconds = 60): |
185 dolog = True | 195 dolog = True |
186 then = datetime.datetime.now() | 196 then = datetime.datetime.now() |
187 p.process(s.read(1024)) | 197 p.process(s.read(1024)) |
188 if dolog: | 198 if dolog: |
199 lasteprolog = datetime.datetime.now() | |
189 log_epro(p, cur) | 200 log_epro(p, cur) |
190 dbh.commit() | 201 dbh.commit() |
191 | 202 |
192 gstat = None | 203 gstat = None |
193 try: | 204 try: |
194 gstat = ips.getStatus() | 205 gstat = ips.getStatus() |
195 except: | 206 except: |
196 pass | 207 pass |
197 if gstat != None and dolog: | 208 if gstat != None and dolog: |
209 lastgiantlog = datetime.datetime.now() | |
198 log_giant(gstat, cur) | 210 log_giant(gstat, cur) |
199 dbh.commit() | 211 dbh.commit() |
200 #print(gstat) | 212 #print(gstat) |
201 | 213 |
202 if __name__ == '__main__': | 214 if __name__ == '__main__': |