¡Gladys 4 Beta está disponible! 🚀

Ok, je crois avoir compris ce qui ne va pas

@bertrandda a utilisé des “sinon” globaux dans ses tests, et la PR de @AlexTrovato reset les sinon globaux dans d’autres tests.

Lorsqu’on exécute les tests de Caldav individuellement, ça fonctionne parfaitement. Lorsqu’on exécute tous les tests, sinon est reset par des tests en amont et ça pète au niveau du caldav.

Je vais essayer de fixer…

:heart_eyes:

Bon j’ai passé la matinée dessus et pour l’instant je n’arrive pas à faire fonctionner ta PR @AlexTrovato :confused:

  1. Le container mosquitto se lance bien, mais Gladys ne remplit pas le fichier mosquitto.passwd
  2. En éditant le mot de passe dans l’UI, il arrive que Gladys arrive parfois à remplir le fichier

J’ai l’impression que c’est une race condition, le container mosquitto n’est jamais “prêt” au moment ou Gladys essaie d’éditer le fichier mosquitto.passwd. Je pense que c’est du au fait que l’API Docker restart ne renvoie pas “ok” quand le container est effectivement redémarré, mais juste quand la commande a été envoyé à Docker. Il faudrait trouver un moyen d’être sur que le container est prêt

En tout cas la PR est super, je pense qu’après avoir fixé ce petit bug ça devrait fonctionner du tonnerre ! Bien joué :clap:

Bon j’ai trouvé la première source du bug, la fonction system.exec a un petit bug de fonctionnement:

Le deuxième paramètre de cette fonction n’est pas “data” selon la doc, mais un stream

Il faut donc attendre que ce stream soit terminé pour avoir la confirmation que le code s’est vraiment exécuté. Le resolve(true) actuel intervient trop tôt, avant que le code se soit exécuté.

Il faut faire un:

 executable.start((err, stream) => {
      if (err) {
        reject(err);
      } else {
        stream.on('end', () => {
          resolve(true);
        });
        this.dockerode.modem.demuxStream(stream, process.stdout, process.stderr);
      }
    });

Afin d’avoir vraiment la confirmation que le code s’est exécuté.

Cela résout la race-condition, mais j’ai toujours des bugs. Je vais continuer à enquêter :slight_smile:

Edit: Ce fix n’est pas magique non plus, comme le pointe cette issue GitHub =>

https://github.com/apocas/dockerode/issues/534

C’était un gros morceau, mais c’est mergé enfin !

Merci @AlexTrovato et @VonOx pour le travail :pray:

Il y avait du beau boulot dans cette PR :slight_smile:

Tout le mérite à @AlexTrovato :clap:

Et cette nouvelle intégration MQTT avec broker intégré est live dans Gladys Assistant v4.0.0-beta-9 :slight_smile:

Vos instances vont se mettre à jour toutes seules !

Merci a toi d’avoir pris le temps de fixer ça. Super boulot.

Nouvelle fonctionnalité du jour, à venir dans la prochaine release, la possibilité de sélectionnez finement sur le dashboard les appareils affichés !

:warning:Attention, nous somme toujours en beta, et cette fonctionnalité est breaking. Ceux qui ont des instances qui tournent actuellement devront faire un petit passage sur leur dashboard pour afficher les fonctionnalités qui veulent afficher :slight_smile:

Nouvelle autre fonctionnalité, l’intégration MQTT devient plus simple à utiliser avec un sélecteur de fonctionnalité plus clair et qui permet de chercher :slight_smile:

https://github.com/GladysAssistant/Gladys/pull/849

Gladys v4.0.0-beta-10 est disponible, et intègre toutes les nouveautés développées cette semaine ! :slight_smile:

Vos instances seront à jour dans les prochaines heures.

N’hésitez pas si vous avez des questions :slight_smile:

Merci à toi et à l’équipe pour le boulot accompli…

Perso je vais attendre le bluethooth pour mettre Gladys en place dans la maison, bon je sais que ce n’est pas pour maintenant mais c’est pas grave.

Salut !
Désolé si la question est un peu lourde…
Ces updates incluent-ils la mise en prod de l’intégration Zigbee2mqtt ?
Au départ c’est Reno qui est dessus, mais j’ai cru comprendre que @AlexTrovato s’y est collé aussi…du coup je viens aux nouvelles :smiley:

Du coup c’est vraiment broken :sweat_smile:

Impossible d’éditer le dasboard

@VonOx ah merde, tu as quelque chose dans tes logs navigateur ?

Faut que je check ça sur PC car j’ai ce problème sur mobile ( Gladys plus et en local aussi)

