Erreur dpkg, impossible d’installer un package sur raspbian

Standard

Impossible d’installer le moindre package sur mon RaspberryPi.
J’ai toujours l’erreur suivante :

Extraction des modèles depuis les paquets : 100%
Préconfiguration des paquets...
dpkg : erreur : analyse du fichier « /var/lib/dpkg/available » vers la ligne 0:
le nom de champ «
E: Sub-process /usr/bin/dpkg returned an error code (2)

Mais sur le forum Ubuntu, je trouve un fil de discussion qui parle de ce problème et voilà la solution qui a permis de corriger le problème :

sudo dpkg --clear-avail
sudo apt-get -f install
sudo apt-get update
sudo apt-get upgrade

Merci à Fabux qui a trouvé la solution à mon problème sur le forum Ubuntu.

Préparer sa carte SD avec une interface graphique pour Mac OS X

Standard

Vous êtes téchnophile mais allergique aux lignes de commande à saisir dans une fenêtre d’un Terminal. Voici pour vous deux solutions pour préparer la carte SD de votre Raspberry Pi et la sauvegarder.

RPi-sd card builder

L’interface de RPI-sd est minimaliste mais permet de préparer facilement sa carte SD. L’éditeur de cette application pour Mac OS détail le mode opératoire sur son site : https://alltheware.wordpress.com/2012/12/11/easiest-way-sd-card-setup/

ApplePi-Baker

Plus sexy et fonctionnelle que la précédente, ApplePi-Baker vous offre une interface graphique qui se rapproche d’ImageWriter pour windows.

Télécharger ApplePi-Baker sur le site de l’éditeur : http://www.tweaking4all.com/software/macosx-software/macosx-apple-pi-baker/

L’excellent site The-Raspberry.com vous le présente et vous explique comment l’utiliser pour vos sauvegardes : http://the-raspberry.com/preparer-carte-sd-sur-mac

Préparer sa carte micro-SD pour Domoticz depuis mac OS X

Standard

Après un crash de ma box domotique, j’ai recherché comment la réinstaller simplement et rapidement. Il m’a donc fallut parcourir les différents sites qui pointent finalement tous sur le tutoriel sur RaspberryPi.org.

Voici donc rapidement les différentes étapes pour reconstruire votre box à partir d’une image disque de Domoticz.

Pré-requis : Votre carte SD qui doit être formatée en FAT32 !

Préparer votre carte SD

1. Téléchargez une image disque de Domoticz : domoticz-raspberrypi-sdcard-4834.7z datée du 2 mars 2016.

2. Double cliquer sur l’image disque qui est compressée avec SevenZip pour la décompresser.

3. Ouvrez une fenêtre terminal sur votre Mac : Applications / Utilitaires /Terminal

4. Depuis votre fenêtre de terminal, identifier le nom du lecteur de votre carte micro-SD avec diskutil :


diskutil list

partitionmicrosd

Le lecteur est disk3 et nous allons le démonter. Attention de ne pas démonter le disk3s1 qui représente la partition FAT32.

5. Démonter le disque disk3 :

diskutil unmountDisk /dev/disk3

6. Copier l’image du disque sur la carte micro-SD :

sudo dd bs=1m if=domoticz-raspberrypi-sdcard-4834.img of=/dev/rdisk3

Attention de bien vérifier que votre carte SD ne soit pas bloquée en écriture avec le petit bouton sur le coté de votre adaptateur SD.

partitionmicrosd2

7. Ejecter votre carte pour ensuite la glisser dans votre Raspberry Pi et profiter de Domiticz.

sudo diskutil eject /dev/rdisk3

8. Connecter vous sur la console de votre pi et au premier démarrage, il vous faudra initialiser la partition pour qu’elle occupe tout l’espace disque disponible :


sudo raspi-config

Puis vérifier votre espace disque avec la commande df :


df -h

Sauvegarder mon image pour éviter un futur crash

Depuis une fenêtre terminal, faites une sauvegarde de votre carte après avoir effectué vos réglage fins, ou pour sauvegarder votre serveur domoticz régulièrement.

1. Brancher votre carte micro-SD dans votre lecteur puis démonter le disque disk3 :

diskutil unmountDisk /dev/disk3

2. Faite la copie de l’image de la carte sur votre disque dure :

sudo dd if=/dev/rdisk3 of=domoticz-backup.img bs=1m

L’image domoticz-backup.img sera utilisable pour restaurer votre système ou le cloner sur un autre Raspberry Pi.

Unboxing de la télécommande porte-clés Homelive

Standard

