Onduleur, Raspberry, Domoticz

Voyons ici comment gérer un onduleur relié à notre Raspberry Domoticz.

Nous prendrons un cas simple ou le raspberry devra s’éteindre tout seul avant la fin des batteries de l’onduleur.

Il y aura deux épisodes à cette saga.

Prérequis

L’onduleur devra être équipé d’un port USB que vous relierez à un des ports USB du Raspberry avec le câble USB correspondant.

Alimentez votre raspi par un des connecteurs électriques dédiés de l’onduleur.

Faites attention il y a parfois des sorties électriques secourues par l’onduleur et d’autres non secourues. Branchez vous bien entendu sur une sortie protégée (c.f. logo ou « Battery » par exemple).

Ouvrez une session ssh sur le Raspberry pour continuer la configuration.

Installation

Tapez la ligne suivante afin d’installer les outils usb si il n’existent pas.

Puis le logiciel de gestion de l’onduleur

Configuration

Lors de l’installation, il s’affiche :

Comme indiqué il faut éditer /etc/nut/nut.conf par un

Et on place tout en bas le mode à  standalone

Configuration de l’onduleur

Tapez ensuite

un fichier apparait :

Nous allons changer la partie upsname en supprimant les # de début de ligne.

  • Remplacez [upsname] entre crochets par un nom de votre choix identifiant cet onduleur.
  • driver = devra être rempli avec le nom du driver spécifique à votre onduleur, allez sur cette page pour rechercher votre modèle http://networkupstools.org/stable-hcl.html au bout à droite figure le nom à utiliser dans cette ligne.

Si vous ne trouvez pas, pas de panique beaucoup d’onduleurs fonctionnent avec le driver blazer_usb

Sinon recherchez sur le net avec le nom de votre onduleur pour trouver la référence correcte du matériel.

  • port = mettez auto pour que le Raspberry se débrouille , sinon mettez le vrai tty « /dev/tty/ACMO »

Ce qui fait  :

Mon onduleur se nomme ond_rasp_dz

on démarre par

et paf une erreur

il s’agit d’un problèmes de droits sur les ports usb, accordons les droits en notant les nombres affichés dans l’erreur ci-dessus.

On crée un fichier de règles pour l’onduleur.

Vous pouvez mettre le nom que vous voulez, toutefois le nom de l’onduleur préfixé par 10 est clair et explicite.

et on met la ligne  :

 SYSFS{idVendor}=='0665', SYSFS{idProduct}=='5161', MODE='0666'

Rebootez le pi, rebootez sinon ça marche pas.

Une fois le pi relancé , retirez le câble usb, patientez 10 seconds, rebranchez.

Maintenant interrogeons l’onduleur par la commande upsc suivie du nom donné plus haut.

me renvoie (cela dépend de votre onduleur)

On voit entre autres la charge que votre matériel « tire »sur l’onduleur (ups.load 10), le status (OL) = on line , (OB)= sur batteries , le délai avant shutdown (ups.delay.shutdown)

Nous avons donc un onduleur qui fonctionne en liaison avec notre Raspberry, nous verrons comment programmer des instructions d’extinction dans un prochain article.

Quelques références

http://networkupstools.org/ le site de nut

https://doc.ubuntu-fr.org/nut  et http://ovanhoof.developpez.com/upsusb/ pour des explications assez génériques.

Quelques trucs en vrac

Problèmes de droits

En faisant un lsusb sans câble USB puis avec on voit apparaître la ligne concernant l’usb relié à l’onduleur.

dans mon cas

Je vois que l’on est sur le bus 001 , port 004

On va voir les droits par un

on voit bien que le port 004 est associé à nut, Sinon un

remet tout ça en place.

Connexion refused, data stale, init SSL

Ces messages sont souvent résolus par le fait de débrancher/rebrancher le câble usb APRES avoir changé udev/rules.d ET avoir rebooté.

Les commandes de l’onduleur

sudo upscmd -l nom_de_l_onduleur donne la liste des commandes comprises et exécutables par l’onduleur, pratique pour le piloter par scripts.

 

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

Commandes vocales via Jarvis

J’avais déjà parlé ici de reconnaissance vocale via imperihome Android ou YANA.

Je voudrais vous présenter ici un nouvel outil que j’ai découvert récemment nommé JARVIS.

