Imperihome, une nouvelle version NodeJS

Objectif :

Installer la dernière version de MyDomoAtHome version NodeJs pour Domoticz. Cette version rend obsolète les autres versions et sera celle qui sera maintenue à long terme.

Rappel  :

Imperihome est une application pour smartphone  et tablettes Android/Ios qui s’intègre nativement à bon nombre de systèmes de domotique  (Domoticz, Sonos, Kodi) et autres objets connectés du marché via une API génerique.

Paramétrable, souple et en régulière évolution vous trouverez dans le google store une version gratuite limitée à 2 pages d’équipements et une version version payante.

Les liens sur le site ImperiHome http://www.evertygo.com/imperihome

Screenshot_2014-11-11-10-17-25

Contrairement à d’autres applis existantes (Andromoticz par exemple), ImperiHome est multiplateforme domotique.

Le but de cet article est donc de décrir l’installation d’une passerelle entre notre Domoticz et l’appli Android/Ios afin de permettre le pilotage via smartphone.Cette passerelle agira comme une interface entre Domoticz et Imperihome et vice versa.

Il y a donc un Client (ImperiHome), une Passerelle nommée MyDomoAtHome (mdah) pour les intimes, un Serveur (notre Domoticz). La Passerelle est un Web serveur REST avec son propre IP:port qui sera différent de celui existant déjà pour Domoticz.

Voila quelques screens tirés du wiki anglais de Domoticz.

Imperihome screen 1

Imperihome screen 2
Screenshot_2013-10-12-18-55-05_framed_id23

Possibilités

  • Tous les switches
  • Tous les senseurs temp/humidity/weather/uv
  • Tous les utilities
  • Toutes les scenes
  • Les graphiques
  • Mais aussi la répartition des équipements emplacement par emplacement si vous avez construit des plans dans Domoticz (périphériques par emplacements).

Objectif :

Installer la dernière version de MyDomoAtHome version NodeJs pour Domoticz.

L’article en français sur le github  https://github.com/empierre/MyDomoAtHome/blob/nodejs/README_FR.md est très complet et précis. Reparcourons ici les étapes indispensables pour la mise en place.

Un lien vers le wiki anglophone de Domoticz http://domoticz.com/wiki/ImperiHome

Mes remerciements à epierre et aux contributeurs du projet.

Installation.

Etape 1 : NodeJS

Je vais décrire ici l’installation sous Raspbian, les amateurs apprécieront de savoir qu’il y a une image Docker disponible (lisez le readme français jusqu’au bout), les autres distributions liront aussi le même document avec intérêt.

Nous avons besoin de NodeJS

sudo dpkg --list |grep nodejs

Cela doit nous renvoyer une version 4 ou supérieure.

Sinon, on installe nodejs (raspbian), mdah

sudo apt-get remove node
wget  http://www.e-nef.com/domoticz/mdah/nodejs_4.4.2_armhf.deb
sudo dpkg -i nodejs_4.4.2_armhf.deb
wget http://www.e-nef.com/domoticz/mdah/npm_2.14.7_armhf.deb
sudo dpkg -i npm_2.14.7_armhf.deb
sudo npm install -g npm@2.x

Patientez c’est parfois long.

Etape 2 : Les paquets Debian

N’installez pas ce qui suit en tant que root mais en tant qu’utilisateur normal du système (utilisateur pi par exemple)

wget -qO - http://www.e-nef.com/domoticz/mdah/gpg.key | sudo apt-key add -
sudo nano /etc/apt/sources.list 

Puis ajoutez la ligne:

deb http://www.e-nef.com/domoticz/mdah/ /

Puis:

sudo apt-get update
sudo apt-get install MyDomoAtHom

Notez que le logiciel fait partie des paquets Debian et qu’a ce tire il sera mis à jour pas vos prochains apt-get upgrade.

Editez /etc/mydomoathome/config.json avec vos paramètres de Domoticz.

Le fichier est découpé en 2 blocs l’un concernant Domoticz et débutant par

 "domoticz": { et finissant par }

l’autre bloc commence juste aprs le } fermant et contient passcode et port.

sudo /etc/mydomoathome/config.json

Cela fonctionne en mode « clef »: »valeur ». Les valeurs par défaut sont:

{
  "app_name": "MyDomoAtHome",
  "auth": null,
   "domoticz": {
    "ssl": false,
    "host": "127.0.0.1",
    "port": "8080",
    "path": "/",
    "auth": null,
  },
  "port": "3002",
  "passcode": ""
}
  • En multi-instances: le champ app_name  doit être différent entre les instances
  • Pour changer le port de MDAH: changer le port (ici 3002) Ne le changez pas sauf si vous en avez besoin.
  • Code des protected devices: changer passcode ci-dessus pour accéder au matériel protégé de Domoticz.
  • Accéder à domoticz en mode ssl: changer domoticz:port et mettre ssl à true
  • Changer le host ou port de domoticz:  Si Domoticz et MyDomoAtHome se trouvent sur la même machine, laissez host et port à 127.0.0.1 et 8080 (ne changez le 8080 que si vous l’avez modifié dans la config Domoticz)
  • Ajouter un login/pass pour accéder à MDAH: changer le champs « auth »: null   de la 2eme ligne en « auth »: { « username »: « mot de passe admin », « password »: « password admin » },
  • Donnez vos login/pass de domoticz dans le  « auth »: { « username »: « mot de passe Domoticz », « password »: « password domoticz » },
  • Laissez le  domoticz:path tel qu’il est.

Relancez le service

sudo service mydomoathome restart

Testons

Ouvrez un navigateur vers l’adresse de votre raspberry sur le port 3002.

