# Lassen Sie uns über Gladys V4 sprechen

**URL:** <https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578>\
**Category:** Développement\
**Created:** [20. Oktober 2018 um 21:24 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578 "2018-10-20T21:24:26Z")\
**Posts on this page:** 20\
**Page:** 7

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [11. Februar 2019 um 07:14 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/148 "2019-02-11T07:14:12Z")

</div>

Wieder einmal bin ich sehr beeindruckt von der Leistung von Sequelize!

Stellen wir uns vor, ich möchte alle «&nbsp;Standorte&nbsp;» mit ihrem zugehörigen Benutzer abrufen.

Ich mache:

 ![35](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/9/955471a9bb8228c24b8a1a81073cd0fc22840040.png)

erhalte:

 ![27](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/6/65cc12e6956c7a07a0169b54d1456ac1badeae76.png)

Aber das Interessante ist nicht das! Es ist die Art und Weise, wie Sequelize das unter der Haube macht.

Manche ORMs führen in dieser Situation X Abfragen aus:

- Ein `SELECT *` um alle Zeilen abzurufen
- Dann ein `SELECT` pro Fremdschlüssel, um das verschachtelte Attribut abzurufen

Hier führt Sequelize eine einzige Abfrage aus

```auto
SELECT `t_location`.`id`, `t_location`.`user_id`, `t_location`.`latitude`, `t_location`.`longitude`, `t_location`.`altitude`, `t_location`.`accuracy`, `t_location`.`created_at`, `t_location`.`updated_at`, 
`user`.`id` AS `user.id`, `user`.`firstname` AS `user.firstname`, `user`.`lastname` AS `user.lastname`, `user`.`email` AS `user.email`, `user`.`birthdate` AS `user.birthdate`, `user`.`language` AS `user.language`, `user`.`password_hash` AS `user.password_hash`, `user`.`role` AS `user.role`, `user`.`created_at` AS `user.created_at`, `user`.`updated_at` AS `user.updated_at`
FROM `t_location` AS `t_location`
LEFT OUTER JOIN `t_user` AS `user` ON `t_location`.`user_id` = `user`.`id`;

```

Dann setzt es das verschachtelte Objekt mit seinem «&nbsp;table.attribut&nbsp;»-Format in den «&nbsp;AS&nbsp;» zusammen

Das ist super leistungsfähig!

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [11. Februar 2019 um 09:09 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/151 "2019-02-11T09:09:52Z")

</div>