Son grand avantage par rapport à d’autres outils : LE FRANCAIS est natif !!

jarvis Vous emballez quand même pas trop, on est pas dans Ironman. jarvis_logo_red

L’intérêt de ce Jarvis ci est de faire de la reconnaissance vocale et d’y enchaîner des actions :

  • « Jarvis » « météo » vous donnera vocalement la météo de weather Underground (plugin+enregistrement) ,
  • « Jarvis » « tu sais quelle heure il est ? » dira l’heure.

La reconnaissance se base sur des mots clés que vous définissez vous même. Ainsi dans le « tu sais quelle heure il est » le mot clé recherché peut être défini à *HEURE* et donc toute phrase contenant le mot heure donnera l’heure. Cette reconnaissance d’un mot permet de lancer des scripts bash qui font des actions. « Heure » lance une commande linux :

En plus d’être extrêmement paramétrable car on peut programmer soit même les actions à effectuer à l’issue d’une phrase, on peut lancer des taches vocales via cron (toutes les 10 minutes dire « Bonjour votre Altesse »), il y a des plugins dont un destiné à de la domotique et bien plus.

La phase de reconnaissance vocale peut utiliser soit un moteur local (pocketsphynx) soit Bing.

La page de référence est ici http://domotiquefacile.fr/jarvis/ et Alexylem le concepteur du soft à bien fait les choses puisque explications d’ installation et d’utilisation du soft sont très claires et didactiques (comprenez par la que je ne détaillerai pas ces phases 😆 ).

Bien entendu nous verrons ici comment intégrer Jarvis à notre Domoticz.

A noter Jarvis ne fonctionne QUE sur Raspberry, il faut donc un micro et des enceintes reliés à celui-ci.

Les points forts

Énormément de choses sont paramétrables, plusieurs moteurs de synthèse ou reconnaissance vocable, liste de mots clés reconnus , actions à déclencher, des plugins météo, gmail, de domotique.

On peut aussi lancer Jarvis en ligne de commande pour lui faire faire des actions, on peut utiliser les scripts:/// de Action ON et Action OFF pour lancer des commandes au basculement d’un switch. jarvis.sh -s « Le salon vient de s’allumer » juste pour faire dire une phrase ou -x pour exécuter une commande interne Jarvis

Via Lua un petit os.execute fera le job./home/pi/jarvis/jarvis.sh -x « c’est comment la météo » lance la commande METEO de Jarvis.

Installation

Je vous laisse parcourir le site de Jarvis pour effectuer l’installation.

Sachez toutefois qu’il vous faudra installer sox, alsamixer,aplay, arecord,mpg123 et jq.

Pour jq vous trouverez la procédure ici https://easydomoticz.com/manipuler-les-donnees-json-de-domoticz-en-shell/

Sinon, pas d’inquiétude, la procédure d’installation vérifie tout cela et vous donne les commandes à taper.

Puis l’assistant d’installation vous guide dans tout le processus de configuration y compris la détection de vos micros et hauts-parleurs.

A noter : Les meilleurs résultats de reconnaissance que j’ai pu obtenir sont lors de l’utilisation de la reconnaissance vocale Microsoft Bing qui utilise Internet (à mon grand désespoir).

Alexylem à un joli tableau récapitulatif ici http://domotiquefacile.fr/jarvis/content/stt

Pensez à votre vie privée lorsque vous transmettez des commandes à des tiers sur Internet (Bing, Google, Wit)

Une fois familiarisé avec Jarvis, attaquons nous au coté Domoticz de façon à piloter quelque chose à la voix.

Intégration avec Domoticz

Nous allons utiliser un plugin générique Home Automation de Jarvis.

Ce plugin permet d’envoyer des requêtes http à la voix .

Dans le store Jarvis

jarvis_storeInstallez le plugin « Home Automation » puis « Home Control ».

De même n’hésitez pas à faire des mise à jour du plugin dans Store > Installed > Home Control > Update en attendant les mise à jour automatique des plugin (work in progress).

Il s’affiche une page d’aide que nous allons détailler et adapter à Domoticz.

On voit ici qu’il nous faudra adapter les url suivant les spécifications de l’API Json de Domoticz et indiquer dans le tableau pg_hc_config le nom à prononcer et l’idx domoticz.

