Netatmo Service

Fortschritte bei Netatmo Home + Security:
Testbild verfügbar: docker pull terdious/gladys:netatmo-security-nacamera

Wann kommt 1920x1080?? :crazy_face: Oder die Wahl der Spaltenanzahl?? Leere Zeiten ^^ :sweat_smile:



@pierre-gilles, Frage, bevor ich mich an die Codebereinigung mache:
Ich habe einfach den Ordner der RTSP-Kamera-Integration übernommen und direkt in Netatmo eingefügt.
Dann habe ich auf der Frontend-Seite eine Funktion hinzugefügt, um den Dienst des Geräts in der Box-Verwaltung abzurufen, um die richtige Route aufzurufen.

Hättest du 10/20 Minuten Zeit, um darüber zu sprechen? Was mich stört, ist die Wartbarkeit von zwei praktisch identischen Codes im Laufe der Zeit. In diesem speziellen Fall bin ich kein Fan von reinem Kopieren/Einfügen mit nur 1 oder 2 Änderungen. Zumal wir eines Tages wahrscheinlich weitere Integrationen hinzufügen werden, die denselben Code mit nur wenigen potenziellen Unterschieden verwenden.

Vielleicht bin ich auch auf dem Holzweg, daher die Bitte um ein Gespräch.

PS: @pierre-gilles, als ich über die Spalten sprach, fiel mir auf, dass die Spalten nicht gleich groß sind… die mittlere Spalte ist in der Mitte etwas kürzer als die linke und rechte. Danach werde ich schauen, ob ich das bei Netatmo korrigieren kann.

Okay! Der Vorteil, diese Kameras über die Netatmo-Integration und nicht über die Kamera-Integration hinzuzufügen, ist, dass es automatisch geschieht? Hast du einen RTSP-Stream über Netatmo?

Du kannst den Code eines Dienstes in einem anderen Dienst verwenden :slight_smile:

Beispiel: Der USB-Dienst wird vom Zigbee2mqtt-Dienst verwendet:

const usb = this.gladys.service.getService('usb');
const usbList = await usb.list();

(Code: Gladys/server/services/zigbee2mqtt/lib/init.js at master · GladysAssistant/Gladys · GitHub)

Verwaltest du nur das Bild oder auch den Live-Stream?

Das ist kein Bug, das ist normal, die Höhe hängt dynamisch vom Inhalt jedes Widgets ab :slight_smile: Was ist das Problem?

Erstens gibt es die Informationen « wifi_strength » und « state » (« disconnect », « on », « off ») + andere, die ich noch nicht nutze.
Dann ist die Funktionsweise besonders. Der anfängliche Stream sieht aus wie vpnUrl: https://prodvpn-eu-4.netatmo.net/10.255.0.3/d259xxxxxxxxxxxxx/MTU4NDDr-aMZIkmaaLLg,, (daher die Erwähnung eines Anrufs/Demos). Dazu fügst du, wie bei den anderen Kameras, ${vpnUrl}/live/snapshot_720.jpg für das Bild hinzu. Aber der Live-Stream ist ${vpnUrl}/live/files/high/index.m3u8 in diesem Fall, der Teil ‹ MTU4NDDr-aMZIkmaaLLg, › ändert sich bei jedem Neustart oder bei einer Trennung und es ist ein Zugriff über ihre Plattform. Wenn dein gladys im gleichen lokalen Netzwerk wie die Kamera ist, gibt es eine Eigenschaft is_local: true für den direkten Zugriff und es gibt eine doppelte Anfrage ${vpnUrl}/command/ping, die durchgeführt werden muss, um die Adresse des Typs localUrl: http://192.168.0.10/d259xxxxxxxxxxxxx zu erhalten, die dann ermöglicht, ${localUrl}/live/snapshot_720.jpg für das Bild und entweder ${vpnUrl}/live/files/high/index_local.m3u8 oder ${localUrl}/live/files/high/index.m3u8 zu haben. Daher habe ich einen Parameter ‹ CAMERA_URL › und einen Parameter ‹ CAMERA_LIVE_URL ›.

Sehr interessant, aber das bedeutet, dass ich die Datei ‹ startStreaming ›


ändern muss, um auf diesen « neuen » Parameter zugreifen zu können.

Ich verwalte beide und es funktioniert sehr gut ^^ Umso mehr, als ich in Zukunft den Zugriff auf die Verlaufsdaten und die Möglichkeit, sie herunterzuladen, hinzufügen möchte… was sich vom ursprünglichen Dienst unterscheiden könnte… oder auch nicht.

