Entwicklermodul Xiaomi V4

Hallo.

Vielleicht ein Problem mit dem Neustart bei mir. Ich habe heute Morgen gesehen, dass er auf Status 1 gewechselt hat. Allerdings war die Steckdose ausgeschaltet.. Wird dein Luftentfeuchter kontinuierlich betrieben oder schaltet er sich nur zeitweise ein?

Er startet über ein Szenario und einen Alarm.

Hallo zusammen,

Ich bin neu hier bei Gladys und habe gerade die Beta installiert und das Xiaomi-Modul konfiguriert.
Meine Gateway wurde direkt erkannt sowie meine Sensoren (5). Allerdings zeigt die Konfiguration an, dass die Sensoren Temperatur, Luftfeuchtigkeit und Batteriestand messen, aber im Dashboard finde ich diese Informationen nicht, nur die Temperatur wird angezeigt.

Außerdem habe ich von den 5 Sensoren einige, die bisher keine Werte gemeldet haben. Das finde ich erstaunlich, da ich bereits ein eigenes System unter NodeRed habe, das die Gateway ausliest und die Werte regelmäßig abruft.

Trotzdem gute Arbeit.
Kevin

Hallo @Xerses!

Hast du ein bisschen gewartet? Es dauert meistens etwas, bis die Werte ankommen und angezeigt werden. Wenn du gewartet hast und trotzdem nichts passiert, wäre ich an deinen Gladys-Logs interessiert, um zu prüfen, ob ein Fehler in der Integration vorliegt :slight_smile:

Nach 1 Tag Warten immer noch keine Werte :slight_smile:
Und jetzt habe ich nur noch 1 Sensor mit einer Temperatur.

Was die Logs betrifft, ich finde nicht heraus, wie ich sie anzeigen kann. Überall im Forum sehe ich « pm2 logs », aber das funktioniert bei mir nicht, weil der Befehl pm2 nicht existiert. Ich habe trotzdem das Gladys V4-Image unter HypriotOS genommen.

Okay, da muss wohl ein kleines Problemchen sein.

pm2 logs war für Gladys v3, jetzt um die Gladys-Logs zu sehen, ist es docker logs gladys :slight_smile:

@Hamtaro, hast du bei dir die Werte richtig?

Tatsächlich gibt es seltsame Log-Rückmeldungen.

Letztendlich funktionieren 3 von 5 Sensoren. In der Integration sehe ich, dass diese 2 Sensoren keine Features wie die anderen haben. Das liegt wahrscheinlich daran. Dabei sind es doch dieselben Modelle.

2019-10-21T11:55:14+0200 device.newStateEvent.js:20 (DeviceManager.newStateEvent) Unable to save new state of deviceFeature xiaomi:158d00010ffd46:humidity, state = 63
2019-10-21T11:55:14+0200 device.newStateEvent.js:23 (DeviceManager.newStateEvent) { Error: DeviceFeature not found
at DeviceManager.newStateEvent (/src/server/lib/device/device.newStateEvent.js:16:13)
at EventEmitter.emit (events.js:198:13)
at Event.emit (/src/server/lib/event/index.js:8:16)
at XiaomiManager.newValueTemperatureSensor (/src/server/services/xiaomi/lib/event/xiaomi.newValueTemperatureSensor.js:111:23)
at XiaomiManager.onMessage (/src/server/services/xiaomi/lib/event/xiaomi.onMessage.js:34:12)
at Socket. (/src/server/utils/functionsWrapper.js:13:13)
at Socket.emit (events.js:198:13)
at UDP.onMessage [as onmessage] (dgram.js:628:8) message: ‹ DeviceFeature not found › }

Okay …
Nun, schließlich habe ich in der Integration alle Geräte, einschließlich der Gateway, gelöscht.
Anschließend habe ich sie nacheinander verbunden und jetzt haben alle die Features, sodass die Werte in Kürze hochgeladen werden sollten. Ich halte euch auf dem Laufenden.

Voilà, nach 25 Minuten sind alle Werte angezeigt!

Falls ich einen Vorschlag für die Benutzeroberfläche im Dashboard machen darf: Es fehlen Informationen zum Sensor:
Hier ein Screenshot meiner persönlichen Oberfläche (NodeJS):

Für jeden Raum habe ich den Batteriestand, die Temperatur mit einer zusätzlichen Genauigkeit, die Luftfeuchtigkeit, den Humidex (ein Wert, der den Komfort des Raums misst) mit einer Anzeige, ob der Komfort steigt oder fällt, und vor allem das Datum und die Uhrzeit der letzten Aktualisierung dieser Elemente, was es ermöglicht, immer zu wissen, ob unser System läuft.

Falls das inspirierend sein kann!

Guten Tag

Ich habe eine ähnliche Rückmeldung von @Hamtaro erhalten, es gibt ein kleines Problem mit der Registrierung der Features, das ist notiert, ich werde das reparieren :slight_smile:

Danke für dein Feedback zur Oberfläche!