> [@piznel](#):
>
> Ich habe sie nicht im Modell gesehen. Werden sie später definiert? Oder ist die Analyse veraltet?

Wie ich oben schon sagte, war es noch in Arbeit, ich habe gerade die Indizes hochgeschoben 🙂

> [@piznel](#):
>
> Aus meiner Sicht, mit einer „non-dev“-Logik, wird ein Feature mit einer Kategorie (z. B. „light“) definiert, dann einer Unterkategorie (z. B. „dimmable“).  
> In diesem Fall hätten wir ein Paar „light/dimmable“, das die Anzeige und das erwartete Verhalten definiert, und der „Typ“ würde in dieser Tabelle verschwinden.

Okay, ich verstehe die Idee!

Es geht eher um die Benennung + eine Feinheit in der Granularität der Typen.

Ich mag die Idee von recht feinen Typen.

Was ich bei dir nicht verstehe, nimm dein Beispiel zum Beispiel:

```
category: "light"
sub-category": "dimmable"

```

Was bedeutet das für dich? Was wird in der UI angezeigt?

Dann mag ich die Idee von Typen, die feiner sind als nur «&nbsp;binary&nbsp;», «&nbsp;multilevel&nbsp;» und «&nbsp;color&nbsp;».

Wenn wir die Idee nehmen, eine recht allgemeine Kategorie + eine Unterkategorie (der Name ist noch zu klären, ich finde, dass es «&nbsp;Typ&nbsp;» zu nennen, ist konsistenter), was hältst du von diesem Schema? (Ich habe es gerade gezeichnet)

 ![IMG_3627](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/5/544d1c7b60985d7e7bcb5056c403dcf2af433ebd.jpeg)

(Entschuldigung, wenn es schwer zu lesen ist, von links nach rechts «&nbsp;light&nbsp;», «&nbsp;sensor&nbsp;», «&nbsp;switch&nbsp;», «&nbsp;fan&nbsp;», «&nbsp;door lock&nbsp;»)

Was wir dann tun müssen, ist, dass für jedes Paar (Kategorie/Typ) eine Funktion zurückgibt, welche Art von Button angezeigt werden soll, aber das ist nicht sehr kompliziert.

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [11. Februar 2019 um 10:53 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/153 "2019-02-11T10:53:17Z")

</div>

Du hast nicht gesagt, was du von meinem Schema hältst!

Ich gebe zu, dass ich nicht mehr alles verstehe, aber hier ^^

Sind Parameters nicht redundant mit Subcategory?

Um zu unserer Modellierung zurückzukehren, damit wir auf einer guten Grundlage starten.

Sind wir uns einig, dass:

- Ein **Gerät** ist ein physisches Gerät, ein Objekt.
- Eine **Funktion** (die wir «&nbsp;DeviceFeature&nbsp;» nennen, damit sie in der Datenbank leichter verständlich ist, aber im Grunde ist es eine Funktion), ist eine Funktion eines Geräts.

?

**Beispiel:**

Mein Gerät «&nbsp;Ampoule 1 Philips Hue&nbsp;» hat 3 Funktionen:

- Ein/Aus
- Helligkeit anpassen
- Farbe anpassen

Dieses Gerät könnte also wie folgt dargestellt werden:

```json
{
  "name": "Ampoule 1",
  "service_id": "1ec7966f-e3ef-47d7-9aef-083a59956a68",
  "features": [{
      "category": "light",
      "type/sub_category": "binary"
    },
    {
      "category": "light",
      "type/sub_category": "brightness"
    },
    {
      "category": "light",
      "type/sub_category": "color"
    }
  ]
}

```

Deine Excel-Tabelle hat Potenzial, aber könntest du mir ein paar Beispiele geben, wie du es siehst? (so wie ich es hier gemacht habe).

Ich verstehe die Hierarchie und die Logik hinter jeder Entität/Attribut nicht, die du mir zeigst.

Ich mag die Idee der Parameter, die für Z-Wave sehr nützlich sind, aber wie speichern wir das?

Ich erinnere mich, dass wir schon mit @MathieuA darüber gesprochen haben, es könnte ein Boolean-Attribut «&nbsp;parameters&nbsp;» in einem DeviceFeature sein, das angeben würde, ob ein DeviceFeature ein Parameter oder eine echte Funktion ist.

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [12. Februar 2019 um 04:07 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/155 "2019-02-12T04:07:40Z")

</div>

Hallo zusammen!

Ich setze meine Überlegungen fort, diesmal zum Code-Stil, den der Skript-/Sicht- und Kern- sowie die Module haben werden.

**1/ Erster Ansatz, sehr objektorientiert:**

Eine Vorrichtung steuern:

```javascript
const kitchenLight = await gladys.device.findOneBySelector('kitchen-main-light');
await kitchenLight.turnOn();
await kitchenLight.setBrightness(10);
await gladys.helpers.wait(100);
await kitchenLight.setBrightness(20);

```

Eine Gruppe von Vorrichtungen steuern:

```javascript
const kitchenLightGroup = await gladys.device.find('kitchen.light'); // ROOM_SELECTOR.CATEGORY
await kitchenLightGroup.turnOn();
await kitchenLightGroup.addBrightness(10);

```

**2/ Zweiter Ansatz, mehr funktional, wie wir es derzeit haben:**

```javascript
await gladys.device.turnOn('kitchen-main-light');
await gladys.device.setBrightness('kitchen-main-light', 10);
await gladys.helpers.wait(100);
await gladys.device.setBrightness('kitchen-main-light', 20);

```

```javascript
await gladys.device.turnOn('kitchen.light');
await gladys.device.addBrightness('kitchen.light', 10);

```

**Kleine Analyse**

Die beiden Ansätze sind sehr unterschiedlich und haben sehr unterschiedliche Auswirkungen.

1/ Im ersten Fall müssen nach dem Empfang der Daten aus der Datenbank diese Objekte in Abhängigkeit von jeder Kategorie von Vorrichtungen erstellt werden, und diese gesamte Objektschicht hinzugefügt werden. Das ist ziemlich ähnlich dem Ansatz, den du in diesem Channel @piznel mit dem abstract-things-Repo gemacht hast.

Ich mag das visuelle Ergebnis, es sieht sauber aus und ist ziemlich sexy, um Entwickler anzulocken. Also aus Sicht der Syntax und Kommunikation ist das für mich ein Pluspunkt.

Meine Sorge ist, dass wir diese Logik an vielen Stellen erweitern wollen, und das kann eine Belastung sein, wo wir lieber eine leichte und einfach zu bedienende Software hätten. Ich bin nicht überzeugt, dass ein objektorientierter Ansatz in einem Backend Sinn macht. Für mich ist ein Backend vor allem ein Bridge, der CRUD zwischen der DB und dem Frontend durchführt, es ist nicht unbedingt notwendig, Objekte zu erstellen, die schwer im Speicher sein können und eine Entwicklungskomplexität mit sich bringen.

2/ Mir gefällt das visuelle Ergebnis weniger, es ist weniger sexy, das ist sicher.

Aber wir wissen genau, was passiert, und in Bezug auf das Speichermanagement ist die Arbeit dem Kern überlassen: wir rufen die Funktion auf, die Funktion erledigt ihre Arbeit, und das war’s.

**Fazit**

Ich weiß nicht, ob es eine Wahl zwischen dem einen oder dem anderen ist, wir können einen hybriden Ansatz haben.

Ich würde gerne eure Meinung hören, das ist eindeutig eine nette kleine Diskussion 🙂

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [12. Februar 2019 um 08:06 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/157 "2019-02-12T08:06:53Z")

</div>

Mmm, aber damit bin ich nicht einverstanden, wir würden zu spezialisierte und redundante Informationen speichern.

1/

**light\_dimmable** : Ich verstehe den Sinn dahinter nicht. Du speicherst zwei Informationen in einem Feld: dass es sich um ein Gerät handelt, das Licht steuert + dass dieses Gerät dimmbar ist. Dazu verweise ich dich auf die [funktionalen Abhängigkeiten](https://fr.wikipedia.org/wiki/Forme_normale_(bases_de_donn%C3%A9es_relationnelles)) in einer Datenbank 😃

Wenn ich Gladys frage „Schalte das Licht im Wohnzimmer ein“, muss Gladys eine Möglichkeit haben, alle Geräte zu identifizieren, die Licht steuern (ob dimmbar oder nicht, ist hier nebensächlich, das ist eine sekundäre Information).

2/ Andererseits ist die Frage, die Kategorie auf das Gerät zu übertragen, eine echte Frage. Derzeit ist sie in DeviceFeature, weil einige Geräte (ich denke dabei besonders an Z-Wave) so ziemlich alles können, und wir haben die Kategorie im deviceType platziert, um diese „hybriden“ Geräte zu verwalten.

Dann stellt sich die Frage. Wenn du eine Überwachungskamera hast, die auch einen Temperatursensor und einen Bewegungssensor hat? Wenn du eine Tür hast, die auch Temperatur- und Feuchtigkeitsdaten übermittelt? Wie klassifizieren wir sie?

Wenn ihr Beispiele für seltsame Geräte habt, bin ich interessiert!

Persönlich bin ich dafür, die Kategorie auf das Gerät zu übertragen, das ist klarer.

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [12. Februar 2019 um 08:24 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/159 "2019-02-12T08:24:22Z")

</div>

Ich denke, das Beste, um das alles zu definieren, ist es, echte Fälle zu betrachten!

> [@piznel](#):
>
> Die Xiaomi-Gateway, die auch als Lichtsonde, Bewegungsmelder, HP und Licht fungiert!

Ausgezeichneter Fall!

Also, welche Kategorie hätte dieses Gerät, wenn wir davon ausgehen, dass wir die Kategorie im Gerät nach oben übertragen?

1/ Ich bin nicht begeistert davon, ein Gerät in drei Geräte aufzuteilen, das ist nicht logisch nach unserer Definition «&nbsp;ein Gerät ist ein physisches Gerät&nbsp;».

2/ Wenn wir ihm zum Beispiel die Kategorie «&nbsp;bridge&nbsp;» zuweisen.

Ein DeviceFeature vom Typ «&nbsp;binary&nbsp;» hat keinen Sinn mehr: Geht es darum, das Gateway ein- und auszuschalten (ein/aus?) oder das Licht des Gateways?

Also kommen wir wieder zum Punkt, dass wir auf der Seite von DeviceFeature eine zusätzliche Kategorie hinzufügen müssen, um zu sagen «&nbsp;dieses Feature ist die Lichtsteuerung&nbsp;».

PS: Als ich sagte, dass der Modellierungsteil 80% der Arbeit ausmacht, habe ich das nicht scherzhaft gemeint 😛 Der Code ist nichts!

---

<div class="post-metadata">

**Author:** ![Albenss](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/albenss/32/3916_2.png) [@Albenss](https://community.gladysassistant.com/u/Albenss)\
**Post date:** [12. Februar 2019 um 08:27 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/160 "2019-02-12T08:27:54Z")

</div>

Zu den „seltsamen“ Peripheriegeräten gehört auch der Fibaro FGMS-001 (in Z-Wave), der als Bewegungsmelder, Temperatursensor, Helligkeitssensor und Vibrationssensor fungiert, glaube ich 🙂

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [12. Februar 2019 um 09:51 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/162 "2019-02-12T09:51:17Z")

</div>

Mmm ok 😛

Schade, ich mochte die Idee, die Kategorie auf dem Gerät zu platzieren, aber das schränkt uns zu sehr ein..

Also sind wir uns einig, dass wir die Kategorie + den Typ auf dem DeviceFeature behalten?

Ich gebe zu, dass ich beim Benennen „Typ“ besser finde als „Unterkategorie“.

Ich bin einverstanden, dass es cool ist, feinere Typen zu haben!

Also statt:

- binary
- multilevel
- color

hätten wir reichhaltigere Typen:

- binary
- brightness
- temperature
- color

wie in meinem obigen Schema! Kleine Erinnerung:

 ![IMG_3627](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/5/544d1c7b60985d7e7bcb5056c403dcf2af433ebd.jpeg)

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [12. Februar 2019 um 10:01 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/164 "2019-02-12T10:01:41Z")

</div>

Ein weiterer Punkt, über den wir nicht gesprochen haben, sind die berühmten Parameter der Geräte/Gerätefunktionen!

Z-Wave hat Parameter pro Gerät, und derzeit sind diese mit den Gerätefunktionen vermischt (nicht ideal).

Man könnte ein Attribut in der Gerätefunktion hinzufügen, um anzugeben, dass die Funktion ein Parameter ist.

Problem: Wenn der Parameter ein String ist, was macht man dann?

Beispiel: Wenn man die URL einer Kamera in Device/DeviceFeature speichern möchte, zum Beispiel.

Das könnte eine andere Tabelle sein…

**Andere Idee, die nichts damit zu tun hat:** Ein Boolean in DeviceFeature einfügen, um die Historisierung der Werte zu aktivieren oder nicht (sehr praktisch für bestimmte Sensoren, die Werte senden und deren Werte nicht unbedingt historisiert werden sollen).

(ich dump meine Ideen einfach so).

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [12. Februar 2019 um 10:06 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/165 "2019-02-12T10:06:42Z")

</div>

Kleine Modellierung, wie das aussehen könnte:

 ![34](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/6/66d9fd62c14f4beae9e5064a3eea819f1c6df1dd.png)

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [12. Februar 2019 um 10:10 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/167 "2019-02-12T10:10:18Z")

</div>

> [@piznel](#):
>
> JSON in einem Parameterfeld? Das könnte auch für andere nützlich sein.

Daran habe ich auch gedacht, aber das funktioniert nicht im Fall von z-wave! Es sendet die Parameter einzeln, als wären es Features, und man müsste einen aufwendigen Vorgang durchführen:

- Device auswählen
- JSON-Wert hinzufügen
- Device aktualisieren

Während es hier in einem Vorgang erledigt ist!

Und vor allem bevorzuge ich den relationalen Aspekt für alles, was Entwicklern ausgesetzt ist, es muss strikt in der DB sein, sonst ist es in 30 Sekunden ein Chaos ^^

Die wenigen Stellen, an denen wir JSON in der Gladys-DB verwenden, sind aus sehr spezifischen Gründen!

---

<div class="post-metadata">

**Author:** ![VonOx](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/vonox/32/10128_2.png) [@VonOx](https://community.gladysassistant.com/u/VonOx)\
**Post date:** [12. Februar 2019 um 16:07 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/168 "2019-02-12T16:07:55Z")

</div>

Ich habe nicht so viele Meinungen, da ich nicht viel Erfahrung mit so etwas habe, aber eure Überlegungen sind sehr interessant, Leute.

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [13. Februar 2019 um 06:10 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/169 "2019-02-13T06:10:59Z")

</div>

Heute Morgen habe ich viel an dem Thema der „Module“, die in Gladys 4 zu „Diensten“ werden, gearbeitet.

Ich habe eine Dokumentation geschrieben und einen Dienst `example` von vorne bis hinten (inklusive Tests) codiert, um zu zeigen, wie ein Dienst in Gladys 4 aussieht.

Das ist nur ein erster Entwurf, ich werde sicherlich Änderungen vornehmen, basierend auf eurem Feedback 🙂

Das README und der Code sind hier verfügbar =\>

[https://github.com/GladysAssistant/gladys-4-playground/tree/master/server/services/example](https://github.com/GladysAssistant/gladys-4-playground/tree/master/server/services/example)

> [@VonOx](#):
>
> Ich habe nicht viel zu sagen, da ich nicht viel Erfahrung in dem Bereich habe, aber eure Überlegungen sind sehr interessant, Jungs.

Danke @VonOx! 🙂

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [13. Februar 2019 um 11:49 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/170 "2019-02-13T11:49:10Z")

</div>

Also, ich bin in den Wireframe-Modus gewechselt und habe am Onboarding-Prozess gearbeitet.

Bisher habe ich 6 Schritte identifiziert:

**1/ Willkommen:** Gladys begrüßt den Nutzer. Eine kurze Erinnerung an die Philosophie des Projekts, die Werte und die Geschichte.

**2/ Erstellung des lokalen Kontos:** Name, E-Mail, Passwort & Passwortwiederholung

**3/ Konfiguration des Wohnraums:** Registrierung des Hausnamens und Hinzufügen der Räume

**4/ Hinzufügen von Geräten:** Der Nutzer fügt seine Geräte hinzu. Er hat eine Suchleiste und kann die Integrationen auswählen, die er konfigurieren möchte. (Optional)

**5/ Konfiguration der Benachrichtigungen:** Um mit Gladys in Kontakt zu bleiben, schlägt Gladys vor, die Kommunikationsdienste zu konfigurieren: Telegram, SMS free, etc.. (Optional)

**6/ Verbindung zum Gladys Gateway-Konto:** Vorstellung des Gateways und Verbindung. (Optional)

 ![DzSHFd2UYAE6ELS](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/5/58a495d50c5f733eced3566a118ca1f408eec485.jpeg)

Wenn ihr noch andere Schritte einfallen, zögert nicht!

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [18. Februar 2019 um 04:22 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/171 "2019-02-18T04:22:02Z")

</div>

Hallo zusammen!

Ich hoffe, ihr hattet ein schönes Wochenende.

Gestern und heute Morgen habe ich an der Definition der Zustände / Zustandsübergänge gearbeitet. Das mag ein einfaches Thema erscheinen, aber es ist eine echte Überlegung.

Jede Entität in Gladys ist ein [endlicher Automat](https://de.wikipedia.org/wiki/Endlicher_Automat) mit mehreren Zuständen und Übergängen zwischen diesen Zuständen. Diese Zustände und Übergänge müssen definiert und benannt werden.

**Der Schlaf eines Benutzers**

4 Zustände:

- Wach
- Schlafend
- Soll aufstehen
- Soll schlafen gehen

Hier ist das Schema der Übergänge. Jeder Übergang entspricht einem Ereignis in Gladys, einem «&nbsp;Trigger&nbsp;», an dem jede Szene anknüpfen kann.

 ![gladys-v4-state-User%20Sleep%20State](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/b/b9e0635f528b04199389cdcf2cf7abe62639df93.png)

**Der Hausalarm**

In Gladys 4 führe ich den Begriff des Alarms für das Haus ein, damit Gladys endlich eine klare und saubere Alarmanlage sein kann.

Wie beim Schlaf, 4 Zustände:

- Aktiviert
- Deaktiviert
- Versuch der Aktivierung
- Versuch der Deaktivierung

 ![gladys-v4-state-Home%20Alarm%20State](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/6/60a8359f25da1867669ce1ff1757a6bcb2de58dc.png)

**Die Anwesenheit der Benutzer im Haus**

 ![gladys-v4-state-Home%20Presence%20State](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/6/661712465932c81558d1dbfd9a762de7b5805b8e.png)

**Die Ausführung einer Szene**

 ![gladys-v4-state-Scene%20Execution%20State](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/7/787268542e769f9be75dbf3df4565b3df2753c4a.png)

**Der Zustand der Sonne**

 ![gladys-v4-state-Sun%20State](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/b/b80dfaf067ba3834928fa5f89ab48ee5d6a33e92.png)

**Die Anwesenheit bei der Arbeit**

 ![gladys-v4-state-Work%20State](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/5/5cb703fcd30f6b816ee3d0414e4339c7239e5601.png)

\*\*Schließlich ein Beispiel für ein Gerät der Kategorie «&nbsp;light&nbsp;»

---

<div class="post-metadata">

**Author:** ![VonOx](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/vonox/32/10128_2.png) [@VonOx](https://community.gladysassistant.com/u/VonOx)\
**Post date:** [18. Februar 2019 um 19:32 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/173 "2019-02-18T19:32:10Z")

</div>

Ja, du sprichst von Szenarien, die Graphen sind der Flow zwischen den Zuständen.

Und es gibt tatsächlich den Zustand „bewaffnet“ für den Alarm.

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [19. Februar 2019 um 04:47 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/175 "2019-02-19T04:47:52Z")

</div>

> [@Jap93](#):
>
> Wie verwaltest du den Zustand „Alarm aktiviert“ nach einer Erkennung? Braucht man nicht auch einen Zustand „Alarm aktiviert“?  
> Aktiviert/deaktiviert der Zustand „Eintritt/Austritt“ des Hauses automatisch die Alarmanlage oder muss man ein Szenario verwenden?  
> Bisher sehe ich nur das, weil du an viele Fälle gedacht hast 👍

Tatsächlich habe ich in diesem Diagramm angenommen, dass der Teil „Aktivierung“ der Alarmanlage eher auf der Szenario-Seite liegt. Aber ich denke, du hast recht, es wäre sinnvoll, es dort zu platzieren, zumindest um die Namen der verschiedenen Übergänge zu definieren 🙂

Danke für das Feedback!

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [20. Februar 2019 um 05:25 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/176 "2019-02-20T05:25:56Z")

</div>

Hallo zusammen!

Heute richtig viel Arbeit am Frontend, ich bin mitten im Thema 🙂

Hier ein kleiner Vorschau, ihr habt Feedback/Ideen zur Organisation der Navigationsleiste? Ich bin offen für Vorschläge!

 ![59](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/8/8447afc5180b7084e8d33867bc191d0ea5f3229d.jpeg)

Für den Login zögere ich zwischen zwei Versionen…

Sagt mir, was ihr davon haltet!

 ![04](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/3/319882f68bca64eb63eed406761ab461b0bae811.png)

 ![15](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/c/c71680c9f266a7d90510023caae786deaa81897a.png)

---

<div class="post-metadata">

**Author:** ![Hamtaro](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/hamtaro/32/2373_2.png) [@Hamtaro](https://community.gladysassistant.com/u/Hamtaro)\
**Post date:** [20. Februar 2019 um 05:38 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/177 "2019-02-20T05:38:47Z")

</div>

Mit Logo für den Login für mich. 😛  
Übrigens, benennst du Gladys Assistant auch im Dashboard um?

---

<div class="post-metadata">

**Author:** ![pierre-gilles](https://gladys-assistant-community.b-cdn.net/user_avatar/community.gladysassistant.com/pierre-gilles/32/5886_2.png) [@pierre-gilles](https://community.gladysassistant.com/u/pierre-gilles)\
**Post date:** [20. Februar 2019 um 08:20 UTC](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578/179 "2019-02-20T08:20:08Z")

</div>

> [@Hamtaro](#):
>
> Mit Logo für den Login für mich. 😛

Ich denke, ich werde mich dafür entscheiden, auf Twitter ist sich jeder einig 😛

> [@Hamtaro](#):
>
> Übrigens, benennst du Gladys Assistant auch im Dashboard um?

Gut beobachtet! 🙂

Neue Seite, die Integrationen:

 ![47](https://gladys-assistant-community.b-cdn.net/uploads/default/original/2X/2/282d1bfcf7c745b05e15c995183067724b9b61da.jpeg)

> [@piznel](#):
>
> Ich arbeite gerade an einem [Homekit-Modul](https://community.gladysassistant.com/t/gladys-et-homekit/4348).

Hallo @piznel! 🙂 Super alles!

> [@piznel](#):
>
> Ich sehe nicht genau, was die Parameter pro Funktion von Zwave sind. Hast du ein Beispiel?

Jedes Z-Wave-Gerät hat Parameter (z. B. Aktualisierungsfrequenz, Helligkeitssensorempfindlichkeit, Erkennungsgrenze eines Eindringlings usw.), die du einstellen kannst. Ich habe einen DeviceParam vorgeschlagen, um diese Parameter zu speichern, die für mich keine echten Funktionen sind, sondern Parameter.

Dieser DeviceParam könnte auch verwendet werden, um andere Dinge zu speichern, z. B. die Anmeldeinformationen einer IP-Kamera oder Ähnliches.

Verstehst du die Idee?

> [@piznel](#):
>
> Ich habe eine [Excel-Tabelle](https://docs.google.com/spreadsheets/d/1s2JsJ2me0KGKzrJVGBDQbGPsbj4Ux5oWABw6AQSx0MI/edit?usp=sharing) erstellt, die alle Homekit-Dienste und Merkmale enthält.

Jetzt ist Philippe die Maschine wieder da 😃

> [@piznel](#):
>
> Das scheint mir eine gute Grundlage zu sein. Was denkst du?

Das kommt dem, was wir besprochen haben, doch recht nahe, oder? Eine Kategorie plus ein Typ?

Abgesehen von einigen Unterschieden in der Benennung ist die Idee dieselbe!

> [@piznel](#):
>
> Ich denke, es wäre gut, jede Eigenschaft der Kategorien zu definieren; das würde auch die Anzeige standardisieren; im obigen Beispiel kann der Farbauswahl nicht mit dem Milight-Modul funktionieren.

Ich bin zu 100 % dafür, zu harmonisieren!

Wir müssen eine Wahl treffen, die möglichst viele Informationen abdeckt, um keine Informationen über Geräte zu verlieren, die feine Werte ermöglichen, und wir müssen die Farbe konvertieren, bevor wir sie in Gladys speichern.

> [@piznel](#):
>
> 0 bis 65535 für das Hue-Modul,

Das Hue-Modul ist kompliziert, du hast 3 Gerätetypen: Hue und Sättigung und Helligkeit, das ist HSL, wenn ich mich nicht irre.

Milight habe ich den Eindruck, dass sie RGBV machen, aber es gibt Umwandlungsfunktionen HSL in diesem Modul zum Beispiel =\> [https://www.npmjs.com/package/node-milight-promise](https://www.npmjs.com/package/node-milight-promise) (schnelle Suche)

Es liegt an uns zu entscheiden, welches Format wir in Gladys bevorzugen, und die verschiedenen Getter/Setter in Gladys 4 zu codieren, damit das Modul einfach seine Daten senden kann

[Vorherige Seite](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578.md?page=6)

[Nächste Seite](https://community.gladysassistant.com/t/parlons-de-gladys-v4/3578.md?page=8)
