Skip to content

Instantly share code, notes, and snippets.

@Heinrich-XIAO
Created December 31, 2023 22:05
Show Gist options
  • Save Heinrich-XIAO/c6da4cd942f35c62f7eab8044e2f34af to your computer and use it in GitHub Desktop.
Save Heinrich-XIAO/c6da4cd942f35c62f7eab8044e2f34af to your computer and use it in GitHub Desktop.
Code to charge my car with a raspberry pi pico
import network
import socket
import time
import struct
import urequests
import BlynkLib
import network
import machine
import gc
current_time = None
## Output
charger = machine.Pin(17, machine.Pin.OUT)
charger.value(1)
led = machine.Pin("LED", machine.Pin.OUT)
override = 0
overridden_charge = 0
WIFI_SSID = 'BELL370'
WIFI_PASS = '22AE31D6C97F'
# WIFI_SSID = 'fido'
# WIFI_PASS = 'a676869y'
BLYNK_AUTH = 'gXLF9nrwcoltUoTvjFBjcNVCM9gx4tIt'
def connect():
led.value(1)
time.sleep(1)
led.value(0)
#Connect to WLAN
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(WIFI_SSID, WIFI_PASS)
i = 0
while wlan.isconnected() == False:
print('Waiting for connection...')
led.value(1)
time.sleep(1)
led.value(0)
if i > 10:
raise KeyboardInterrupt
print(wlan.ifconfig())
try:
connect()
except KeyboardInterrupt:
machine.reset()
led.value(1)
blynk = BlynkLib.Blynk(BLYNK_AUTH)
@blynk.on("connected")
def blynk_connected(ping):
print('Blynk ready. Ping:', ping, 'ms')
@blynk.on("disconnected")
def blynk_disconnected():
print('Blynk disconnected')
@blynk.on("V0")
def v0_write_handler(value):
global overridden_charge
overridden_charge = int(value[0])
print(value)
@blynk.on("V1")
def v1_write_handler(value):
global override
print(value)
override = int(value[0])
t = time.ticks_ms()
while True:
blynk.run()
machine.idle()
if time.ticks_diff(time.ticks_ms(), t) > 1000:
print(charger.value())
blynk.virtual_write(2, 1-charger.value())
if override == 1:
charger.value(1-overridden_charge)
else:
# Before your request
gc.collect()
hour = urequests.get('https://www.timeapi.io/api/Time/current/zone?timeZone=America/Toronto').json()["hour"]
if hour == 1 or hour == 2 or hour == 3 or hour == 4 or hour == 9 or hour == 10 or hour == 11 or hour == 12 or hour == 13 or hour == 14 or hour == 15:
charger.value(0)
else:
charger.value(1)
t = time.ticks_ms()
print(t)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment