Installation d’un portier Vidéo et contrôle d’ouverture pilotés par Domoticz

Voici un article proposée par Deennoo, un contributeur régulier du forum, concernant la mise en place d’un portier vidéo Wifi au sein de Domoticz.

Merci de son travail.

Alors écoutons tonton Deennoo nous marrer sa belle histoire…  »

On avance, on avance dans la maison connectée : Grâce à Domoticz on a :

  • d’ensoleillement,
  • d’inondation,
  • de CO2,
  • détecteurs  d’incendie,
  • le gadget pour les plantes,
  • la balance,
  • une alarme,
  • le chauffage,
  • la mise en route d’appareils à des heures données,
  • un bandeau de led en wifi ou autre,
  • les lumières par relais,
  • la température,
  • d’humidité,

pour les meilleurs :

  • gestion de la piscine
  • l’ouverture du portail en fonction de votre position GPS (j’adore celle ci),
  • Multiroom grâce a LMS, et lorsque que vous regardez un film sur votre Kodi, la lumière ce tamise toute seul a la lecture / pause ou arrêt.
  • Votre maison vous envoie des Tweets, des Sms, des Emails, des Pushbullets,
  • Elle vous parle pour vous tenir informés du moindre événements (le facteur qui laisse une lettre, les enfants qui rentrent etc etc)

Cela commence a avoir de la gueule !

Mais quid des intervenants extérieurs ?

Comment  savez-vous qui à sonné au portail si vous n’êtes pas chez vous, qui va ouvrir au postier pour qu’il dépose ce colis beaucoup trop gros pour la boite au lettre mais que vous attendez avec impatience car il est parti de Chine depuis 1 mois ?

Il existe déjà des tutos pour les sonnettes connectée, pleins, pleins, pleins.
Il y a aussi énormément de déballage concernant les Interphones Video WIFI (ou filaire), mais très peu expliquent clairement comment faire pour que votre Domotique sache lui parler et interagir avec eux.

Aujourd’hui nous allons parler du Portier Video KKMOON S458-EU, c’est un clone des WIFI603, WIFI602, ou Konx, sauf que le KKMoon coûte moins de 70€ sur eBay…

Encore une fois je n’ai rien inventé, cet article est une compilation des différentes sources que l’on peut trouver sur le net, j’ai juste pris le temps de les lires, ainsi que les commentaires.

Le matériel

Photo 1

Il arrive dans une jolie boite, en couleur, sans aucune certification CE, avec un mode d’emploi en anglais pour installer l’application IOS ou Android.
Sont fournis également : les vis, le transfo 230v 12v.

A la mise en route une charmante voix en anglais vous accueille, sachez juste qu’en cherchant un tout petit peu sur Google, vous trouverez comment la mettre en français, et vous pourrez même mettre la voix des enfants.
Il fait Wifi-g et il y a une connexion Ethernet.

Je vais arrêter ici le descriptif car je ne sortirais rien de plus que les déballages précédents.

Je ne parlerais pas de la qualité du produit, de la porté du wifi, de la qualités de la vidéo et du son, de sa réactivité, car ce sont des éléments de jugement très personnels, sachez juste que son prix est justifié, il ne vaut pas plus – pas moins, si vous voulez mieux, mettez le prix…

Photo 2

Ce qui nous intéresse :
– Récupérer le flux vidéo dans Domoticz
– Récupérer le fait que quelqu’un sonne dans Domoticz
– Pouvoir actionner le relais depuis notre Domoticz

Les outils :
– Un Domoticz qui fonctionne
– Avoir un matériel Dummy et avoir créé deux boutons : un On/Off et un push On
– Une tablette ou appareil Android avec l’app de l’interphone + Tasker
– Une connexion Ethernet pour l’interphone (le wifi est vraiment trop mauvais)

La situation :

Je suis équipe d’une tablette qui me sert de panneau de contrôle pour ma domotique (même si en finalité, tout est tellement automatisé qu’il n y a bien que la page station météo, et le journal Sud Ouest qui sont utilisés, mais le débat n’est pas ici).

Sur cette tablette est installé l’application du portier Video Wifi et cela fonctionne.

Sur l’application de l’interphone, j’ai crée un utilisateur qui s’appelle Domoticz avec son mot de passe.

Intégration de la vidéo , ou comment récupérer le flux vidéo de l’interphone dans Domoticz.

Le flux vidéo est récupérable a par cette adresse :

http://ipdevotreinterphone:81/snapshot.cgi?user=utilisateur&pwd=motdepasse

Ou :
Utilisateur = le nom d’utilisateur que vous avez crée dans l’application du portier vidéo
Motdepasse = le mot de passe que vous avez donné a l’utilisateur sus nommé.

Essayez d’ouvrir ce lien dans Google : rien, nada que dalle, dans VLC une simple image apparaît !