Edit: Voilà ce que me renvoi la console

Uncaught (in promise) TypeError: t.box.device_features is undefined
    ar DevicesInRoomsBox.jsx:58
    ar DevicesInRoomsBox.jsx:57
    ar DevicesInRoomsBox.jsx:56
    Preact 11
        S
        y
        __k
        p
        h
        y
        __k
        p
        h
        y
        d
DevicesInRoomsBox.jsx:58:18

Edit 2: J’ai du me dépécher de cliquer sur le bouton EDIT avant que la page ne se load ( avant l’erreur je penses )

J’ai donc pu éditer les boxs, mais il y’a soucis avec la liste des devices Hue, pour chaque device les features des autres devices sont listées, et chaque ligne en doublon ( ou triplon ) est highlight

EDIT 3 : Le site de démo est broken aussi

Bien vu !
J’ai envoyé un fix express ce matin pour le bug important, pour l’histoire des Philips Hue dupliqué je ne pourrais pas regarder là (mission client). Est-ce que tu pourrais poster le JSON du résultat du GET /api/v1/room/TA_PIECE?expand=devices

? :slight_smile: Merci !

Oui

{
   "id":"939c2efd-d09f-4f17-b7b2-01b1ab70073e",
   "house_id":"12cfd62e-2a2c-4856-a5e5-47581e0b6cac",
   "name":"Salon",
   "selector":"salon",
   "created_at":"2020-01-10T14:38:50.439Z",
   "updated_at":"2020-01-10T14:38:50.439Z",
   "devices":[
      {
         "name":"Canapé",
         "selector":"philips-hue-light-001788286ece-2",
         "features":[
            {
               "name":"Canapé Allumé/Éteint",
               "selector":"philips-hue-light-001788286ece-2-binary",
               "category":"light",
               "type":"binary",
               "read_only":false,
               "unit":null,
               "min":0,
               "max":1,
               "last_value":0,
               "last_value_changed":"2020-08-11T21:36:54.179Z"
            },
            {
               "name":"Canapé Couleur",
               "selector":"philips-hue-light-001788286ece-2-color",
               "category":"light",
               "type":"color",
               "read_only":false,
               "unit":null,
               "min":0,
               "max":0,
               "last_value":null,
               "last_value_changed":null
            },
            {
               "name":"Canapé Luminosité",
               "selector":"philips-hue-light-001788286ece-2-brightness",
               "category":"light",
               "type":"brightness",
               "read_only":false,
               "unit":null,
               "min":0,
               "max":100,
               "last_value":null,
               "last_value_changed":null
            },
            {
               "name":"Canapé Température",
               "selector":"philips-hue-light-001788286ece-2-temperature",
               "category":"light",
               "type":"temperature",
               "read_only":false,
               "unit":null,
               "min":153,
               "max":500,
               "last_value":null,
               "last_value_changed":null
            }
         ]
      },
      {
         "name":"Plafonnier",
         "selector":"philips-hue-light-001788286ece-4",
         "features":[
            {
               "name":"Plafonnier Allumé/Éteint",
               "selector":"philips-hue-light-001788286ece-4-binary",
               "category":"light",
               "type":"binary",
               "read_only":false,
               "unit":null,
               "min":0,
               "max":1,
               "last_value":0,
               "last_value_changed":"2020-08-08T21:29:12.695Z"
            },
            {
               "name":"Plafonnier Couleur",
               "selector":"philips-hue-light-001788286ece-4-color",
               "category":"light",
               "type":"color",
               "read_only":false,
               "unit":null,
               "min":0,
               "max":0,
               "last_value":null,
               "last_value_changed":null
            },
            {
               "name":"Plafonnier Luminosité",
               "selector":"philips-hue-light-001788286ece-4-brightness",
               "category":"light",
               "type":"brightness",
               "read_only":false,
               "unit":null,
               "min":0,
               "max":100,
               "last_value":null,
               "last_value_changed":null
            },
            {
               "name":"Plafonnier Température",
               "selector":"philips-hue-light-001788286ece-4-temperature",
               "category":"light",
               "type":"temperature",
               "read_only":false,
               "unit":null,
               "min":153,
               "max":500,
               "last_value":null,
               "last_value_changed":null
            }
         ]
      },
      {
         "name":"LivingColors",
         "selector":"philips-hue-light-001788286ece-1",
         "features":[
            {
               "name":"LivingColors Allumé/Éteint",
               "selector":"philips-hue-light-001788286ece-1-binary",
               "category":"light",
               "type":"binary",
               "read_only":false,
               "unit":null,
               "min":0,
               "max":1,
               "last_value":0,
               "last_value_changed":"2020-08-10T01:17:09.304Z"
            },
            {
               "name":"LivingColors Couleur",
               "selector":"philips-hue-light-001788286ece-1-color",
               "category":"light",
               "type":"color",
               "read_only":false,
               "unit":null,
               "min":0,
               "max":0,
               "last_value":null,
               "last_value_changed":null
            },
            {
               "name":"LivingColors Luminosité",
               "selector":"philips-hue-light-001788286ece-1-brightness",
               "category":"light",
               "type":"brightness",
               "read_only":false,
               "unit":null,
               "min":0,
               "max":100,
               "last_value":null,
               "last_value_changed":null
            }
         ]
      }
   ]
}