Um dir ein bisschen meine Sichtweise zu geben, die Leitlinie für Gladys 4 ist es, etwas Designorientiertes zu schaffen und ein Dashboard zu vermeiden, das zu „geekig“ ist und voller Daten in alle Richtungen, also versuche ich, jeden Gebrauch zu berücksichtigen: Wofür dient jedes Datum und wie wird es präsentiert, um den „Unordnungseffekt“ zu vermeiden?

Bei einer „Raum“-Box finde ich es schön, die Temperatur und die Luftfeuchtigkeit zu haben (übrigens stellt sich die Frage, du hast nur einen Sensor pro Raum, wie geht man vor, wenn es mehrere Sensoren pro Raum gibt? Es gibt die Möglichkeit, einen Durchschnitt zu bilden, aber einige Benutzer wie @Hamtaro stellen einen Temperatursensor in den Kühlschrank, was die Durchschnittswerte verfälscht – man muss an all diese Fälle denken – )

Was die Batterie angeht, glaube ich nicht, dass die Daten nützlich sind. Was nützlich ist, ist zu wissen, wann dein Gerät die Batterie leer hat, eine Benachrichtigung zu erhalten, dass die Batterie schwach ist, danach muss man sich die Mühe machen, den Batteriezustand visuell zu überprüfen, wenn eine Maschine das für dich tun kann, ständig?

Gleiches gilt für das Datum des letzten Wertes, was nützlich ist, ist zu wissen, ob ein Sensor aufhört, Werte zu senden (und in diesem Fall eine Benachrichtigung zu erhalten), ansonsten warum muss man die Oberfläche + eine mentale Belastung überprüfen, um jedes Datum im Kopf zu überprüfen?

Das ist meine Meinung, danach gibt es durchaus Möglichkeiten, die aktuellen Boxen zu verbessern, aber ohne die Oberfläche zu überladen: wir wollen ein leichtes Produkt behalten :wink:

Ja, tatsächlich hatte ich kein Benachrichtigungssystem im Kopf. Wenn es die Möglichkeit gibt, dies zu haben, entfällt tatsächlich die Notwendigkeit, diese Informationen (Batteriestand und letzte Messung) direkt sichtbar zu haben.

Ich teste weiterhin diese Beta, um euch Feedback zu geben. Ich ziehe in einigen Monaten um und habe die Ambition, das System mit anderen Geräten (Kameras, Sensoren, Lichtern usw.) voll auszunutzen und vielleicht sogar meine eigenen Module zu entwickeln, wenn ich die Zeit finde (mit 2 Kindern ist das komplizierter als früher).

Viel Erfolg

Super! Danke für dein tolles Feedback auf jeden Fall :slight_smile: Sieh es nicht negativ, wenn ich deine Vorschläge mit den Überlegungen konfrontiere, die wir während der Konzeption haben. Jedes Feedback lässt uns nachdenken, und ich versuche, das Beste aus all diesen Rückmeldungen mitzunehmen.

Das klingt großartig. Halte uns auf dem Laufenden über den Fortschritt deines Projekts und zögere nicht, deine Installation / dein Projekt im Forum zu posten. Bei der Hilfe zu den Diensten bin ich gerne dabei, je mehr, desto besser!

Re,
Ich habe immer noch Probleme. Einer der Sensoren aktualisiert sich nicht mehr und ich habe das in den Logs:

2019-10-21T16:41:54+0200 device.newStateEvent.js:20 (DeviceManager.newStateEvent) Unable to save new state of deviceFeature xiaomi:158d00010ffd46:temperature, state = 21.5
2019-10-21T16:41:54+0200 device.newStateEvent.js:23 (DeviceManager.newStateEvent) { SequelizeTimeoutError: SQLITE_BUSY: database is locked
at Query.formatError (/src/server/node_modules/sequelize/lib/dialects/sqlite/query.js:420:16)
at afterExecute (/src/server/node_modules/sequelize/lib/dialects/sqlite/query.js:119:32)
at Statement.errBack (/src/server/node_modules/sqlite3/lib/sqlite3.js:16:21)
name: ‹ SequelizeTimeoutError ›,
parent:
{ Error: SQLITE_BUSY: database is locked
errno: 5,
code: ‹ SQLITE_BUSY ›,
sql:
‹ INSERT INTO t_device_feature_state (id,device_feature_id,value,created_at,updated_at) VALUES ('4bda35aa-b103-4463-b4e3-48db162f9780','215500a7-ecef-40e0-b095-082c0a1f1ead',21.5,'2019-10-21 14:41:52.535 +00:00','2019-10-21 14:41:52.535 +00:00'); › },
original:
{ Error: SQLITE_BUSY: database is locked
errno: 5,
code: ‹ SQLITE_BUSY ›,
sql:
‹ INSERT INTO t_device_feature_state (id,device_feature_id,value,created_at,updated_at) VALUES ('4bda35aa-b103-4463-b4e3-48db162f9780','215500a7-ecef-40e0-b095-082c0a1f1ead',21.5,'2019-10-21 14:41:52.535 +00:00','2019-10-21 14:41:52.535 +00:00'); › },
sql:
‹ INSERT INTO t_device_feature_state (id,device_feature_id,value,created_at,updated_at) VALUES ('4bda35aa-b103-4463-b4e3-48db162f9780','215500a7-ecef-40e0-b095-082c0a1f1ead',21.5,'2019-10-21 14:41:52.535 +00:00','2019-10-21 14:41:52.535 +00:00'); › }

