Depuis un (grand) moment j’avais envie de me faire une box domotique pour un peu tout surveiller.

Début des vacances donc je me suis lancé !

1. La base : la box

Pour installer la box rien de plus simple : Un Raspberry Pi 2 (mon 3 me sert de serveur d’impression pour l’imprimante 3D) et on récupère une image de Domoticz ici.

Une fois récupérée, on utilise Win32DiskImager pour créer la carte Sd du Rasp.

J’y ai ajouté un Z-stick pour pouvoir contrôler des périphériques Z-Wave.

2. Configuration du Z-stick

Pour l’installer un petit tour sur Réglages – Matériel et on ajoute OpenZWave USB, on sélectionne le bon port et c’est parti pour installer les périphériques Z-Wave (je passe rapidement, c’est pas le plus passionnant et on trouve beaucoup de doc sur ça sur internet).

3. Ajout de la station météo Netatmo

L’an dernier j’ai fait des scrips php dans tous les sens pour récupérer les infos de la station météo, j’ai fait des graphes … Mais le soucis est la centralisation des données.

Ici c’est un jeu d’enfant, on ajoute dans matériel Netatmo, on renseigne l’identifiant et le mot de passe et ça récupère tout !

4. Une sonde de température sur le Rasp ?

Tiens j’ai vu qu’on pouvait mettre une sonde de température sur le Rasp pour avoir la température soit à proximité du Rasp, soit dans la pièce !

Cool j’ai une sonde DS18B20 en filaire qui traine !

Voici le schéma de branchement :

raspds18b20

Dans matériel on ajoute 1-Wire (System) et ça roule ! On a la température de la sonde !

 

Question : Il sert à quoi ton blog c’est tout simple ?

Réponse : On va attaquer le plus « dur »

5. Interfaçage avec Kodi (média player)

Pour le fun, j’ai installé Kodi sur mon pc, j’avais envie de créer une petite règle : quand je met mon film en pause ça allume la lumière et quand je reprend la lecture ça éteint la lumière.

J’ai donc installé Kodi (ex XBMC) et je suis allé réglé dans Système – Paramètres – Service – Serveur web :

Kodi

On coche « Autoriser le contrôle à distance via HTTP »

on relève le numéro de port et on va ajouter un nouveau matériel dans Domoticz : Kodi Media Server.

Une fois ajouté on clique sur Réglages :

kodi2

Kodi est donc configuré sur Domoticz, je vais aller créer un Evènement pour allumer/éteindre ma lampe !

Direction Réglages – Plus d’options – Evènement

Ca ressemble beaucoup à Scratch c’est à dire de la programmation par glisser/déposer.

Voilà à quoi ressemble mon événement :

Kodi3

Du coup quand je met en pause sur Kodi la lumière s’allume, quand je remet en lecture ça coupe !

6. Interfaçage avec Octoprint :

Alors je fais du graduel en difficulté, je n’ai pas tout fait dans cet ordre (et Octoprint je l’ai fait en deux fois).

Ce que je voulais avec Octoprint est de pouvoir récupérer les températures de la tête et du lit ainsi que la vidéo.

6.1 Récupérer la vidéo :

Il y a deux solutions : soit ajouter une webcam (mais alors le résultat est très très très moche donc je passe), soit utiliser l’onglet Perso (qui permet d’afficher un peu tout ce qu’on veut).

J’ai choisit la seconde option qui est plus propre :

Il faut aller dans le dossier /domoticz/www/templates, j’ai créé un fichier cam3d.html avec le contenu suivant :

Et j’obtient la page suivante dans l’onglet perso :

cam3d

Youpi ! Je vois l’impression en direct depuis Domoticz (avec la solution de simplicité).

Pour info voici ce que ça fait en ajoutant une webcam :

cam3d2

On a vu moins moche quand même !

6.2 Récupérer les infos de l’imprimante 3D

Ah ah ah alors là c’est le plus fun (pas le plus dur, mais le plus fun je me suis bien amusé).

6.2.1 Créer un matériel virtuel dans Domoticz :

On ajoute dans matériel un « Dummy » qui va en fait être un groupe de capteurs virtuels.

Je l’ai appelé « Imprimante 3D »

On clique ensuite sur Créer des capteurs virtuels. J’en ai créé 3 : deux de type température (pour la tête et pour le lit) et un de type interrupteur (pour savoir si l’imprimante est en impression ou à l’arrêt) et je relève leurs idx.

Ici j’ai les idx 23, 24, 25

octo

6.2.2 Récupérer les infos d’Octoprint :

Alors petit tour sur le guide de l’API d’Octoprint, la requête est assez simple :

(pour l’API key il faut prendre la votre hein)

Un coup dans chrome pour voir ce que ça donne :

Ah plutôt cool avec cette requête j’obtient directement les infos que j’ai besoin ! Youpi !

Bon maintenant, il faut voir comment récupérer les valeurs et les envoyer à Domoticz !

6.2.3 Un petit coup de Python !

J’aurai pu faire du C, du Pearl… Mais j’avais envie de faire un petit programme en Python (que je n’ai pas touché depuis environ 10 ans).

