Les scripts avec dzVents : entrons dans les détails

Toujours à la découverte des scripts dzVents (premier article ici https://easydomoticz.com/scripts-plus-faciles-domoticz-dzvents/) entrons un peu plus dans leur intimité . 😳

Le fonctionnement des scripts dzVents.

Encore une fois , il ne s’agit que d’une traduction du readme situé ici https://github.com/dannybloe/dzVents, les lecteurs anglophones trouveront leur bonheur la-bas, pour les frenchies c’est ici.

Revoyons un script dzVents

il y a 3 parties importantes: active, on et execute.

 

  • active: peut contenir soit :
    • une valeur booléenne (true or false, cela doit rester true ou false en anglais, sans guillemets). Si vous placez cela à false, le script ne sera pas appelé. Pratique pour inactiver l’exécution d’un script.
    • une fonction Lua qui renverra true ou false. Cette fonction (que vous devrez gérer vous même) recevra un objet domoticz avec toutes les informations issues de votre instance Domoticz active = function(domoticz) …. end.

Donc par exemple ici vous pouvez ajouter une fonction qui renverra true ou false si une variable à été modifiée, le script ne se déclenchera que lors de la reception du true.Exemple :

Toutefois  ce script s’exécutera pour décider si il doit s’exécuter vraiment, il est donc plus efficace de mettre ces tests dans la partie « execute » du script (c.f readme du github).

 

  • on: Aucun rapport avec un ON/OFF d’un swich, comprenez le comme un déclencheur, comme un événement : Si il se passe ceci  alors execute … On peut y placer plusieurs vérification d’état de matériel
    • Placez y le vrai nom de votre device entre simple quotes (‘). Vous pouvez y utiliser étoile (*)  comme joker Exemple : PIR_* ou *_PIR . Dans ce cas tous les devices concernés seront mis à jour,
    • L’idx de votre matériel (Vous avez toujours le droit de changer de nom alors que l’idx ne changera jamais),
    • Le mot clé ‘timer’ qui permettra de lancer ce script toutes les minutes (voir plus bas).
    • Ou un mélange de tout cela tel que :

      On peut en placer autant que nécessaire et si n’importe lequel change de valeur, alors le script est exécuté.

    Remarquez les {} pour englober tous les matériels mentionnés dans le on= et les virgules en bout de ligne.

  • execute: C’est ici qu’est le coeur du script, c’est ici que vous déclencherez vos actions telles que changement d’états , envoi de notification, affectation de variables … Plus besoin de commandArray anymore.

Voyons maintenant une fonctionnalité puissance de dzVents le mot clé timer :

Le mot clé timer

Nous avons vu plus que que dans un on = { } on peut placer le mot timer pour gérer du temps.

Il faut savoir que Domoticz ne sait pas gérer du temps en dessous de la minute, aucun script Lua ne peut être lancé en dessous de cette limite, ceci dit dzVents apporte de la souplesse pour pouvoir faire de vrais plannings.

Voyons les nombreuses fonctions liées à cela.

Attention aux crochets [], ils sont indispensables (c’est du Lua):

Voyez la puissance de la dernière syntaxe quand à la création de plannings simples et clairs à lire.

Dans la vraie vie cela fait qq chose comme cela :

Remarquez les {} pour englober tous les horaires mentionnés dans [‘timer’] et la virgule au bout de ligne (sauf la dernière)

j’ai bien cherché quelques images/vidéo pour égayer mais à part à la queue leu-leu je n’ai rien trouvé alors il n’y aura pas d’illustration dans cet article.

 

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

Des scripts plus faciles pour Domoticz avec dzVents

Vous êtes sans doute nombreux à avoir vu passer l’info: depuis quelques semaines il existe un nouveau type de langage de scripts que l’on peut intégrer à Domoticz, les dzEvents de dannybloe.

Langage de script qui se veut plus simple et plus lisible que Lua et qui est une surcouche du Lua Domoticz. Ainsi le dzEvent sera « retraduit » en « vrai » Lua. L’idée est de faciliter la lecture/ecriture de scripts.

Vous trouverez donc ici la traduction à ma sauce et des débuts d’explications de ces ressources anglophones : http://www.domoticz.com/forum/viewtopic.php?f=23&t=10834&sid=b844044efb6fbeb0841881a164361a0c

et https://github.com/dannybloe/dzVents

Voici donc le pitch de dzEvents

Présentation

dzVents (|diː ziː vɛnts| raccourci pour Domoticz Easy Events) apporte un nouveau type de scripting dans Domoticz.

Vous pouvez gérer vos switches facilement,vous aurez un contrôle sur les scripts basés sur le temps avec un vrai planning, dzEvent vous apporte une API qui utilise toutes les informations de Domoticz issues de toutes les différentes tables de Domoticz.Plus de commandArrays complexes car dzEvent les encapsule tous y compris les écritures et lecture de vos périphériques.

Et cerise sur le gâteau la performance des scripts à été améliorée : si vous avez beaucoup de scripts Domoticz ne cherchera qu’une seule fois l’information pour vos script device et time au lieu de parcourir tous les scripts un par un.

Un exemple :

Imaginez que nous ayons un switch, qui à son changement d’état doit activer un autre switch si et seulement si la température d’une pièce est supérieure à une valeur niveau puis nous envoyer une notification

En dzEvent cela donne :

Pas mal !

Remarquez la syntaxe du haut on = , c’est le déclencheur sur l’état de quelque chose.

Un autre exemple avec des dates/heures/jours, le on = est ici un timer

Voyez qu’ici toutes les 10 minutes les lundi,mardi,mercredi,jeudi,vendredi on va lire une variable MyVar et si elle est égale a 10 on met une autre variable nommée ‘AnotherVar’  à 15 et on active une scène ‘Evening lights’ et si le périphérique nommé PIR n’a rien vu bouger depuis 5 minutes on met Bathroom lights à off par un switchOff.

Simple et concis.

Voyons la mise en place.

Installation.

Note: Ceci n’est pas testé pour des machines  non-linux (Windows).  Je suis certain que vous aurez des problèmes (dixit dannybloe concepteur du script).

Récupérez la dernière version depuis  GitHub, décompressez la dans le dossier de vos scripts Lua (/domoticz/scripts/lua)

Vous obtenez un dossier dzEvent-master, entrez à l’intérieur prenez en le contenu (copier) et recopiez le directement dans le dossier Lua (coller) pour obtenir cela  :

dzEvent_1

Supprimez dzEvent-master une fois que tout est fonctionnel.

En résumé, un dossier  dzVents,puis les fichiers dzVents contenant :

Ouvrez le fichier  dzVents_settings.lua et placez vos ip et numéro de port Domoticz. Merci de vérifier que vous n’utilisez pas de user/password pour le réseaux locaux (127.0.0.1) dans la config de Domotic sinon dzVents ne pourra lire les valeurs de vos équipements !

Dans ces settings on peut régler le niveau de log souhaité, plus ou moins bavard, 3 étant le plus loquace et utile au tout départ afin de savoir si tout marche. Repassez le à 2 ensuite.

Le [‘Enable http fetch’] à placer à True ou False permet à dzVents d’interroger régilièrement Domoticz et de mettre à disposition des scripts dzVents toutes les valeurs de Domoticz d’un seul coup.

[‘Domoticz ip’] = ‘192.168.1.81’,
[‘Domoticz port’] = ‘8080’,
[‘Fetch interval’] = ‘every 30 minutes’, — see readme for timer settings
[‘Enable http fetch’] = true, — only works on linux systems
[‘Log level’] = 3
}

