Hallo Ihr Lieben,
Ihr seid leider so mit Eurem Ego beschäftigt daß keinem auffällt das der beschriebene Resetablauf Unfug ist.
"4 * ausschalten"
Hat einer von Euch einen vollständig beschriebenen Algorithmus ?
Hier ein bash für alle die einen Plus Plug S über MQTT schalten und damit die Resetsequenz erzeugen können/wollen,
was aber mangels falscher Sequenz nicht geht.
Bash
#!/bin/bash
# Farbdefinitionen für Terminal
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
PURPLE='\033[0;35m'
CYAN='\033[0;36m'
WHITE='\033[1;37m'
NC='\033[0m' # No Color
# MQTT Broker Konfiguration
MQTT_HOST=""
MQTT_PORT="1883"
MQTT_USER=""
MQTT_PASS=""
MQTT_TOPIC="shellies/P-xy/rpc"
# Funktionen mit Authentifizierung
turn_on() {
mosquitto_pub -h $MQTT_HOST -p $MQTT_PORT \
-u "$MQTT_USER" -P "$MQTT_PASS" \
-t "$MQTT_TOPIC" \
-m '{"id":1, "src":"PFC100", "method":"Switch.Set", "params":{"id":0,"on":true}}'
printf "${GREEN} |-- $(date '+%H:%M:%S') - EINGESCHALTET${NC}\n"
}
turn_off() {
mosquitto_pub -h $MQTT_HOST -p $MQTT_PORT \
-u "$MQTT_USER" -P "$MQTT_PASS" \
-t "$MQTT_TOPIC" \
-m '{"id":1, "src":"PFC100", "method":"Switch.Set", "params":{"id":0,"on":false}}'
printf "${RED} |-- $(date '+%H:%M:%S') - AUSGESCHALTET${NC}\n"
}
# Header
printf "\n"
printf "${BLUE}=======================================================${NC}\n"
printf "${BLUE} Shelly RESET-Prozedur (ab FW 1.14) ${NC}\n"
printf "${BLUE} Gerät: ${WHITE}P-09-FREE${BLUE} ${NC}\n"
printf "${BLUE} Start: ${WHITE}$(date '+%Y-%m-%d %H:%M:%S')${BLUE} ${NC}\n"
printf "${BLUE}=======================================================${NC}\n"
printf "\n"
# Beginn mit 10s AUS (einmalig)
printf "${PURPLE}-------------------------------------------------------${NC}\n"
printf "${PURPLE} Initiale 10-Sekunden-AUS-Phase ${NC}\n"
printf "${PURPLE}-------------------------------------------------------${NC}\n"
printf "\n"
turn_off
printf " ${YELLOW}--> Warte 10 Sekunden...${NC}\n"
sleep 10
printf " ${GREEN}--> Initiale AUS-Phase abgeschlossen${NC}\n"
printf "\n"
# Hauptprozedur
for ((cycle=1; cycle<=5; cycle++)); do
printf "${CYAN}*******************************************************${NC}\n"
printf "${CYAN} ZYKLUS ${WHITE}$cycle${CYAN}/5 - ${WHITE}$(date '+%H:%M:%S')${CYAN} ${NC}\n"
printf "${CYAN}*******************************************************${NC}\n"
printf "\n"
# 1. Shelly einschalten
printf " [SCHRITT 1: EINSCHALTEN]\n"
turn_on
printf "\n"
# 2. 6-10 Sekunden warten
wait_time=$((6 + RANDOM % 5))
printf " [SCHRITT 2: WARTEZEIT]\n"
printf " ${YELLOW}--> Warte ${wait_time} Sekunden...${NC}\n"
sleep $wait_time
printf "\n"
# 3. 4x AUS und EIN (mit 1s Pause)
printf " [SCHRITT 3: 4x AUS/EIN ZYKLUS]\n"
for i in {1..4}; do
printf " Runde ${WHITE}$i${NC}/4:\n"
turn_off
sleep 1
turn_on
sleep 1
printf "\n"
done
# 4. 6-10 Sekunden warten zwischen Zyklen
if [ $cycle -lt 5 ]; then
wait_time=$((6 + RANDOM % 5))
printf " [ZWISCHENZYKLUS-PAUSE]\n"
printf " ${YELLOW}--> Pause: ${wait_time} Sekunden...${NC}\n"
sleep $wait_time
printf "\n"
fi
done
# Footer
printf "\n"
printf "${BLUE}=======================================================${NC}\n"
printf "${BLUE} RESET-Prozedur abgeschlossen! ${NC}\n"
printf "${BLUE} ${NC}\n"
printf "${BLUE} ${GREEN}--> Gerät sollte jetzt auf Werkseinstellungen ${BLUE}${NC}\n"
printf "${BLUE} ${GREEN} zurückgesetzt sein ${BLUE}${NC}\n"
printf "${BLUE} ${NC}\n"
printf "${BLUE} Ende: ${WHITE}$(date '+%Y-%m-%d %H:%M:%S')${BLUE} ${NC}\n"
printf "${BLUE}=======================================================${NC}\n"
printf "\n"
Alles anzeigen