Android Shortcut comment exécuter une action depuis votre mobile

Cette article est né suite à une problématique que je rencontrais.
Pour pouvoir ouvrir ma porte de garage afin que le facteur puisse déposer mes colis, je devais, une fois la notification de sonnerie reçue en cas d’absence, effectuer les manipulations suivantes :

  • Ouvrir l’app Home Assistant
  • Me rendre dans le bon lovelace
  • Ouvrir le bon onglet
  • Cliquer sur une image pour activer un input boolean
  • Valider l’opération en déplaçant le curseur de l’input de off vers on
  • Bref une fois sur deux le facteur était parti si je ne réagissais pas assez vite…

J’ai donc voulu un système rapide, ce qui m’a donc amené à rechercher la possibilité d’envoyer des requêtes HTTP directement depuis mon écran d’accueil. C’est ici qu’intervient l’app HTTP Request Shortcuts que nous verrons plus en détail ci-dessous.

Je l’ai couplée à Node-red avec un flow pour la transition vers Home Assistant, mais grace a @royto nous pouvons aussi utiliser Home Assistant directement.

Prérequis.

Matériels utilisés.

  • Version de HA : V113.2.
  • Node-red (docker) V1.1.2

Installation / configuration.

Je ne détaillerai pas ici la procédure pour installer l’app android via le playstore ni celle de l’installation de Node-red déjà abordée sur le ici.

Configuration de l’application mobile :

  1. Appuyez sur le bouton + en bas à droite pour créer un nouveau raccourci.
    Cliquez sur Créer un nouveau raccourci
  2. Entrez l’url, soit comme ceci avec le add-on, soit du type https://node-red.xxx.com/facteur.
    Pour ma part j’ai Node-red sur docker avec un dns configuré et la redirection de port
    effectuée dans le dns ce qui m’évite de devoir renseigner le port.
  3. Nommez votre raccourci comme souhaité (ex : facteur).
  4. Insérez votre raccourci sur votre écran d’accueil (de préférence dans un dossier pour ne pas
    cliquer dessus malencontreusement).

Configuration de Home assistant :

Créez un input_boolean dans votre configuration.yaml (cfr la doc) oui via l’interface configuration entrées :

input_boolean:
  facteur:
    name: Facteur
    icon: mdi:door

Exemple avec Home Assistant. Merci a @royto

Il est possible de d’exécuter une action depuis votre mobile sans avoir besoin de NodeRed.

En effet, cela est supporté de manière native par Home Assistant. Il suffit de créer une automatisation avec un trigger de type Webhook.

Un webhook permet d’appeler HA sur une adresse dédiée que l’on définit via le webhook_id.

Ci joint un exemple d’une automatisation qui créé un notification.

- id: '1597059864912'
  alias: AAA Test Webhook
  description: ''
  trigger:
  - platform: webhook
    webhook_id: test
  condition: []
  action:
  - data:
      message: coucou webhook
    service: persistent_notification.create
  mode: single

Ici nous avons défini un webhook avec un id test. On peut alors faire une requête HTTP POST sur l’url https://your-home-assistant:8123/api/webhook/test

Exemple avec Node-red :

Le flow est assez simple :

La configuration du node call service de Home Assistant :

Le flow en question :

[{"id":"fc6c511e.48d97","type":"http in","z":"dc99b2ac.47e69","name":"","url":"facteur","method":"get","upload":false,"swaggerDoc":"","x":210,"y":480,"wires":[["4df489d7.507288","6f6005be.81ab4c"]]},{"id":"4df489d7.507288","type":"http response","z":"dc99b2ac.47e69","name":"","statusCode":"200","headers":{},"x":300,"y":540,"wires":[]},{"id":"6f6005be.81ab4c","type":"api-call-service","z":"dc99b2ac.47e69","name":"","server":"d6c87e34.afcee","version":1,"debugenabled":false,"service_domain":"input_boolean","service":"turn_on","entityId":"input_boolean.facteur","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":480,"y":480,"wires":[[]]},{"id":"d6c87e34.afcee","type":"server","z":0,"name":"Home Assistant ip","legacy":false,"addon":false,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true}]

Conclusion.

Vous pouvez donc maintenant créer des raccourcis aussi pour exécuter des scènes ou automations.

Si tout s’est déroulé correctement il vous reste à cliquer sur l’icône de votre écran d’accueil pour exécuter l’action.
Vous pouvez néanmoins tester l’url au préalable sur votre pc pour vérifier son bon fonctionnement.
Le node call service sur Node-red doit aussi vous afficher l’heure de déclenchement si tout est correct.

Trucs & astuces.

  • Vide

Sources :

To Do List:

  • Vide

Mise A Jour:

  • 02/12/2020 : V2 Ajout méthode Home Assistant @royto @McFly
  • 06/08/2020 : V1 Création de l’article @DcJona
1 J'aime

Donc, si je comprends bien, ton instance nodered est directement accessible depuis Internet sans aucun contrôle. Ca ne te parait pas risqué en matière de sécurité?

Je comprends le côté pratique de la chose, mais…

GV

1 J'aime

