bash on startup avec gpio [RESOLU]
Modérateur : Francois
-
- Raspinaute
- Messages : 976
- Enregistré le : dim. 28 déc. 2014 15:28
- Localisation : Le long de la côte, au dessus du pays des bigoudennes, aïe
Re: bash on startup avec gpio
Pour info, nous n'avons plus besoin d'être root depuis un an pour le contrôle des GPIO


Re: bash on startup avec gpio
Lorsque les fonctions sont séparées du script de base il est plus lisible lorsque le script est long. C'est une habitude qui ici ne serait effectivement pas nécessaire... mais tant qu'à faire, autant garder les bonnes habitudesGhislain a écrit :Moi ce qui me choc c'est la façon d'écrire ton script (je ne suis pas un pro non plus :d), pourquoi ne pas simplement mettre la partie "Attente Porte" dans la boucle ?
Autre truc tu mets la variable en "Porte fermé" au début du script mais... si la porte est déjà ouverte au lancement ?
Ton script fonctionne en lançant toi même la commande ?

Quand à la variable "Porte fermée", comme je teste si elle est ouvert ou fermée, il me faut une variable de base soit l'un, soit l'autre. Je n'ai aucun intérêt d'avoir une variable vide à la base... et si la porte est effectivement fermée, je ne reçois aucune alerte au lancement du script, ce qui est correcte. Par contre, si elle est ouverte, alors je reçois l'alerte dès que le script est lancé.
Et effectivement, mon script fonctionne à merveille si je le lance manuellement. J'ai maintenant ajouter les heures et date dans le message
Code : Tout sélectionner
mosquitto_pub -h mon.host.ext -i testPublish -t porte -m "Porte de la buanderie fermée $(date '+%H:%M:%S %d.%m.%Y')"
Porte de la buanderie ouverte 11:11:25 15.01.2017
Re: bash on startup avec gpio
Super, Merci pour l'info!!!dyox a écrit :Pour info, nous n'avons plus besoin d'être root depuis un an pour le contrôle des GPIO
Suite à ton message j'ai effectivement essayé de lancer mon script sans sudo est cela a parfaitement fonctionner!!

Aurais-tu une référence pour ces changements? Y a-t-il d'autre nouvelles de ce genre?

-
- Raspinaute
- Messages : 976
- Enregistré le : dim. 28 déc. 2014 15:28
- Localisation : Le long de la côte, au dessus du pays des bigoudennes, aïe
Re: bash on startup avec gpio
Le release notes de Raspiansissad a écrit : Aurais-tu une référence pour ces changements? Y a-t-il d'autre nouvelles de ce genre?


Re: bash on startup avec gpio [RESOLU]
Voili Voilou les ptits loups...
Comme d'hab la solution était sous mon nez donc je ne la voyais pas...
C'est un peut comme quand on fait un chmod sans sudo et qu'on ne comprend pas pourquoi ça ne fonctionne pas
Pour que le script puisse fonctionner en étant lancé dans rc.local, il est impératif d'indiquer le full path soit /usr/local/bin/gpio mode 29 in
Bon j'ai plus le -g car je l'ai perdu en route en faisant mes essais
Peu importe, pour l'opération a effectuer c'est égal.
Mais maintenant, mon script est lancer dés le départ sans aucune erreure. DONC
PROBLÈME RÉSOLU!!! Merci les Framboisiers!!!
Pour ceux que cela intéresse, je remet ici le script correcte et néttoyé
Comme je n'ai pas encore trouvé d'APP avec lequel je puisse personnaliser les notifications suivant les pub mqtt j'utilise puschingbox mais c'est temporaire... mon but étant de ne pas avoir à utiliser un service externe.
et en plus, le message et généralement envoyé deux fois et jamais avec le même intervalle... ce n'est donc pas l'idéal.
Mais c'est bien, j'avance
Comme d'hab la solution était sous mon nez donc je ne la voyais pas...

C'est un peut comme quand on fait un chmod sans sudo et qu'on ne comprend pas pourquoi ça ne fonctionne pas

Pour que le script puisse fonctionner en étant lancé dans rc.local, il est impératif d'indiquer le full path soit /usr/local/bin/gpio mode 29 in
Bon j'ai plus le -g car je l'ai perdu en route en faisant mes essais

Mais maintenant, mon script est lancer dés le départ sans aucune erreure. DONC
PROBLÈME RÉSOLU!!! Merci les Framboisiers!!!

Pour ceux que cela intéresse, je remet ici le script correcte et néttoyé
Code : Tout sélectionner
#!/bin/bash
setup ()
{
/usr/local/bin/gpio mode 29 in
porte="fermee"
}
AttentePorte ()
{
while [ 1 ]; do
if [ `/usr/local/bin/gpio read 29` = 1 ] && [ "$porte" == "fermee" ]; then
mosquitto_pub -h mon.hoste.ext -i testPublish -t porte -m "Porte de la buanderie ouverte $(date '+%H:%M:%S %d.%m.%Y')"
wget -O - -q -t 1 http://api.pushingbox.com/pushingbox?devid=XXXXXXXXXXXXXX
porte="ouverte"
fi
if [ `/usr/local/bin/gpio read 29` = 0 ] && [ "$porte" == "ouverte" ]; then
mosquitto_pub -h mon.hoste.ext -i testPublish -t porte -m "Porte de la buanderie fermée $(date '+%H:%M:%S %d.%m.%Y')"
porte="fermee"
fi
sleep 0.1
done
}
setup
while true; do
AttentePorte
done
et en plus, le message et généralement envoyé deux fois et jamais avec le même intervalle... ce n'est donc pas l'idéal.
Mais c'est bien, j'avance

