Le chemin vers Gladys 4 RC

Salut à tous !

Après quelques semaines de vacances, je suis de retour sur Gladys :rocket:

L’objectif maintenant est clair: sortir Gladys v4 de la beta, et passer en version stable.

Les tâches restantes

Voilà ma liste de todo restantes avant de sortir Gladys v4:

Mes objectifs

Quelques statistiques sur la beta, il y a actuellement 104 instances Gladys qui tournent de matière “long-terme”, en production (qui sont active depuis plusieurs semaines, ce n’est pas des instances de test)

Un chiffre intéressant que je suis, c’est la “rétention” des installations Gladys. Est-ce que les utilisateurs qui installent Gladys la garde pendant longtemps, ou la désinstalle assez vite?

Pour l’instant, nous avons une excellente rétention de 80%. Ce qui veut dire que 80% des gens qui installent Gladys, la garde active ensuite. Ce chiffre risque probablement de descendre lorsqu’on sortira de la beta, car le nombre d’installations va grossir, mais l’objectif est de le garder le plus haut possible.

L’objectif, après la sortie de cette v4, est d’arriver le plus vite possible à 1 000 instances Gladys 4. Je pense qu’il est possible d’atteindre cette objectif dans les 6 mois suivant la sortie de la v4.

Pour cela, il va falloir: communiquer, communiquer, communiquer. Il faut qu’on entende parler de Gladys partout dans le monde domotique.

Si vous connaissez des journalistes/bloggers dans le monde de la domotique/objet connecté/tech, n’hésitez pas à me donner leur contact :slight_smile: Je serais ravi de leur parler de Gladys.

5 « J'aime »

Salut à tous,

Ce matin j’ai travaillé sur le merge de la PR Z-Wave, et en parallèle que les tests s’exécutait, j’ai travaillé sur le communiqué de presse du lancement de Gladys 4.

Pour ceux qui ne connaissent pas, l’objectif d’un communiqué de presse c’est d’envoyer aux médias un exemple d’article, écrit comme si on était journaliste, parlant de notre propre produit/release. Toutes les marques font ça quand elles veulent annoncer quelque chose.

Je l’enverrais à des sites d’actualités/blogs de domotique FR avec un kit de presse (photos de Gladys 4, logos), et ça permettra à ces sites d’écrire un article sur le lancement si ils le souhaitent.

Voilà le lien de ce document, je travaille dessus en live mais je suis déjà preneur de vos retours si vous avez des idées / feedbacks.

Note: Pour l’instant c’est un pêle mêle d’idée qui deviendra un article écrit avec des belles phrases. C’est en cours!

Bonjour

J’ai vu passer une beta 16 je suposse que c’est celle qui integre les correctif zwave ?
Car si c’est le cas ca ne fonctionne toujours pas pour moi
Dans le doute j’ai refait une install propre et j’ai reintegrer mes appareils tout est bien reconnu mais aucune données ne remonte aprés l’ajout initial

Effectivement les correctifs Z-Wave sont passés!

En relisant tes autres posts, tu utilise une clé Everspring. Peut-être que ça vient de la clé… Je n’ai pas ton hardware, donc je ne sais pas ce qui se passe mal. Je ne sais pas comment t’aider plus !

Bonjour
mon hardware est un raspberry pi3 flashé sur l’image officielle de gladys 4 (carte sd de 16go)
je me debrouille en ssh si il faut des retour de commande je peux mettre la main dans le cambouis

le materiel zwave Zwave - Aide pour la v4 - #49 by Will9

Idem , je ne peux que descendre mon volet et pas le remonter ( J’ai pourtant supprimé et recréer le device )

D’ailleurs je viens de me reconnecter à mon instance ( je voulais faire un screenshot du qubino ) et plus aucuns devices

Plus aucune ampoules hue, plus de zwave, plus de caméra, et la clé openweather a dégagé Oo ( le dashboard était ok mais avec des erreur car plus de devices )

image image