Bonjour j’ai une erreur Cannot GET /facteur pourtant j’ai suivi le tuto.
merci

Bonjour,

Merci pour ce tutoriel très instructif qui permet de découvrir une voie de communication avec Home Assistant :heart_eyes:.

Moi j’utilise directement les widgets de l’application officielle :

Elle permet de faire tout ce que l’on veut, et depuis quelques mise a jour, la sélection de plusieurs entités sans avoir à les écrire est apparue.

J’ai actuellement, un widget pour couper l’alarme, mettre l’alarme, allumer une lumière, une autre lumière, ouvrir le portail, la porte de garage, fermer les volets de l’étage, etc…

Çà prend 1min à ajouter à son écran et on a un retour d’information de la requête, et pas besoin de passer par NodeRed ou autre programmation (utile pour les débutants ou allergiques à la programmation :wink:).

J’attend avec impatience le faire de pouvoir vraiment choisir son icône car pour l’instant limité à 4.

widget1 widget2 widget

2 J'aime

Bonsoir j’ai essayé de faire comme toi mais j arrive à mettre qu’un seul icône d’action. Merci @Clemalex

Bonsoir @M_nu62880, je ne comprend pas ton commentaire.

Tu ne peux pas ajouter plus d’un widget c’est ça ?

Pour info, j’utilise le bureau d’accueil Nova Launcher car il permet de redimensionner les widget

1 J'aime

Bonjoir

@golfvert comment s y prendre pour sécuriser tout ça ?

Exact cela peut paraitre risque mais si tu configure correctement ton firewall les risques diminues…
apres le risque 0 n’existe pas

J’ai deux choses en place:

  • un VPN qui se termine sur mon firewall et qui me permet ensuite d’aller sur tout le LAN quand j’ai besoin d’interagir avec les divers systèmes. Ca ne permet pas une connexion simple et rapide comme la solution de @DcJona mais, c’est vraiment sécurisé
  • j’ai un bot avec telegram qui me permet d’envoyer des ordres à NodeRed. L’intérêt de cette solution, c’est qu’il s’agit d’une connexion sortante unique vers telegram et pas un port réseau ouvert à tous les vents.

Dans ce cas, à part ouvrir le port 1880 depuis tout internet, tu n’as pas vraiment d’autre contrôle sur ton firewall. Et même si le risque 0 n’existe pas, c’est vrai, faire ce genre de chose (port ouvert direct), c’est aller contre les bonnes pratiques en matière de sécurité. Comme le forum a l’air de rassembler pas mal de débutants, c’est ce que j’ai voulu indiquer. C’est très pratique mais pas vraiment à recommander.

Voir à ce sujet, une question posée sur le forum de node red: https://discourse.nodered.org/t/is-http-node-secure/34432

exact c’est pourquoi je pense m’orienter vers le widget ha qui sont plus simple et secure :wink:

C’est à dire?
Ca ne va pas t’obliger à avoir une connexion entrante directe vers HA? Que ce soit vers NR ou HA, à mon avis, les connexions entrantes directes sans VPN ou sans proxy sont à éviter.

Je pense que ce que voulais dire @DcJona, c’est que si l’application officielle permet de le faire, autant l’utiliser elle en se disant que les développeurs ont bien fait leur travail de sécurisation des données.

HS :
Même derrière un VPN, on est pas protégé. Surtout que la plupart des personnes, si tu leur parle VPN, ils prendront un fournisseur VPN à qui on ne sais pas ce qu’il fait de tes données (surtout si on fait pas attention où est le siège social).

Je préfère me dire que mes opérateurs français (box/téléphone), ne sont pas assez stupide pour se permettent de déchiffrer des connexions sécurisées …

Ce n’est que mon avis

Fin HS.

Désolé pour le HS

Waip.exacte. je me dis que les devs ont fait leur boulot correctement et donc que via îles widgets de l’appli mobile ce devrait le faire.
Après tu accédes comment a ha de l’extérieur si tu veux pas ouvrir un DNS vers ton ip Locale?

1 J'aime

Derrière ma box (je n’ai pas pu enlever la livebox 4 d’Orange et garder tv/téléphone/…), j’ai un firewall opnsense. Sur ce firewall, j’ai configuré un serveur VPN. Pour le fun, j’ai rajouté une fonction de One Time Password (avec opnsense en suivant les tutos pas à pas c’est faisable) dessus. Donc, si je veux me connecter à mon LAN j’ouvre une session VPN depuis mon pc/mac/smartphone vers le firewall.
Et le VPN, c’est moi qui le gère. Je ne parle pas d’un fournisseur de VPN genre HMA ou autre…
Ca, c’est plutôt pour masquer des connexions sortantes quand tu as un trafic incompatible hadopi :slight_smile:

C’est une façon de voir les choses. Etant responsable infra dans mon entreprise (et donc des aspects sécurité info) je me vois pas ouvrir même une appli même « bien faite » en direct depuis Internet. Ni à mon taf, ni chez moi. Mais, bon, après il faut choisir ou on met la barre.
La discussion est partie de l’ouverture de NR depuis Internet en direct. Et ça, je pense que la barre est trop basse.

Entièrement d’accord.