Détecter une perte d'Internet supérieure à 2 heures en utilisant un ping

Chers amis,

A la campagne, je n’utilise plus la box de mon fournisseur Internet, mais un bypass, c’est à dire mon propre matériel. Je conserve uniquement le connecteur fibre de mon fournisseur. Quand je perds l’Internet une fois tous les deux mois, je dois basculer OFF/ON la prise du connecteur fibre et j’aimerais le faire automatiquement dans Home Assistant.

Dans Home Assistant, j’ai un objet ping 8.8.8.8 pour pinger Google, ce qui m’indique la présence d’Internet. Je pingue églement mon routeur pour vérifier que le réseau local est bien là.

J’aimerais programmer l’action suivante : Si 8.8.8.8 répond déconnecté durant plus de 2 heures et si le routeur n’est pas disponible, alors basculer la prise.

J’ai programmé cela dans Home Assistant, quand je sélectionne 8.8.8.8 avec une durée de 2 heures, ma prise est basculée toutes les 2 heures, donc je suppose qu’il comprend durée comme « au bout de » 2 heures. Donc cela expliquerait que ma prise soit basculée automatiquement toutes les 2 heures dès que Google n’est plus accessible par ping. Voici la copie d’écran :

Comme détecter une perte d’Internet depuis plus de 2 heures en utilisant un ping ?

Cordialement,
Kellogs

hello,

on ne voit pas le routeur, tu peux mettre le yaml de l’automatisation complète?

dans les balises image

cdt

Salut
j’aurai mis ça

trigger: state
entity_id:
  - binary_sensor.ping_ordi
to: "off"
for:
  hours: 2
  minutes: 0
  seconds: 0

Salut

Tu as défini un déclencheur. Maintenant tu peux rajouter une condition « Si » le routeur n’est pas disponible.
Et ensuite tu rajoutes une action basculer la prise.

Bonjour,

Je poste le fin de l’automatisation qui pose problème :

Dont voici le code :

alias: Perte d'Internet plus de 2 heures
description: ""
triggers:
  - type: not_connected
    device_id: b486ccf2261171d4fed61be85915f213
    entity_id: 2d028ca184b657163a0cd9f467e3d731
    domain: binary_sensor
    trigger: device
    for:
      hours: 2
      minutes: 0
      seconds: 0
conditions:
  - type: is_connected
    condition: device
    device_id: 82bc402b49c5facd5c3e8bc821bb14c4
    entity_id: ef02891a2d26b0daf63957a8b281850d
    domain: binary_sensor
    for:
      hours: 0
      minutes: 2
      seconds: 0
actions:
  - action: switch.turn_off
    metadata: {}
    data: {}
    target:
      device_id:
        - 85d3fd304c6de5d20e00c60b3e6432ca
  - delay:
      hours: 0
      minutes: 0
      seconds: 10
      milliseconds: 0
  - action: switch.turn_on
    metadata: {}
    data: {}
    target:
      device_id:
        - 85d3fd304c6de5d20e00c60b3e6432ca
mode: single

Et ici le log qui montre que la prise était basculée sans cesse sur ON/OFF toutes les 2 heures :

Merci de vos lumières !

Je sèche complètement pour comprendre pourquoi cela ne fonctionne pas.

Si la récurrence de perte est régulière, une fois tout les deux mois, connais-tu la raison ?
Si c’est régulier et que tu ne peux pas empêcher ce problème hormis le Power Off/On
Programme ta prise pour faire un Off/On tous les x jours pour anticiper cette coupure.
Oui c’est un peu plus bourrin, mais moins dur a programmer :smile:

hello,

beaucoup plus simple que d’attendre 2 heures, tu rajoutes l’intégration


et tu teste si le sensor.myip a un status « unavailable », si c’est le cas, c’est que internet est down, sinon, il te retourne ton IP.
On peut imaginer plein de chose avec cette intégration, par exemple si tu n’es pas en IP fixe, tu peux t’en servir pour remettre tes accès externe lors du changement d’IP par exemple, etc…

Je dispose d’un résolveur DNS local avec un cache. Donc la réponse du résolveur DNS ne présume pas de la disponibilité ou non de l’Internet.

Pinger 8.8.8.8 me convient, ce que je ne comprends pas c’est pourquoi cela ne fonctionne pas. J’ai simplifié la règle (en limitant à la seule condition de 2 heures) pour faire un test aujourd’hui :

alias: Perte d'Internet plus de 2 heures
description: ""
triggers:
  - type: not_connected
    device_id: b486ccf2261171d4fed61be85915f213
    entity_id: 2d028ca184b657163a0cd9f467e3d731
    domain: binary_sensor
    trigger: device
    for:
      hours: 2
      minutes: 0
      seconds: 0
conditions: []
actions:
  - action: switch.turn_off
    metadata: {}
    data: {}
    target:
      device_id:
        - 85d3fd304c6de5d20e00c60b3e6432ca
  - delay:
      hours: 0
      minutes: 0
      seconds: 10
      milliseconds: 0
  - action: switch.turn_on
    metadata: {}
    data: {}
    target:
      device_id:
        - 85d3fd304c6de5d20e00c60b3e6432ca
mode: single

Je vous tiens au courant en fin de journée si cela fonctionne.

Le script fonctionne, merci.