@pierre-gilles, question avant que je me mette à la propreté du code :
J’ai purement et simplement repris le dossier de l’intégration rtsp-camera que j’ai mis dans netatmo directement.
Ensuite côté front j’ai ajouté une fonction pour récupérer le service du device dans la gestion des boxs pour faire appel à la bonne route.
Aurais-tu 10/20 minutes pour en discuter de vive voix ? Ce qui m’embête d’un côté c’est la maintenabilité de 2 codes pratiquement identiques dans le temps. Dans ce cas précis pas fan du copier/coller pur et simple avec 1 ou 2 changements seulement. D’autant qu’on est susceptible d’ajouter d’autres intégrations un jour qui utilise le même code avec seulement quelques différences potentielles.
Après j’ai peut-être fait fausse route, d’où la demande de discussion vocale / visio.
PS: @pierre-gilles en parlant des colonnes, je me suis aperçu que les colonnes ne sont pas égales en taille… la colonne du milieu est légèrement plus courte au milieu que les gauches et droites. Après Netatmo je regarderais si je peux corriger.
Ok ! L’intérêt d’ajouter ces caméras via l’intégration Netatmo et pas l’intégration caméra, c’est que c’est automatique ? Tu as un flux RTSP via Netatmo ?
Tu peux utiliser le code d’un service dans un autre service
Exemple : Le service USB est utilisé par le service Zigbee2mqtt :
const usb = this.gladys.service.getService('usb');
const usbList = await usb.list();
Premièrement, il y a les infos « wifi_strength » et « state » (« disconnect », « on », « off ») + d’autres que je n’exploite pas encore.
Ensuite le fonctionnement est particulier. Le flux initial ressemble à vpnUrl: https://prodvpn-eu-4.netatmo.net/10.255.0.3/d259xxxxxxxxxxxxx/MTU4NDDr-aMZIkmaaLLg,, (d’où l’évocation d’un appel/démo). Auquel tu ajoutes comme pour les autres caméras ${vpnUrl}/live/snapshot_720.jpg pour l’image. Mais le flux live lui est ${vpnUrl}/live/files/high/index.m3u8 dans ce cas, la partie ‹ MTU4NDDr-aMZIkmaaLLg, › change à chaque redémarrage ou déconnexion et c’est un accès par leur plateforme. Si ton gladys est sur le même réseau local que la caméra, il y a une propriété is_local: true pour y accéder en direct et il y a une double requête ${vpnUrl}/command/ping à effectuer pour obtenir l’adresse de type localUrl: http://192.168.0.10/d259xxxxxxxxxxxxx qui permet ensuite d’avoir ${localUrl}/live/snapshot_720.jpg pour l’image et soit ${vpnUrl}/live/files/high/index_local.m3u8, soit ${localUrl}/live/files/high/index.m3u8. Du coup j’ai un param ‹ CAMERA_URL › et un param ‹ CAMERA_LIVE_URL ›.
Très intéressant, mais cela veut donc dire que je dois modifier le fichier ‹ startStreaming ›
pour pouvoir avoir accès à ce « nouveau » paramètre.
Je gère les 2 et ça marche très bien ^^ D’autant que dans le futur, je souhaite ajouter l’accès aux historiques ainsi qu’à la possibilité de les télécharger … ce qui différera du service d’origine… ou pas.
Bon en écrivant ces lignes je me rend compte qu’on pourrait peut-être passer seulement par le CAMERA_URL = ${vpnUrl}/live/files/high/index.m3u8 ou ${localUrl}/live/files/high/index.m3u8 si local = true puisque c’est l’intégration qui fait le snapshot de la vidéo .
Je vais donc faire comme le service USB. Merci pour ta réponse. Et ça ne devrait pas être bloquant pour les évo futures non plus.
PS (suite) :
Alors je ne parle pas de la hauteur mais de la largeur. Par exemple à nom équivalent à la limite des doubles ligne on a ça :
C’est tout bête mais ça se joue à 1 caractère (368px pour la centrale contre 378px pour les colonnes gauches et droite), si je rajoute le ‹ n › de consigne à droite ça saute bien la ligne :
Je viens de lancer avec l’image : terdious/gladys:netatmo-features-nrv-weather
J’ai pu me connecter avec mes identifiants donnés par le site Netatmo. J’ai le message en vert dans Gladys qui confirme la connexion : Gladys est connectée à Netatmo (et j’ai bien accepté le message de Netatmo pour permettre l’accès à l’ensemble des appareils Netatmo (inclus la station météo)).
Cependant, quand je vais sur la partie Découverte, aucun appareil n’est détecté :
Aucun appareil Netatmo n’a été trouvé. Si vous possédez un Thermostat Netatmo, avez-vous bien réalisé toutes les étapes de la documentation pour enregistrer vos appareils sur l’API Netatmo ?
Un ajustement semble nécessaire sur ce message d’erreur ; la contextualisation au Thermostat n’est plus juste
Ah oui en effet !!^^ je n’avais pas penser à ce point ^^
1ere chose a regarder : clique droit => inspecter dans la page et te rendre sur l’onglet « Reseau ». Faire ensuite un refresh de la page, si tu peux me donner le resultat de la requete « discover » => onglet « réponse ». Tu peux ensuite cliquer sur le bouton « Rafraichir » et voir la requete si c est la meme chose restes en là, si different je veux bien aussi le resultat
Ensuite si tu peux/sais accéder au contener sous linux et faire un « docker logs gladys -f » et me donner le resultat apres refresh de la page et/ou clique sur « Rafraichir ». Si tu n’as rien de probants je rajouterais des logs.
PS : tu as quoi en plus de la station météo de ton côté ?
Et sinon tu confirmes que toutes les instructions étaient claires pour toi ?
Merci @Terdious pour tout le boulot abattu!
Si je puis me permettre, trois petites coquilles dans la page ‹ configuration ›:
‹ Vous n’avez rien à configurer, ces scopes sont automatiquement intégrés et vous seront exposés ›.
Plus bas, le dernier ‹ exposées › ne prend pas de ‹ s ›
Bon courage pour la suite !
Alors j’ai refais le test plein et entier à partir de l’image docker. Le « bug » est aussi dans la 1ère version :
A la 1ère connexion, obligé de cliquer 2 fois sur « Sauvegarder et connecter »
1 fois connecté, si on se rend aussitôt sur la page « Découverte Netatmo », en effet « Gladys est connectée à Netatmo » et aucun appareil visible. Dans l’inspecteur sur la requete « discover », j’ai :
@Terdious Par rapport à la documentation, j’avais pas vu mais certaines images sont énormes ! J’ai reçu une alerte de ahrefs (un tool de SEO que j’utilise), qui m’avertit que 2 images sont trop grosses :
Oups sorry !! J’avoue que sur de l’imprim-écran, je n’ai pas pensé que ça pouvait être aussi gros !
Je te fais la modif demain !
EDIT: Je viens de regarder, en effet il n’y a que ces 2 là, je ne comprends pas comment il peut y avoir une telle différence … elle font la même dimension que les autres qui font entre 150 et 250ko !!!
Ok, donc tu as visiblement quelque chose qui diffère (c’est une bonne chose) au niveau de la récupération des devices. Ca manque de logs, je vais ajouter ce qu’il faut et te refais signe.
Si tu veux également, on peut passer par un accès à ton installation que tu peux activer/désactiver comme tu le souhaites.
Voici les nouvelles logs (rappel : j’ai rafraichi hier l’identifiant et le secret client) :
2024-02-07T11:04:46+0100 <error> netatmo.loadDevices.js:40 (NetatmoHandler.loadDevices) e.status: undefined e.data.error { code: 3, message: 'Access token expired' }
2024-02-07T11:04:46+0100 <error> index.js:15 (process.<anonymous>) unhandledRejection catched: Promise {
<rejected> TypeError: expecting an array or an iterable object but got [object Null]
at apiRejection (/src/server/services/netatmo/node_modules/bluebird/js/release/promise.js:10:27)
at MappingPromiseArray.init (/src/server/services/netatmo/node_modules/bluebird/js/release/promise_array.js:64:19)
at MappingPromiseArray._asyncInit (/src/server/services/netatmo/node_modules/bluebird/js/release/map.js:37:10)
at _drainQueueStep (/src/server/services/netatmo/node_modules/bluebird/js/release/async.js:97:12)
at _drainQueue (/src/server/services/netatmo/node_modules/bluebird/js/release/async.js:86:9)
at Async._drainQueues (/src/server/services/netatmo/node_modules/bluebird/js/release/async.js:102:5)
at Immediate.Async.drainQueues [as _onImmediate] (/src/server/services/netatmo/node_modules/bluebird/js/release/async.js:15:14)
at processImmediate (node:internal/timers:476:21)
}
2024-02-07T11:04:46+0100 <error> index.js:16 (process.<anonymous>) TypeError: expecting an array or an iterable object but got [object Null]
at apiRejection (/src/server/services/netatmo/node_modules/bluebird/js/release/promise.js:10:27)
at MappingPromiseArray.init (/src/server/services/netatmo/node_modules/bluebird/js/release/promise_array.js:64:19)
at MappingPromiseArray._asyncInit (/src/server/services/netatmo/node_modules/bluebird/js/release/map.js:37:10)
at _drainQueueStep (/src/server/services/netatmo/node_modules/bluebird/js/release/async.js:97:12)
at _drainQueue (/src/server/services/netatmo/node_modules/bluebird/js/release/async.js:86:9)
at Async._drainQueues (/src/server/services/netatmo/node_modules/bluebird/js/release/async.js:102:5)
at Immediate.Async.drainQueues [as _onImmediate] (/src/server/services/netatmo/node_modules/bluebird/js/release/async.js:15:14)
at processImmediate (node:internal/timers:476:21)
Pour la station météo, standby, je vais devoir ajouter des selecteurs du type d’installation. Comme j ai au moins 1 equipement de chaque, je ne pouvais pqs le voir, mais l’installation de @PhilippeMA démontre que pour la station meteo et les homecoachs, le fonctionnement diffère lorsqu’on a un seul type d équipement.
J’ai usé de l’occasion pour refaire un nouveau test complet de 0. Tout fonctionne parfaitement !!
Vanne en demande de chauffe (en passant par la température de consigne dans Gladys) :
Après 2 minutes, le thermostat passe en demande de chauffe également pour allumer la chaudière (bien sûr presque instantané dans l’application … vivement la PR sur les webhooks ^^) :