Edit:

J’ai voulu restaure un backup d’il y’a 4 jours pour pas devoir tout refaire.

2020-10-19T18:29:08+0200 <error> index.js:14 (process.<anonymous>) unhandledRejection catched: Promise {
  <rejected> DatabaseError [SequelizeDatabaseError]: SQLITE_CORRUPT: malformed database schema (t_service) - table `t_service` already exists
      at Query.formatError (/src/server/node_modules/sequelize/lib/dialects/sqlite/query.js:423:16)
      at afterExecute (/src/server/node_modules/sequelize/lib/dialects/sqlite/query.js:119:32)
      at replacement (/src/server/node_modules/sqlite3/lib/trace.js:19:31)
      at Statement.errBack (/src/server/node_modules/sqlite3/lib/sqlite3.js:16:21) {
    parent: [Error: SQLITE_CORRUPT: malformed database schema (t_service) - table `t_service` already exists] {
      errno: 11,
      code: 'SQLITE_CORRUPT',
      sql: 'PRAGMA journal_mode=WAL;'
    },
    original: [Error: SQLITE_CORRUPT: malformed database schema (t_service) - table `t_service` already exists] {
      errno: 11,
      code: 'SQLITE_CORRUPT',
      sql: 'PRAGMA journal_mode=WAL;'
    },
    sql: 'PRAGMA journal_mode=WAL;'
  }
}
2020-10-19T18:29:08+0200 <error> index.js:15 (process.<anonymous>) DatabaseError [SequelizeDatabaseError]: SQLITE_CORRUPT: malformed database schema (t_service) - table `t_service` already exists
    at Query.formatError (/src/server/node_modules/sequelize/lib/dialects/sqlite/query.js:423:16)
    at afterExecute (/src/server/node_modules/sequelize/lib/dialects/sqlite/query.js:119:32)
    at replacement (/src/server/node_modules/sqlite3/lib/trace.js:19:31)
    at Statement.errBack (/src/server/node_modules/sqlite3/lib/sqlite3.js:16:21) {
  parent: [Error: SQLITE_CORRUPT: malformed database schema (t_service) - table `t_service` already exists] {
    errno: 11,
    code: 'SQLITE_CORRUPT',
    sql: 'PRAGMA journal_mode=WAL;'
  },
  original: [Error: SQLITE_CORRUPT: malformed database schema (t_service) - table `t_service` already exists] {
    errno: 11,
    code: 'SQLITE_CORRUPT',
    sql: 'PRAGMA journal_mode=WAL;'
  },
  sql: 'PRAGMA journal_mode=WAL;'
}

Pas de feedback dans l’UI

Hello !! Idem que @VonOx, plus aucun devices suite à la maj en .17. Plus de restauration possible depuis le backup. Toute domotique HS.

Au vue du temps à passer pour remettre tout en état… pour ma part avec ma petite qui arrive dans quelques jours, je vais m’arrêter là pour quelques temps.

Bon courage à tous. A bientôt.

La PR de @link39 était censé résoudre ce problème?

Merde !!

J’ai enquêté et j’ai trouvé ce qui a causé ça. C’est un effet de bord de la migration de DB de la PR que j’ai mergé hier de @AlexTrovato.

La PR fait un :

await queryInterface.removeColumn('t_service', 'enabled');

Or, en SQLite il n’est pas possible de faire un remove column, ça n’existe pas en SQLite. Donc Sequelize à la place fait un Backup de la table + DROP TABLE + recréer la table sans la column + remet les donnée.

Dans le cas de Gladys, il y a une clé étrangère entre device et service. Donc vous l’aurez compris un DROP TABLE de la table service fait un delete cascade de device, qui lui même fait un delete cascade de device_feature, et qui lui même fait un delete cascade de device_feature_state…

C’est de ma faute, j’aurais dû payer attention à ce détail mais sur le moment avec l’urgence du crash bluetooth je n’ai pas vu l’erreur.

