Une gestion efficace des GPIO en python

Une petite note pour mentionner l'existence d'une bibliothèque python dont j'ai appris l'existence sur le forum grâce à Dr No.

Destinée à la gestion des GPIO elle est vraiment efficace, bien pensée, peu consommatrice de CPU, sachant gérer les input, les outputs, les mode up/down, le mode PWM...

Il s'agit du module RPi.GPIO installé de base sur les raspbian.

La doc bien que en anglais est très claire et bourrée d'exemples.

Un petit :

#!/usr/bin/python
import RPi.GPIO as GPIO

et le nirvana se profile à l'horizon.

 

Le wiki du project sourceforge est ici http://sourceforge.net/p/raspberry-gpio-python/wiki/Home/

 

Bref, j'ai testé et j'ai aimé.

PS : j'adore le

GPIO.wait_for_edge(channel, GPIO.RISING)

et le

do_something()
if GPIO.event_detected(channel):
    print('Button pressed')

Pour toute question technique concernant cet article, veuillez utiliser les forum situés à https://easydomoticz.com/forum/

1-Wire et mise à jour du Kernel du PI

Vous aussi vous avez fait la mise à jour du kernel de votre Raspberry Pi et depuis vous n’avez plus de connexion avec vos équipements 1-Wire ou vos I2C, I2S, SPI, audio et lirc.

Vérifiez votre version par un

uname -a

Si vous êtes en 3.13 ou supérieure, vous êtes concernés et la solution est

documentée sur le forum à cette adresse.

https://easydomoticz.com/forum/viewtopic.php?p=1861&sid=25036cc1f264567fe8e23e5ab3c5ecdc#p1860

Merci à José du partage.

 

testeapprouve

 

N.B. On peut aussi conserver l’ancien mode en utilisant sudo raspi-config  et dans le menu 8 (Advanced Options) on peut inhiber l’option nommée : Device Tree.

Et en effet cela revient au même puisqu’on retrouve les 1-wire au prochain reboot.Lire la suite

Pour toute question technique concernant cet article, veuillez utiliser les forum situés à https://easydomoticz.com/forum/

Préserver la carte SD ;Episode II, booter sur USB

episode2L’épisode II reprend quelque part après le premier de la serie.

Nous y avions vu comment limiter les écritures pour économiser la carte SD.

Dans ce nouvel opus, voyons comment passer une étape de plus en bootant sur une clé USB et en y déportant tout le système.

Pour être exact il y a une séquence de boot qui DOIT se dérouler sur la carte SD, c’est comme cela par construction du Raspberry, puis ensuite le raspberry monte une partition nommée root fs Linux et utilise les informations de ce root fs.

Un root fs contient applications, fichiers spéciaux d’accès aux périphériques, les fichiers de configuration, les données… C’est root fs qui fait tout le boulot sous Linux.

C’est donc lui que nous allons déplacer sur l’USB pour économiser notre μSD

Lire la suite

Pour toute question technique concernant cet article, veuillez utiliser les forum situés à https://easydomoticz.com/forum/

Domoticz et scripts : les bases

Domoticz est vraiment très ouvert pour nous laisser le piloter au travers de son API JSON moyennant que on lui envoie une url bien construite, on peut alors lire l’état de capteurs, envoyer des ordres …

Intérêt des scripts

Les scripts dans Domoticz sont utilisés la plupart du temps,pour lire telle valeur, écrire telle autre, interroger un service web , envoyer un sms

Quels langages utiliser ?

Lua

Le langage natif de Domoticz pour le scripting est LUA avec des fonctionnalités assez puissantes puisque Domoticz déclenche automatiquement ces scripts sur  les changements d’états, en fonction du temps…

Il faut apprendre un peu de Lua

Les autres langages

Tous les langages  que vous avez installés.sur votre Raspberry sont utilisables nous allons détailler comment ci-dessous.

Oui mais j’utilise Windows ?

Euh, comment dire , c’est pareil mais en plus compliqué.

L’essentiel est que vous connaissiez le chemin d’accès à l’interpréteur de votre langage (Ex: c:\dev\python\python27\bin\python.exe)  ou que celui ci soit dans le PATH de votre système. Votre script devra prendre en compte ce chemin.

Et pour le Raspberry Pi

C’est la solution que je vais détailler ici.

Ou placer les scripts ?

Il n’y a pas d’emplacement privilégié du moment que domoticz puisse aller lire à cet endroit.

Toutefois les développeurs de Domoticz ont crée domoticz/scripts, domoticz/scripts/lua cela serait quand même logique de les utiliser.

Quitte à créer domoticz/scripts/python, domoticz/scripts/sh, domoticz/scripts/php pour faciliter la gestion des scripts.

Ce qui suit ne s’applique pas aux scripts LUA de domoticz/scripts/lua qui sont entièrement géres par Domoticz et à ce titre doivent correspondre à des « nommages » précis (script_time, script_device…)

Comment écrire un script ?

Je ne vais pas faire un cours de python, perl, shell bash ici? C’est à vous de construire votre outil.

  • Nommez votre script d’un nom explicite et pas toto.py mais clignotement_lampe_exterieur.sh
  • Utilisez les .py,.sh à la fin du fichier, cela n’est pas obligatoire mais pour les pauvres êtres humains que nous sommes c’est mieux.

