implemented simple LLM chat
This commit is contained in:
+73
@@ -0,0 +1,73 @@
|
||||
# deck.net: T-Deck network helper library for CircuitPython
|
||||
# Depends on some Adafruit Bundle libs
|
||||
# Normal flow (provided Wi-Fi creds are in settings.toml):
|
||||
#
|
||||
# from deck import net
|
||||
# status, stext, myip = net.wifi_connect_wait()
|
||||
# if status:
|
||||
# requests = net.init_requests()
|
||||
# # or socket = net.init_socket() if raw sockets are necessary
|
||||
# while net.my_ip():
|
||||
# ...
|
||||
#
|
||||
# Created by Luxferre in 2025, released into public domain
|
||||
|
||||
import os, time # standard modules
|
||||
import wifi # CircuitPython builtins
|
||||
import adafruit_connection_manager, adafruit_requests # Adafruit Bundle libs
|
||||
|
||||
def wifi_connect(ssid=None, password=None):
|
||||
'''
|
||||
Connect to a Wi-Fi SSID
|
||||
Use settings.toml for default credentials
|
||||
'''
|
||||
ssid = ssid or os.getenv('CIRCUITPY_WIFI_SSID')
|
||||
password = password or os.getenv('CIRCUITPY_WIFI_PASSWORD')
|
||||
try:
|
||||
wifi.radio.connect(ssid=ssid, password=password)
|
||||
except ConnectionError as e:
|
||||
return (False, e)
|
||||
return (True, 'Connected')
|
||||
|
||||
def my_ip():
|
||||
'Get the local IP address'
|
||||
return wifi.radio.ipv4_address
|
||||
|
||||
def wifi_connect_wait(ssid=None, password=None, tmout=15, retries=3):
|
||||
'''
|
||||
Connect to a Wi-Fi SSID and wait for successful connection
|
||||
Usually, you'll want to use this function to connect
|
||||
'''
|
||||
r = 0
|
||||
status = wifi.radio.connected
|
||||
stext = ''
|
||||
while not wifi.radio.ipv4_address and r < retries:
|
||||
status, stext = wifi_connect(ssid, password)
|
||||
if not status:
|
||||
time.sleep(tmout)
|
||||
r += 1
|
||||
if not status:
|
||||
stext = 'Could not connect, out of attempts. Last error: ' + stext
|
||||
return (status, stext, wifi.radio.ipv4_address)
|
||||
|
||||
def wifi_scan():
|
||||
'Scan for Wi-Fi networks (returns (SSID, rssi) tuple list from strongest to weakest)'
|
||||
networks = []
|
||||
for network in wifi.radio.start_scanning_networks():
|
||||
networks.append(network)
|
||||
wifi.radio.stop_scanning_networks()
|
||||
networks = sorted(networks, key=lambda net: net.rssi, reverse=True)
|
||||
return [(net.ssid, net.rssi) for net in networks]
|
||||
|
||||
def ssl_context():
|
||||
'Get the default SSL context for wrapping a raw socket'
|
||||
return adafruit_connection_manager.get_radio_ssl_context(wifi.radio)
|
||||
|
||||
def init_socket():
|
||||
'Get a socket pool and instantiate a Socket library'
|
||||
return adafruit_connection_manager.get_radio_socketpool(wifi.radio)
|
||||
|
||||
def init_requests():
|
||||
'Instantiate a Requests library'
|
||||
return adafruit_requests.Session(init_socket(), ssl_context())
|
||||
|
||||
Reference in New Issue
Block a user