Modifiez les turnon_url et turnoff_url avec vos ip:ports Domoticz et l’appel à l’api JSON qui vous convient en laissant [ADDRESS] à l’endroit ou vous devez envoyer l’idx Domoticz.

Rappel : l’idx c’est cette colonne :idx_domoticz

Faites les modifs  via le menu « Config » du plugin « Home Automation » de Jarvis pour obtenir quelque chose comme :

Ou 192.168.181:8080 est mon Domoticz, lumière et 112 , le nom et l’idx de la lumière , volet cuisine, 33 …

En prononçant « allume lumière » on ira donc activer l’idx 112 de Domoticz  via « pg_hc_turnon_url »

N.B  Les plugins sont dans le dossier plugins, il y a un sous dossier par plugin, puis dans celui ci un readme.md qui donne quelques explications au sujet du plugin , puis des dossiers /fr ou /en ou se situent les commandes dans la langue correspondante. Ce sont des fichier texte bash. Vous pouvez agir directement sur ces fichiers. La modification est immédiate, pas besoin de relancer Jarvis sauf si vous avez changé un mot à reconnaitre..

Je vous conseille de prendre des mots vraiment discriminants , par exemple , la reconnaissance du mot « volets » donne souvent le verbe « voler » et donc la phrase « ouvre voler salon » n’existant pas …

alexylem vient de me préciser que en utilisant « vole » tout simplement (la comparaison vérifie si le nom du device est « inclue » dans la commande reçue) cela devrait fonctionner.

Et comme les plus perspicaces d’entre vous auront remarqué qu’il faut dire « Allume volet salon » ou « éteint volet salon » ce qui peut paraitre bizarre nous verrons prochainement comment améliorer cela en ajoutant les mots « Ouvre » et « Ferme ».

Un petit film de présentation ici

 

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

LMS/Squeezebox et Domoticz

Depuis quelques versions Domoticz supporte les squeezebox Logitech MediaServer (LMS).

Squeezebox : Qu’est ce ? diront certains.

 

Il s’agit un logiciel serveur de musique (déployé dans le cas qui nous intéresse ici sur un Raspberry) et qui est chargé de diffuser de la musique sur d’autres équipements hard comme ceux ci (plus fabriqués de nos jours)

Résultat de recherche d'images pour "logitech media player" Résultat de recherche d'images pour "logitech media player"

 

ou soft nommés players ou platines en français.

 

Retrouvez le détail ici http://www.maison-et-domotique.com/4904-test-solution-squeezebox-pour-du-multiroom-facile/

Pour faire court on peut trouver de nombreux packages squeezebox à cette adresse http://www.max2play.com/en/max2play-image/

Ces packages m’ont paru gratuits contrairement à d’autres trouvés ça et la.

et des instructions ici http://wiki.slimdevices.com/index.php/SqueezePlug

Une fois installé ces solutions arrivent toutes avec un Logitech Media Server (le serveur) qui  inclut des webradios, la diffusion de podcasts, des bibliothèques musicales …Lire la suite

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

Rallonger la durée de vie d’une carte SD

Du toujours excellent Korben, je vous propose cette lecture concernant le raspberry et les cartes SD

http://korben.info/raspberry-pi-allonger-la-duree-de-vie-de-vos-cartes-sd.html

D’autres articles concernant le même sujet trainent ici https://easydomoticz.com/preserver-la-sd-card-en-utilisant-une-cle-usb/

et la https://easydomoticz.com/preserver-la-carte-sd-episode-ii-booter-sur-usb/

Bonne lecture

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

Mémento instructions shell bash

Cet article fait suite à  https://easydomoticz.com/domoticz-et-scripts-les-bases/ qui tentait de définir les bases du scripting. Ce second opus concerne les commandes Linux usuelles à connaitre pour piloter Domoticz via le shell bash.

Cette liste n’est pas exhaustive et n’empêche pas la lecture de site web spécialisés dans le shell Linux (OpenClassRoom par exemple à des très bons tutoriaux).

Pourquoi écrire des scripts ?

On à besoin d’écrire des scripts quand on commence à s’interfacer avec le monde extérieur, par exemple piloter un ampli via http, récupérer son calendrier google, gérer ses plantes vertes …

C’est la que l’on va avoir besoin d’envoyer des requêtes, récupérer et traiter le résultat, puis mettre à jour Domoticz via l’API JSON.