Während ich diese Zeilen schreibe, wird mir klar, dass man vielleicht nur über den CAMERA_URL = ${vpnUrl}/live/files/high/index.m3u8 oder ${localUrl}/live/files/high/index.m3u8 gehen könnte, wenn local = true, da die Integration den Snapshot des Videos macht.
Ich werde also wie der USB-Dienst vorgehen. Danke für deine Antwort. Und das sollte auch für zukünftige Versionen nicht blockierend sein.

PS (Fortsetzung):

Also, ich spreche nicht über die Höhe, sondern über die Breite. Zum Beispiel bei einem ähnlichen Namen, fast doppelt so lang, sieht man das:


Es ist ganz einfach, aber es kommt auf ein Zeichen an (368px für die Zentrale gegen 378px für die linke und rechte Spalte), wenn ich das ‹ n › von consigne rechts hinzufüge, springt es gut in die nächste Zeile:
image
image
Ich dachte, das läge an den freien Räumen zwischen den Spalten, aber nein, es sind 27 oder 28px auf beiden Seiten.

@pierre-gilles, vielen Dank !! Insgesamt nur 3 Zeilen, um rtsp-camera aufzurufen, und es funktioniert perfekt !! :upside_down_face: :star_struck:

Hallo @Terdious,

Ich habe gerade mit dem Bild: terdious/gladys:netatmo-features-nrv-weather gestartet

Ich konnte mich mit meinen von der Netatmo-Website bereitgestellten Anmeldedaten anmelden. Ich habe die grüne Meldung in Gladys, die die Verbindung bestätigt: Gladys ist mit Netatmo verbunden (und ich habe die Netatmo-Meldung zur Genehmigung des Zugriffs auf alle Netatmo-Geräte akzeptiert, einschließlich der Wetterstation).

Allerdings, wenn ich zum Entdecken-Bereich gehe, werden keine Geräte erkannt:

Kein Netatmo-Gerät wurde gefunden. Besitzen Sie einen Netatmo-Thermostat? Haben Sie alle Schritte der Dokumentation durchgeführt, um Ihre Geräte auf der Netatmo-API zu registrieren?

Eine Anpassung dieses Fehlermeldung scheint notwendig; die Kontextualisierung auf den Thermostaten ist nicht mehr korrekt :slight_smile:

Siehst du, was schiefgehen könnte?

Hallo @PhilippeMA,

Vielen Dank, dass du dir Zeit für den Test genommen hast.

Ah ja, tatsächlich!!^^ Daran hatte ich nicht gedacht ^^

Erste Sache, die du prüfen solltest: Rechtsklick => „Inspektor“ in der Seite und zum Tab „Netzwerk“ gehen. Dann die Seite neu laden und mir das Ergebnis der Anfrage „discover“ => Tab „Antwort“ geben. Du kannst dann auf den Button „Aktualisieren“ klicken und schauen, ob die Anfrage dieselbe bleibt, falls ja, falls nein, würde ich auch gerne das Ergebnis sehen.

Danach, falls du kannst/weißt, wie man auf den Container unter Linux zugreift und einen „docker logs gladys -f“ ausführt und mir das Ergebnis nach dem Neuladen der Seite und/oder Klicken auf „Aktualisieren“ gibst. Falls du nichts Auffälliges findest, würde ich weitere Logs hinzufügen.

PS: Was hast du noch außer der Wetterstation auf deiner Seite?
Und bestätigst du, dass alle Anweisungen für dich klar waren?

Danke @Terdious für die ganze Arbeit!
Falls ich mir die Bemerkung erlauben darf, drei kleine Tippfehler auf der Seite ‹ Konfiguration ›:
‹ Sie haben nichts zu konfigurieren, diese Bereiche sind automatisch integriert und werden Ihnen werden zur Verfügung gestellt ›.
Unten steht ‹ exponiert › ohne ‹ s ›
Viel Erfolg für den Rest!

Hallo @PhilippeMA!

Also habe ich den vollständigen Test noch einmal mit dem Docker-Bild durchgeführt. Der „Bug“ ist auch in der ersten Version vorhanden:

  • Bei der ersten Verbindung muss man zweimal auf „Speichern und verbinden“ klicken
  • Sobald verbunden, wenn man sofort zur Seite „Netatmo entdecken“ geht, steht zwar „Gladys ist mit Netatmo verbunden“, aber es sind keine Geräte sichtbar. Im Inspektor bei der Anfrage „discover“ habe ich:
  • Wenn ich die Seite neu lade, erscheinen die Geräte tatsächlich!

Kannst du mir bestätigen, ob es bei dir genauso ist. Ich schaue, wie ich es korrigieren kann, und sage dir Bescheid, wenn es fertig ist, falls du es noch einmal testen möchtest!

Vielen Dank noch einmal an dich.

Hallo @GBoulvin,

Vielen Dank für deine Rückmeldungen!! Ich mache die Korrekturen im nächsten PR.

