Domoticz le tuto définitif

Bonjour

Voici un ensemble de liens permettant de débuter dans le merveilleux monde de la domotique avec ce fabuleux logiciel qu’est Domoticz.

Gratuité, fonctionnalités, ouverture vers de multiples capteurs,actionneurs, design sont au rendez-vous alors lancez vous !!

Et pour les amateurs : le listing quasi complet des articles du blog :

https://easydomoticz.com/articles-synthese/

Et toujours pour toutes vos questions, vos partages ! : le forum https://easydomoticz.com/forum/

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

Connecter un Raspberry directement à mon PC Windows

Après quelques semaines sans nouveaux articles sur le blog cause changement de boulot, plantages, changement de serveurs … reprenons un rythme plus habituel de publication par un tuto tout simple :

Comment connecter mon Raspberry, en IP fixe, directement à mon PC Windows par un simple câble réseau sans routeur,box…; comme ceci :

raspberry_connexion_directe

Matériel :

Un raspberry, son alimentation, une carte SD avec une distribution Linux dessus (c.f https://easydomoticz.com/domotique-comment-debuter/installation-de-domoticz-sur-raspberrylinux-debian/

Nous prendrons ici l’exemple de Raspbian.

Un câble réseau RJ45  NORMAL (droit) bien que les cartes réseau actuelles savent aussi utiliser les câbles croisés.

Tout d’abord nous devrons trouver une ip compatible avec notre PC puis modifier un fichier Linux pour donner l’adresse IP fixe.

Quelle IP donner à mon Raspberry ?

Etant donné que votre PC Windows n’est connecté à rien sur sa prise réseau RJ45, Windows à donné à cette interface réseau une adresse automatique commençant par 169.X.X.X  dite APIPA.

Ouvrons un terminal et jettons un œil à ipconfig à la ligne de la carte ethernet et non pas du Wifi.

ipconfig_windows

Ici mon PC Windows à l’adresse IP 169.254.16.146. Il faut que je donne à mon Raspberry une IP compatible, je choisis 169.254.16.147

Vous devez donner une IP en ne changeant QUE la dernière valeur (147) que vous devez adapter à votre configuration.

Configuration du fichier cmdline.txt :

Notez bien que la manip documentée pour une connexion avec Windows est valable pour n’importe quel système d’exploitation du moment que vous savez quelle ip à été donnée à votre RJ45.

Je ne décris ici que la mise en place avec un PC Windows.

Une fois votre image « gravée » sur votre carte SD, ouvrez un explorateur de fichiers, allez sur votre carte SD puis trouvez le fichier cmdline.txt, recopiez le au cas ou cela se passerait mal en cmdline.old puis ouvrez le cmdline d’origine

 

cmdline raspberry

Vous y trouvez quelque chose comme :

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

et AU BOUT DE CETTE LIGNE vous ajoutez ip=l’ip choisie plus haut sans retour à la ligne

dwc_otg.lpm_enable bla bla bla .... elevator=deadline rootwait ip=169.254.16.147

PAS DE TOUCHE ENTREE, DE RETOUR CHARIOT, DE TABULATION, c’est juste ESPACE ip=xxxx.xxxx.xxxx.xxxx

Sauvegardez vos modifs, éjectez proprement votre carte SD, insérez la dans le Raspberry, branchez le câble réseau et l’alim et patientez quelques secondes le temps du démarrage du Raspberry.

Un ping vers votre adresse vous confirmera que tout est correct, vous pouvez utiliser putty,mremote, un navigateur web pour aller vers votre nouvelle connexion.

Dans le cas ou cela ne fonctionne pas , retirez la carte SD, inserez la sur une autre machien et examinez la ligne en question.

Dans le pire des cas supprimez cmdline.txt et renommez cmdline.old en cmdline.txt puis refaites les manips.

Cette configuration prend le pas sur celle de /etc/network/interfaces.

Bien entendu la technique de /etc/networks/interfaces et toujours possible, celle ci est simple dans le cas ou aucune connexion vers une box n’est nécessaire.

Bien entendu on peut installer un serveur DHCP sur la machine Windows pour notre Raspberry, mais c’est une autre aventure…








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

powershell et airparif

A l’instar de ce qui avait été fait ici https://easydomoticz.com/domoticz-prend-lair-de-paris-avec-airparif/ avec Airparif et Python , retrouvez ici le portage sous Windows et  powershell.

Généralités

Le site Airparif.com met à notre disposition les mesures de pollution de la capitale pour 4 indices de pollution : indice global, NO2, O3 et pm10 (particules) allant de 0 faible à 100 très élevé.

Résultat de recherche d'images pour "pollution paris"

L’appel de l’ API airparif sous ce format http://www.airparif.asso.fr/appli/api/indice?date=jour vous renvoie un tableau de valeurs contenant les indices recherchés au format JSON.
Un peu de parsing JSON (dépiautage en français) , quelques widgets % dans Domoticz et c’est réglé.

Domoticz

Créez 4 widgets virtuels pourcentage et nommez les indice, NO2, O3, pm1 et notez soigneusement leurs idx respectifs.

Airparif_Domoticz_1

Airparif_Domoticz_2

Le script

Il faudra y définir les données de Domoticz et les indices respectifs de nos widgets.

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

# --- les adresses Domoticz user/pass --------
$domoticz="http://127.0.0.1:8080"
$user=""
$pass=""
#------------------------------------------



# --- les idx des widget pourcentag pour les indices --------
# mettez vos propres idx à la place de 13,12,11,10
# pour l'indice global, puis l'indice NO2, le 02 et enfin les pm10
  
$idx = @{
        "dz_indice_global"="13";
        "dz_indice_NO2"="12";
        "dz_indice_O3"="11";
        "dz_indice_pm10"="10"
        }


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

$url_airparif="http://www.airparif.asso.fr/appli/api/indice?date=jour"


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




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

function majdomoticz($idx,$val)
{

# ----- L url pour ecriture dans un widget pourcentage DZ ----
#http://IP:PORT/json.htm?type=command&param=udevice&idx=mon_idx&svalue=POURCENTAGE

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

#------------------------------
$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}

}