Une télécommande z-wave pour déclencher facilement des scénarii à votre arrivée ou à votre départ, voici la télécommande porte-clés Homelive d’Orange.

Une bien grande boîte

Unboxing télécommande porte-clés Homelive d'OrangeVoilà une bien grande boîte pour un si petit porte-clés. Orange n’a pas lésiné sur le packaging. Pas très écolo ni cop21 compatible tout ça !!

Quatre boutons

Unboxing télécomande porte-clés Homelive d'OrangeLa télécommande est équipée de 4 boutons permettant de scénariser tout ce que vous souhaitez à l’ouverture comme à la fermeture de votre maison. Le z-wave plus vous garantie un niveau de sécurité maximum pour des scénarii d’ouverture/fermeture de volets roulants, activation/désactivation de votre alarme ou l’ouverture de votre porte.

unboxing-telecommande porte-cles-Homelive5Un petit cache coulissant vous évitera d’actionner les boutons par inadvertance lorsque vos clefs sont dans votre sac. C’est bien pratique.

La télécommande porte-clés Homelive d’Orange est en promotion en ce moment à 19€ au lieu au prix de 39 €. A ce prix là n’hésitez pas ! C’est effectivement moins intéressant que lors de la période de promotion du week-end du 14 novembre.

Mise à jour du firmware RFXtrx433E sous Mac

Standard

Mettre à jour le firmware de l’antenne RFXCom RFXtrx433E peut-être utile voir nécessaire lorsque vous avez un message de ce type dans vos logs Domoticz : « RFXCOM: Please upgrade your RFXTrx Firmware! ».

Pour cela, RFXCom propose au paragraphe 6 du manuel utilisateur, d’utiliser RFXflash Programmer qui ne fonctionne que sous windows. Mais comment faire alors que vous êtes sous Mac ou Linux ?

Merci Mono

Mono est un projet open source comprenant un environnement de développement et d’exécution du code .Net. Il permet donc d’exécuter des applications .Net sous Linux et donc sous Mac. Voyons donc comment installer Mono sur Mac.

Télécharger et installer le package Mono pour Mac.

Le programme installé et votre ordinateur redémarré, vous devriez pouvoir exécuter mono depuis une fenêtre du Terminal : $ mono -V

mono -V

 

RFX Flash Programmer

Le téléchargement de RFXflash Programmer se fait depuis le site d’RFXCom.

Vous pourrez en suite exécuter RFXflash.exe depuis votre fenêtre de Terminal : $ mono RFXflash.exe

Le programme démarre et vous montre la même interface que sous Windows et suivre le manuel d’utilisation pour la mise à jour est très simple.

N’oubliez pas de télécharger le firmware au préalable : RFXtrx433E Ext Firmware

Mise à jour en 3 étapes

1. Connecter RFXCom

Votre antenne RFXCom doit être branchée sur un port USB de votre mac. Si RFXflash de le détecte pas votre antenne alors redémarrer votre application depuis le Terminal (Ctrl+C) et re-exécuter la commande : $ mono RFXflash.exe

Dans la liste déroulante, sélectionner le port USB sur lequel l’antenne est branchée :

Capture d’écran 2015-11-10 à 20.45.26

2. Sélectionner le firmware

Sélectionner le fichier du firmware avec l’icône jaune du dossier.

3. Mettre à jour

Cliquer sur le bouton de la puce électronique rouge pour lancer la mise à jour.

capture rfxcom

Après la mise à jour, cliquer sur le bouton vert « Normal mode execution » pour passer l’antenne en mode d’exécution normale.

Vérifier le bon fonctionnement

Après la mise à jour et le re-branchement de l’antenne sur votre box domotique, vérifier dans les logs de Domoticz si tout va bien.

logs domoticz

 

Commandez vos enceintes Sonos depuis Domoticz

Standard

L’intégration de Sonos avec Domoticz permet de déclencher des scenarii  de démarrage pour le réveil du matin ou de mise en veille lorsque la maison est vide. Voici comment intégrer Sonos à Domoticz avec un exemple simple des actions Pause et Play sur une zone Sonos.

Node JS Sonos HTTP API

Tout d’abord, il nous faut installer node-sonos-http-api disponible sur GitHub : https://github.com/jishi/node-sonos-http-api

L’installation de ce module node est un jeu d’enfant. Il faut bien entendu une version de Node supérieure à la 0.10.

$ wget http://node-arm.herokuapp.com/node_latest_armhf.deb 
$ sudo dpkg -i node_latest_armhf.deb

Pour tester que Node est bien installé :

$ node -v

