Neue Funktion *Signalstärke* oder Verbindungsstatus

Ja, das Ziel ist dasselbe, der LQI berücksichtigt den RSSI und die gesendeten/empfangenen Pakete sowie die Route, die Einheiten sind unterschiedlich, aber in beiden Fällen möchte der Benutzer Netzwerkbalken in der UI.

Ein bisschen Erklärung => https://www.sciencedirect.com/topics/engineering/link-quality

Das Problem mit 1 bis 5 ist, dass wir an Präzision verlieren, wenn wir Szenen erstellen möchten (Nachricht bei schwachem Signal). Für mich ist das in Ordnung. Mal sehen, was die anderen dazu denken.

Man könnte einen Kompromiss finden und auf 0 bis 10 umsteigen. Nicht sicher, ob mehr Präzision wirklich so nützlich ist :slight_smile:

Danach denke ich wirklich, dass es sich lohnt, zwischen den verschiedenen Diensten zu faktorisieren, dann entwickelt man die UI einmal und alles ist kompatibel.

Ich verstehe sehr gut, was du möchtest, aber man sollte LQI und RSSI nicht vermischen, das sind zwei verschiedene Einheiten.

Link Quality, Einheit = LQI spezifisch für Zigbee => warum den Bereich manipulieren? (0 - 255)
Hier geht es um Qualität

RSSI Signalstärke => Einheit = dBm (Gemeinsam für alle Funkprotokolle)
Hier handelt es sich um eine Leistungseinheit

Faktorisierung okay, aber ich habe das Gefühl, dass das in diesem Fall keinen Sinn macht

Daher sehe ich nicht den Sinn darin, den Zigbee-Bereich von 0-255 in 0-10 zu „konvertieren“, das fügt Codezeilen hinzu, die zu nichts nütze sind.

Die Diskussion ist nicht klar, weil hier zwei Begriffe vermischt werden :sweat_smile:

Ja, aber als Benutzer, was ist der Unterschied?

Wie zeigst du den LQI in der UI an?

Und wie zeigst du den RSSI an?

Auf ähnliche Weise, auch wenn es zwei verschiedene Funktionen sind.

Ich hatte den Eindruck, dass du nur eine einzige wolltest.

Danke für deine Erklärungen @VonOx, das ist ein bisschen klarer.
Sehr naiv gefragt, wäre diese Lösung vielleicht umsetzbar?

  1. generisches Feature gladys signal-strength
  2. Für Zigbee berechnet man den Wert, indem man LQI und RSSI mischt

Beispiel:

  • LQI < 10/255 oder RSSI < 1 / 5 → signal-strength = 1 / 5
  • LQI <128 und RSSI <= 3 / 5 → signal-strength = 3/5
  • usw.

[EDIT] Ansonsten kann man natürlich auch 2 Features erstellen, von denen eines spezifisch für Zigbee ist.

Ja, aber was ist dann der Sinn von zwei verschiedenen Funktionen?

Der einzige Vorteil, den ich sehe, wäre möglicherweise, in der neuen « Grafik »-Ansicht eine detaillierte Anzeige der Entwicklung des genauen LQI zu zeigen.

Aber ist das wirklich nützlich?

Eigentlich möchte ich vermeiden, dass wir eine spezifische Zigbee-Entwicklung machen, die anderen Integrationen nicht zugutekommt, denn jedes Protokoll macht sein eigenes Ding (ist immer so), und dass wir dann gezwungen sind, eine andere UI pro Protokoll zu entwickeln, was nicht das Ziel von Gladys ist!

Aber wenn es einen echten Unterschied gibt und einen echten Bedarf, die beiden zu unterscheiden, kein Problem, wir können die beiden getrennt halten, ich möchte nur sicher sein, dass der genaue Nutzen für den Endnutzer klar ist :slight_smile:

Nein, das Diagramm ist in diesem Fall nutzlos :smiley:

Die Einheiten sind nicht dieselben, diese beiden Funktionen sind in gewisser Weise sehr eng miteinander verbunden, aber sie tragen nicht dieselbe Information.