@VonOx @Terdious, pas de panique, vous avez des backups et votre clé de chiffrement, on peut donc récupérer votre backup sans aucun souci, même hors Gladys.

OK je crois savoir ce qui ne va pas. Merci pour le feedback détaillé avec les logs :slight_smile:

Pas de panique @Terdious le problème de restauration n’a pas l’air lié au backup en lui même !

Bon par contre il va falloir apprendre de nos erreurs, parce que ce genre de mise à jour destructrice c’est juste pas possible que ça arrive une fois hors de la beta. Je suis dessus.

2 « J'aime »

Ok donc j’ai réglé sur master le problème de restauration de backup. Ce n’est pas encore déployé.

En investiguant un peu plus, la commande removeColumn de Sequelize est encore plus destructrice que ce que j’imaginais, elle ne re-créé par la table correctement, elle oublie les clés étrangère par exemple…

Je pense que je vais ajouter une règle pour que l’utilisation de cette méthode soit interdite dans Gladys 4 :warning: :sweat_smile:

Heureusement qu’on a vu ça maintenant, ça aurait été l’enfer si c’était arrivé en production après le lancement officiel !

1 « J'aime »

J’ai fais une proposition pour enlever la possibilité d’utiliser la fonction .removeColumn de Sequelize.

Ma PR:

https://github.com/GladysAssistant/Gladys/pull/907/files

Le problème avec ça, c’est qu’il n’est donc plus possible d’écrire la fonction de migration “down” des migrations, car on ne peut pas revenir en arrière.

C’est pas fou, mais bon je n’ai pas l’impression qu’on ait le choix, SQlite ne permettant pas de retirer une colonne on ne peut pas faire autrement ( cf SQLite Frequently Asked Questions )

@AlexTrovato Tu en pense quoi ?

Bon j’ai pas tout pigé mais effectivement, mieux vaut maintenant que + tard.
Pour ma part, je suis encore en beta 13. Normal ?
J’ai également ma box openweather sur le dashboard qui me demande de reconfigurer … pourtant la clé est bonne.
Il ne me semble pas avoir vu de bluetooth ni de 433 dans les bêtas. Elle va sortir sans ?
Je garde ma V3 en parallèle en attendant.
En tout cas bravo et merci pour ce taf immense !! :+1:t3:

1 « J'aime »

On est en beta 17 actuellement. Après c’est normal que tu sois en 13, on a changé d’image Raspbian depuis. L’ancienne image est obsolète et ne sera plus mise à jour. :warning: Après ne change rien pour l’instant sinon tu risque de tomber dans le bug ci-dessus qui n’est pas encore réglé ! :slight_smile: Je te conseille de patienter qu’on sorte de la beta :slight_smile:

Le bluetooth est intégré depuis ce week-end.