Télécharger node-sonos-http-api depuis GitHub ou simplement faites un clone si vous avez Git déjà installé :

$ git clone https://github.com/jishi/node-sonos-http-api.git

Puis, depuis la racine du dossier node-sonos-http-api executez les commandes pour effectuer l’installation :

$ cd node-sonos-http-api/
$ npm install

L’installation terminée, il suffit de lancer le serveur :

$ node server.js

Vos enceintes Sonos peuvent maintenant être commandées en HTTP en appelant simplement les URLs suivantes :

http://localhost:5005/zones
http://localhost:5005/next
http://localhost:5005/previous/
http://localhost:5005/pauseall/
http://localhost:5005/<nom de la zone>/play
http://localhost:5005/<nom de la zone>/pause
http://localhost:5005/<nom de la zone>/next
http://localhost:5005/<nom de la zone>/previous
http://localhost:5005/<nom de la zone>/sleep/
...

Intégration avec Domoticz

L’intégration avec domoticz peut se faire très simplement avec un bouton Media Player pour allumer ou éteindre la musique dans une pièce. Cliquez sur l’onglet « Interrupteurs », puis sur le bouton « Ajout manuel ».

Configuration d'un bouton Media Player

Ajoutez le dispositif puis rendez-vous dans l’onglet interrupteurs.

Dans les script en position On et Off configurez les appels HTTP.

configuration-media-player-2En position ON : http://localhost:5005/<nom de la zone>/play
En position OFF : http://localhost:5005/<nom de la zone>/pause

Pour les espaces et les caractères spéciaux, convertissez les en entités HTML. Le plus simple pour cela c’est de taper l’URL avec espace dans Firefox, elle sera convertie automatiquement.

widget-media-playerEt voilà, le bouton est prêt à l’emploi.

Démarrer le serveur node-sonos-http-api en tant que service Linux

Pour que le server.js démarre au démarrage de Linux et il faut tout d’abord installer pm2. Pour l’installer :

$ sudo npm install pm2 -g

Le démarrage du server en tant que service ce fait comme ceci (ne pas oublier l’option -x correspondant au mode fork, dans le cas contraire le process consommera 100% du CPU) :

$ pm2 -x start node_modules/node-sonos-http-api/server.js --name "node-sonos"

[PM2] Spawning PM2 daemon

[PM2] PM2 Successfully daemonized
[PM2] Starting node_modules/node-sonos-http-api/server.js in fork_mode (1 instance)
[PM2] Done.
┌────────────┬────┬──────┬──────┬────────┬─────────┬────────┬────────────┬──────────┐
│ App name   │ id │ mode │ pid  │ status │ restart │ uptime │ memory     │ watching │
├────────────┼────┼──────┼──────┼────────┼─────────┼────────┼────────────┼──────────┤
│ node-sonos │ 0  │ fork │ 9361 │ online │ 0       │ 5s     │ 6.250 MB   │ disabled │
└────────────┴────┴──────┴──────┴────────┴─────────┴────────┴────────────┴──────────┘
 Use `pm2 show <id|name>` to get more details about an app

Pour vérifier que le processus tourne bien :

$ pm2 list

Importer les données du Flower Power de Parrot en Bluetooth

Standard

Je me suis offert un Flower Power de Parrot. Cet objet connecté d’une valeur de 49 € permet de recueillir des données provenant de votre pot de fleur.

Je souhaite pouvoir accéder aux données disponibles grâce à l’API Bluetooth depuis Domoticz. En fonction de l’humidité ou de la luminosité je pourrai ensuite déclencher des actions automatiques, par exemple l’arrosage automatique ou l’ouverture d’un store électrique pour protéger mes plantes du soleil.

J’utilise un Raspberry PI B+ sur lequel j’ai installé Raspbian et Domoticz. Il me faudra un connecteur bluetooth USB.

Acquérir un adaptateur bluetooth

Voici la liste des connecteurs compatibles avec mon Raspberry Pi. Pour ma part, je me suis offert celui-ci.

Activer le bluetooth sur le Raspberry PI

Après branchement de votre dongle bluetooth, il faut activer le bluetooth de votre OS Rasbian et vérifier son bon fonctionnement. Voici un petit tuto très bien fait.

Installer NodeJS

NodeJS dispose de librairie simplifiant l’accès au Flower Power en Bluetooth. Cet autre tuto de Pierre Dandumont vous expliquera comment installer node et les librairies nécessaires.

Et si vous êtes curieux n’hésitez pas à consulter la documentation officielle de l’API bluetooth du Flower Power de Parrot.

