Compare commits

..

5 Commits

Author SHA1 Message Date
c693d30394 Handle errors, remove menu bar, centre graphs 2023-04-18 21:19:24 +00:00
a7ca48dacf Rename .gitkeep to index.html 2023-04-18 21:19:24 +00:00
08b7196c26 Capture all sensor graphs 2023-04-18 21:19:24 +00:00
29ac0345c6 Ignore data/ folder 2023-04-18 21:19:24 +00:00
b393b88127 Freeze requirements 2023-04-18 21:19:24 +00:00
4 changed files with 60 additions and 4 deletions

1
export/.gitignore vendored
View File

@@ -23,3 +23,4 @@ yarn-debug.log*
yarn-error.log* yarn-error.log*
image.png image.png
data/

View File

@@ -3,17 +3,48 @@ import time
from selenium import webdriver from selenium import webdriver
from selenium.webdriver.chrome.options import Options from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.common.exceptions import NoSuchElementException
from webdriver_manager.chrome import ChromeDriverManager
ser = Service('/usr/lib/chromium-browser/chromedriver')
chrome_options = Options() chrome_options = Options()
chrome_options.add_argument('--headless') chrome_options.add_argument('--headless')
chrome_options.add_argument('start-maximized')
chrome_options.add_argument('--no-sandbox') chrome_options.add_argument('--no-sandbox')
driver = webdriver.Chrome('/usr/lib/chromium-browser/chromedriver', options=chrome_options) driver = webdriver.Chrome(service=ser, options=chrome_options)
driver.get('https://sensors.dns.t0.vc') driver.get('https://sensors.dns.t0.vc')
time.sleep(3) time.sleep(3)
element = driver.find_element(By.ID, 'Solar_Power') driver.execute_script("return document.getElementsByClassName('menu')[0].remove();")
with open('image.png', 'wb') as f: graphs = [
f.write(element.screenshot_as_png) 'Solar_Power',
'Living_Room_Air',
'Outside_Temperature',
'Bedroom_Temperature',
'Nook_Temperature',
'Misc_Temperature',
'Nook_Thermostat',
'Gas_Usage',
'Water_Usage',
'Living_Room_Lux',
]
for graph in graphs:
print('Capturing', graph, 'graph...')
try:
element = driver.find_element(By.ID, graph)
except NoSuchElementException:
print('Graph not found, skipping.')
continue
driver.execute_script('arguments[0].scrollIntoView({block: "center"});', element)
with open('/home/tanner/sensors/export/data/{}.png'.format(graph), 'wb') as f:
f.write(element.screenshot_as_png)
driver.close() driver.close()
print('done.')

24
export/requirements.txt Normal file
View File

@@ -0,0 +1,24 @@
async-generator==1.10
attrs==22.1.0
certifi==2022.6.15
cffi==1.15.1
charset-normalizer==3.1.0
cryptography==37.0.4
h11==0.13.0
idna==3.3
outcome==1.2.0
packaging==23.1
pycparser==2.21
pyOpenSSL==22.0.0
PySocks==1.7.1
python-dotenv==1.0.0
requests==2.28.2
selenium==4.8.3
sniffio==1.2.0
sortedcontainers==2.4.0
tqdm==4.65.0
trio==0.21.0
trio-websocket==0.9.2
urllib3==1.26.11
webdriver-manager==3.8.6
wsproto==1.1.0