aspic / breezectl

breezectl

breeze-core control for every machine that isn't the server: your air conditioners from any terminal — Linux, macOS, the BSDs, Termux, Windows — with saved logins you can revoke one by one.

# Linux, macOS, the BSDs, Termux
curl -fsSL https://aspic.salataputarica.hr.eu.org/breezectl/install.sh | sh

# Windows, in PowerShell
irm https://aspic.salataputarica.hr.eu.org/breezectl/install.ps1 | iex

Either one checks every file against SHA256SUMS before installing it, puts breezectl on your PATH, sets up tab completion, and then pairs this machine with your server: its address, its API key, and an approval on its own network.

Installing

What the installers change, and nothing else:
Linux, macOS, BSD~/.local/bin/breezectl and its completions; for root, /usr/local. One marked block in your shell's startup file — zsh, bash, sh or fish — added only when it is needed, with a copy of the file as it was beside it
Termux$PREFIX/bin, which is already on PATH: no startup file is touched
Windows%LOCALAPPDATA%\Programs\breezectl, and that folder's bin appended to your PATH — never the system's. The value is read and written raw, so %VARIABLES% stay unexpanded and nothing is cut short, and it is saved to a file first. Tab completion goes into your profile only if you say yes
taking it outsh install.sh --uninstall, or -Uninstall on Windows: every file, the block, the PATH entry
# read it first, then run it
curl -fsSLO https://aspic.salataputarica.hr.eu.org/breezectl/install.sh
less install.sh
sh install.sh --dry-run     # says what it would do, does none of it
sh install.sh

# options after `sh -s --` when piped: --no-login, --url ADDRESS, --bin DIR, --no-rc
curl -fsSL https://aspic.salataputarica.hr.eu.org/breezectl/install.sh | sh -s -- --no-login

# PowerShell with options
& ([scriptblock]::Create((irm https://aspic.salataputarica.hr.eu.org/breezectl/install.ps1))) -NoLogin

By hand, it is one file: breezectl (POSIX sh, needs curl) or breezectl.ps1 (Windows PowerShell 5.1 or PowerShell 7). Check it against SHA256SUMS, put it on your PATH, and run breezectl login.

It needs a server. breezectl is a client of Breeze Core, which runs on your network and does the talking to the air conditioners. Pairing works the way the app's does: a code that an administrator approves on the server's network, then a credential for this machine alone.

What you get

breezectl status
breezectl 'living room' cool 23 both auto turbo 30m
breezectl kitchen off
breezectl timers start bedroom 06:45 tomorrow
breezectl diag
the same wordsas breeze-core control on the server, and the same messages when a unit refuses something, so a script written for one runs with the other
loginsone per server, several servers, each a device token of its own — readable only by you, encrypted for your account on Windows, and never on a command line where another user could see it
timersoff after a while, on at a set day and time, listed and cancelled
when it misbehavesbreezectl diag: the server's own checks, from this machine's side of the network
tab completionzsh, bash, fish and PowerShell: commands, settings, servers and your units' names
what it runs onany POSIX sh — dash, bash, busybox, ksh, zsh — with curl; Windows PowerShell 5.1 and PowerShell 7