La gestion des couleurs de tarifs EDF avec l’API domogeek et les powershells

Voyons ici un exemple d’illustration des scripts Powershell (PS) avec un exemple basé sur la récupération de la couleur du tarif TEMPO EDF et son affectation à un Widget Texte de Domoticz.

Il ne s’agit que de la transposition de cet article ci destiné au Raspberry sous Linux en PS Windows.

Rappels

domogeek.entropialux.com  met à notre disposition un jeu d’API permettant de recevoir une foule de choses utiles pour piloter notre domotique.

Comme :

  • savoir si en zone C on est en vacances !
  • si nous sommes en Week End,
  • récupérer la géolocalisation d’une ville,
  • le tarif EJP EDF,
  • le tarif Tempo EDF,
  • la liste des fêtes du calendrier,
  • les levers et couchers du soleil,
  • l’état de vigilance Méteo France (jaune,rouge orange pour chaque risque) …

C’est parfaitement documenté, hyper clair, simple : le bonheur !

Principe

En appelant une simple url bien formatée on reçoit en retour la réponse attendue.

La documentation nous dit que

http://domogeek.entropialux.com/tempoedf/now nous renvoie ‘bleu’

que

http://domogeek.entropialux.com/tempoedf/now/json nous renvoie {« tempocolor »: « bleu »}

Il suffira donc de récupérer cette valeur et de l’affecter à un widget texte Domoticz.

A noter que la couleur du lendemain peut être obtenue par http://domogeek.entropialux.com/tempoedf/tomorrow/json.

Coté Domoticz

Il faudra créer un widget virtuel TEXTE et récupérer son idx dans les dispositifs.

idx_domoticz

Le script PS

Comme d’habitude adaptez la partie des paramètres à votre configuration , user et pass restent à vide si vous n’avez pas authentification dans votre Domoticz, et adaptez l’idx à celui du widget texte.

Le debug à 1 affiche quelques valeurs d’url et de variables.

#---PARAMETRES-----------------------

# --- les adresses Domoticz user/pass  et l'idx à activer --------
$domoticz="http://127.0.0.1:8080"
$user=""
$pass=""
$idx="8"
#------------------------------------------


$url_domogeek="http://domogeek.entropialux.com/tempoedf/now/json"



# -----debug a 1 pour afficher qq messages, 0 sinon ----
$debug=1
#------------------------------


#--- FIN DES PARAMETRES-----------------------



#--- Fonction d'ecriture en vers Domoticz via url-------------------

function majdomoticz  
{

# ----- LEs url pour ecriture dans un widget texte DZ ----

$url1="/json.htm?type=command&param=udevice&idx="+$idx
$url2="&svalue="+$tempo_dgeek
$urldz=($domoticz+$url1+$url2)

#------------------------------
$pair = "${user}:${pass}"
$bytes = [System.Text.Encoding]::ASCII.GetBytes($pair)
$base64 = [System.Convert]::ToBase64String($bytes)
$basicAuthValue = "Basic $base64"
$headers = @{ Authorization = $basicAuthValue }
#------------------------------



#Invoke the web-request avec les headers d'authentification
#$json=Invoke-WebRequest -uri $urldz  -Headers $headers
try { $json=Invoke-WebRequest -uri $urldz  -Headers $headers } catch
     {
        $_.Exception.Response.StatusCode.Value__
        if ($_.Exception.Response.StatusCode.Value__-eq 201) {write-host "erreur authentification user/pass"}
     }

     
# recup reponse JSON
$infos_json = ConvertFrom-Json -InputObject $json


#recuperation depuis $infos_json avelc les libelles Domoticz
$Val_Retour=$infos_json.status

if ($debug-eq 1)  {
Write-Host "url Domoticz=" $urldz
Write-Host "message Json="$json
Write-host "Status retrourné="$Val_Retour}

}


#--- Fonction d'interrogation de L'API domogeek et recup de la couleur  dans $tempo_dgeek ------------
# ou d'une erreur eventuelle si on accede pas au site web

function tempo_domogeek
{
    try { $dgeek_json=Invoke-WebRequest -uri $url_domogeek}
    catch
     {
        $_.Exception.Response.StatusCode.Value__
        if ($_.Exception.Response.StatusCode.Value__ -eq 404) {write-host "erreur 404:  acces au site web"}
     }

Try {
    $infos_dgeek = ConvertFrom-Json -InputObject $dgeek_json 
    $tempo_dgeek=$infos_dgeek.tempocolor
    }
Catch {
    $tempo_dgeek="Erreur domogeek"
       }
       
   
     if ($debug-eq 1)  {
        write-host "la réponse de domogeek est :"$infos_dgeek
        write-host "la couleur du jour est: "$tempo_dgeek
     }
return $tempo_dgeek
  
}
#---------------------------------------


$tempo_dgeek=tempo_domogeek
majdomoticz 