Dans votre Domoticz :

Créez une camera :

IP : Renseignez l’ip de votre interphone
Port:81
Utilisateur : laisser vide
Mot de passe : laisser vide
URL : /snapshot.cgi?user=utilisateur&pwd=motdepasse

Cliquez sur tester la connexion et bravo, vous avez en live la Vidéo prise par votre Interphone.

Photo 3

Bien sur cette caméra est entièrement opérationnelle dans Domoticz comme les autres, aucune restriction.

Intégration du bouton d’appel.

Quand vous utilisez l’application de l’interphone, vous avez peut être remarqué que a chaque fois que le bouton d’appel est pressé, une photo vous apparaît avec les icônes de décroché et raccroché dans l’application Android.

Photo 4

Nous allons nous servir de cette image pour dire a notre Domoticz : « quelqu’un sonne il faut allumer le faux bouton qui s’appelle sonnerie interphone »

Grâce a Tasker et au profile « Événement fichier modifié» nous allons  surveiller le répertoire ou est stocké la photo envoyée à chaque sonnerie.

Avec l’application  officielle, le dossier a surveiller est /DoorBell/picVisitor/

Photo 5Donc maintenant à chaque fois qu’une photo est rajoutée ici , il faut lancer une action vers Domoticz en créant une action Get HTTP.

Dans Serveur:Port : mettre l’ip de votre Domoticz et son port habituel

Dans chemin, nous allons utiliser l’api json de Domoticz pour mettre a jour l’état d’un bouton : /json.htm?type=command&param=switchlight&idx=XX&switchcmd=On

Photo 6

Il convient de remplacer XX par le numéro d’IDX de votre bouton « Sonnerie Interphone »

On teste l’action en appuyant sur le bouton play, et vous devriez voir dans les log :

2016-03-05 17:46:24.276 (Dummy) Lighting 2 (Sonnerie Interphone)

En allant voir votre bouton : il doit avoir changé d’état avec une date/heure de mise a jour correspondant au moment ou vous avez appuyé sur le bouton Play de Tasker.

Ps : Pendant les tests : j’ai créé une pièce « interphone » dans Domoticz puis j’y ai placé les deux faux bouton pour l’interphone, ce sera plus facile a retrouver.

Photo 7 -3 photo 7-1 Photo 7-2

 

Photo 7-4

On peut sortir de Tasker sans oublier d’enregistrer le profile ! Et on essaye depuis l’interphone.

C’est bon, le bouton Domoticz se met a jour a chaque fois que le le bouton appel de l’interphone est pressé ?

Je lui ai mis une extinction automatique au bout de 60 sec (un bouton push ON faut aussi l’affaire)

Il commence a être bien intégré le bougre !! (sic)

Actionner le relais de l’interphone depuis Domoticz

Je pars du principe que vous savez comment mettre un contact sec a votre portail pour actionner son ouverture, ne me demandez pas je ne vous aiderais pas a ce sujet, les mode d’emploi sont fait pour être lus !

Une chose un peu lourde avec l’app de l’interphone c’est de devoir taper un mot de passe a 6 chiffre pour «ouvrir ».

On va faire en sorte que l’on puisse actionner l’ouverture depuis Domoticz.

Dans votre navigateur internet copiez/collez ceci :

http://IPDELINTERPHONE:81/openlock.cgi?user=utilisateur&pwd=motdepasse

Mince de mince de non de non, on a activé le relais d’ouverture de l’interphone ! (sic2)

Et en plus on a une réponse :

– var result= »ok »; sur votre navigateur
– l’interphone parle pour dire que le portail va s’ouvrir.

Vous l’avez compris : on va juste copier coller cette URL dans la case Action On de notre bouton : Ouverture Interphone

photo 8

Pensez bien a choisir un bouton Push ON a la création de ce bouton, ceci évitera d’avoir a le mettre sur OFF…

Faite le test, cliquez sur ce bouton : a chaque coup cela fonctionne !

Maintenant que l’interphone et Domoticz se parlent, à vous de jouer, scripts, scenario, blocky tout est bon !

Enfin, Cerise sur le gâteau, il est possible avoir le flux vidéo sur notre Android wear en cas de sonnerie ou d’alerte, avec la possibilité d’ouvrir le portail depuis la montre sans passer par l’application dédiée.

J’ai fait le choix de tasker, mais sachez que tinycam, monitor pro, ou d’autres combinaisons sont possibles.

Le principe est le même que pour l’intégration du bouton d’appel, sauf que qu’il faut créer une action pour lancer Tinycam/Monitor,avec une option pour avoir une action « ouvrir » reliée à l’URL du relais de l’interphone.

Encore un nouveau gadget intégrable à votre Domoticz, pour plus toujours plus d’interaction.

N’hésitez pas, Soyez curieux !

« 

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/

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/