Le dossier nommé scripts devra contenir nos scripts dzVents, il suffit juste de les nommer en .lua, plus besoin de script_device, ou script_time…

Et tout de suite les logs Domoticz doivent vous donner trace de l’activité de dzEvents (ici avec niveau de log = 3)

Bien maintenant que ça marche , continuons.

Si cela ne fonctionne pas vérifiez bien votre arborescence /domoticz/scripts/lua/dzevent avec le fichier de settings dans /lua

Mon premier script dzVents

Créons notre premier script :

Récupérez le nom exact d’un de vos switchs ici un capteur PIR nommé ‘Présence’ puis copiez ce script dans le dossier scripts (/domoticz/scripts/lua/scripts). Nommez le comme bon vous semble ici test.lua

Le script envoie une notification et affiche un message dans le log Domoticz lors de son passage à ON et envoie une notification lors du passage à OFF.

le log affiche alors (en mode 3)

Voila, après cette première étape nous découvrirons d’autres fonctionnalités dans de prochains articles.

P.S : il y a un dossier examples dans le dossier dzVents contenant quelques fichiers exemple, n’hésitez pas à les ouvrir pour vous en inspirer.

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

Une nouvelle section dans le forum easydomoticz dédiée aux ESP8266 et dérivés

Suite à de nombreuses demandes (!) une section dédiée aux ESP8266 vient d’être ouverte sur le forum.

esp8266

Pour ceux qui ne connaitraient pas ESP8266 il s’agit d’un module Wifi, peu cher (entre 3 et 8 € suivant modèles), s’interfaçant facilement à de nombreux équipements tels que Arduino les rendant ainsi wifi facilement mais pouvant également fonctionner de manière autonome, sans Arduino donc ce qui en fait un objet de choix pour l’IOT, internet des objets en Français.

Plus de lecture générale ici http://sebastien.warin.fr/2015/10/29/3223-esp8266-des-microcontroleurs-avec-wifi-integre-l-avalanche-des-objets-connectes-dans-constellation-dossier-complet-dans-le-magazine-programmez/

Le lien direct vers le forum est ici : https://easydomoticz.com/forum/viewforum.php?f=24

Vous y retrouverez une compilation de quelques liens sur des sujets anciens en attendant d’alimenter tout ça avec vos propres questions.

Utilisez aussi cette section pour tous les Weemos, NodeMCU ….

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

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/

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 :

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

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/