Le script de test.js permet de se connecter au Flower Power et de vérifier l’état de la luminosité, de la température de l’air et du sol, de l’humidité dans le sol et de l’engrais.

  • sunlight = 2.26 mol/m²/d
  • soil electrical conductivity = 1021.00
  • soil temperature = 17.50°C
  • air temperature = 17.09°C
  • soil moisture = 31.43%

Alimenter Domoticz

Pour importer les données dans Domoticz, il est nécessaire de créer deux dispositifs dummy device :

  • 1 dispositif de type Température et Humidité,
  • 1 dispositif de type Lux.

Pour rappel, il vous faudra un matériel Dummy que l’on peut ajouter dans  Domoticz depuis l’interface Configuration > Matériels.

Le matériel Dummy ajouté, vous pouvez créer de nouveaux capteurs Dummy. Chaque capteur sera mis à jour depuis l’API JSON de Domoticz.

Dispositifs dummy pour le Flower Power

Le dispositif de température dont l’ID est 252 sera alimenté au travers de l’API JSON avec l’URL suivante :

http://domoticz:8080/json.htm?type=command&param=udevice&idx=252&nvalue=0&svalue=20;45;1

  • IDx : 252
  • Température : 20°
  • Humidité : 45 %
  • Statut :
    • 0=Normal
    • 1=Comfortable
    • 2=Dry
    • 3=Wet

Dispositif de Température et Humidité

Plus d’info sur l’API JSON de Domoticz pour alimenter un dispositif Température et Humidité ici.

Nous faisons de même avec le dispositif de luminosité. Mais la valeur recueillie avec le script est en mol/m²/d (Photosynthetically Active Radiation ou PAR). Il faut simplement multiplier la valeur par 53.93 pour obtenir une valeur en Lux ou Lumen (Plus d’info sur la méthode de conversion ici).

L’URL de l’API JSON sera la suivante :

http://domoticz:8080/json.htm?type=command&param=udevice&idx=253&svalue=7.0109

  • IDx : 253
  • Valeur recueillie : 0,13
  • Valeur envoyée à Domoticz : 7.010

Dispositif de luminosité

Automatiser la synchronisation avec un script NodeJS

Les données récoltées par le script de test peuvent être envoyées à Domoticz grâce à l’API JSON. J’ai apporté quelques petites adaptations pour effectuer deux requêtes HTTP dans le script NodeJS.



/* [...] */
var http = require('http');

var options = {
 host: '192.168.1.111',
 port: '8080',
 path: ''
};

var path = '/json.htm?type=command&param=udevice&idx=';
var AirTemperature = 0;
var Humidity = 0;

FlowerPower.discover(function(flowerPower) {
 async.series([
 function(callback) {
 flowerPower.on('disconnect', function() {
 console.log('disconnected!');
 process.exit(0);
 });


flowerPower.on('sunlightChange', function(sunlight) {
 console.log('sunlight = ' + sunlight.toFixed(2) + ' mol/m²/d');
 options.path = path + '253&svalue=' + (sunlight.toFixed(2) * 53.93);
 var req = http.request(options).end();
 });

 flowerPower.on('soilElectricalConductivityChange', function(soilElectricalConductivity) {
 console.log('soil electrical conductivity = ' + soilElectricalConductivity.toFixed(2));
 });

 flowerPower.on('soilTemperatureChange', function(temperature) {
 console.log('soil temperature = ' + temperature.toFixed(2) + '°C');
 options.path = path + '252&svalue=' + AirTemperature + ';' + Humidity + ';2' ;
 var req = http.request(options).end()
 });
/* [...] */

 function(callback) {
 console.log('readAirTemperature');
 flowerPower.readAirTemperature(function(temperature) {
 console.log('air temperature = ' + temperature.toFixed(2) + '°C');
 AirTemperature = temperature.toFixed(2);
 callback();
 });
 },
 function(callback) {
 console.log('readSoilMoisture');
 flowerPower.readSoilMoisture(function(soilMoisture) {
 console.log('soil moisture = ' + soilMoisture.toFixed(2) + '%');
 Humidity = soilMoisture.toFixed(2);
 callback();
 });
 },

/*[...]*/

Le script complet est téléchargeable ici >>.

L’ajout dans la crontab du user root :

sudo crontab -e
5 * * * * /usr/local/bin/node /home/pi/node_modules/flower-power/domoticz.js > /dev/null 2>&1

Voici la première étape, la suivante consistera à déclencher une action automatique d’arrosage. Pour toute proposition ou adaptation n’hésitez pas à me contacter ou à commenter cet article.