Der Weg zu Gladys 4 RC

Hallo zusammen!

Nach einigen Wochen Urlaub bin ich zurück bei Gladys :rocket:

Das Ziel ist jetzt klar: Gladys v4 aus der Beta-Phase bringen und auf eine stabile Version umstellen.

Die verbleibenden Aufgaben

Hier ist meine Liste der noch zu erledigenden Aufgaben, bevor Gladys v4 veröffentlicht wird:

Meine Ziele

Einige Statistiken zur Beta: Derzeit laufen 104 Gladys-Instanzen langfristig und in Produktion (die seit mehreren Wochen aktiv sind, keine Testinstanzen).

Eine interessante Kennzahl, die ich verfolge, ist die „Bindung“ der Gladys-Installationen. Behalten die Nutzer, die Gladys installieren, es lange oder deinstallieren sie es schnell wieder?

Bisher haben wir eine hervorragende Bindungsrate von 80%. Das bedeutet, dass 80% der Menschen, die Gladys installieren, es anschließend aktiv behalten. Diese Zahl wird wahrscheinlich sinken, wenn wir die Beta-Phase verlassen, da die Anzahl der Installationen steigen wird, aber das Ziel ist, sie so hoch wie möglich zu halten.

Das Ziel nach der Veröffentlichung von v4 ist es, so schnell wie möglich 1.000 Gladys 4-Instanzen zu erreichen. Ich denke, dass es möglich ist, dieses Ziel innerhalb der 6 Monate nach der Veröffentlichung von v4 zu erreichen.

Dafür müssen wir: kommunizieren, kommunizieren, kommunizieren. Gladys muss in der ganzen Smart-Home-Welt bekannt werden.

Wenn ihr Journalisten/Blogger aus der Welt des Smart Home/Internet of Things/Tech kennt, zögert nicht, mir ihre Kontaktdaten zu geben :slight_smile: Ich würde mich freuen, ihnen von Gladys zu erzählen.

Hallo zusammen,

Heute Morgen habe ich am Merge des Z-Wave-PRs gearbeitet, und parallel dazu, während die Tests liefen, habe ich an der Pressemitteilung für den Launch von Gladys 4 gearbeitet.

Für diejenigen, die es nicht wissen: Der Zweck einer Pressemitteilung ist es, den Medien einen Beispielartikel zu schicken, geschrieben als ob man Journalist wäre, der über unser eigenes Produkt/Release berichtet. Jede Marke macht das, wenn sie etwas ankündigen möchte.

Ich werde ihn an französische Smart-Home-Newsseiten/Blogs mit einem Presskit (Fotos von Gladys 4, Logos) senden, und das wird diesen Seiten ermöglichen, einen Artikel über den Launch zu schreiben, falls sie das möchten.

Hier ist der Link zum Dokument, ich arbeite live daran, aber ich bin schon offen für euer Feedback, falls ihr Ideen oder Rückmeldungen habt.

Hinweis: Im Moment ist es ein Wirrwarr von Ideen, das zu einem Artikel mit schönen Sätzen wird. Es ist in Arbeit!

Hallo

Ich habe eine Beta 16 gesehen, ich nehme an, das ist die, die die Z-Wave-Korrekturen integriert?
Denn wenn das der Fall ist, funktioniert es bei mir immer noch nicht
Aus Zweifeln habe ich eine saubere Installation durchgeführt und meine Geräte wieder integriert, alles wird erkannt, aber nach der anfänglichen Integration werden keine Daten mehr übertragen

Ja, die Z-Wave-Fixes sind durchgegangen!

Beim Lesen deiner anderen Beiträge sehe ich, dass du einen Everspring-Key verwendest. Vielleicht liegt es am Key… Ich habe nicht deine Hardware, also weiß ich nicht, was schiefgeht. Ich weiß nicht, wie ich dir weiterhelfen kann!

