Skip to content

Instantly share code, notes, and snippets.

@m0nochr0me
Last active November 1, 2020 01:35
Show Gist options
  • Save m0nochr0me/95785337c127d4a2eae3f70f5f9e7859 to your computer and use it in GitHub Desktop.
Save m0nochr0me/95785337c127d4a2eae3f70f5f9e7859 to your computer and use it in GitHub Desktop.
ESP8266 ticker monitor
import gc
import network
import esp
esp.osdebug(None)
gc.collect()
essid = "YourSSID"
password = "yourwifipassword"
TIMEZONE = 8
TOKEN = 'pk_123123123'
SYMBOLS = ('AMD', 'NVDA', 'INTC', 'ROSYY', 'AAPL', 'BA', 'GOOG', 'MSFT', 'MU', 'FB')
import epaper2in13v2
import machine
import time
import ntptime
import framebuf
import usocket as socket
import ussl as ssl
from config import *
def connect():
sta_if = network.WLAN(network.STA_IF)
if not sta_if.isconnected():
print("Connecting to {}...".format(essid))
sta_if.active(True)
sta_if.connect(essid, password)
while not sta_if.isconnected():
pass
print("Network config:", sta_if.ifconfig())
connect()
def get_price(sym):
try:
sock = socket.socket()
addr_info = socket.getaddrinfo("cloud.iexapis.com", 443)
addr = addr_info[0][-1]
req = 'GET /stable/stock/' + sym + '/quote/latestPrice?token=' + TOKEN + ' HTTP/1.0\r\n\r\n'
sock.connect(addr)
secure_sock = ssl.wrap_socket(sock)
secure_sock.write(req.encode())
response = secure_sock.read().decode().split('\r\n')
secure_sock.close()
sock.close()
except:
return 'ERR'
else:
return response[-1]
rtc = machine.RTC()
try:
ntptime.settime()
except:
print('Error setting time')
machine.reset()
sec = time.time() + TIMEZONE * 3600
localtime = time.localtime(sec)
cs_pin = machine.Pin(15)
dc_pin = machine.Pin(2)
rst_pin = machine.Pin(4)
busy_pin = machine.Pin(10)
hsspi = machine.SPI(1, baudrate=4000000, polarity=0, phase=0)
e_display = epaper2in13v2.EPD(hsspi, cs_pin, dc_pin, rst_pin, busy_pin)
e_display.init()
e_display.set_full_update_mode()
e_display.clear_display(0xff)
buf = bytearray(128 * 250 // 8)
fb = framebuf.FrameBuffer(buf, 128, 250, framebuf.MONO_HLSB)
fb.fill(1)
fb.fill_rect(0, 0, 122, 22, 0)
fb.text('{2:02d}-{1:02d}-{0:02d}'.format(*localtime), 2, 2, 1)
fb.text('{3:02d}:{4:02d}'.format(*localtime), 2, 12, 1)
for i, symbol in enumerate(SYMBOLS):
price = get_price(symbol)
print(symbol, price)
fb.text(symbol, 0, 16*(i+2)+2, 0)
fb.text(price, 122-len(price)*8, 16*(i+2)+2, 0)
e_display.display_master_image(buf)
rtc.irq(trigger=rtc.ALARM0, wake=machine.DEEPSLEEP)
rtc.alarm(rtc.ALARM0, time.ticks_ms() + 900*1000)
print('Entering deepsleep')
machine.deepsleep()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment