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/
Posted in domoticz, powershell, windows and tagged , , , , .