Enregistrez ce script dans votre dossier de travail de vos scripts Domoticz , vérifiez avec Powershell ISE (voir articles précédents), le bon fonctionnement de celui ci.

Lancement du script via le planificateur de tâches Windows

J’ai expliqué en détail les manips dans un autre billet concernant le planificateur de tâches

En résumé on crée un fichier .bat de ce type

Powershell.exe -WindowStyle hidden  -nologo -executionpolicy remotesigned -Command "& 'C:\Program Files (x86)\Domoticz\scripts\powershell\recup-tempo.ps1'"

qui, on le voit, appelle le fichier powershell ci-dessus

Et on lance le fichier bat à intervalles réguliers via le planificateur de tâches, typiquement une fois par jour suffit.

 

couleur_edf Résultat de recherche d'images pour "thumbs up"

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

La couleur Tempo EDF dans un Widget Domoticz

En utilisant un article ici sur les widget Texte et un article là sur la récupération du tarif tempo EDF depuis api.domogeek.fr on peut faire afficher la couleur actuelle du tarif EDF dans un texte Domoticz :

widget texte domoticz

avec deux lignes comme cela dans un fichier recupedf.sh

Changez mon_idx_du_switch-virtuel par votre Idx à vous (c.f article sur le widget texte)

#!/bin/bash
tempo=$(curl -s "http://domogeek.entropialux.com/tempoedf/now")
curl "http://192.168.1.81:8080/json.htm?type=command&param=udevice&idx=mon_idx_du-switch_virtuel&svalue=$tempo"

 

un chmod +x sur le fichier et un crontab -e plus loin (lancement à 1h10 tous les jours)

10 1 * * * sudo /home/pi/domoticz/scripts/edftempo.sh 2>&1 >> /dev/null

on à ainsi à disposition notre tarif pour d’autres scripts , lua ou blocky.

 

 

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

Utiliser le tarif EDF Tempo

Une discussion sur le forum dont la magnifique réponse à été donné par jackslayter m’a incité à reprendre en partie les propos échangés pour cet article.

La finalité était de récupérer le tarif Tempo EDF en cours (bleu,blanc,rouge) pour piloter les radiateurs électriques, et éviter les casse têtes :

tempoedf

La couleur Tempo d’aujourd’hui et demain est mise à disposition grâce à domogeek.entropialux.com (entre autres choses, mais nous y reviendrons tellement l’outil et l’idée sont pratiques pour de la domotique)

Au final le scénario est celui ci :

Création d’un switch virtuel, interrogation via script bash de l’api, si le tarif est bleu alors passe le switch à On ce qui permettra de piloter nos équipements puis mise en place du script dans un crontab pour interrogation régulières.

1 – Création d’un switch virtuel.

Depuis l’onglet « Matériel » , ajoutez un Interrupteur.

Dans l’onglet des périphériques cliquez sur la flèche verte, nommez le, puis notez l’IDX de cet équipement.

2 – Interrogation du tarif Tempo.

Dans le dossier domoticz/scripts créons un script nommé edftempo.sh

sudo pico domoticz/scripts/edftempo.sh

[codesyntax lang= »bash » lines= »no »]