-
- Raspinaute
- Messages : 315
- Enregistré le : jeu. 12 nov. 2015 17:39
- Localisation : Bourges (18)
Re: bash on startup avec gpio
Ghislain a écrit :As tu bien mis les chemins complet dans ton script ?

Pense à passer en Résolu

Re: bash on startup avec gpio
Me revoilà avec des nouvelles concernant mon problème de load on startup
Pour être informé par une alerte sonore j'ai écrit un autre script qui lit les posts sur le topic en bash.
Nouveau problème pour le lancer automatiquement.
Je le lance maintenant via crontab -e
J'y ajoute une ligne
J'ai ajouter un sleep 30 à mon script pour être sûr que tout ce qui est nécessaire soit chergé avant le lancement du script à proprement dit. J'y ai également ajouter un test de connexion au réseau avec un ping.
ça fonctionne impeccable!
J'avouerai que je ne connaissait pas crontab avant aujourd'hui... Information reçu de mon frère... Merci Kikim
Pour être informé par une alerte sonore j'ai écrit un autre script qui lit les posts sur le topic en bash.
Nouveau problème pour le lancer automatiquement.
Je le lance maintenant via crontab -e
J'y ajoute une ligne
Code : Tout sélectionner
@reboot /path/script.sh &
ça fonctionne impeccable!
J'avouerai que je ne connaissait pas crontab avant aujourd'hui... Information reçu de mon frère... Merci Kikim

-
- Raspinaute
- Messages : 315
- Enregistré le : jeu. 12 nov. 2015 17:39
- Localisation : Bourges (18)
Re: bash on startup avec gpio
Fait voir ?
Re: bash on startup avec gpio
Premier fichier bash pour la lecture du flux mqtt et lancement d'un fichier audio différent pour chaque alerte. Ici la porte du coupe vend ce trouvant avant ma porte d'entrée et la porte de la buanderie donc l'accès ne ce fait que de l'exterieur.
Fichier sonnette.sh
Je travail ici sur un notebook avec linux mint et pour le lancer automatiquement au démarrage, je lai donc configurer dans crontab
Pour lancer crontab la première fois, la commande et
man crontab pour plus de détails.
Chez moi, ça l'ouvre automatiquement avec nano
et en bas de page j'ajoute la ligne
@reboot /home/sissad/Documents/Raspberry/sonnette.sh &
cd qui donne
Crontab étant basé Debian, on le trouve également sur le Raspberry Pi... Il le sera sûrement aussi sur tout les autres dérivés Debian. Je n'ai pas essayé mais je ne vois aucune raison pour que cela ne fonctionne pas à l'identique.
Cela fonction maintenant chez moi, chui super contant
Je remets ici le script de lecture du GPIO et envoie du message MQTT
De mon côté, la suite est de faire un tape cloche à l'aide d'un esp-01
Ayant reçu une grosse cloche de mon beau-père, il serait assez marrant de l'utiliser comme gong d'entrée
Fichier sonnette.sh
Code : Tout sélectionner
#!/bin/bash
sleep 30
testval=0
while [ $testval -eq 0 ]
do
testval=`ping -q adressipdemonrouteur -c1 | grep -c rtt`
done
while read msg;
do
if [[ "$msg" =~ "buanderie ouverte" ]]; then
aplay /path/beep24.wav
fi
if [[ "$msg" =~ "entree ouverte" ]]; then
aplay /path/doorbell_x.wav
fi
echo $msg;
done < <(mosquitto_sub -h mon.host.ext -t topic -q 1)
Pour lancer crontab la première fois, la commande et
Code : Tout sélectionner
crontab -e
Chez moi, ça l'ouvre automatiquement avec nano
et en bas de page j'ajoute la ligne
@reboot /home/sissad/Documents/Raspberry/sonnette.sh &
cd qui donne
Code : Tout sélectionner
# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h dom mon dow command
@reboot /path/sonnette.sh &
Cela fonction maintenant chez moi, chui super contant

Je remets ici le script de lecture du GPIO et envoie du message MQTT
Code : Tout sélectionner
#!/bin/bash
setup ()
{
/usr/local/bin/gpio mode 29 in
porte="fermee"
}
AttentePorte ()
{
while [ 1 ]; do
if [ `/usr/local/bin/gpio read 29` = 1 ] && [ "$porte" == "fermee" ]; then
mosquitto_pub -h my.host.ext -i testPublish -t porte -m "Porte de la buanderie ouverte $(date '+%H:%M:%S %d.%m.%Y')"
wget -O - -q -t 1 http://api.pushingbox.com/pushingbox?devid=vXXXXXXXXXXXXXX
porte="ouverte"
fi
if [ `/usr/local/bin/gpio read 29` = 0 ] && [ "$porte" == "ouverte" ]; then
mosquitto_pub -h my.host.ext -i testPublish -t porte -m "Porte de la buanderie fermée $(date '+%H:%M:%S %d.%m.%Y')"
porte="fermee"
fi
sleep 0.1
done
}
setup
while true; do
AttentePorte
done

Ayant reçu une grosse cloche de mon beau-père, il serait assez marrant de l'utiliser comme gong d'entrée

Modifié en dernier par sissad le lun. 16 janv. 2017 20:12, modifié 1 fois.
-
- Raspinaute
- Messages : 315
- Enregistré le : jeu. 12 nov. 2015 17:39
- Localisation : Bourges (18)
Re: bash on startup avec gpio
C'était pour le script sur le forum 