Ok, das sollte in einem separaten Thema/PR betrachtet werden :slight_smile:

Toll, gut, wenn das dein Problem löst !

@Terdious In Bezug auf die Dokumentation, ich hatte es nicht gesehen, aber einige Bilder sind riesig! Ich habe eine Benachrichtigung von ahrefs (ein SEO-Tool, das ich verwende) erhalten, die mich darauf hinweist, dass 2 Bilder zu groß sind:

Idealerweise sollten die Bilder maximal 200-300 KB groß sein :slight_smile:

Hallo @Terdious

Ich habe nicht das gleiche Verhalten wie du.

Zur Info, im Zweifel habe ich die Client-ID und das Client-Geheimnis erneuert.

Ich habe einen HTML-Rückgabecode 304.

Die Logs:


2024-02-06T19:58:20+0100 <error> netatmo.pollRefreshingValues.js:21 (NetatmoHandler.refreshNetatmoValues) Unable to load Netatmo devices TypeError: Cannot read properties of undefined (reading 'data')
    at NetatmoHandler.loadDevices (/src/server/services/netatmo/lib/netatmo.loadDevices.js:40:69)
    at NetatmoHandler.refreshNetatmoValues (/src/server/services/netatmo/lib/netatmo.pollRefreshingValues.js:15:22)

Oups, sorry!! Ich gebe zu, bei Screenshots habe ich nicht daran gedacht, dass sie so groß sein könnten!
Ich mache die Änderung morgen!

EDIT: Ich habe gerade nachgeschaut, tatsächlich sind es nur diese beiden, ich verstehe nicht, wie ein solcher Unterschied entstehen kann… sie haben die gleiche Größe wie die anderen, die zwischen 150 und 250 KB groß sind!!!

Okay, du hast offensichtlich etwas, das sich unterscheidet (das ist gut) bei der Geräterückgewinnung. Es fehlen Logs, ich werde das Nötige hinzufügen und melde mich dann wieder.

Falls du möchtest, können wir auch über einen Zugriff auf deine Installation gehen, den du aktivieren/deaktivieren kannst, wie du es möchtest.

@PhilippeMA,

Ein Image wird gerade gebaut, nur mit Zugriff auf die Logs. Du kannst es aktualisieren, wenn du kannst.

Hier sind die neuen Logs (Erinnerung: Ich habe gestern die Client-ID und das Client-Geheimnis aktualisiert):

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)

Ah, hast du nochmal auf Speichern geklickt?
Auf deiner Webseite solltest du beim Inspektorieren einen Fehler haben!

Aber laut der Fehlermeldung ist deine Version wahrscheinlich nicht aktuell. Ich habe das auf dem neuen Bild geändert.

@pierre-gilles,
Du kannst den PR PR n°1 : Add support for NRV module type - Energy / Valves by Terdious · Pull Request #2014 · GladysAssistant/Gladys · GitHub überprüfen, wann immer du möchtest.

Für die Wetterstation, Standby, ich muss Selektoren für den Installationstyp hinzufügen. Da ich mindestens ein Gerät von jedem Typ habe, konnte ich das nicht sehen, aber die Installation von @PhilippeMA zeigt, dass die Wetterstation und die Homecoachs unterschiedlich funktionieren, wenn nur ein Gerätetyp vorhanden ist.

@Terdious Review gemacht :white_check_mark: Alles gut für mich!

Allerdings habe ich nur eine „technische“ Durchsicht gemacht, keinen Funktionalitätstest.

Wenn du bestätigst, dass es richtig funktioniert, vertraue ich dir und ich merge in die Produktion :slight_smile:

Denk daran, auch die Dokumentation zu aktualisieren, um zu sagen, dass diese Geräte nun unterstützt werden!

Vielen Dank!!

Ja, auf der Testseite ist alles perfekt (10 Ventile). Und technisch gesehen gibt es keine Änderungen im Vergleich zum Thermostat, also alles safe.

Ja, die Dokumentationsänderung ist fast fertig, ich werde sie morgen pushen.

Hallo @pierre-gilles,

Für mich ist die Dokumentation in Ordnung:

Ich habe die Gelegenheit genutzt, um einen neuen vollständigen Test von 0 durchzuführen. Alles funktioniert perfekt!!
Ventil in Heizungsanforderung (über die Solltemperatur in Gladys):

Nach 2 Minuten geht der Thermostat ebenfalls in Heizungsanforderung, um den Kessel einzuschalten (natürlich fast sofort in der Anwendung … ich freue mich auf den PR zu den Webhooks ^^):

Super !! Ich schaue mir das morgen an :slight_smile:

Perfekt :ok_hand:

Welche PRs soll ich morgen deiner Meinung nach überprüfen?