#!/bin/bash
tempo=$(curl -s http://domogeek.entropialux.com/tempoedf/now)
if [ $tempo = "bleu" ]; then
curl "http://192.168.1.81:8080/json.htm?type=command&param=switchlight&idx=101&switchcmd="On"&level=0"
else
curl "http://192.168.1.81:8080/json.htm?type=command&param=switchlight&idx=101&switchcmd="Off"&level=0"
fi

[/codesyntax]

Changez ici l’IP de Domoticz et le IDX de votre switch virtuel suivant votre config.

un chmod +x sur le fichier puis l’exécution de ./edftempo.sh doit faire basculer l’état du switch virtuel à On si la journée est bleue sinon on reste à Off.

<digresssion>

On peut aussi récupérer les tarifs EJP par zone

/ejpedf/:zone/:date/:responsetype

Example usage:

   curl http://domogeek.entropialux.com/ejpedf/nord/today
   curl http://domogeek.entropialux.com/ejpedf/sud/tomorrow
   curl http://domogeek.entropialux.com/ejpedf/paca/today/json

Les régions sont {nord|sud|ouest|paca} : 1 seule à la fois !!!

on a today ou tomorrow pour les jours

Le retour est False nous ne sommes pas en EJP pour la date demandée

et True quand nous sommes en EJP

Le script bash ci-dessous pourra être modifié pour tenir compte de l’EJP

</digression>

3 – Pilotage des équipements liés

Plusieurs méthodes pour déclencher les radiateurs sont possibles

Soit :

  • Un script blocky qui pilote un groupe de dispositifs en se basant sur l’état du switch virtuel.
  • Soit pilotage direct via le script,

ajoutez autant de lignes que d’équipements à piloter à l’intérieur du if $tempo=bleu en indiquant les idx des radiateurs, supprimez les lignes else et curl, au final on a:

#!/bin/bash
tempo=$(curl -s http://domogeek.entropialux.com/tempoedf/now)
if [ $tempo = "bleu" ]; then
curl "http://192.168.1.81:8080/json.htm?type=command&param=switchlight&idx=67&switchcmd="On"&level=0"
curl "http://192.168.1.81:8080/json.htm?type=command&param=switchlight&idx=68switchcmd="On"&level=0"
curl "http://192.168.1.81:8080/json.htm?type=command&param=switchlight&idx=69&switchcmd="On"&level=0"
fi

4- crontab

un crontab -e puis placer cela qui se lancera tous les jours à 00h 10 minutes

10 00 * * * sudo /home/pi/domoticz/scripts/edftempo.sh 2>&1 >> /dev/null

cron

 

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

Raspberry et Teleinfo, la partie Domoticz

Suite a l’article précédent voici le 2eme  chapitre  consacré à la récupération des infos dans Domoticz.

Chapitre 2 : Teleinfo et Domoticz

On a vu dans le chapitre précedent que le GPIO etait relié au ttyAMA0 et que on avait fait un lien vers un /dev/ttyUSB20 par un  sudo ln -s /dev/ttyAMA0 /dev/ttyUSB20

Dans Domoticz , ajouter un matériel , dans la liste déroulante choisir « TELEINFO EDF USB » puis le /dev/ttyUSB20

 

Il apparait alors dans « Configuration » « Periphériques »  sous le nom P1 smart Meter – Energy

 

Cliquez sur la flèche verte tout au bout à droite  pour l’ajouter et lui donner un nom

Voila ce compsant apparait dans l’onglet « Mesures »

 

A partir de la on peut avec « Log » faire de joli graphiques 2014-09-05 21_40_07Attention : La version Stable 1860 comporte des bugs d’affichage des courbes, des infos affichées …. Pour corriger cela , passez en version Beta comme expliqué ici , cela devrait ensuite se résoudre.

 

 

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

Raspberry et Teleinfo

Dans ce chapitre en 2 parties nous verrons comment récupérer les données de teleinfo transmises par le compteurs EDF sur un raspberry puis l’affichage dans Domoticz

Chapitre 1 : Le Hard et le Raspberry

  • il faut un optocoupleur SFH6206, des résistances 1.2K et 47 K
  • Un câble que l’on reliera aux bornes I1 et I2 du compteur, la longueur n’a pas d’importance car on porte à plus de 30 m sans problèmes

le schéma suivant montre le câblage à effectuer

Pour info le raspberry et son brochage, le coté gauche est 1,3,5,7 … le coté droit 2.4.6…

Donc 3.3 Power, GND et GPIO 15 (RXD)

http://elinux.org/images/2/2a/GPIOs.png

Câblage du compteur EDF.

Il n’y a pas de sens à respecter pour cette connexion.

Démontez le capot en bas du compteur.

compteurelec

Dévissez les 2 vis en dessous de ces 2 trous insérez y vos câbles.

Câblez le coté Raspberry 3.3,GND, et le GPIO 15

Le soft coté  Raspberry

  • Modification du fichier « cmdline.txt »

sudo nano /boot/cmdline.txt

remplacer la ligne :
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
par :
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

en d’autre termes supprimer :
console=ttyAMA0,115200 kgdboc=ttyAMA0,115200

puis

  • Modification du fichier « inittab »

sudo nano /etc/inittab
T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
devient :
#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

(il y a un # devant la ligne)

un petit sudo reboot

au redemarrage
sudo stty -F /dev/ttyAMA0 1200 sane evenp parenb cs7 -crtscts
sudo cat /dev/ttyAMA0

doit afficher les messages du compteur :

OPTARIF HC.. <

ISOUSC 45 ?

HCHC 021475341 !

HCHP 019306374 4

PTEC HP..

IINST 004 [

IMAX 048 
KPAPP 00940

ATTENTION !! Vérifiez bien que vous voyez passer le terme MODETAT , si vous ne le voyez pas essayez avec

stty -F /dev/ttyAMA0 1200 sane parenb -parodd cs7 -isig -icrnl -crtscts -icanon

si ok on fait un lien entre le tty et USB20

sudo ln -s /dev/ttyAMA0 /dev/ttyUSB20

N.B pour conserver le lien à chaque reboot

un sudo /etc/rc.local puis en bas ajoutez la ligne spécifique pour la création du lien, avant le exit 0

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
 printf "My IP address is %s\n" "$_IP"
fi
sudo ln -s /dev/ttyAMA0 /dev/ttyUSB20
exit 0

et voila

Merci à http://www.chaleurterre.com/forum/viewtopic.php?t=15153

et a http://www.domoticz.com/forum/viewtopic.php?f=5&t=627&hilit=teleinfo&start=20

 

 

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