import json
import os

import adafruit_connection_manager
import board
import wifi

import adafruit_requests

from adafruit_dps310.basic import DPS310
from adafruit_ticks import ticks_ms, ticks_add, ticks_less

INTERVAL = 20 # seconds
JWT_TOKEN = "PASTE_JWT_TOKEN_HERE"
print(JWT_TOKEN[0])
i2c = board.I2C()

sensor = DPS310(i2c)

# Get WiFi details, ensure these are set up in settings.toml
ssid = os.getenv("CIRCUITPY_WIFI_SSID")
password = os.getenv("CIRCUITPY_WIFI_PASSWORD")

JSON_POST_URL = "http://192.168.1.128:3000/datavalues"

radio = wifi.radio
while not radio.connected:
    radio.connect(ssid, password)

# get the pool and ssl_context from the helpers:
pool = adafruit_connection_manager.get_radio_socketpool(radio)
ssl_context = adafruit_connection_manager.get_radio_ssl_context(radio)
requests = adafruit_requests.Session(pool, ssl_context)
rssi = wifi.radio.ap_info.rssi

print(f"\nConnecting to {ssid}...")

try:
    # Connect to the Wi-Fi network
    wifi.radio.connect(ssid, password)
except OSError as e:
    print(f"OSError: {e}")

headers = {"Content-Type": "application/json", "Authorization": f"Bearer {JWT_TOKEN}"}

deadline = ticks_ms()
deadline = ticks_add(deadline, INTERVAL * 1000)
while True:
    DATA = json.dumps({"type": "temperature", "tag": "funhouse_0", "value": sensor.temperature})
    with requests.post(JSON_POST_URL, data=DATA, headers=headers) as response:
        print(f" Response Status Code: {response.status_code}")

    while ticks_less(ticks_ms(), deadline):
        pass
    deadline = ticks_add(deadline, INTERVAL * 1000)