Skip to content

Instantly share code, notes, and snippets.

import RPi.GPIO as GPIO
import datetime
import os
import time
BUTTON_PIN = 17
SHORT_PRESS_TIME = 0.5 # Less than 0.5 seconds
REPEAT_TIMEOUT = 0.5 # Repeat short presses should be within 1s
MEDIUM_PRESS_TIME = 2 # Less than 2.0 seconds
@k5njm
k5njm / gist:590e7fdab18cf01fb3455a0d563a4f40
Created August 23, 2025 12:07
Systemd for balloon docker conpose
sudo tee /etc/systemd/system/ground-station.service >/dev/null <<'EOF'
[Unit]
Description=Balloonatics Ground Station (docker compose)
Requires=docker.service network-online.target
After=docker.service network-online.target
[Service]
Type=oneshot
WorkingDirectory=/home/nick/repos/balloonatics/ground_station
# Optional: give wifi a moment to come up
@k5njm
k5njm / index-ha-shopping-list.md
Created August 24, 2026 14:41
Index 01 ring → Home Assistant shopping list: uncheck completed items instead of duplicating

Index 01 → Home Assistant shopping list (uncheck completed items, don't duplicate)

I wired my Index 01 ring so "add eggs to my shopping list" lands on Home Assistant's Shopping List. If Eggs is already there and checked off, it unchecks that row instead of adding a second Eggs. New items are added. Non-shopping recordings are ignored.

No custom Pebble build. Official Index webhook (transcription only) → HA webhook automation → a script that fuzzy-matches against todo.shopping_list.

Works on the stock iOS/Android Pebble app (coredevices/mobileapp, open source). The webhook fires alongside the Index agent, so the in-app list still gets the item too. One-way only; reverse sync is extra work.

What you get