initial commit
This commit is contained in:
commit
85a49d2edd
|
|
@ -0,0 +1,15 @@
|
||||||
|
# Power Watch
|
||||||
|
|
||||||
|
Telegram notifier for your laptop homelabs.
|
||||||
|
|
||||||
|
Sends a Telegram message when your system switches between AC and battery, perfect for power sensitive deployments.
|
||||||
|
|
||||||
|
## Install (Configure before installation)
|
||||||
|
```bash
|
||||||
|
git clone https://github.com/YOURNAME/power-watch.git
|
||||||
|
cd power-watch
|
||||||
|
./install.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
- Edit `./power-watch.sh`, and set `BOT_TOKEN` & `CHAT_ID`
|
||||||
|
|
@ -0,0 +1,23 @@
|
||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
echo "Installing power-watch..."
|
||||||
|
|
||||||
|
mkdir -p ~/.local/bin
|
||||||
|
mkdir -p ~/.config/systemd/user
|
||||||
|
|
||||||
|
cp power-watch.sh ~/.local/bin/power-watch.sh
|
||||||
|
chmod +x ~/.local/bin/power-watch.sh
|
||||||
|
|
||||||
|
cp systemd/power-watch.service ~/.config/systemd/user/
|
||||||
|
cp systemd/power-watch.timer ~/.config/systemd/user/
|
||||||
|
|
||||||
|
systemctl --user daemon-reload
|
||||||
|
systemctl --user enable --now power-watch.timer
|
||||||
|
|
||||||
|
echo "Enabling lingering..."
|
||||||
|
sudo loginctl enable-linger "$USER"
|
||||||
|
|
||||||
|
echo "Done! Power Watch is running."
|
||||||
|
echo "Test with: systemctl --user start power-watch.service"
|
||||||
|
|
||||||
|
|
@ -0,0 +1,33 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
BOT_TOKEN="<BOT_TOKEN>"
|
||||||
|
CHAT_ID="<CHAT_ID>"
|
||||||
|
|
||||||
|
STATE_FILE="/tmp/power_state"
|
||||||
|
|
||||||
|
POWER=$(upower -i $(upower -e | grep BAT) | grep "state:" | awk '{print $2}')
|
||||||
|
|
||||||
|
|
||||||
|
# First run
|
||||||
|
if [ ! -f "$STATE_FILE" ]; then
|
||||||
|
echo "$POWER" > "$STATE_FILE"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
LAST=$(cat "$STATE_FILE")
|
||||||
|
|
||||||
|
# If power state changed
|
||||||
|
if [ "$POWER" != "$LAST" ]; then
|
||||||
|
echo "$POWER" > "$STATE_FILE"
|
||||||
|
|
||||||
|
if [ "$POWER" = "discharging" ]; then
|
||||||
|
MSG="⚠️ Homelab running on BATTERY!
|
||||||
|
Switching off heavy services recommended."
|
||||||
|
else
|
||||||
|
MSG="🔌 Power restored — running on AC"
|
||||||
|
fi
|
||||||
|
|
||||||
|
curl -s -X POST "https://api.telegram.org/bot$BOT_TOKEN/sendMessage" \
|
||||||
|
-d chat_id="$CHAT_ID" \
|
||||||
|
-d text="$MSG" > /dev/null
|
||||||
|
fi
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
[Unit]
|
||||||
|
Description=Power Watch Telegram Notifier
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=oneshot
|
||||||
|
ExecStart=%h/.local/bin/power-watch.sh
|
||||||
|
Environment=PATH=/usr/bin:/bin
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
[Unit]
|
||||||
|
Description=Run Power Watch every minute
|
||||||
|
|
||||||
|
[Timer]
|
||||||
|
OnBootSec=30
|
||||||
|
OnUnitActiveSec=60
|
||||||
|
AccuracySec=5s
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=timers.target
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
echo "Removing power-watch..."
|
||||||
|
|
||||||
|
systemctl --user disable --now power-watch.timer || true
|
||||||
|
|
||||||
|
rm -f ~/.config/systemd/user/power-watch.service
|
||||||
|
rm -f ~/.config/systemd/user/power-watch.timer
|
||||||
|
rm -f ~/.local/bin/power-watch.sh
|
||||||
|
|
||||||
|
systemctl --user daemon-reload
|
||||||
|
|
||||||
|
echo "Removed."
|
||||||
Loading…
Reference in New Issue