L’API JSON

« Dans Domoticz vous parlez tout le temps de l’API JSON qu’est ce que c’est ? »

Il s’agit d’un moyen de lecture et d’envoi de données depuis/vers Domoticz.

L’intérêt est de pouvoir interroger ou écrire des données, par le biais de requêtes http, depuis n’importe quel langage (shell, php, python, perl, Lua…) pour peu que l’on respecte le format imposé par Domoticz.

L’API est donc le dictionnaire des commandes que sait comprendre et exploiter Domoticz.

La référence de l’API est ici http://www.domoticz.com/wiki/Domoticz_API/JSON_URL%27s

Pour utiliser les fonctions de l’API à l’aide du shell Linux nous avons souvent besoin de commandes http, de récupérer des données extérieures…

Voici un petit mémo des commandes récurrentes:

Ecrire et rendre exécutable un script

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 ?

Tout d’abord quelques considérations générales.

  • Nommez votre script d’un nom explicite et pas toto.py mais clignotement_lampe_exterieur.sh
  • Utilisez les .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é, 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. Pour le shell c’est

Rédaction du fichier.

ouvrira un éditeur de texte qui vous permettra d’écrire vos commandes shell dans le fichier nommé monscript.sh.

  • CTRL k  : permet de couper des lignes.
  • CTRL u : de coller les lignes précédemment coupées.
  • CTRL x  : permet de quitter cet éditeur, une confirmation est demandée.
  • CTRL G : aide du logiciel pico.

Rendre exécutable ce script et le lancer

permet de rendre exécutable votre script.

le lancement se fait par un

voici quelques commandes que nous utilisons régulièrement dans des scripts bash.

Appeler une url http

Pour piloter Domoticz on doit appeler une requête http dont l’écriture nous est imposée par l’API Domoticz.http://www.domoticz.com/wiki/Domoticz_API/JSON_URL%27s

Ainsi pour allumer une lampe dont l’idx est 44

On utilise la commande curl en ligne de commande

Ou dans un script

envoie 25,60,2 (température, humidité, indice confort) dans l’idx 44 de mon Domoticz, ce qui à peu d’intérêt.

Affecter une variable shell bash

L’idée est de récupérer une valeur de quelque part puis de la réutiliser.

la définition et l’affectation de valeurs d’une variable est faite simplement par son nom.

son utilisation (affichage, tests) est préfixée par « $ »

ici je récupère « bleu », »blanc », ou « rouge » dans la variable tempo en appelant curl.

les tests sont faits sur $tempo= »bleu »

 Envoyer des données dans un fichier

N’importe quelle commande Linux peut être renvoyée à l’intérieur d’un fichier, il suffit de faire suivre la commande de > nom_du_fichier.txt.

l’affichage au lieu de se faire à l’écran se fait dans le fichier.

ainsi un ./domoticz > mon_fichier_log.txt envoie tous les messages Domoticz dans ce fichier.

Afficher des données d’un fichier, d’un port.

Pour afficher les données contenues dans un fichier texte, qui arrivent d’un port ttyXXX, on utilise la commande ‘cat’

affiche les données du port série ttyAMAO

affiche le contenu de ce fichier.

Manipulation de chaines

Extraire une chaîne de caractères entre deux positions précises:

On utilise les symboles ${}.

La syntaxe est ${chaine,position,longueur}

ainsi

affiche efg (3 caractères à partir du 4eme caractère)

http://pierrellensa.free.fr/dev/bash/www.bsdbooks.net/shells/scripting/fr/string-manipulation.html

Extraire un champ

Cas de figure un peu diffèrent de ci dessus, lorsque je reçois une chaine correctement formatée avec des séparateurs entre chaque champ.

Soit des données telles que :

les champs sont séparés par un espace (3A40espacemixerespacevolumeespace30)
un cut -d’  ‘ -f3 renvoie le 3eme champ de la chaine soit « volume »
et donc cut -d’  ‘ -f4 affiche le 4eme champ soit « 30 » (Attention à l’espace au milieu des simples ‘)

le -d’ ‘ indique le caractère de séparation des champs, ainsi si les champs sont séparés par un caractère @

3A40@mixer@volume@30

cut -d’@’ -f3 affiche  « volume »

 

To be continued

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