From b88dfa1bb9f1abae9e10f6e0602d232410fe4cad Mon Sep 17 00:00:00 2001 From: justmarvinn Date: Sun, 8 Jun 2025 12:58:12 +0200 Subject: [PATCH] main control script --- usr/bin/t3hs/t3hs_sim800 | 213 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 213 insertions(+) create mode 100755 usr/bin/t3hs/t3hs_sim800 diff --git a/usr/bin/t3hs/t3hs_sim800 b/usr/bin/t3hs/t3hs_sim800 new file mode 100755 index 0000000..337d630 --- /dev/null +++ b/usr/bin/t3hs/t3hs_sim800 @@ -0,0 +1,213 @@ +#!/bin/bash + +set -e + +print_usage() { + echo "Usage: $0 {healthcheck|{gpio|mqtt} {on|off}}" +} + +healthcheck() { + # DNS names also available + local iface="${1:-ppp0}" + local addr="${2:-1.1.1.1}" + local packets="${3:-5}" + local timeout="${4:-10}" + + if ! ping -I $iface -c $packets -W $timeout $addr > /dev/null 2>&1; then + echo "Healthcheck failed" + return 1 + else + echo "Healthcheck passed" + return 0 + fi +} + +gpio_on() { + local pin="$1" + local iface="${2:-ppp0}" + + if [[ -z $pin ]]; then + echo "pin number must be provided to \`gpio_on\` function" + exit 1 + fi + + if ip link show $iface > /dev/null 2>&1; then + echo "Interface $iface already exists" + exit 1 + fi + + if [ ! -d "/sys/class/gpio/gpio{pin}" ]; then + echo "$pin" > /sys/class/gpio/export + fi + echo out > "/sys/class/gpio/gpio$pin/direction" + echo 1 > "/sys/class/gpio/gpio$pin/active_low" + echo 1 > "/sys/class/gpio/gpio$pin/value" + pon t3hs_sim800 +} + +gpio_off() { + local pin="$1" + + if [[ -z $pin ]]; then + echo "pin number must be provided to \`gpio_off\` function" + exit 1 + fi + + poff t3hs_sim800 + echo 0 > "/sys/class/gpio/gpio$pin/value" + echo "$pin" > /sys/class/gpio/unexport +} + +mqtt_on() { + local topic="$1" + local host="$2" + local port="$3" + local username="$4" + local password="$5" + local iface="${6:-ppp0}" + + if ip link show $iface > /dev/null 2>&1; then + echo "Interface $iface already exists" + exit 1 + fi + + args="" + if [[ -z $topic ]]; then + echo "topic must be provided to \`mqtt_on\` function" + exit 1 + else + args+=" --topic $topic" + echo "topic: $topic" + fi + [[ -n $host ]] && args+=" --host $host" && echo "host: $host" + [[ -n $port ]] && args+=" --port $port" && echo "port: $port" + [[ -n $username ]] && args+=" --username $username" && echo "username: $username" + [[ -n $password ]] && args+=" --password $password" && echo "password: ***" + + payload=$(cat < /dev/null 2>&1; then + echo "Interface $iface already exists" + exit 1 + fi + + args="" + if [[ -z $topic ]]; then + echo "topic must be provided to \`mqtt_off\` function" + exit 1 + else + args+=" --topic $topic" + echo "topic: $topic" + fi + [[ -n $host ]] && args+=" --host $host" && echo "host: $host" + [[ -n $port ]] && args+=" --port $port" && echo "port: $port" + [[ -n $username ]] && args+=" --username $username" && echo "username: $username" + [[ -n $password ]] && args+=" --password $password" && echo "password: ***" + + payload=$(cat <