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)