Kein Problem bei mir.
Aber gut, du hast Dev auf meinem Rechner ^^

Interessantes Feedback, ich verstehe, was passiert!

Ich habe ein Issue erstellt, ich werde daran arbeiten:

Hallo,

da der « Xiaomi wall plug » anscheinend nur lesend integriert ist, wollte ich den Dienst so ändern, dass man diese gesteuerte Steckdose vom Gladys aus steuern kann.

Ich habe mich also daran gemacht, die Datei xiaomi.setValue.js zu ändern, um sie zu verwalten:

 case 'xiaomi-plug':
  msg = {
    cmd: 'write',
    model: this.sensorModelBySensorSid.get(sid),
    sid,
    data: JSON.stringify({
      status: state,
      key,
    }),
  };
  break;

Jetzt gehe ich zum Dashboard, klicke auf den Schalter, um ihn einzuschalten, und erhalte dies in den Server-Logs:

 2020-01-14T20:52:26+0100 <warn> scene.executeSingleAction.js:18 (SceneManager.executeSingleAction) There was an error executing action device.set-value
2020-01-14T20:52:26+0100 <warn> scene.executeSingleAction.js:19 (SceneManager.executeSingleAction) { Error: Function device.setValue in service xiaomi does not exist.
    at DeviceManager.setValue (C:\Users\Thibaut\Documents\GitHub\GladysDev\server\lib\device\device.setValue.js:19:11)
    at Object.device.set-value (C:\Users\Thibaut\Documents\GitHub\GladysDev\server\lib\scene\scene.actions.js:16:24)
    at executeAction (C:\Users\Thibaut\Documents\GitHub\GladysDev\server\lib\scene\scene.executeActions.js:29:33)
    at SceneManager.executeSingleAction (C:\Users\Thibaut\Documents\GitHub\GladysDev\server\lib\scene\scene.executeSingleAction.js:16:11)
    at EventEmitter.Trigger.event.on (C:\Users\Thibaut\Documents\GitHub\GladysDev\server\lib\trigger\index.js:15:65)
    at EventEmitter.emit (events.js:189:13)
    at Event.emit (C:\Users\Thibaut\Documents\GitHub\GladysDev\server\lib\event\index.js:8:16)
    at setValueFeature (C:\Users\Thibaut\Documents\GitHub\GladysDev\server\api\controllers\device.controller.js:90:18)
    at C:\Users\Thibaut\Documents\GitHub\GladysDev\server\api\middlewares\asyncMiddleware.js:4:19
    at Layer.handle [as handle_request] (C:\Users\Thibaut\Documents\GitHub\GladysDev\server\node_modules\express\lib\router\layer.js:95:5)
    at next (C:\Users\Thibaut\Documents\GitHub\GladysDev\server\node_modules\express\lib\router\route.js:137:13)
    at AuthMiddleware.asyncMiddleware (C:\Users\Thibaut\Documents\GitHub\GladysDev\server\api\middlewares\authMiddleware.js:28:7)
  message: 'Function device.setValue in service xiaomi does not exist.' }

Ich habe überall nachgeschaut, aber die Funktion setValue scheint im Xiaomi-Dienst korrekt geschrieben zu sein. Außerdem sehe ich, dass der Fall « xiaomi-duplex-wired-switch » integriert wurde. @Hamtaro, ich nehme an, das ist eines deiner Geräte. Gibt es Probleme, wenn du es über das Dashboard steuern willst?

Falls einer von euch eine Idee hat, bin ich dankbar. Mir entgeht etwas.

Seltsam, mit was bearbeitest du das, mit vscode? Die Dateikodierung hat sich nicht geändert?

Ja, ich bin mit VSCode. Kodierung in UTF-8.

@link39 Der Xiaomi-Dienst stellt kein Attribut „device“ bereit, siehe xiaomi/index.js! Das setValue, das du gesehen hast, ist noch eindeutig WIP, es ist nicht funktionsfähig! Man muss es hinzufügen :slight_smile:

Hallo, ich komme etwas spät, aber hier ist meine Meinung.

Wenn du vorhast, den Lichtring oder den integrierten Lautsprecher der Xiaomi-Gateway zu nutzen, dann wäre diese die bessere Wahl. Sie ermöglicht dir auch, Szenarien zwischen deinen Xiaomi-Geräten zu erstellen.

Wenn du etwas Günstigeres möchtest, das sich mit anderem Zigbee-Material wie Philips Hue und Ikea verbinden lässt, dann wäre eine Zigbee-Gateway in Kombination mit dem Projekt Zigbee2mqtt die bessere Wahl.

Ich habe nur die Xiaomi-Gateway (gekauft als Paket zu Beginn meiner Smart-Home-Erfahrung). Daher habe ich die andere Option nicht so sehr erkundet. Ich überlasse es also den Zigbee-Gateway-Profis, mich zu korrigieren, falls ich mich über die Möglichkeiten täusche.