Skip to content

Instantly share code, notes, and snippets.

View ConnorGriffin's full-sized avatar

Connor Griffin ConnorGriffin

View GitHub Profile
@ConnorGriffin
ConnorGriffin / ge_double_tap.yaml
Last active December 17, 2025 06:43
HomeAssistant Blueprint: GE Double Tap's for Connor's Light Modes
blueprint:
name: "ConnorGriffin's Light Switch Double Taps"
description: >
Supports GE/Jasco Basic CC (32) and UltraPro ZW3010 Central Scene (91).
Double-tap UP toggles Max ↔ Auto.
Double-tap DOWN toggles Min ↔ Auto.
domain: automation
input:
device:
@ConnorGriffin
ConnorGriffin / time_based_brightness.py
Last active December 17, 2025 04:52
HomeAssistant Plot for Brightness Curve
from datetime import datetime, timedelta
import matplotlib.pyplot as plt
def brightness_at_time(t, sunrise, sunset,
pre_sunrise=120, morning_ramp=90,
pre_sunset=60, evening_ramp=240,
min_brightness=20, max_brightness=100):
# Adjusted ramp times
ramp_up_start = sunrise - timedelta(minutes=pre_sunrise)
ramp_up_end = ramp_up_start + timedelta(minutes=morning_ramp)
@ConnorGriffin
ConnorGriffin / light_modes.yaml
Last active December 17, 2025 06:33
HomeAssistant Blueprint: ConnorGriffin's Light Modes
blueprint:
name: "ConnorGriffin's Light Modes"
description: "Controls light brightness at Off->On based on a configurable curve, as well as min/max bright modes based. Requires a dropdown (input-select) helper with modes: Auto, Min, Max."
domain: automation
input:
light:
name: Light
description: The light to control
selector:
entity:
@ConnorGriffin
ConnorGriffin / ynabZestimate.gs
Last active October 22, 2024 22:38
Automatically update your YNAB 'Home Value' tracking account with Zillow's Zestimate data
function updateYnabHomeZestimate() {
var accessToken = 'YNAB token goes here' // Your YNAB Personal Access Token
var zwsid = 'zwsid goes here' // Your Zillow ZWSID
var budgetName = 'budget name goes here' // The name of your budget
var accountName = 'home value account name goes here' // The name of your home value tracking account
var address = '1657 Notrealaddress Drive, Redding, CA 96001' // Home address
// YNAB API settings
var url = 'https://api.youneedabudget.com/v1'
var headers = {
@ConnorGriffin
ConnorGriffin / ynabReport-CategoryGroupSummary.gs
Last active October 22, 2024 22:38
YNAB Weekly Spending Report - Google Script (Standalone) - Using Totals from Category Groups
// YNAB Weekly Spending Report sending script
function sendYnabReport() {
// Set our options
var accessToken = 'token goes here' // Your YNAB Personal Access Token
var budgetName = "Connor's Budget" // Budget name to use, in case you have multiple budgets
var categories = ['Sports & Wellness', 'Food & Drink', 'Housing'] // Your desired category groups to monitor, in Javascript array syntax
var recipient = 'test@example.com, test2@example.com' // Email recipients, comma separated
// API stuff
var url = 'https://api.youneedabudget.com/v1'
@ConnorGriffin
ConnorGriffin / ynabReport-CategoryGroups.gs
Last active September 25, 2018 00:22
YNAB Weekly Spending Report - Google Script (Standalone) - Using Category Groups instead of Categories
// YNAB Weekly Spending Report sending script
function sendYnabReport() {
// Set our options
var accessToken = 'token goes here' // Your YNAB Personal Access Token
var budgetName = "Connor's Budget" // Budget name to use, in case you have multiple budgets
var categories = ['Sports & Wellness', 'Food & Drink', 'Housing'] // Your desired category groups to monitor, in Javascript array syntax
var recipient = 'test@example.com, test2@example.com' // Email recipients, comma separated
// API stuff
var url = 'https://api.youneedabudget.com/v1'
@ConnorGriffin
ConnorGriffin / GDrive.Download.ps1
Created September 4, 2018 05:37
Download files from Google Drive, converting to specific MIME types if necessary
# Set the Google Auth parameters. Fill in your RefreshToken, ClientID, and ClientSecret
$params = @{
Uri = 'https://accounts.google.com/o/oauth2/token'
Body = @(
"refresh_token=$RefreshToken", # Replace $RefreshToken with your refresh token
"client_id=$ClientID", # Replace $ClientID with your client ID
"client_secret=$ClientSecret", # Replace $ClientSecret with your client secret
"grant_type=refresh_token"
) -join '&'
Method = 'Post'
@ConnorGriffin
ConnorGriffin / quicktile.cfg
Last active July 23, 2018 07:50
My quicktile.cfg
[general]
cfg_schema = 1
ColumnCount = 3
UseWorkarea = True
ModMask = <Mod4>
MovementsWrap = True
[keys]
C = move-to-center
H = horizontal-maximize
@ConnorGriffin
ConnorGriffin / GoogleDrive.SheetExport.ps1
Created July 14, 2018 00:00
Google Sheets Export to PowerShell Object by GID (Sheet Tab ID)
# Set our options
$RefreshToken = ''
$ClientID = ''
$ClientSecret = ''
$spreadsheetId = '' # Get this from the URL: https://docs.google.com/spreadsheets/d/{spreadsheetId}
$sheetId = '' # Get this from gid= in the URL
# Set the Google Auth parameters
$params = @{
Uri = 'https://accounts.google.com/o/oauth2/token'
@ConnorGriffin
ConnorGriffin / ynabReport.gs
Last active October 22, 2019 14:24
YNAB Weekly Spending Report - Google Script (Standalone)
// YNAB Weekly Spending Report sending script
function sendYnabReport() {
// Set our options
var accessToken = 'token goes here' // Your YNAB Personal Access Token
var budgetName = "Connor's Budget" // Budget name to use, in case you have multiple budgets
var categories = ['Fast Food', 'Groceries'] // Your desired category names to monitor, in Javascript array syntax
var recipient = 'test@example.com, test2@example.com' // Email recipients, comma separated
var url = 'https://api.youneedabudget.com/v1'
var headers = {