back home
Energy Observer status
# import pandas as pd
# import sqlite3 as sql
from pyodide.http import open_url
import json
import datetime
# read json
url_content = open_url("https://www.energy-observer.org/data/json/data.json")
EObsJSON = url_content.getvalue()
EObsLIST = json.loads(EObsJSON)
EObsDICT = EObsLIST[0]
navdata = EObsDICT['navigation']
nav_status = navdata['status']
if nav_status == '0':
nav_status_text = "Stopover"
else:
nav_status_text = "Cruising"
# Formatting date and time
log_year = navdata['dateTime'][0:4]
log_month = navdata['dateTime'][4:6]
log_day = navdata['dateTime'][6:8]
log_hour = navdata['dateTime'][8:10]
log_min = navdata['dateTime'][10:12]
proper_date=datetime.datetime.strptime(navdata['dateTime'],'%Y%m%d%H%M%S')
disp_date = str(proper_date.year) + "-" + str(proper_date.month) + "-" + str(proper_date.day)
disp_time = str(proper_date.hour) + ":" + str(proper_date.minute).zfill(2)
# create table
# tablestring1 = '<tr><th>Item</th><th></th><th></th></tr>'
tablestring1 = ''
dataline1 = '<tr><td>Date / Status</td><td>' + disp_date + ' ' + disp_time + '</td>'
dataline1 += '<td>' + nav_status_text + '</td></tr>'
tablestring1 += dataline1
long_string = str(navdata['position']['longitude']['value']) + str(navdata['position']['longitude']['direction'])
lat_string = str(navdata['position']['latitude']['value']) + str(navdata['position']['latitude']['direction'])
position_link = 'https://www.google.com/maps/search/?api=1&query=' + lat_string + '%2C' + long_string
dataline2 = '<tr><td><a href="' + position_link
dataline2 += '" target="_blank">Position lat/long <b><u>(-map-)</u></b></a></td><td>'
dataline2 += lat_string + '</td>'
dataline2 += '<td>' + long_string + '</td></tr>'
tablestring1 += dataline2
speed_val = float(navdata['SOG'])
course = navdata['COG']
from_place = navdata['itinerary']['from']
to_place = navdata['itinerary']['to']
dataline3 = '<tr><td>from - to</td><td>' + from_place + '</td>'
dataline3 += '<td>' + to_place + '</td></tr>'
tablestring1 += dataline3
dataline4 = '<tr><td>Course / speed</td><td>' + str(course) + '</td>'
dataline4 += '<td>' + str(speed_val) + '</td></tr>'
tablestring1 += dataline4
# Distance travelled
dist_all = navdata['distance']['Odyssee']
dist_24h = navdata['distance']['last24Hours']
dist_dest = navdata['distance']['toDestination']
tablestring2 = '<tr><th></th><th>Odysee</th><th>24h</th>'
tablestring2 += '<th>to dest.</th></tr>'
dataline1 = '<tr><td>Distances traveled</td><td>' + str(dist_all) + '</td>'
dataline1 += '<td>' + str(dist_24h) + '</td><td>' + str(dist_dest) + '</td></tr>'
tablestring2 += dataline1
# Weather in a 2dim list
# windspeed, winddir ! true, apparent
# temp, sunshine
weatherdict = EObsDICT['weather']
weatherdata = []
windlist1 = []
windlist2 = []
windlist1.append(weatherdict['wind']['TWS'])
windlist1.append(weatherdict['wind']['AWS'])
weatherdata.append(windlist1)
windlist2.append(weatherdict['wind']['TWA'])
windlist2.append(weatherdict['wind']['AWA'])
weatherdata.append(windlist2)
weatherdata.append([weatherdict['temperature']['air'],''])
weatherdata.append([weatherdict['sunshine'],''])
tablestring3 = '<tr><th></th><th>true</th><th>apparent</th></tr>'
dataline1 = '<tr><td>Wind speed</td><td>' + str(windlist1[0]) + '</td>'
dataline1 += '<td>' + str(windlist1[1]) + '</td></tr>'
tablestring3 += dataline1
dataline2 = '<tr><td>Wind direction</td><td>' + str(windlist2[0]) + '</td>'
dataline2 += '<td>' + str(windlist2[1]) + '</td></tr>'
tablestring3 += dataline2
dataline3 = '<tr><td>Temperature / sunshine</td><td>' + str(weatherdict['temperature']['air']) + '</td>'
dataline3 += '<td>' + str(weatherdict['sunshine']) + '</td></tr>'
tablestring3 += dataline3
# Energy levels
energydata = EObsDICT['energy']
dataline4 = '<tr><td>Battery charge / solar instant</td><td>' + str(energydata['lithium']['storage']) + '</td>'
dataline4 += '<td>' + str(energydata['solar']['instant']) + '</td></tr>'
tablestring3 += dataline4
outputtable1 = Element('outputtable1')
outputtable1.write(tablestring1)
outputtable2 = Element('outputtable2')
outputtable2.write(tablestring2)
outputtable3 = Element('outputtable3')
outputtable3.write(tablestring3)