Problème zwave et google home

Hello !
Ça fait quleques temps où je rencontré un soucis notamment avec des appareils zwave.

Lorsque je demande à Google d’éteindre avec la voix, elle me répond ok j’éteins mais rien ne se passe en revanche si je le fait via l’app (google ou gladys) c’est OK.

Ou parfois ma lumière s’éteint mais elle se rallume aussitôt puis s’éteint de nouveau bref ^^’.

En vérifiant, j’ai trouver ceci dans mes logs, mais j’ai jamais été voir juste après un ‘incident’.

2022-02-24T19:18:17+0100 <warn> gateway.forwardDeviceStateToGoogleHome.js:41 (sendCurrentState) Gladys Gateway: Unable to forward google home reportState
2022-02-24T19:18:17+0100 <warn> gateway.forwardDeviceStateToGoogleHome.js:42 (sendCurrentState) Error: getaddrinfo EAI_AGAIN api.gladysgateway.com
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:71:26) {
  errno: -3001,
  code: 'EAI_AGAIN',
  syscall: 'getaddrinfo',
  hostname: 'api.gladysgateway.com',
  config: {
    url: 'https://api.gladysgateway.com/google/report_state',
    method: 'post',
    data: '{"devices":{"states":{"mqtt-zwave-chambre-enfant-plafonnier":{"online":true,"on":false}}}}',
    headers: {
      Accept: 'application/json, text/plain, */*',
      'Content-Type': 'application/json;charset=utf-8',
      authorization: 'iYi05OTFkLTM3OTczMmZkYjdlZSIsImlhdCI6MTY0NTcyNTk5MCwiZXhwIjoxNjQ1NzI5NTkwLCJhdWQiOiJp.hddKDhIiF4znPRHKBU8-E84bhHyGBKy142ScP_vJjm0',
      'User-Agent': 'axios/0.21.1',
      'Content-Length': 90
    },

Côté dns pas de requête bloqué pourtant :thinking:

Ce genre d’erreur est plutôt clair, c’est un souci de DNS.

Ce qui est intéressant, c’est qu’on remarque une chose: il y a des dizaines de demande de résolution DNS à la suite, sans aucun respect du TTL que je donnes car il y a parfois 2 demandes dans la même seconde !

J’en conclus que Gladys re-demande continuellement l’adresse du serveur du Gateway, à chaque requête. Pas fou !

En enquêtant, cela ressemble à un problème connu sur internet :

While working on big node eCOM backend that had a lot of traffic, from time to time we found getaddrinfo EAI_AGAIN error in our logs, quick googling explains that this means that our dns server can’t currently serve our request.

(Cf cet article: How to fix nodejs DNS issues?. Networking issues are always most… | by Aleksandar Mirilovic | Medium )

Et en enquêtant plus, je suis tombé sur ça :

EDIT: Ce comportement est par design: Problème zwave et google home - #6 by pierre-gilles

En gros, visiblement l’image Docker Node.js alpine que l’on utilise comme base pour Gladys (cf Dockerfile ) n’a pas de package qui gère le cache DNS, et ainsi chaque requête fait sa propre résolution DNS: un peu lourd ^^

Je continue d’enquêter sur le souci pour trouver le bon package à rajouter côté Docker.

cc @VonOx ça va t’intéresser :slight_smile:

@spenceur Merci du retour ! On va fixer ça !

1 Like

Du coup le problème dns que je rencontre provient de l’ano sur l’image node ou de adguard qui bloque à un instant T ?

Merci de ta réponse

Dur de dire, ça peut venir de plusieurs points :

  • Localement, le service de résolution DNS local qui se prend les pieds dans le tapis car il y a trop de demandes en un faible temps
  • Adguard qui a du mal à répondre à la charge, vu que comme on peut voir, adguard est contacté pour chaque requête

Juste pour être sûr que ça vient de nous et pas de ton installation, tu as fais quoi comme configuration précise au niveau DNS sur ton Pi ?

Si je ne me trompe pas, j’ai juste ajouter dans le résolve.conf cette variable

static domain_name_servers
C’était il y a un moment ^^’

Je suis tombé sur ce genre de commentaires :

Donc je comprend mieux pourquoi le TTL n’est pas respecté ( autant dans l’image Docker Alpine que sur le Debian de Raspberry Pi OS ), ce n’est pas un bug c’est by design sur la plupart des systèmes Linux

@spenceur Est-ce que tu pourrais désactiver temporairement sur Gladys l’utilisation de ton Adguard (et remplacer par un DNS populaire genre Cloudflare DNS ( 1.1.1.1 ) ), et voir si tu continue à voir ces erreurs.

→ Si tu continue à voir ces erreurs, ça voudra dire que ton Adguard n’est pas en cause. On est peut-être trop agressif côté Gladys dans la fréquence d’appel du Gladys Gateway pour le reportState de Google Home

→ Si tu ne vois plus d’erreurs, c’est que ton Adguard a quelques soucis à répondre par moment.

PS: Si tu change de DNS, pense à bien vérifier que le nouveau DNS est bien utilisé.

Je m’en occuperais des que possible et je vous tiendrais au courant

PS: je n’ai tjrs pas pris le temps :smiley:

1 Like

J’ai fais la manipulation comme je le disais ici :

Et j’ai bien vérifier que je passais bien par quad9:

Plus qu’a voir si je rencontre les mêmes soucis sur du moyen terme

1 Like

Top ! Tiens nous au courant, j’espère que ça va résoudre le problème :slight_smile:

1 Like

bon finalement je peu répondre même sous quad9, j’ai une erreur qui pop :

2022-03-22T20:58:10+0100 <warn> gateway.forwardDeviceStateToGoogleHome.js:41 (sendCurrentState) Gladys Gateway: Unable to forward google home reportState
2022-03-22T20:58:10+0100 <warn> gateway.forwardDeviceStateToGoogleHome.js:42 (sendCurrentState) Error: getaddrinfo EAI_AGAIN api.gladysgateway.com
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:71:26) {
  errno: -3001,
  code: 'EAI_AGAIN',
  syscall: 'getaddrinfo',
  hostname: 'api.gladysgateway.com',
  config: {
    url: 'https://api.gladysgateway.com/google/report_state',
    method: 'post',
    data: '{"devices":{"states":{"fgd212-dimmer-2-2":{"online":true,"brightness":99}}}}',

Fais un docker inspect gladys je suis quasi sûr que le conteneur a un dns différent.

voici ce que j’ai avec un grep sur dns

docker inspect gladys | grep -iF dns
            "Dns": [],
            "DnsOptions": [],
            "DnsSearch": [],

encore le soucis ce matin :

2022-03-23T10:22:24+0100 <warn> gateway.forwardDeviceStateToGoogleHome.js:41 (sendCurrentState) Gladys Gateway: Unable to forward google home reportState
2022-03-23T10:22:24+0100 <warn> gateway.forwardDeviceStateToGoogleHome.js:42 (sendCurrentState) Error: getaddrinfo EAI_AGAIN api.gladysgateway.com
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:71:26) {
  errno: -3001,
  code: 'EAI_AGAIN',
  syscall: 'getaddrinfo',
  hostname: 'api.gladysgateway.com',
  config: {
    url: 'https://api.gladysgateway.com/google/report_state',
    method: 'post',
    data: '{"devices":{"states":{"fgd212-dimmer-2-2":{"online":true,"brightness":99}}}}',

Aucun changement malgré le changement de dns

C’est bizarre, j’ai moi aussi quad9 par défaut.

Tu sais te connecter en interactif sur le conteneur ? L’idée ça serait de récupérer le contenu de /etc/resolv.conf

Edit:

La commande => docker exec -it gladys /bin/ash -c "cat /etc/resolv.conf"

Exemple de sortie:

vonox@odin in  ~  1 ❯ docker exec -it gladys /bin/ash -c "cat /etc/resolv.conf"
search lan
nameserver 192.168.1.1
nameserver 9.9.9.9

Yes je m’en s’occupe dans l’après midi

Merci de laisser mes messages tel quel :smiley:

Voici le retour (thx)

docker exec -it gladys /bin/ash -c "cat /etc/resolv.conf"
# Generated by resolvconf
nameserver 9.9.9.9

Je viens de vérfier ton ‘dig’

Tu n’as pas de réponse dns :confused:

Côté Quad9 le domaine est ok

De mon côté:

vonox@odin in  ~ ❯ dig api.gladysgateway.com

; <<>> DiG 9.16.1-Ubuntu <<>> api.gladysgateway.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59709
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;api.gladysgateway.com.         IN      A

;; ANSWER SECTION:
api.gladysgateway.com.  300     IN      A       142.93.160.146

;; Query time: 15 msec
;; SERVER: 9.9.9.9#53(9.9.9.9)
;; WHEN: Wed Mar 23 14:00:46 CET 2022
;; MSG SIZE  rcvd: 66

Vraiment bizarre ton PB ( je suis dans une conf similaire Quad9/Pihole )

En testant ta route

pi@raspberrypi:~ $ dig api.gladysgateway.com

; <<>> DiG 9.11.5-P4-5.1+deb10u5-Raspbian <<>> api.gladysgateway.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55078
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;api.gladysgateway.com.         IN      A

;; ANSWER SECTION:
api.gladysgateway.com.  119     IN      A       142.93.160.146

;; Query time: 50 msec
;; SERVER: 9.9.9.9#53(9.9.9.9)
;; WHEN: Wed Mar 23 14:04:12 CET 2022
;; MSG SIZE  rcvd: 66

Pas de soucis non plus ^^

Je suis pas 100 % convaincu que l’on part sur la bonne hypothèse

Merde j’étais sur l’api

dig plus.gladysassistant.com

; <<>> DiG 9.16.1-Ubuntu <<>> plus.gladysassistant.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 26101
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;plus.gladysassistant.com.      IN      A

;; ANSWER SECTION:
plus.gladysassistant.com. 300   IN      A       188.114.97.3
plus.gladysassistant.com. 300   IN      A       188.114.96.3

;; Query time: 27 msec
;; SERVER: 9.9.9.9#53(9.9.9.9)
;; WHEN: Wed Mar 23 14:06:50 CET 2022
;; MSG SIZE  rcvd: 85