déjà première étape on va installer un petit paquet pour faire les requêtes :

Il est lancé ? Alors amusons nous un peu avant d’attaquer le programme !

On lance python dans le bash !

>>> import requests >>> r = requests.get("http://192.168.1.56/api/printer?apikey=1EF6D3B280D44A589F29BBE1BEBA73C4") >>> r.content '{\n "sd": {\n "ready": false\n }, \n "state": {\n "flags": {\n "closedOrError": false, \n "error": false, \n "operational": true, \n "paused": false, \n "printing": true, \n "ready": true, \n "sdReady": false\n }, \n "text": "Printing"\n }, \n "temperature": {\n "bed": {\n "actual": 44.7, \n "offset": 0, \n "target": 45.0\n }, \n "tool0": {\n "actual": 210.4, \n "offset": 0, \n "target": 210.0\n }\n }\n}' 

Wahooo j’ai mes données ! Amusons nous à les formater un peu !

Découpons un peu tout ça :

>>> reponse = r.content.split() >>> reponse ['{', '"sd":', '{', '"ready":', 'false', '},', '"state":', '{', '"flags":', '{', '"closedOrError":', 'false,', '"error":', 'false,', '"operational":', 'true,', '"paused":', 'false,', '"printing":', 'true,', '"ready":', 'true,', '"sdReady":', 'false', '},', '"text":', '"Printing"', '},', '"temperature":', '{', '"bed":', '{', '"actual":', '44.7,', '"offset":', '0,', '"target":', '45.0', '},', '"tool0":', '{', '"actual":', '210.4,', '"offset":', '0,', '"target":', '210.0', '}', '}', '}'] 

Cherchons ce qui nous intéresse :

J’ai un soucis ! il me rajoute une virgule à la fin :

Ah c’est mieux ! Mais mon interrupteur ne sais voir que « On » et « Off » dans domoticz, formatons tout ça :

Bon je crois qu’on est bon ! Petit tour sur la doc json de Domoticz

  • Interrupteur :
  • Température :

Plus qu’à faire un petit script python domoticz.py :

Un petit test pour voir si ça modifie bien les valeurs dans Domoticz :

si ça fonctionne on va aller l’ajouter dans le cron pour exécuter le script toutes les minutes :

Et on crée la règle :

7. HomeBridge

Avec la béta d’iOS 10, une nouvelle application « Domicile » est arrivée, elle permet de controler les équipements domotiques certifiés HomeKit avec iOS et TvOS.

Il y a un moyen de l’utiliser avec Domoticz : HomeBrigde

7.1 Installation :

Allez plein de commandes à taper dans le shell ! Youpi !

C’est tout ? Ben oui c’est tout !

7.2 Configuration :

On installe en premier le pluggin pour Domoticz :

on va dans le dossier /home/pi/.homebridge et on crée un fichier config.json :

On teste HomeBridge en lançant la commande « homebridge » si tout va bien :

homebridge

Et on a plus qu’à ajouter le périphérique Domoticz avec l’application Domicile d’Apple !

8. MySensors !

J’ai commencé à jouer avec les Arduinos l’an dernier quand j’ai voulu faire un monitoring de ma piscine.

Je m’étais fait un mini-site qui récupérait les infos de la piscine pour pouvoir la surveiller à distance.

J’ai repris mon projet cette année pour l’intégrer à Domoticz.

8.1 MySensors c’est quoi ?

MySensors c’est un un arduino connecté sur le Rasp qui fait office de serveur NRF et d’autres arduinos en mode client.

Je vous conseille un petit tout sur MySensors pour plus de détails.

8.2 Coté serveur :

8.2.1 Matériel :

  • Arduino Uno
  • 1 Module NRF24L01
  • Des cables

8.2.2 Installation du serveur

Alors là je ne rentre pas dans le détail, je ne vais pas reprendre le guide vous le trouverez ici pour les branchements et ici pour la mise en place du serveur.

8.2.3 Ajout dans Domoticz

On va encore ajouter un matériel : MySensors Gateway USB

arduino 1

8.3 Coté client :

Un an que je repousse, mais quand il faut il faut ! Voilà comment je surveille ma piscine :

  • Température de l’eau
  • pH
  • Température et humidité du bloc de filtration
  • Pression du filtre à sable

Je compte ajouter un détecteur de fuite, je l’ai, mais pas monté.

8.3.1 Le montage :

Piscine_bb

8.3.2 Le programme :

9. Et la boite dans tout ça ?

C’est bien joli d’avoir un imprimante 3D, encore faut il s’en servir ! Je me suis donc fait une petite boite pour ranger tout ça !

vRUi0a77

Et histoire de tester mon nouveau pluggin :

STL Files
  • Domoticz-box
Color:
Render:
Capture:
Download STL

Attention c’est pas le bon modèle !

Voici les pièces de la version corrigée :

Base uno :

STL Files
  • base uno
Color:
Render:
Capture:
Download STL

Contour :

STL Files
  • contour
Color:
Render:
Capture:
Download STL

Couvercle

STL Files
  • couvercle
Color:
Render:
Capture:
Download STL

Base Raspi

STL Files
  • base pi
Color:
Render:
Capture:
Download STL