FritzBox DECT-SmartHome per Bash-Script - Unerwartetes Dateiende?

Moinsen, kann mir evtl jemand sagen, warum ich den Fehler: "Unerwartetes Dateiende" bekomme, wenn ich das Script von dieser Seite ausführe?

smart_fritz_terminal.sh

Sehe da keinen Fehler. Bin aber auch kein Bash-Skript Profi.
Weiß nicht immer genau was wo zu beachten ist.
Hoffe mir kann jemand helfen den Fehler zu finden.

Falls der Link nicht geht oder sich die Datei irgendwie ändern sollte, hier nochmal zusätzlich der Quelltext direkt.

#!/bin/bash
# Die Adresse der Fritzbox
# Beispiele:
# fbox="https://192.168.178.1:444" # SSL-Verschlüsselt, Port 444
# fbox="http://192.168.178.1" # http normal, Port 80
# fbox="abcdef28kk6oabcdef.myfritz.net:444" # myfritz-Adresse, SSL, Port 444
# fbox="https://[2001:a00:12b7:c300:a00:a000:feed:921c]:444" # IPv6-Adresse, SSL, Port 444

#################
# Konfiguration #
fbox="http://192....." # Bitte Adresse eintragen
# Bei https, Ausnahme für selbst signiertes Zertifikat, sonst leer lassen
INSECURE= 
#INSECURE="--insecure" 

# Vollständige Anzeige: full, leer lassen für schnellere Ergebnisse
VIEW="full"
# das bei der Fritzbox konfigurierte Passwort
# unter System->FRITZ!Box-Benutzer->Anmeldung im Heimnetz
# Ist die Option "Anmeldung mit dem FRITZ!Box-Kennwort" aktiv
# genügt das Passwort für die Anmeldung

PASSWD="geheim"
# Der Benutzernamen für die Fritzbox
# Dieser lässt sich unter "System -> FRITZ!Box-Benutzer" erstellen.
# Dann kann man die Option
# "Anmeldung mit FRITZ!Box-Benutzernamen und Kennwort" aktivieren

USER="MeinName" 
#################
if [ "$fbox" = "" ]; then
if [ "$fbox" = "" ]; then
echo Bitte Fritzbox Adresse im Script eintragen
exit 1
fi

RED='\033[0;31m'
GREEN='\033[0;32m'
CYAN='\033[0;36m' 
YELLOW='\033[0;33m'
NC='\033[0m'
CURL=$(which curl) 
MD5SUM=$(which md5sum)
ICONV=$(which iconv)
AWK=$(which awk)

# Die SmartHome-Seite der Fritzbox
CURLCMD="$CURL $INSECURE -s $fbox/webservices/homeautoswitch.lua"

# Funktion zum Ermitteln der SID / Anmeldung bei der Fritzbox
get_sid() {
SID=$($CURL $INSECURE -s $fbox/login_sid.lua | sed 's/.*<SID>\(.*\)<\/SID>.*/\1/')
if [ "$SID" = "0000000000000000" ]; then
challenge=$($CURL $INSECURE -s $fbox/login_sid.lua |  grep -o "<Challenge>[a-z0-9]\{8\}" | cut -d'>' -f 2)
echo challenge: $challenge
CPSTR="$challenge-$PASSWD"
hash=`echo -n $CPSTR | $ICONV -f ISO8859-1 -t UTF-16LE | $MD5SUM -b | $AWK '{print substr($0,1,32)}'`
echo MD5: $hash
RESPONSE="$challenge-$hash"
POSTDATA="?username=$USER&response=$RESPONSE"
SID=$($CURL $INSECURE --data "$POSTDATA" -s $fbox/login_sid.lua | sed 's/.*<SID>\(.*\)<\/SID>.*/\1/')
fi
echo SID: $SID
}

# Funktion zum Ermitteln von Werten
get_value() {
RESULT=""
if [ "$2" = "" ]; then
RESULT=$($CURLCMD"?sid=$SID&switchcmd=$1")
else
RESULT=$($CURLCMD"?sid=$SID&ain=$2&switchcmd=$1")
fi
}

get_sid # SID holen
if [ "$SID" = "0000000000000000" ]; then
echo -e  "${RED}Anmeldung fehlgeschlagen ${NC}"
exit 1
fi
if [ "$SID" = "" ]; then
echo -e  "${RED}Anmeldung fehlgeschlagen ${NC}"
exit 1
fi