Was ich nicht wollte, war, die Zigbee-Daten zu konvertieren und keinen „gladys“-Wert für die Link-Quality zu haben, da sie bereits mit ihren Spezifikationen auf der Zigbee-Seite (für den Server-Teil) definiert ist. Wenn ich mich in die Lage eines Benutzers versetze, der eine Szene erstellt, und die Zigbee-Dokumentation ihm 0-255 anzeigt, und auf der Gladys-Seite 0-5 ist, wird das Frustration verursachen :slight_smile:

Bei der Anzeige/Icons des „Signals“ in der UI werden es in beiden Fällen klassische Balken sein.

Zur Info, in Tasmota kann man auch die Signalstärke verwenden. Dort findet man den RSSI und das Signal…

18:59:57.869 MQT: tele/tasmota_C5B00A/STATE = {"Time":"2021-10-04T18:59:57","Uptime":"25T06:33:06","UptimeSec":2183586,"Heap":30,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":20,"MqttCount":354,"Wifi":{"AP":1,"SSId":"XXXXXXXX","BSSId":"XXXXXXXXXX","Channel":6,"RSSI":92,"Signal":-54,"LinkCount":61,"Downtime":"0T00:15:31"}}

Trotzdem möchtest du genau dieselbe Information in der UI anzeigen! Deshalb verstehe ich das nicht!

Welchen Sinn hat es, das an zwei verschiedenen Stellen zu speichern, wenn das Ziel ist, dasselbe anzuzeigen?

Wie wird das verwendet werden?

Genau das ist für mich ein Argument für die Faktorisierung!

In der UI sollte der Benutzer keine Werte eingeben müssen, Dokumente durchstöbern (wir sind nicht bei Home Assistant), wenn es auf Gladys-Seite verallgemeinert ist, sind wir in der Lage, eine spezifische UI mit vorgefüllten Werten zu erstellen.

Beispiel: Ein/Aus, ich habe eine generische Komponente erstellt (der Benutzer muss nicht wissen, dass 0 aus und 1 an bedeutet: Die UI erledigt das für ihn)

Ein weiteres Beispiel: die Farbe:

Der Benutzer muss nicht erraten, dass die Farbe in RGB, HEX oder was auch immer gespeichert ist: Er möchte einfach die Farbe steuern, egal welches Protokoll verwendet wird, und er hat einen Farbauswahl-Tool, der den Job erledigt, egal welche Marke, und die Farbe wird in jedes Format konvertiert: Das ist der Job des Entwicklers, nicht des Benutzers.

Daher mein Kommentar zur Signalqualität, wenn wir das Verhalten verallgemeinern, werden wir in der Lage sein, eine Komponente in der UI zu erstellen, die es dir ermöglicht, 0 bis 5 « Balken » auszuwählen (wir müssen das Format der Komponente vorstellen), und der Benutzer muss nicht einmal die Zigbee-Dokumentation lesen

Ein weiteres Argument für die Faktorisierung!

Hier kann ich sehen, dass das Signal sogar negativ ist :sweat_smile:

Wir müssen ein wenig Ordnung schaffen, sonst wird es ein Chaos, und wir müssen fünf verschiedene UIs für jeden Gerätetyp codieren.

Na klar, das sind dBm, die sind immer negativ. Keine LQI.

Deshalb verstehe ich die Diskussion nicht, wir wollen m³ wie Meter behandeln. Keine Lust, mich da reinzuhängen, das ergibt keinen Sinn.

Ich kenne diese Einheiten nicht so gut, entschuldigt, wenn ich Unsinn rede!

Wenn diese Einheiten unterschiedlich sind, wie zeigt sich das für den Benutzer in der UI?

Lassen wir die Technik mal beiseite, ich möchte nur wissen, wie man als Benutzer diese Daten anzeigt :slight_smile:

Ich will etwas Konkretes, wie sieht das in der Oberfläche aus?

Man kann sich auch anrufen, um darüber zu sprechen, vielleicht ist das einfacher :smiley: Wie du willst!

Die Idee ist einfach, das aus Nutzersicht zu integrieren, anstatt zuerst an den Backend zu denken und dann mit unterschiedlichen Implementierungen pro Integration dazustehen :slight_smile:

Kommt auf die Verfügbarkeit an

Ansonsten würde es für den Nutzer so aussehen (das ist ein Mockup, ich habe die Farbe des Signal-Icons nicht angepasst)

image
Gleiches gilt für den RSSI


@lmilcent ich habe gesehen, dass du deine Meinung zum lucide-Repo geäußert hast :wink: Gefällt dir dieses Icon!

Ja, das bestätige ich dir, ich finde es ganz nett :lächeln:

Das ist sauber :slight_smile:

Also, du weißt, was ich dir jetzt antworten werde, ich weiß nicht, ob ich es noch einmal sagen muss :joy:

Um also weiterzumachen, sind wir uns einig, dass wir in beiden Fällen eine Zahl als Eingabe haben (den LQI oder den RSSI), und als Ausgabe wollen wir eine ganze Zahl von 0 bis 5, um diese fünf verschiedenen Miniaturansichten anzuzeigen.

Und aus dem, was ich aus dieser Diskussion verstehe, bist du, @VonOx, dafür, die Umwandlung in der Frontend-Anwendung durchzuführen (und die Rohdaten in der Datenbank zu speichern), und ich bin eher dafür, dies in der Backend-Anwendung zu tun (und die transformierten Daten in der Datenbank zu speichern).

Beide Ansätze haben Vor- und Nachteile:

  • Wenn wir die Umwandlung in der Backend-Anwendung durchführen und nur 0 bis 5 in der Datenbank speichern, verlieren wir im Grunde genommen Informationen, die nützlich sein könnten (oder auch nicht).
  • Wenn wir die Umwandlung in der Frontend-Anwendung durchführen, bedeutet das, dass wir jede Marke und jedes Format bei der Anzeige verwalten müssen, wobei wir bisher in Gladys dies immer im Backend-Service gemacht haben.

Genau

Genau, denn für mich haben wir zwei unterschiedliche Einheiten, die nicht dieselbe Bedeutung haben. Auch wenn die Darstellung in der Benutzeroberfläche identisch ist.

Also brauchen wir andere Meinungen :grin: (ich bin kein Berufs-Entwickler, also zählt meine Meinung weniger).

Danach spricht nichts dagegen, den Namen der Funktion zu ändern, da diese 0-5 weder ein LQI noch ein RSSI ist, sondern ein „abgeleiteter“ Wert. Man könnte eine eigene Funktion für Gladys erstellen, „Signalqualität“, die von 0 bis 5 geht.

Anschließend erstellt man Konvertierungsfunktionen, um von einer zur anderen zu wechseln.

Würde dir das sinnvoll erscheinen?

Oder wärst du wirklich dafür, die gesamte Konvertierung auf der Frontend-Seite durchzuführen?

Denn das Problem bei der Konvertierung auf der Frontend-Seite ist, dass man sie überall durchführen muss: im Dashboard, bei den Triggern der Szenen, bei den Aktionen der Szenen, bei den Nachrichten usw.

Während man, wenn man das auf der Backend-Seite macht, die Verarbeitung nur einmal durchführt.

Ich sehe nicht, warum es eine Umwandlung geben sollte:

Auf der Frontend-Seite, was ich machen würde:

Wenn signal = 1, dann solches Icon (generischer Gladys-Wert)
oder
Wenn signal <= 10, dann solches Icon (Rohwert)

Ist das nicht dasselbe? Vielleicht habe ich etwas übersehen
Auf der Scene-Seite nutze ich den echten Wert.

Wenn in der Zukunft eine Box-Option hinzugefügt wird, die es ermöglicht, zusätzlich zum Icon den Wert (LQI oder dBm) anzuzeigen, ist es noch einfacher

Das ist genau das, was ich in meiner vorherigen Nachricht vorschlagen wollte:

Das würde bedeuten:

  • Den Rohwert in der DB speichern
  • Einen berechneten Wert speichern, der der Funktion signal-strength entspricht