Je rebondis un peu sur cet ancien message, zigbee2mqtt doit pour moi faire partie de la RC car on va pas se mentir , le nombre d’intégrations est assez pauvre et/ou incomplète. ( y’a pas de reproche on fait tous au mieux :wink: )

Pour compléter la milestone ( désolé @pierre-gilles j’ai vraiment pas eu le temps avant )

ZWAVE

ça doit être parfait, normalement la PR de @link39 résoud pas mal de soucis au niveau compatibiltés ( switch de monter/descente des volets par exemple )

ZIGBEE2MQTT

PS: Tous ça concerne mon besoin personnel et donc les « manques » pour passer en « prod » à la maison. Y’ un côté frustrant de pouvoir baisser le volet mais pas le monter etc… qui peut décourager les nouveaux.

C’est quoi pour toi « la RC » ? :slight_smile:

J’ai l’impression que pour beaucoup, je vais sortir la RC et ensuite ça y est Gladys sera « finie » il n’y aura plus d’évolution.

C’est tout le contraire! Le développement logiciel, c’est itératif et c’est sans fin: je release quasiment toutes les semaines une nouvelle version de Gladys au fur et à mesure des fonctionnalités ajoutées. Le soft s’améliore en continu, et ça ne s’arrêtera jamais.

La RC c’est avant tout un changement de nom, on retire le « beta » du tag et on build des versions sur le tag v4, c’est plus ou moins tout… C’est un signal pour dire aux développeurs « ça y est, l’API de Gladys, la documentation, le système de build, les tests, tout est mis en place, stable, ça ne change plus, vous pouvez développer des intégrations sans que tout change tous les 4 matins » :slight_smile:

Je suis d’accord, Zigbee2mqtt est une intégration formidable et je rêverais que ce service soit disponible aujourd’hui. Après je suis aussi réaliste, le service est en développement depuis 10 mois et malheureusement les développeurs de cette intégration ont moins été disponibles sur les derniers mois, ce que je respecte totalement c’est les aléas de l’open-source, chacun à ses disponibilités :slight_smile:

Ne maîtrisant pas cette partie, il est difficile pour moi de l’inclure dans mon planning… Je connais mes disponibilités et je peux chiffrer mes temps de développements sur Gladys, mais sur le reste je suis « spectateur » des développements.

Ca me semble étrange de bloquer tout l’avancement du projet pour une intégration, tu ne trouve pas?

C’est inclus dans le milestone :slight_smile: Le Z-Wave, je maitrise donc je l’ai inclus. En revanche je pense que @link39 est en vacances en ce moment, et je n’ai pas trop d’infos sur cette PR dont les tests ne passent pas. J’ai posé la question sur la PR il y a 15 jours mais sans réponses pour l’instant. @link39 si tu vois ce message, je suis preneur de toute info qui me permettrait de reprendre la PR et de la merger! :smiley:

Je comprends, ça pour le coup pour moi la RC doit être « parfaite » sur les fonctionnalités qui existent. Donc si tu pense à des bugs spécifique, n’hésite pas, je le fixerais avant la RC.

Bien-sûr, et je comprends complètement ! Crois moi, ça fait depuis 1 an et demi que je travail sur la v4, et je rêverais d’avoir le niveau d’intégration qu’on avait dans la v3… Mais la v3, on l’a développé en 5 ans ( 2014-2019 ), c’est compliqué de recréer un si riche écosystème en si peu de temps.

Je remets ce schéma de mon article bilan de l’année 2019 :

Les premiers services ont commencés à être écris en septembre 2019 en gros, ça fait seulement 11 mois que la communauté à accès à la v4 pour développer des services. Beaucoup de gens dans la communauté n’ont jamais bossé avec React, il y a un petit temps d’apprentissage.

Voilà ma vision, après je me trompe peut-être et tout se discute :smile: N’hésite pas à me contredire si tu n’es pas d’accord.