Hallo
meine Hardware ist ein Raspberry Pi 3, auf dem das offizielle Gladys 4-Image geflasht ist (16-GB-SD-Karte).
Ich komme mit SSH zurecht, und wenn Rückmeldungen von Befehlen benötigt werden, kann ich auch mal in die Hände spucken.

Das Z-Wave-Material: Zwave - Aide pour la v4 - #49 par Will9

Gleiches Problem, ich kann mein Rollo nur herunterfahren, aber nicht wieder hochfahren (ich habe das Gerät sogar gelöscht und neu erstellt).

Übrigens, ich habe mich gerade wieder bei meiner Instanz angemeldet (ich wollte einen Screenshot des Qubino machen) und plötzlich sind alle Geräte weg.

Keine Hue-Lampen mehr, kein Z-Wave, keine Kamera, und der OpenWeather-Schlüssel ist auch weg Oo (das Dashboard war in Ordnung, aber mit Fehlern, weil keine Geräte mehr da waren).

Bearbeitung:

Ich wollte ein Backup von vor 4 Tagen wiederherstellen, um nicht alles neu machen zu müssen.

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;'
}

Keine Rückmeldung in der UI

Hallo !! Genau wie @VonOx, bei mir funktioniert seit dem Update auf .17 kein Gerät mehr. Keine Wiederherstellung aus dem Backup möglich. Die gesamte Hausautomation ist ausgefallen.

Angesichts der Zeit, die ich brauchen würde, um alles wiederherzustellen… mit meiner Tochter, die in ein paar Tagen kommt, werde ich es für eine Weile gut sein lassen.

Viel Glück an alle. Bis bald.

Sollte der PR von @link39 dieses Problem beheben?

Mist!!

Ich habe nachgeforscht und herausgefunden, was das verursacht hat. Es ist ein Nebeneffekt der DB-Migration aus dem PR, den ich gestern von @AlexTrovato gemerged habe.

Der PR führt Folgendes aus:

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

Allerdings ist es in SQLite nicht möglich, eine Spalte zu entfernen, das existiert in SQLite nicht. Daher erstellt Sequelize stattdessen ein Backup der Tabelle, löscht die Tabelle, erstellt die Tabelle ohne die Spalte neu und setzt die Daten wieder ein.

Im Fall von Gladys gibt es eine Fremdschlüsselbeziehung zwischen Gerät und Dienst. Daher ist klar, dass ein DROP TABLE der service-Tabelle eine Kaskadenlöschung der Geräte verursacht, die wiederum eine Kaskadenlöschung von device_feature verursacht, die wiederum eine Kaskadenlöschung von device_feature_state verursacht…

Es ist meine Schuld, ich hätte auf dieses Detail achten müssen, aber in dem Moment mit der Dringlichkeit des Bluetooth-Crashs habe ich den Fehler nicht gesehen.

@VonOx @Terdious, keine Panik, ihr habt Backups und euren Verschlüsselungsschlüssel, daher können wir euer Backup ohne Probleme wiederherstellen, sogar außerhalb von Gladys.

OK, ich glaube, ich weiß, was nicht stimmt. Danke für das detaillierte Feedback mit den Logs :slight_smile:

Keine Panik @Terdious, das Wiederherstellungsproblem scheint nicht mit dem Backup selbst zusammenzuhängen!

Aber wir müssen aus unseren Fehlern lernen, denn solche zerstörerischen Updates dürfen nicht außerhalb der Beta auftreten. Ich arbeite daran.

Ok, ich habe das Backup-Wiederherstellungsproblem auf master behoben. Es ist noch nicht bereitgestellt.

Bei weiterer Untersuchung ist der Befehl removeColumn von Sequelize noch zerstörerischer, als ich dachte. Er erstellt die Tabelle nicht korrekt neu, er vergisst zum Beispiel die Fremdschlüssel…

Ich denke, ich werde eine Regel hinzufügen, damit die Verwendung dieser Methode in Gladys 4 verboten ist :warning: :sweat_smile:

