[Bash] Addon Kodi + Script bash pour afficher températures maison dans Kodi

Vous avez créé un script LUA dont vous êtes fier, un .sh génial, un programme Python hors du commun, un Tuto, c'est ici que vous pouvez les partager.
rapinou
Messages : 119
Inscription : 17 nov. 2016, 01:44

[Bash] Addon Kodi + Script bash pour afficher températures maison dans Kodi

Message par rapinou »

Bonjour,

Voici un script bash Domoticz ainsi qu'un addon Kodi de ma conception qui permet d'afficher les températures des différentes pièces de la maison dans un popup sur Kodi.

Image

I - DOMOTICZ

Configurer pour chaque pièce à reporter :
- Une sonde de température,
- Un interrupteur de type sélecteur pour le planning de chauffe (Confort, Eco, Off).

/!\ Pour chaque pièce, régler les mêmes niveaux sur les sélecteurs pour les modes ECO et CONFORT.

Enregistrer le script bash :

Chemin sur mon raspi : /home/pi/domoticz/scripts/sh/

Code : Tout sélectionner

#!/bin/bash

################################
###### Variables à éditer ######
################################

ip="192.168.0.38" # ip locale
port="8080" # port Domoticz
log_script="/home/pi/domoticz/scripts/sh/log_script.txt" # Chemin du fichier log pour le debug
path_addon="/home/pi/.kodi/addons/script.temp.domo/addon.py" # Chemin du fichier de l'addon Kodi

# Interrupteurs de type selector pour les plannings, régler les mêmes levels sur chaque interrupteur
lvl_confort="10" # Level du mode confort des interrupteurs Planning
lvl_eco="20" # Level du mode éco des interrupteurs Planning

# Pièce 1
piece_1="Salon" # Nom de la pièce 1
idx_planning_1="15" # idx de l'interrupteur Planning de la pièce 1
idx_sonde_1="7" # idx de la sonde de température de la pièce 1

# Pièce 2
piece_2="Chambre parents" # Nom de la pièce 2
idx_planning_2="16" # idx de l'interrupteur Planning de la pièce 2
idx_sonde_2="9" # idx de la sonde de température de la pièce 2

# Pièce 3
piece_3="Salle de bain" # Nom de la pièce 3
idx_planning_3="17" # idx de l'interrupteur Planning de la pièce 3
idx_sonde_3="11" # idx de la sonde de température de la pièce 3

################################
## Fin des variables à éditer ##
################################

#############
## Pièce 1 ##
#############

# On récupère la température intérieure
temp_int_1=$(curl -s "http://$ip:$port/json.htm?type=devices&rid=$idx_sonde_1" | jq -r '.result[].Temp | tonumber')
#echo "Température intérieure $piece_1: $temp_int_1 °C" >> $log_script

# On récupère le level actuel de l'interrupteur Planning
lvl_planning_1=$(curl -s "http://$ip:$port/json.htm?type=devices&rid=$idx_planning_1" | jq -r '.result[].Level | tonumber')
#echo "Level interrupteur Planning $piece_1: $lvl_planning_1" >> $log_script

# On récupère la consigne actuelle
if [ $lvl_planning_1 = $lvl_confort ]
	then
	consigne_act_1="Confort"
elif [ $lvl_planning_1 = $lvl_eco ]
	then
	consigne_act_1="Eco"
else
	consigne_act_1="Chauffage éteint"
fi
#echo "Consigne actuelle $piece_1: $consigne_act_1" >> $log_script

#############
## Pièce 2 ##
#############

# On récupère la température intérieure
temp_int_2=$(curl -s "http://$ip:$port/json.htm?type=devices&rid=$idx_sonde_2" | jq -r '.result[].Temp | tonumber')
#echo "Température intérieure $piece_2: $temp_int_2 °C" >> $log_script

# On récupère le level actuel de l'interrupteur Planning
lvl_planning_2=$(curl -s "http://$ip:$port/json.htm?type=devices&rid=$idx_planning_2" | jq -r '.result[].Level | tonumber')
#echo "Level interrupteur Planning $piece_2: $lvl_planning_2" >> $log_script

# On récupère la consigne actuelle
if [ $lvl_planning_2 = $lvl_confort ]
	then
	consigne_act_2="Confort"