LA chose qu’il faut savoir c’est que votre script doit commencer par un shebang approprié, j’aime bien le mot shebang. http://fr.wikipedia.org/wiki/Shebang

En effet les scripts sont des fichiers texte dont la première ligne devra être le shebang qui indique au système dans quel langage est rédigé le script et le chemin vers ce langage.

 

Ainsi indique qu’il faut aller chercher le programme girl dans /usr/bin

Il en existe d’autres moins sexy:

  • #!/usr/bin/php pour les scripts php
  • #!/usr/bin/python

Après cette ligne de shebang vous codez votre programme.

N.B : Cas du php :

  • Il faut installer php5-cli par un sudo apt-get install php5-cli
  • Après le shebang on met <?php puis on code

 

Sinon jetez un œil au forum il y un endroit pour en trouver des tout faits.

Comment tester mon script ?

Suivant le langage que vous utilisez mettez des echo, print, aux endroits stratégiques.

Rendez votre script exécutable par un chmod +x lenomquivabien.xx (merci b.folliot)

Vérifiiez que tout ce comporte bien en lançant votre programme par un ./lenomquivabien.xx

Déboguez, jusqu’à obtention du résultat voulu

Ca marche et maintenant ?

Pilotage via Domoticz

On peut appeler un script derrière un interrupteur ou un scenario Domoticz sur un « Action on » ou « Action off » de la façon suivante script:///home/pi/domoticz/script/monscript.php
N.B : il y a 3 / apres script:

Un article détaillé est ici

Ainsi l’appui sur le bouton en question déclenche les actions prévues lorsque le bouton passe à On ou Off

N’oubliez pas que pour déclencher une cascade de périphériques à l’appui  il y a aussi les dispositifs esclaves Domoticz.

Pilotage en fonction de l’heure

On  à parfois besoin de déclencher un script que une fois par jour/par heure…

Exemple récupération du tarif EDF bleu,blanc rouge pour remplir un widget.

Dans ce cas la on utilise le programme crontab Linux

crontab -e permet de programmer  l’exécution régulière de tâches

# 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
3 4 * * * root /domotioz/scripts/shell/backupftp.sh
Cette ligne déclenche la procédure backupftp.sh tous les jours à 4H03
*/2 * * * * root /domoticz/scripts/check_domoticz.sh

celle ci le script toutes les 2 minutes (*/2)

Le mémo qui va bien :

P.S N’oubliez pas de sauvegarder tout cela de temps en temps. 🙂

Pour toute question technique concernant cet article, veuillez utiliser les forum situés à https://easydomoticz.com/forum/

Le Waf, le phpMyDomo et Nginx

bbtUn titre à la Sergio Leone, pour parler ici de l’installation de phpMydomo avec le serveur web Nginx, inclus dans l’image Domoticz par exemple.

Toutefois l’auteur de phpMyDomo nous précise sur son site :

For experts only: Using the Apache webserver is the recommended way to install phpMyDomo, but if you prefer to use Nginx instead of Apache, you might try the following unsupported method.

Pour ceux qui n’ont pas fait anglais, on traduirait ça par :

Pour experts seulement:Apache est la meilleure méthode pour phpMydomo, mais si vous préférez utiliser Nginx que Apache, vous pouvez essayer la méthode non supportée ci-dessous.

Allez y mais c’est casse gueule (non ça c’est moi qui rajoute)

Pour les tétus qui envisagent de poursuive, une grande partie de l’article initial basé sur Apache est valable et sera donc repris tel quel ici.

Allons y : <citation>

Dans notre quête désespérée d’augmenter notre WAF face à nos outils de geek, je vous propose aujourd’hui un logiciel d’interface de pilotage relié à Domoticz.

Pour rappel : Le Wife Acceptance Factor ou Woman Acceptance Factor (WAF) désigne le niveau de conflit potentiel engendré par un objet, auprès des non-utilisateurs cohabitant avec les utilisateurs dudit objet: source wikipedia.

Il s’agit d’une surcouche visuelle permettant de piloter Domoticz.

PhpMydomo  : les fonctionnalités

  • Les interrupteurs, les scènes et Dim (experimental) sont supportés.
  • Visualisation des sensors sur la même page ou sur une page personnalisée.
  • Visu des caméras  IP sur un page unique.
  • Affichage d’une galerie photo.
  • Lancement d’action depuis une URL.
  • Support de Responsive design :Affichage optimisé sur Android/IOS tablet, smartphone et web browser
  • Peu de puissance demandée : un serveur php suffit.
  • Free and Open Source.

Le résultat à obtenir est quelque chose comme cela :

01 03

</citation>

Cet outil peut être installé soit :

Comment savoir si on a Nginx ou apache installé ?

Dans un navigateur, tapez votre ip du raspberryNginx

Si vous avez  un message « It works » c’est Apache, direction ici

Bien ces préalables évacués , au boulot !

Lire la suite

Pour toute question technique concernant cet article, veuillez utiliser les forum situés à https://easydomoticz.com/forum/