Geeek - Le blog Geek & High-tech

Nous avons de plus en plus d'objets connectés, la question est comment s'assurer de leur bon fonctionnement ? Voici un exemple de flow simple mis en oeuvre sur Node-Red pour vérifier la disponibilité de ses objets connectés et être immédiatement averti en cas de problème.
J'utilise pour cela le nœud "Ping" disponible sur le portail de Node-Red. Ce nœud peut s'installer très rapidement au travers de la commande suivante:

$ npm install node-red-node-ping

Il est aussi possible d'utiliser le plugin Ping Advanced, plus riche en fonctionnalités, mais mis à jour il y a plus d'un an.

node-red-flow-ping.png

  • Première étape, le serveur ping l'ensemble des objets et le DNS de Google pour s'assurer de la connectivité à Internet.
  • Seconde étape, si un ping échoue et retourne "false", je construis un SMS et un email que j'envoie dans une limite de 5 messages par heure et 10 par jour.

Pour l'envoi du SMS, j'utilise le flow Node-Red précédemment décrit sur ce blog.

Voici le flow en détail pouvant être directement importé dans Node-Red via la fonction d'import disponible dans le menu de l'application :

[
  {
    "id": "9eb4b49c.614b48",
    "type": "ping",
    "name": "Check Internet",
    "host": "8.8.8.8",
    "timer": "60",
    "x": 114,
    "y": 74,
    "z": "38ba78b3.c74588",
    "wires": [
      [
        "12de3311.ed21cd"
      ]
    ]
  },
  {
    "id": "ebb458eb.144ba8",
    "type": "ping",
    "name": "Check Karotz",
    "host": "192.168.1.6",
    "timer": "60",
    "x": 111,
    "y": 118,
    "z": "38ba78b3.c74588",
    "wires": [
      [
        "12de3311.ed21cd"
      ]
    ]
  },
  {
    "id": "59174860.a6e8b8",
    "type": "ping",
    "name": "Check Arduino",
    "host": "192.168.1.4",
    "timer": "60",
    "x": 113,
    "y": 164,
    "z": "38ba78b3.c74588",
    "wires": [
      [
        "12de3311.ed21cd"
      ]
    ]
  },
  {
    "id": "46b5d3a9.b94a2c",
    "type": "ping",
    "name": "Check Switch",
    "host": "192.168.1.1",
    "timer": "60",
    "x": 111,
    "y": 210,
    "z": "38ba78b3.c74588",
    "wires": [
      [
        "12de3311.ed21cd"
      ]
    ]
  },
  {
    "id": "9b7fa33e.64806",
    "type": "ping",
    "name": "Check Freebox",
    "host": "192.168.1.254",
    "timer": "60",
    "x": 117,
    "y": 254,
    "z": "38ba78b3.c74588",
    "wires": [
      [
        "12de3311.ed21cd"
      ]
    ]
  },
  {
    "id": "12de3311.ed21cd",
    "type": "switch",
    "name": "",
    "property": "payload",
    "rules": [
      {
        "t": "false"
      }
    ],
    "checkall": "true",
    "outputs": 1,
    "x": 402,
    "y": 150,
    "z": "38ba78b3.c74588",
    "wires": [
      [
        "feeab731.011548"
      ]
    ]
  },
  {
    "id": "feeab731.011548",
    "type": "delay",
    "name": "",
    "pauseType": "rate",
    "timeout": "1",
    "timeoutUnits": "hours",
    "rate": "5",
    "rateUnits": "hour",
    "randomFirst": "1",
    "randomLast": "5",
    "randomUnits": "seconds",
    "drop": false,
    "x": 572,
    "y": 151,
    "z": "38ba78b3.c74588",
    "wires": [
      [
        "95c19115.6a3e7"
      ]
    ]
  },
  {
    "id": "95c19115.6a3e7",
    "type": "delay",
    "name": "",
    "pauseType": "rate",
    "timeout": "4",
    "timeoutUnits": "seconds",
    "rate": "10",
    "rateUnits": "day",
    "randomFirst": "1",
    "randomLast": "5",
    "randomUnits": "seconds",
    "drop": false,
    "x": 737,
    "y": 150,
    "z": "38ba78b3.c74588",
    "wires": [
      [
        "17b9866d.e8467a"
      ]
    ]
  },
  {
    "id": "6aa677bb.955988",
    "type": "http request",
    "name": "SMS Alert Ludovic",
    "method": "GET",
    "ret": "txt",
    "url": "https://localhost:8080/api/sendsms?phone=0642340922&msg={{{payload}}}",
    "x": 1168,
    "y": 157,
    "z": "38ba78b3.c74588",
    "wires": [
      []
    ]
  },
  {
    "id": "17b9866d.e8467a",
    "type": "template",
    "name": "Ping message",
    "field": "payload",
    "format": "handlebars",
    "template": "Serveur {{topic}} indisponible ! ",
    "x": 919,
    "y": 157,
    "z": "38ba78b3.c74588",
    "wires": [
      [
        "6aa677bb.955988",
        "da3155a.f25cea8"
      ]
    ]
  },
  {
    "id": "da3155a.f25cea8",
    "type": "e-mail",
    "server": "smtp.gmail.com",
    "port": "465",
    "name": "xx",
    "dname": "Email Alert",
    "x": 1149,
    "y": 209,
    "z": "38ba78b3.c74588",
    "wires": []
  },
  {
    "id": "7490e004.8b6f2",
    "type": "comment",
    "name": "Ping toutes les 60 secondes",
    "info": "",
    "x": 157,
    "y": 30,
    "z": "38ba78b3.c74588",
    "wires": []
  },
  {
    "id": "9740b72f.68bf48",
    "type": "comment",
    "name": "Si KO",
    "info": "",
    "x": 401,
    "y": 98,
    "z": "38ba78b3.c74588",
    "wires": []
  },
  {
    "id": "cf2d3049.30d2d",
    "type": "comment",
    "name": "Anti-Spam",
    "info": "",
    "x": 559,
    "y": 95,
    "z": "38ba78b3.c74588",
    "wires": []
  },
  {
    "id": "e289635a.1d76a",
    "type": "comment",
    "name": "Construction du message",
    "info": "",
    "x": 923,
    "y": 97,
    "z": "38ba78b3.c74588",
    "wires": []
  },
  {
    "id": "ab74252b.548bd8",
    "type": "comment",
    "name": "Transmission",
    "info": "",
    "x": 1150,
    "y": 99,
    "z": "38ba78b3.c74588",
    "wires": []
  }
]

Ce flow vous permettra de vous assurer que vos objets connectés sont correctement allumés et disponibles, en cas de problème vous serez immédiatement averti par SMS et email.


Vous êtes correctement abonné à Geeek
Bienvenue ! Vous êtes correctement connecté.
Parfait ! Vous êtes correctement inscrit.
Votre lien a expiré
Vérifiez vos emails et utiliser le lien magique pour vous connecter à ce site