elif [ $lvl_planning_2 = $lvl_eco ]
	then
	consigne_act_2="Eco"
else
	consigne_act_2="Chauffage éteint"
fi
#echo "Consigne actuelle $piece_2: $consigne_act_2" >> $log_script

#############
## Pièce 3 ##
#############

# On récupère la température intérieure
temp_int_3=$(curl -s "http://$ip:$port/json.htm?type=devices&rid=$idx_sonde_3" | jq -r '.result[].Temp | tonumber')
#echo "Température intérieure $piece_3: $temp_int_3 °C" >> $log_script

# On récupère le level actuel de l'interrupteur Planning
lvl_planning_3=$(curl -s "http://$ip:$port/json.htm?type=devices&rid=$idx_planning_3" | jq -r '.result[].Level | tonumber')
#echo "Level interrupteur Planning $piece_3: $lvl_planning_3" >> $log_script

# On récupère la consigne actuelle
if [ $lvl_planning_3 = $lvl_confort ]
	then
	consigne_act_3="Confort"
elif [ $lvl_planning_3 = $lvl_eco ]
	then
	consigne_act_3="Eco"
else
	consigne_act_3="Chauffage éteint"
fi
#echo "Consigne actuelle $piece_3: $consigne_act_3" >> $log_script

######################################
## Envoi des infos sur l'addon Kodi ##
######################################

echo "#!/usr/bin/python
# coding: utf-8

import xbmcaddon
import xbmcgui
 
addon       = xbmcaddon.Addon()
addonname   = addon.getAddonInfo('name')

title = \"Température maison\"
line1 = \"- $piece_1 : $temp_int_1 °C - $consigne_act_1\n- $piece_2 : $temp_int_2 °C - $consigne_act_2\n- $piece_3 : $temp_int_3 °C - $consigne_act_3\"
 
xbmcgui.Dialog().ok(title, line1)" > $path_addon
Éditer les variables selon sa configuration.

Les "echo" commentés ne sont là que pour le débug, à dé-commenter selon ses besoins. La sortie se fait dans un fichier nommé log_script.txt dans le dossier /scripts/sh/.

On donne les droits nécessaires pour l'exécution du fichier :

Code : Tout sélectionner

chmod +x script_report_kodi.sh
On exécute le script chaque minute via crontab :

Code : Tout sélectionner

crontab -e

Code : Tout sélectionner

# Lancement du script report kodi
* * * * * /home/pi/domoticz/scripts/sh/script_report_kodi.sh
II - RASPBERRY :

Installer jq :

Code : Tout sélectionner

wget https://github.com/stedolan/jq/releases/download/jq-1.5/jq-1.5.tar.gz
tar xfvz jq-1.5.tar.gz
cd jq-1.5
./configure
make
make install
III - KODI

Simplement installer l'addon en pièce jointe :
script.temp.domo.zip
(53.92 Kio) Téléchargé 361 fois
Ajuster au besoin le chemin de l'addon dans le script bash de Domoticz, celui indiqué correspond à une installation standard sur Raspberry.

Concernant l'accessibilité, le thème que j'utilise dans Kodi me permet de personnaliser totalement le menu principal, ainsi j'ai donc configuré une entrée pour cet addon dans l'onglet météo. Je clique et j'ai un popup qui s'affiche avec toutes les températures de la maison.

Have fun :D
Dernière modification par rapinou le 14 oct. 2017, 11:21, modifié 2 fois.
RPI 3 - Raspbian 8 (Jessie) - Domoticz V3.5877
ericd
Messages : 157
Inscription : 24 janv. 2017, 11:04
Localisation : Toulouse

Re: Addon Kodi + Script bash pour afficher températures maison dans Kodi

Message par ericd »

Merci et bravo rapinou
rapinou
Messages : 119
Inscription : 17 nov. 2016, 01:44

Re: Addon Kodi + Script bash pour afficher températures maison dans Kodi

Message par rapinou »

Màj du tuto, j'avais oublié de mentionner l'installation de jq permettant de parser le json pour ceux qui ne l'ont pas déjà installé.
RPI 3 - Raspbian 8 (Jessie) - Domoticz V3.5877
Répondre