[Bash] Changement aléatoire couleur led

Vous avez créé un script LUA dont vous êtes fier, un .sh génial, un programme Python hors du commun, un Tuto, c'est ici que vous pouvez les partager.
kerherno
Messages : 2
Inscription : 15 oct. 2015, 19:30

[Bash] Changement aléatoire couleur led

Message par kerherno »

Bonjour,

Voici un petit script shell qui casse pas trois pattes à un canard mais qui me permet de faire varier aléatoirement la couleur de mon ruban led:

Code : Tout sélectionner

#!/bin/bash

# on définit les IDX des 3 led (il faut avoir ajouté les 3 switch indépendants pour chaque couleur)
id_red=12
id_green=13
id_blue=14

# on définit l'IDX du switch pour le lancement du script
id_switch=24

# les mini maxi pour la fonction random
min_id=$id_red
max_id=$id_blue

# on définit l'état initial de l'interrupteur pour démarrer la boucle
sw_status=$(curl -s "http://192.168.1.2:8080/json.htm?type=devices&rid=$id_switch" | jq .result[].Status)

# on lance notre boucle
while test $sw_status == "\"On\""
do 
	# on définit aléatoire la led et son statut
	rd_id=$[($RANDOM % (($max_id-$min_id)+1))+$min_id]
	rd_status_bool=$(($RANDOM % 2))

	# on transforme le statut en texte
	if [ $rd_status_bool -eq 1 ]
	then
		rd_status="On"
	else
		rd_status="Off"
	fi
	
	# on vérifie le statut de la led que l'on va piloter pour ne pas lui envoyer une commande identique
	led_status=$(curl -s "http://192.168.1.2:8080/json.htm?type=devices&rid=$rd_id" | jq .result[].Status)
	
	if [ "\"$rd_status"\" == $led_status ] 
	then
		continue
	fi

	# on lance la commande json correspondante
	curl "http://192.168.1.2:8080/json.htm?type=command&param=switchlight&idx=$rd_id&switchcmd=$rd_status&level=0&passcode="

	# on attend 2s avant de recommencer la boucle (sinon c'est trop rapide et ça a tendance à bugguer)
	sleep 2
	
	# on vérifie l'état de l'interrupteur pour éventuellement arrêter la boucle
	sw_status=$(curl -s "http://192.168.1.2:8080/json.htm?type=devices&rid=$id_switch" | jq .result[].Status)
done
Toute modification, correction, amélioration est la bienvenue !

TODO list:
- Eviter qu'une commande off soit envoyée alors que les 2 autres sont aussi à off
- Gérer aléatoirement les niveaux d'intensité de chaque led pour multiplier le nombre de couleurs (aujourd'hui c'est tout ou rien)

AMELIORATION ULTIME : Détecter les BPM d'une musique (lue d'un serveur MPD of course) et changer la couleur à chaque pic
Répondre