Entwicklermodul Xiaomi V4

Hallo zusammen,

Ich arbeite gerade am Xiaomi-Modul, um es in die v4 zu integrieren. Derzeit möchte ich die grundlegende Funktionalität haben (momentan kann ich Geräte abrufen, insbesondere die für die Temperatur und die für die Luftfeuchtigkeit).

Ich habe ein Problem, um mein Gerät in Preact zu ändern.

const xiaomiCapteurTemperature = update(state.xiaomiCapteurTemperature, {
    [index]: {
        features: {
            [value.getAttribute('data-key')]: {
                [field]: {
                    $set: value.value
                }
            }
        }
    }
}

Ich möchte also den device_feature-Wert meines Geräts ändern. Dazu hole ich mir index, das die Nummer des Geräts (aus der Liste der Xiaomi-Geräte) ist, dann features für das Feature-Attribut (das alle Features auflistet, also Temperatur, Luftfeuchtigkeit, …) und dann habe ich data-key, das die Nummer des Features liefert, um das richtige zu erhalten. Anschließend möchte ich field ändern, das also die Spalte ‹ name › ist, und setze dann den Wert mit dem neuen Wert.

Warum funktioniert das nicht? (Fehler auf der Frontend-Seite)

Uncaught ReferenceError: xiaomiCapteurTemperature is not defined

Danke :slight_smile:

Hättest du einen Link zu den Quellen? Das ist ein bisschen eingeschränkt hier :slight_smile:

Ja, das ist nicht falsch, es ist ein bisschen kompliziert, mir zu helfen, wenn ich Ihnen nicht die Quellen gebe :smiley:

Achtung, ich habe einen xiaomi-Zweig, man muss wirklich darin bleiben. Und die Dateien befinden sich in /front/src/routes/integrations/all/xiaomi

Danke :slight_smile:

Und ich habe gerade festgestellt, dass ich nicht auf dem offiziellen Repo bin ^^

Macht nichts, ich mache das später alles richtig.

Beim schnellen Lesen würde ich sagen, dass du ein Problem mit dem Gültigkeitsbereich hast.
Deine Variable ist entweder in der if-Bedingung oder in der else-Bedingung deklariert. Zeilen 75 und 87.
Bei Zeile 95 ist deine Variable undefiniert, weil sie außerhalb des Gültigkeitsbereichs deiner Bedingungen liegt.

Alles klar, ich schau mal! :slight_smile: Danke

Danke!!! Es funktioniert perfekt, was für ein Anfängerfehler :smiley: Vielen Dank! Es funktioniert perfekt

Aber kleine Anmerkung, verwende nicht [value.getAttribute('data-key')]:, das ist überhaupt nicht React-Best-Practice ^^

Ich würde dir raten, Subkomponenten zu erstellen und das lokal in den Komponenten zu verwalten, wie ich es zum Beispiel im Z-Wave-Service gemacht habe, Beispiel hier =>

https://github.com/GladysAssistant/Gladys/blob/master/front/src/routes/integration/all/zwave/node-page/Device.jsx

@pierre-gilles

Daran habe ich tatsächlich gedacht :smiley: Danke ^^ Ich gewöhne mich an React, ich komme eigentlich von Vue.js, es ist an einigen Punkten etwas anders :slight_smile:

Ich ändere das.

@pierre-gilles

Ich komme gerade von PR, eine Frage zu den Türsensoren. Wie gehst du damit um, dass der Sensor zwischen 0 und 1 schwingen kann? Stört dich das nicht?

Danke :slight_smile:

Zwischen 0 und 1 schwanken? Was meinst du damit?

Normalerweise, wenn die beiden Geräte nebeneinander sind, sind sie 1, aber wenn sie ihren Zustand ändern (am Rande des Erkennbaren könnte es doch schiefgehen, oder?), also im Grunde hat er Schwierigkeiten, es zu erkennen, also springt es zufällig und potenziell schnell von 0 auf 1.

Ich mache mir vielleicht zu viele Gedanken ^^

Du machst dir zu viele Gedanken!

Ich habe dir eine vollständige Überprüfung deines Pull Requests gegeben, damit du die Qualität verbessern kannst :slight_smile:

PS: Antworte mir auf dem Pull Request, nicht hier

Hey @pierre-gilles,

Ich habe Änderungen am Code des xiaomi-Dienstes vorgenommen und warte auf dein Feedback, was geändert werden soll oder nicht :blush:

Übrigens, ich habe eine Frage: Was ist Codecov genau? Ich habe das Prinzip nicht ganz verstanden. Ich habe gesehen, dass meine PR 60% hat, aber wovon… ^^

Das ist ein Hinweis für die Testabdeckung.
Großartig, du hast 60% deines Codes, der durch Tests abgedeckt ist.

Ah danke also muss ich meine Tests verbessern ^^

Tatsächlich schlagen die Checks fehl, weil deine Abdeckung zu niedrig ist. Du musst Tests für jede Funktion schreiben!

Ich antworte dir auf der PR.

@pierre-gilles ich wollte wissen, was du davon hältst. Ich habe also die verschiedenen möglichen Xiaomi-Sensoren zusammengeführt. Allerdings denke ich, dass es wichtig ist, Elemente wie die Gateway oder die Xiaomi-Lampen trotzdem zu trennen, oder?

Ich bin einverstanden, man kann mehrere Registerkarten erstellen, und dann kann man alle Sensoren zusammenfassen, meiner Meinung nach.

Allerdings sind diese Ansichten nur die Ansichten „was der Dienst sieht“, aber es muss eine weitere Ansicht geben, die alle Geräte „auf Gladys-Seite“ zusammenfasst, wie beim Z-Wave-Dienst.

Okay, ich mache die Änderungen und versuche, die Tests einzurichten.