#!/bin/sh # # Simpel command line tool to turn predefined wled instances on/off or switch # presets. # # Author: Shy # License: CC0 CURL_FLAGS="--silent --show-error --fail --ipv4 --max-filesize 64K" print_usage() { echo "Usage: $0 f(nordcenter)|w(ohnzimmer) on|off|1-17|list" } if test $# -ne 2; then print_usage exit 0 fi # Parse host argument. case "$1" in f|fnordcenter) wled_host='wled-fnordcenter.local' ;; w|wohnzimmer) wled_host='wled-wohnzimmer.local' ;; *) echo "Error: unknown host \"$1\"." >&2 print_usage exit 1 ;; esac # Parse and execute command argument. case "$2" in on) api_resp=$(curl $CURL_FLAGS --json '{"on":true}' "http://$wled_host/json") ;; off) api_resp=$(curl $CURL_FLAGS --json '{"on":false}' "http://$wled_host/json") ;; [1-9]|[1-9][0-7]) api_resp=$(curl $CURL_FLAGS --json "{'on':true,'ps':$2}" "http://$wled_host/json") ;; l|list) echo "Presets on $wled_host:" curl $CURL_FLAGS "http://$wled_host/presets.json" | \ # Split into lines - one line per preset. Append final newline. sed --sandbox 's/"\(1\?[0-9]\)"/\n"\1"/g; $a\' | \ # Extract number and name of every preset. sed --sandbox -n 's/^"\(1\?[0-9]\)":.*"n":"\([[:print:]]*\)".*$/\1: \2/p' exit $? ;; dump) curl $CURL_FLAGS -w '\n' "http://$wled_host/json" exit 0 ;; *) echo "Error: unknown command \"$2\"." >&2 print_usage exit 1 ;; esac curl_exit=$? if test $curl_exit -ne 0; then echo "Error: curl exited with exit code $curl_exit." exit 1 fi # Check API responce. Should be {"success":true}. if test "$(echo -n "$api_resp"|tr -c -d '[:alpha:]')" != 'successtrue'; then echo "Error: unexpected responce from WLED API." >&2 exit 1 fi