Gott sei Dank haben wir das jetzt gesehen, das wäre die Hölle gewesen, wenn es nach dem offiziellen Start in die Produktion gekommen wäre!

Ich habe einen Vorschlag gemacht, die Möglichkeit, die Funktion .removeColumn von Sequelize zu verwenden, zu entfernen.

Mein PR:

Das Problem dabei ist, dass es dann nicht mehr möglich ist, die Migrationsfunktion „down“ der Migrations zu schreiben, da man nicht mehr zurückgehen kann.

Das ist nicht verrückt, aber ich habe das Gefühl, dass wir keine Wahl haben, da SQLite es nicht erlaubt, eine Spalte zu entfernen, also können wir nichts anderes tun (siehe SQLite Frequently Asked Questions)

@AlexTrovato Was denkst du?

Also, ich habe nicht alles verstanden, aber es ist tatsächlich besser jetzt als später.
Ich bin noch bei Beta 13. Normal?
Ich habe auch meine OpenWeather-Box auf dem Dashboard, die mich auffordert, sie neu zu konfigurieren… obwohl der Schlüssel korrekt ist.
Ich glaube nicht, dass ich in den Betas Bluetooth oder 433 gesehen habe. Wird es ohne herauskommen?
Ich behalte meine V3 parallel dazu, bis es soweit ist.
Auf jeden Fall, großartige Arbeit und vielen Dank für die riesige Arbeit!! :+1:t3:

Aktuell sind wir bei Beta 17. Es ist normal, dass du noch bei 13 bist, da wir seit dem ein neues Raspbian-Image haben. Das alte Image ist veraltet und wird nicht mehr aktualisiert. :warning: Ändere vorerst nichts, sonst riskierst du, in den oben genannten Bug zu geraten, der noch nicht behoben ist! :slight_smile: Ich empfehle, zu warten, bis wir die Beta verlassen. :slight_smile:

Bluetooth ist seit diesem Wochenende integriert.