Pour le 433mhz, il y a une super PR de @billona sur GitHub depuis le 10 juin. J’ai demandé des changements en Juin, mais je pense qu’Alexandre doit être pris ou il n’a pas vu mon message car je n’ai plus eu de nouvelles depuis… :confused: ( cf Arduino service by billonalex · Pull Request #812 · GladysAssistant/Gladys · GitHub )

Aussi, on manque cruellement de testeur. Personne ne test les PR et du coup c’est compliqué de merger à l’aveugle quelque chose qui n’a pas été testé.

C’est un peu l’oeuf ou la poule. Actuellement personne ne teste car personne n’utilise Gladys 4 car elle est en beta. Mais du coup si personne ne test alors on avance pas, et on ne sort pas de la beta… :crazy_face:

Sortir la v4 va nous amener du traffic, des nouveaux utilisateurs, plus de gens sur le forum, des retours, et avec ça on ira plus vite. C’est aussi plus motivant pour tout le monde de se dire que son travail est utile.

Je rappelle que lorsque j’ai sorti la v3 il y a quelques années, il y avait… 0 intégrations! :smiley: Les intégrations sont venus car il y avait une audience (vous) qui a cru au potentiel et qui a aidé au développement, et ce grâce au lancement, à la communication autour du produit.

Je pense que j’ai beaucoup trop tardé à sortir de beta, et qu’on aurait du sortir de cette beta il y a bien longtemps. Si on attend que la v4 aient toutes les intégrations possibles imaginable elle ne sortira jamais ! Et c’est dommage car c’est un super produit Gladys 4 :slight_smile:

1 « J'aime »

En effet Gladys évoluera toujours mais tu cherches à peaufiner ton bébé … logique :wink:

Je vais patienter alors avant d’écraser ma bêta actuelle.
De toute façon il n’y a quasi rien dessus … webcam, le temps et un essai de mqtt.

Vu que je vais la monter en parallèle de ma v3, je veux bien tester un max suivant mes capacités (bluetooth, détection réseau, 433, …).
Par contre je ne sais pas comment ça se récupère si ce n’est pas en intégration.

Je suis déçu d’apprendre que le removeColumn ne fasse pas son taff mais bien pire.
Après je ne trouve pas deconnant de ne pas revenir en arrière avec les scripts down.
Mais le removeColumn va certainement est indispensable un jour ou l’autre… on va risque de se retrouver avec des colonnes non utilisées…

Je vois dans le lien qu’il est donc recommandé de faire une table alternative, mais avec les FK on va se marrer :slight_smile:

Heureusement qu’on le découvre maintenant en effet.
Et pardon pour la gêne, j’ai bêtement appliqué mes habitudes des dev, je ne m’attendais pas à ce comportement.

1 « J'aime »

T’as tout péter @AlexTrovato :stuck_out_tongue:

ça c’est sûr, après en l’état le removeColumn fait clairement n’importe quoi. J’ai essayé de désactiver les FK puis les remettre après la migration, et ça garde les données mais on a toujours le problème des FK/index et autre qui sautent.

Après, c’est pas définitif. Sequelize prépare une v6 qui est pour l’instant en beta, peut-être qu’ils auront amélioré le comportement dessus :slight_smile:

Et de toute façon, c’est de l’embarqué, on change pas les colonnes tous les jours, et si il reste des colonnes inutiles, certes c’est pas « propre » si on est puriste, mais bon c’est toujours mieux que de la perte de donnée ^^

Tkt, tu ne pouvais pas savoir! Je préfère qu’on ait vu ça maintenant que plus tard ^^

D’ailleurs, je me disais que ça serait cool de mettre des tests sur les migrations. Du style un test générique dans le code qui fasse chaque migration une par une et qui vérifie qu’après chaque migration que les tables ont toujours les mêmes data et que les FK ont pas sautées, ça nous évitera des surprises à l’avenir ^^

Bon, petit retardement de mon côté, mon Mac m’a lâché… et pour l’instant aucun signe de vie du petit, il s’est éteint d’un coup et ne s’allume plus du tout :sweat_smile:

1 « J'aime »

C’est le signe qu’il ne faut plus acheter Apple… :sweat_smile::grin:

Pas mal du tout.
C’est clair et pas trop technique.
Dans la partie "De l’apprentissage automatique au service du moteur de discussion
", est-ce que tu précises que c’est à l’écrit pour le moment, mais que la reconnaissance vocale est prévue.
J’ai corrigé quelques fautes d’orthographe.
Une remarque : avec les doubles ponctuations ( : ; ! ? ), il faut 2 espaces, un avant et un après. Je ne les ai pas modifiées.
Edit :
Des fois tu écris “Gladys”, d’autres “Gladys 4”, ou encore “Gladys Assistant”, mais aussi “Gladys Assistant 4”. Il faudrait peut-être une unité.

J’évite de parler de « ce qui est prévu », car on est un projet open-source qui n’a pas les moyens de garantir des dates de release de features, je préfère ne pas créer de faux espoirs. Parlons déjà de ce qui marche :slight_smile:

Merci !

Bien vu, je vais refaire une passe là dessus