85 lines
2.1 KiB
Python
85 lines
2.1 KiB
Python
import WIFI_CONFIG
|
|
from network_manager import NetworkManager
|
|
import uasyncio
|
|
from urllib import urequest
|
|
from picographics import PicoGraphics, DISPLAY_INKY_PACK
|
|
import jpegdec
|
|
import random
|
|
|
|
|
|
"""
|
|
Grab a random image from PlaceKitten.com
|
|
and display it on Inky Pack.
|
|
|
|
Optionally cache to flash, if you need the RAM
|
|
for something else.
|
|
"""
|
|
|
|
|
|
graphics = PicoGraphics(DISPLAY_INKY_PACK)
|
|
|
|
WIDTH, HEIGHT = graphics.get_bounds()
|
|
FILENAME = "placekitten.jpg"
|
|
ENDPOINT = "http://placekitten.com/{0}/{1}"
|
|
|
|
|
|
def status_handler(mode, status, ip):
|
|
graphics.set_update_speed(3)
|
|
graphics.set_pen(15)
|
|
graphics.clear()
|
|
graphics.set_pen(0)
|
|
graphics.text("Network: {}".format(WIFI_CONFIG.SSID), 10, 10, scale=2)
|
|
status_text = "Connecting..."
|
|
if status is not None:
|
|
if status:
|
|
status_text = "Connection successful!"
|
|
else:
|
|
status_text = "Connection failed!"
|
|
|
|
graphics.text(status_text, 10, 30, scale=2)
|
|
graphics.text("IP: {}".format(ip), 10, 60, scale=2)
|
|
graphics.update()
|
|
|
|
|
|
graphics.set_font("bitmap8")
|
|
graphics.set_update_speed(1)
|
|
|
|
network_manager = NetworkManager(WIFI_CONFIG.COUNTRY, status_handler=status_handler)
|
|
uasyncio.get_event_loop().run_until_complete(network_manager.client(WIFI_CONFIG.SSID, WIFI_CONFIG.PSK))
|
|
|
|
|
|
url = ENDPOINT.format(WIDTH, HEIGHT + random.randint(0, 10))
|
|
print("Requesting URL: {}".format(url))
|
|
socket = urequest.urlopen(url)
|
|
|
|
# Load the image data into RAM (if you have enough!)
|
|
data = bytearray(1024 * 10)
|
|
socket.readinto(data)
|
|
socket.close()
|
|
|
|
|
|
"""
|
|
# Stream the image data from the socket onto disk in 1024 byte chunks
|
|
# if you're doing something else RAM intensive you might want to use this!
|
|
data = bytearray(1024)
|
|
with open(FILENAME, "wb") as f:
|
|
while True:
|
|
if socket.readinto(data) == 0:
|
|
break
|
|
f.write(data)
|
|
socket.close()
|
|
"""
|
|
|
|
jpeg = jpegdec.JPEG(graphics)
|
|
jpeg.open_RAM(data)
|
|
jpeg.decode(0, 0)
|
|
|
|
graphics.set_pen(15)
|
|
graphics.rectangle(0, HEIGHT - 14, WIDTH, 14)
|
|
|
|
graphics.set_pen(0)
|
|
graphics.text(url, 5, HEIGHT - 9, scale=1)
|
|
|
|
graphics.set_update_speed(1)
|
|
graphics.update()
|