echo -e  "${GREEN}Anmeldung erfolgreich ${NC}"
echo

# Liste der Schalter ermitteln
get_value getswitchlist
COUNTER=0
IFS=', ' read -r -a array <<< "$RESULT"

# Werte der Schalter holen
for AIN in "${array[@]}"
do
let COUNTER=COUNTER+1 
echo -e  "${YELLOW}Actor #$COUNTER ${NC}"
switchpresent=0
get_value getswitchname $AIN
echo -e  "${CYAN}Name: $RESULT ${NC}"
get_value getswitchpresent $AIN
echo AIN: $AIN
echo Connected: $RESULT
if [ "$RESULT" = "1" ]; then
# bei aktiven Schaltern 
# Parameter verarbeiten, etwa: 1 on
if [ "$1" = "$COUNTER" ]; then
  if [ "$2" = "on" ]; then
    get_value setswitchon $AIN
	echo "set #$COUNTER on"
  fi	
    if [ "$2" = "off" ]; then
      get_value setswitchoff $AIN
	  echo "set #$COUNTER off"
    fi	
    if [ "$2" = "toggle" ]; then
      get_value setswitchtoggle $AIN
	  echo "set #$COUNTER toggle"
    fi	
fi
  
  # Alle Werte ermitteln/ausgeben (langsamer)
  if [ "$VIEW" = "full" ]; then
   get_value getswitchstate $AIN
   echo State: $RESULT
   get_value getswitchpower $AIN
   switchpower=`awk "BEGIN {printf \"%.2f\n\", $RESULT/1000}"`
   echo Power: $switchpower W
   get_value getswitchenergy $AIN
   echo Energy: $RESULT Wh
   get_value gettemperature $AIN
   temperature=`awk "BEGIN {printf \"%.1f\n\", $RESULT/10}"`
   echo Temperature: $temperature °C
   echo
  fi 
fi

done
exit 0
  
Bash, DECT, FRITZ!Box, lua, Script, Shell, Terminal, sh, Smart Home
Wie heizt man mit Smart Thermostat richitg (warm)?

Hallo zusammen,

ich habe meine kleine Eigentumswohnung seit ca. 2 Jahren mit smarten Thermostaten inkl. App ausgestattet. (Heizkörper/keine Bodenheizung)

1x im Bad, 1x im Schlafzimmer
3x im Wohnzimmer, die mit einem Haupt-Thermostat verbunden sind, dass mittig im Wohnzimmer positioniert ist um die Temperatur nicht zu verfälschen bzw. präziser zu messen. Das habe ich in den anderen Zimmern nicht zusätzlich, da die Zimmer nicht allzu groß sind.

Mit den Empfehlungen des Internets kann ich nicht mithalten- sprich: Wohnzimmer 20-22 Grad, Bad ca. 22 Grad und Küche/Schlafzimmer ca. 19 Grad. Das ist mir viel zu kalt.

Der Flur, die Küche und das Wohnzimmer sind recht offen und werden durch das Haupt-Thermostat gemessen. Mein Wohnzimmer habe ich gerne auf ca. 22,5 Grad, Bad ca. 23 Grad und Schlafzimmer tagsüber "egal" und Nachts kuschelige 22 Grad.

Meine essenzielle Frage ist, wie viel Grad weniger kann/sollte die Wohnung haben, wenn ich Außerhaus bin ? Die oben genannten Wunschtemperaturen sind nur aktiv, wenn ich Zuhause bin, dennoch sollte es nicht so viel "Kraft" kosten oder zu stark abkühlen. Das Wohnzimmer ist am Abend/Nachts schon gesenkt bis ich nachmittags von der Arbeit komme ( 22-15h). Morgens ist nur kurz das Bad & Schlafzimmer aufgeheizt.

Das erste Jahr war im Schnitt pro Zimmer 1-2 Grad kühler und das Schlafzimmer kaum geheizt. Damit habe ich mich nicht wohl gefühlt. Die Rückzahlung im Folgejahr hat das auch nicht wiedergutgemacht. Dafür gab es dieses Jahr rückwirkend für 2023 eine kleine Nachzahlung von ca. 200€, damit bin ich fein.

Gerne bin ich offen für Tipps!!

wohnen, Heizkosten, Heizung, heizen, Heizkörper, Smart Home, Sparen im Alltag

Meistgelesene Beiträge zum Thema Smart Home