#--------------- recup des idx configures plus haut ----------
$idx_glob=$idx.Get_Item("dz_indice_global")
$idx_NO2=$idx.Get_Item("dz_indice_NO2")
$idx_O3=$idx.Get_Item("dz_indice_O3")
$idx_pm10=$idx.Get_Item("dz_indice_pm10")
#--------------- ---------------------------------------------

if ($debug-eq 1)  {
write-host "Les indices" $idx_glob $idx_NO2 $idx_O3 $idx_pm10

}

#--- Fonction d'interrogation de L'API airparif et recup de la couleur  dans des variables globales pour appel de la fonction de
# mise à jour de Domoticz 
# les 
#-----------------------

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

Try {
    $infos_airparif = ConvertFrom-Json -InputObject $airparif_json 
       #$infos_airparif
        $global:valeur_indice_global=$infos_airparif.global.indice
        $global:valeur_indice_no2=$infos_airparif.no2.indice 
        $global:valeur_indice_o3=$infos_airparif.o3.indice    
        $global:valeur_indice_pm10=$infos_airparif.pm10.indice   
        
    }
Catch {
# si il y a une erreur sur l'appel de l'adresse de airparif.com on affiche 100% dans les widgets
        $global:valeur_indice_global="99.99999"
        $global:valeur_indice_no2="99.999999"
        $global:valeur_indice_o3="99.999999"
        $global:valeur_indice_pm10="99.99999"

       }
       
   
     if ($debug-eq 1)  {
     
        write-host "indice glob: "$global:valeur_indice_global
        write-host "NO2 : "$global:valeur_indice_no2
        write-host "03: "$global:valeur_indice_o3
        write-host "pm10: "$global:valeur_indice_pm10
     }
 
}
#---------------------------------------
interroge_airparif