Si mon Domoticz est en 192.168.1.81 je fais donc 192.168.1.81:3002, on doit tomber sur une page nommée MDAH App, your ISS gateway to Domoticz, ça marche !

Sinon vérifiez que le service est bien lancé que le port est correct dans config.json, allez lire https://github.com/empierre/MyDomoAtHome/blob/nodejs/README_FR.md  il y a d’autres tests à faire en as de problèmes.

Configuration de ImperiHome Android

Dans Imperihome sur votre smartphone il faut ajouter un « Système »

    • Allez dans « Paramètres / Mes Systèmes / Ajouter un système
    • Sélectionnez Imperihome Standard System
    • Dans « Url de base API Locale » tapez
    • http://ip_domoticz:le_port_de_la_passerelle. Rappel c’est 3002.
    • N.B (il faut taper http:// aussi devant, c’est OBLIGATOIRE)

Validez tout cela, et donc depuis votre smartphone vous

vous devriez retrouver tous vos équipements décrits dans Domoticz dans les 3 onglets Scenes, Switches et Weather.

Comment se connecter depuis l’extérieur au travers de Imperihome à Domoticz.

Les préalables

  1. Votre FAI vous donne une ip fixe ou vous avez installé sur le Raspberry les outils pour avoir un joli nom  associé à votre ip fournie par un des services gratuits de dynamic DNS sur le net (no-ip.com par exemple http://www.framboise314.fr/une-adresse-sur-internet-pour-votre-raspberry-pi-avec-no-ip/)
  2. Vous savez faire une redirection de ports dans votre box/routeur/interface client.
  3. Si vous ne répondez pas à un de ces points, merci de vous renseigner auprès des personnes compétentes. :mrgreen:

Mise en place de la redirection de port TCP

Nous avons vu que la passerelle utilise le port 3002 sur le Raspberry, il faudra don faire une redirection d’un port quelconque vers le 3002 du Raspberry pour accède à Imperihome.

Dans l’exemple ci-dessous j’ai choisi de rediriger le port extérieur TCP 3701 (pourquoi pas) vers le 3002 du Raspberry.

Sur ma box (oui e sais je n’ai pas la même box que vous tous)  la redirection de port est faite comme cela, la règle « redirection Imperihome » relie le 3701 au 3002.

redirection_port_imperihome

Puis on assigne la règle au matériel Raspberry.

Bien entendu réferrez vous à votre propre mode d’emploi de votre routeur.

Vérification

Dans un navigateur tapez donc votre ippublique:3701/devices ou votrenomdedynamicDNS:3701/devices 

pour afficher cela :

{« devices »:[{« params »:[{« value »: »0″, »key »: »Status »}], »name »: »Alarm_Type », »type »: »DevSwitch », »id »: »30″, »room »: »Switches »},{« params »:[{« value »: »0″, »key »: »Status »}], »name »: »Alarm_Level », »type »: »DevSwitch », »id »: »31″, »room »: »Switches »},{« params »:[{« value »: »0″, »key »: »Status »}], »name »: »Switch », »type »: »DevSwitch », »id »: »32″, »room »: »Switches »}]}

 

N.B : Bien entendu le service passerelle DOIT être lancé auparavant.

Si vous obtenez une page « Delai d’attente expiré », revoyez votre redirection

Si vous n’obtenez pas les datas , vérifiez le lancement de la passerelle, les ports, vos redirections.

Et puis utilisez donc ssl partout et dans Domoticz et dans Imperihome (voir fichier de config) plus haut.

Configuration Imperihome

Dans la configuration du système à l’Url de base Externe introduisez http(s)://votre_ip ou nom :le port à atteindre depuis l’extérieur. Ex : 187.142.45.47:3701 ou ma_domotique.no-ip.com:3701.

Éventuellement si vous avez protégé l’accès à Domoticz par un couple utilisateur/mot de passe : introduisez les dans les champs en dessous : Identifiant et mot de passe.

En appuyant sur « Suivant » vous devriez vous connecter en utilisant votre redirection de port.

Afin d’être sur arrêtez le Wifi sur votre téléphone et laissez le utiliser la connexion 3G/4G.

Et voila !

Divers

  • En faisant un clic long sur un équipement on peut changer son nom affiché dans ImperiHome et donc le mot à prononcer pour activer/désactiver vocalement ce switch. Cela se trouve dans « Configuration, Définir un nom personnalisé »
  • On peut jouer avec la reconnaissance vocale pour activer les switches, les commandes vocales sont :
    • allumer [nom de l’appareil]
    • éteindre [nom de l’appareil]
    • ouvrir [nom de l’appareil]
    • fermer [nom de l’appareil]
    • scénario [nom du scénario] – Peut être personnalisé
  • Faites attention de bien donner des noms différents à vos équipements pour faciliter la reconnaissance vocale.
  • Ajoutez la passerelle Imperihome au réeseaux locaux de Domoticz si celle ci est sur une autre ip que Domoticz (pour éviter la saisie de mot de passe )

Migration d’une ancienne version.

 Désinstallation par suppression des anciens dossiers puis réinstallation comme décrit plus haut.
sudo service MyDomoAtHome.sh stop
rm /etc/init.d/MyDomoAtHome.sh
N.B Les commentaires de cet article sont définitivement fermés, merci de poser vos questions/remarques/demandes dans ce thread du forum https://easydomoticz.com/forum/viewtopic.php?f=12&t=573 que epierre, responsable du projet, suit régulièrement.

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

One Comment

  1. Merci pour ton tuto.

    Cependant ta solution de redirection de ports pour l’accès extérieur est vraiment à proscrire. Il n’y a rien de plus non sécurisé que cela.

    Il faut absolument passer par un VPN pour faire ce genre de chose!

Comments are closed.