Last active
November 1, 2020 01:35
-
-
Save m0nochr0me/95785337c127d4a2eae3f70f5f9e7859 to your computer and use it in GitHub Desktop.
ESP8266 ticker monitor
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import gc | |
import network | |
import esp | |
esp.osdebug(None) | |
gc.collect() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
essid = "YourSSID" | |
password = "yourwifipassword" | |
TIMEZONE = 8 | |
TOKEN = 'pk_123123123' | |
SYMBOLS = ('AMD', 'NVDA', 'INTC', 'ROSYY', 'AAPL', 'BA', 'GOOG', 'MSFT', 'MU', 'FB') |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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