majdomoticz  $idx_glob $global:valeur_indice_global
majdomoticz  $idx_NO2 $Global:valeur_indice_no2
majdomoticz  $idx_O3 $global:valeur_indice_o3
majdomoticz  $idx_pm10 $global:valeur_indice_pm10

En cas de non réponse de Airparif les valeurs affichées dans les widgets seront 100 (99.9999 dans le script)

Il faudra placer ce script dans le planificateur de tâches  Windows afin de la lancer au moins une fois par jour afin d’obtenir nos indices








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

Domoticz sous Windows fait tweeter ma maison Partie 2

Voici la suite d’un billet paru ici https://easydomoticz.com/maison-pilotee-domoticz-windows-sait-tweeter concernant l’ajout de la fonction twitter à Domoticz sous Windows grâce aux Powershell.

Nous y avons vu la mise en place des autorisations twitter et de la mise en place du module PS associé.

Maintenant la commande Send-Tweet permet d’envoyer un message à un utilisateur Twitter depuis votre compte.

Send-Tweet -Message '@utilisateur_twitter  Message_ Twitter'

Si vous n’indiquez pas d’utilisateur ce tweett est envoyé dans votre propre compte.

Ou une autre syntaxe :

Send-Tweet 'porte ouverte'
Send-Tweet alerte

Remarquez l’absence de guillemets si votre tweet ne contient qu’un seul mot sinon les simples guillemets sont obligatoires

ATTENTION – ATTENTION

AUCUN CARACTERE AUTRE QUE ALPHABETIQUE OU NUMERIQUE N’EST ACCEPTE DANS LE TWEET

DONC PAS DE tirets, points, caractères 100 % français (éàè…)

ATTENTION – ATTENTION

Dans ce cas le tweet n’est pas recu

Les scripts .bat et .ps1

Comme nous avions vu dans d’autres billets il nous faudra un fichier en .ps1 contenant nos instructions powershell et un lanceur en .bat pour Domoticz.

Mon fichier porte_ouverte_tweet.ps1 contient

Send-Tweet 'porte ouverte'

et porte_ouverte_tweet.bat contient le désormais classique :

Powershell.exe -WindowStyle hidden  -nologo -executionpolicy remotesigned -Command « & ‘C:\Program Files (x86)\Domoticz\scripts\powershell\porte_ouverte_tweet.ps1′ »

Domoticz

Affectez au action on /action Off l’appel de votre script .bat

Domoticz_action_on

et voila

Domoticz_twitter

Lors de vos tests n’oubliez pas que Twitter refuse de publier un tweet dont le message est identique à un précédemment reçu. Prenez l’habitude de changer votre message à chaque envoi.

Vérifiez que dans la fenêtre Powershell qui s’ouvre il n’y ait pas de messages d’erreur en rouge et vérifiez dans Powershell ISE que votre script fonctionne.








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

Domoticz sous Windows fait tweeter ma maison Partie 1

Continuons de découvrir le couple Powershell/Domoticz en illustrant l’envoi de twitts grâce à un script que nous pourrons déclencher par les action ON/Action Off.

Le point de départ est cette référence ici dont je vais traduire les explications en Français.

Twitter

Créez vous un compte si ce n’est déjà fait.

Un numéro de téléphone est obligatoire dans votre profil Twitter, Complétez le maintenant , c’est dans le profil puis « Paramètres » puis dans le menu « Mobile ».

Gestion des authorisations

twitter_Domoticz_1

  • Remplissez les champs obligatoires avec n’importe quoi mais indiquez http://le_nom_d_un_vrai_site_web.tld (http:// obligatoire)

twitter_Domoticz_create_app_2

  • Validez et créez l’appli

twitter_Domoticz_3Si vous avez le message

twitter_Domoticz_4Relisez ce qui est marqué tout en haut de cette page sous le titre Twitter et le numéro de téléphone obligatoire.Lire la suite








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