Für 433 MHz gibt es seit dem 10. Juni einen tollen Pull Request von @billona auf GitHub. Ich habe im Juni Änderungen angefordert, aber ich denke, Alexandre ist beschäftigt oder hat meine Nachricht nicht gesehen, da ich seitdem keine Neuigkeiten mehr erhalten habe… :confused: (siehe https://github.com/GladysAssistant/Gladys/pull/812)

Außerdem fehlen uns dringend Tester. Niemand testet die Pull Requests, und es ist schwierig, blind etwas zu mergen, das nicht getestet wurde.

Es ist ein bisschen wie die Henne und das Ei. Derzeit testet niemand, weil niemand Gladys 4 verwendet, da es noch in der Beta ist. Aber wenn niemand testet, kommen wir nicht voran, und wir verlassen die Beta nicht… :crazy_face:

Die Veröffentlichung der v4 wird uns mehr Traffic, neue Nutzer, mehr Leute im Forum und Feedback bringen, und damit werden wir schneller vorankommen. Es ist auch motivierender für alle, zu wissen, dass ihre Arbeit nützlich ist.

Ich erinnere daran, dass es, als ich v3 vor einigen Jahren veröffentlicht habe, … 0 Integrationen gab! :smiley: Die Integrationen kamen, weil es ein Publikum (ihr) gab, das das Potenzial gesehen und bei der Entwicklung geholfen hat, und das dank des Launches und der Kommunikation rund um das Produkt.

Ich denke, ich habe zu lange mit dem Verlassen der Beta gewartet, und wir hätten die Beta schon vor langer Zeit verlassen sollen. Wenn wir warten, bis v4 alle vorstellbaren Integrationen hat, wird sie nie veröffentlicht werden! Und das ist schade, denn Gladys 4 ist ein tolles Produkt :slight_smile:

Gladys wird sich natürlich weiterentwickeln, aber du willst dein Baby verfeinern .. logisch :wink:

Ich werde also noch etwas warten, bevor ich meine aktuelle Beta überschreibe.
Außerdem ist da eh fast nichts drauf .. Webcam, Wetter und ein Versuch mit MQTT.

Da ich sie parallel zu meiner v3 aufsetzen werde, würde ich gerne so viel wie möglich testen, je nach meinen Fähigkeiten (Bluetooth, Netzwerkerkennung, 433, ..).
Allerdings weiß ich nicht, wie man das zurückbekommt, wenn es nicht in die Integration geht.

Ich bin enttäuscht zu hören, dass removeColumn nicht funktioniert, sondern im Gegenteil.
Aber ich finde es nicht verrückt, nicht mit den Down-Skripten zurückzugehen.
Aber removeColumn wird sicherlich irgendwann unverzichtbar sein… wir werden wahrscheinlich mit ungenutzten Spalten enden…

Ich sehe im Link, dass es empfohlen wird, eine alternative Tabelle zu erstellen, aber mit den FK werden wir uns amüsieren :slight_smile:

Zum Glück entdecken wir das jetzt.
Und Entschuldigung für die Unannehmlichkeiten, ich habe gedankenlos meine Entwicklergewohnheiten angewendet, ich hätte nicht mit diesem Verhalten gerechnet.

Du hast alles kaputt gemacht @AlexTrovato :stuck_out_tongue:

das ist sicher, aber so wie es jetzt ist, macht removeColumn einfach keinen Sinn. Ich habe versucht, die FK zu deaktivieren und sie nach der Migration wieder zu aktivieren, und es behält die Daten, aber wir haben immer noch das Problem mit den FK/Index und anderen Dingen, die springen.

Aber es ist nicht endgültig. Sequelize bereitet eine v6 vor, die derzeit in der Beta-Phase ist, vielleicht haben sie das Verhalten dort verbessert :slight_smile:

Und außerdem ist es eingebettet, wir ändern die Spalten nicht jeden Tag, und wenn unnötige Spalten übrig bleiben, ist das zwar nicht „sauber“, wenn man puristisch ist, aber es ist immer noch besser als Datenverlust ^^

Kein Problem, du konntest es nicht wissen! Ich bin froh, dass wir das jetzt und nicht später gesehen haben ^^

Übrigens, ich dachte, es wäre cool, Tests für die Migrations zu erstellen. So etwas wie einen generischen Test im Code, der jede Migration einzeln durchführt und überprüft, ob nach jeder Migration die Tabellen immer noch die gleichen Daten haben und ob die FK nicht gesprungen sind, das würde uns in Zukunft Überraschungen ersparen ^^

Also, ich habe etwas Verspätung, mein Mac hat mich im Stich gelassen… und bisher kein Lebenszeichen vom Kleinen, er ist plötzlich ausgegangen und geht überhaupt nicht mehr an :sweat_smile:

Das ist ein Zeichen, dass man keine Apple-Produkte mehr kaufen sollte… :sweat_smile::grin:

Ganz schön gut.
Es ist klar und nicht zu technisch.
Im Abschnitt « Vom maschinellen Lernen bis zum Chatbot »
, wird erwähnt, dass es momentan nur schriftlich funktioniert, aber dass die Spracherkennung geplant ist.
Ich habe ein paar Rechtschreibfehler korrigiert.
Ein Hinweis: Bei doppelten Satzzeichen ( : ; ! ? ) muss man 2 Leerzeichen machen, eins davor und eins danach. Ich habe sie nicht geändert.
Edit:
Manchmal schreibst du « Gladys », dann wieder « Gladys 4 », oder « Gladys Assistant », aber auch « Gladys Assistant 4 ». Vielleicht sollte man sich auf eine Schreibweise einigen.

Ich vermeide es, über « geplante Funktionen » zu sprechen, da wir ein Open-Source-Projekt sind, das keine Garantie für Release-Daten geben kann. Ich möchte keine falschen Hoffnungen wecken. Lass uns lieber über das sprechen, was bereits funktioniert :slight_smile:

Danke!

Gut beobachtet, ich werde das noch einmal überarbeiten.