Geräteerkennungsprobleme in Zigbee2mqtt

Guten Abend zusammen
Ich wende mich an euch, um mir bei der Lösung meines Problems zu helfen. Nach mehreren Neustartversuchen von Zigbee2mqtt, dann von Gladys, dann Löschen des Sensors und Neuinstallation, erhalte ich immer noch diese Meldung, wenn ich die Speicherung dieses Sensors bestätige

Ein Fehler ist beim Speichern aufgetreten.

Dieser Sensor ist ein Xiaomi, wie der im Tutorial von @pierre-gilles, der gut in Gladys integriert war.
Im Zigbee-Entdeckungsfenster forderte dieser Sensor ein Update, aber als ich es bestätigt habe, erhielt ich diese Meldung:

Ein Fehler ist beim Speichern aufgetreten.

Ich habe den Sensor in Zigbee2mqtt und in Gladys gelöscht, ihn neu gepairt, er erscheint in Zigbee2mqtt und in Gladys Zigbee-Netzwerkentdeckung

, aber wenn ich ihn speichern möchte, erhalte ich immer noch diese Meldung:

Ein Fehler ist beim Speichern aufgetreten.

Allerdings erscheint er nicht mehr in den Zigbee2mqtt-Logs. (Ich denke, das ist normal).
Ich hatte ein anderes Gerät, das mir das Gleiche gemacht hat, ich habe es also aus den Zigbee-Geräten von Gladys gelöscht, und als ich es gespeichert habe, hat es funktioniert und ich habe diese Meldung nicht mehr erhalten.
Könnte es sein, dass dieser Xiaomi-Sensor noch in einer Datenbank ist, die sich weigert, ihn zu aktualisieren? Ich weiß nicht, wie ich das überprüfen kann.
Jetzt kann ich ihn nicht mehr in Gladys integrieren
Hat jemand eine kleine Idee, um mir zu helfen?
Vielen Dank im Voraus

Hallo @Psoy, welche Version von Gladys verwendest du? Stelle sicher, dass du Version v4.36.0 hast!

hallo @pierre-gilles
Ja, ich bin auf v4.36
Offensichtlich liegt es am Xiaomi-Detektor, denn ich habe ein Zigbee-Relais, das ich in den Geräten von Gladys gelöscht und direkt neu installiert habe. Ich habe es in der Xiaomi-App getestet, es verbindet sich gut. Ich habe es wieder auf Zigbee2mqtt gestellt, es verbindet sich gut, Gladys erkennt es bei der Erkennung neuer Geräte, möchte es aber nicht installieren
Ich glaube, der Sensor ist in einer Datenbank eingetragen und da Gladys ihn in seiner Datenbank sieht, möchte er ihn nicht neu installieren :thinking:. Ist das möglich?

Möglich. Kannst du das Entwicklerfenster (F12 in deinem Browser) öffnen und zum Tab Netzwerk/Network gehen? Wenn du auf Speichern klickst, sollte eine rote Zeile erscheinen. Das ist der Inhalt der Antwort, der uns interessiert.

bonsoir @cicoub13
Hier ist, was der roten Linie entspricht.

XHRPOST
http://192.168.1.134/api/v1/device
[HTTP/1.1 409 Conflict 112ms]

	
POST
	http://192.168.1.134/api/v1/device
Status
409
Conflict
HTTP-Version/1.1
Transfer653 o (Größe 206 o)
Referrer-Policystrict-origin-when-cross-origin
Request-PriorityHighest
DNS-AuflösungSystem

	
Access-Control-Allow-Headers
	Origin, X-Requested-With, Content-Type, Accept, Authorization
Access-Control-Allow-Methods
	GET,PUT,PATCH,POST,DELETE
Access-Control-Allow-Origin
	*
Connection
	keep-alive
Content-Length
	206
Content-Type
	application/json; charset=utf-8
Date
	Sat, 17 Feb 2024 19:17:19 GMT
ETag
	W/"ce-TsLI0wKKmlWByipVYxMOxBl3daQ"
Keep-Alive
	timeout=5
Vary
	Accept-Encoding
X-Powered-By
	Express
	
Accept
	application/json, text/plain, */*
Accept-Encoding
	gzip, deflate
Accept-Language
	fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3
authorization
	Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiOTJlZTQ2NjctOTQ1MC00YjU5LWE3NGEtZThlZmExNTc1MTJjIiwic2NvcGUiOlsiZGFzaGJvYXJkOndyaXRlIiwiZGFzaGJvYXJkOnJlYWQiXSwic2Vzc2lvbl9pZCI6IjU2ZmMzMWYzLTI5ZjYtNGI1ZC04MjQ1LWEwM2Q0ZTc5MTc0ZSIsImlhdCI6MTcwODE5MDk3OCwiZXhwIjoxNzA4Mjc3Mzc4LCJhdWQiOiJ1c2VyIiwiaXNzIjoiZ2xhZHlzIn0.4d2tzir56mkN3AlDo0KNGjpCDBC2aiy9wVrjQemFHg8
Connection
	keep-alive
Content-Length
	2306
Content-Type
	application/json;charset=utf-8
Host
	192.168.1.134
Origin
	http://192.168.1.134
Referer
	http://192.168.1.134/dashboard/integration/device/zigbee2mqtt/discover
User-Agent
	Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:122.0) Gecko/20100101 Firefox/122.0

Ich habe das im Antwort-Tab gefunden:

status	409
code	"CONFLICT"
error	
message	"external_id muss eindeutig sein"
attribute	"external_id"
value	"zigbee2mqtt:detecteur couloir:light-sensor:decimal:illuminance"
type	"unique violation"

Screenshot der Detektor-Präsentation:


Screenshot der Zigbee-Erkennung in Gladys

Liegt es daran, dass es zwei identische Funktionen gibt?
Helligkeit (dezimal)
Das wäre erstaunlich, denn dieser Detektor ist seit 2 Jahren über Zigbee2mqtt in Gladys integriert!

Offensichtlich existiert ein Feature bereits. Es ist schwer zu sagen, ob ein Löschvorgang schiefgelaufen ist oder ob es von diesem Gerät kommt.

Hier sind die Befehle, um es in der Datenbank zu löschen :broom:

:warning: Mach vorher ein Backup deiner Datenbank (Stoppe den Docker gladys, kopiere die Datei /var/lib/gladysassistant/gladys-production.db)


docker exec -it gladys /bin/sh

sqlite3 /var/lib/gladysassistant/gladys-production.db

.mode column

.headers on

SELECT id, name, selector, external_id FROM t_device_feature WHERE external_id = 'zigbee2mqtt:detecteur couloir:light-sensor:decimal:illuminance';

Damit erhältst du die ID des zu löschenden Features (in Form eines UUIDs b0c63f91-3bcd-4989-b740-1850807ecb0d)

Löschen der Zustände
DELETE FROM t_device_feature_state WHERE device_feature_id = '<uuid>';

Löschen der aggregierten Zustände
DELETE FROM t_device_feature_state_aggregate WHERE device_feature_id = '<uuid>';

Löschen des Features
DELETE FROM t_device_feature WHERE id = '<uuid>';

.exit

hallo @cicoub13
ich werde es versuchen, danke. Ich werde dir Feedback geben
Danke und einen schönen Tag

Guten Abend @cicoub13
Also, die Fragen beginnen. Ich habe den ersten Befehl kopiert/eingefügt, aber ich bekomme keine UUID als Rückmeldung.

pi@gladys:// $ docker exec -it gladys /bin/sh
sqlite3 /var/lib/gladysassistant/gladys-production.db
.mode column
.headers on
SELECT id, name, selector, external_id FROM t_device_feature WHERE external_id = 'zigbee2mqtt:detecteur couloir:light-sensor:decimal:illuminance'
/src/server #

Ich bekomme keine ID des zu löschenden Features zurück. Ich bleibe bei /src/server #

Jede Zeile ist ein Befehl (wo du auf Enter drücken musst). Hast du ein Backup gemacht?

Ja, mit Filezilla, habe ich die Datei auf meine Festplatte kopiert

Das gibt es, wenn man die Zeilen einzeln eingibt und nach jeder Zeile bestätigt:

pi@gladys:// $ docker exec -it gladys /bin/sh
/src/server # sqlite3 /var/lib/gladysassistant/gladys-production.db
SQLite version 3.44.2 2023-11-24 11:41:44
Enter ".help" for usage hints.
sqlite> .mode column
sqlite> .headers on
sqlite> SELECT id, name, selector, external_id FROM t_device_feature WHERE external_id = 'zigbee2mqtt:detecteur couloir:light-sensor:decimal:illuminance'
   ...>


Es fehlten Semikolons am Ende der SQL-Befehle (die ich in meinem ursprünglichen Post hinzugefügt habe).

eine ID

pi@gladys:// $ docker exec -it gladys /bin/sh
/src/server # sqlite3 /var/lib/gladysassistant/gladys-production.db
SQLite version 3.44.2 2023-11-24 11:41:44
Enter « .help » for usage hints.
sqlite> .mode column
sqlite> .headers on
sqlite> SELECT id, name, selector, external_id FROM t_device_feature WHERE external_id = ‹ zigbee2mqtt:detecteur couloir:light-sensor:decimal:illuminance ›;
sqlite>

Hallo @cicoub13
Muss ich die UUID anzeigen? Denn ich hänge gerade an der Eingabeaufforderung: sqlite> fest und weiß nicht, wie ich da rauskomme. .exit bringt mich nicht raus.
Und für die Löschungen soll ich:

id = '<uuid>';

ersetzen durch:
id = 'meine uuid';
dabei diese Teile entfernen: <>
Ich kenne mich überhaupt nicht mit SQL aus
Danke für deine Hilfe

Wärst du nicht in einem externen Programm wohler, indem du deine Datenbank exportierst, um zumindest die UUID zu haben?

Du kannst den Beitrag von Pierre-Gilles lesen:

Ich nutze das quasi ausschließlich!!

Gladys ausschalten, die Datenbank auf deinen PC/Mac herunterladen und dann anschauen.
Wenn du vorher ein Backup gemacht hast, kannst du in TablePlus löschen und deine Datenbank wieder importieren (Achtung bei den Berechtigungen, ich muss die Berechtigungen für alle öffnen und dann wieder zurücksetzen).

Hallo @Terdious
Ich werde mir das ansehen, danke für deine Antwort :wink:

Hallo @Terdious, @pierre-gilles
Wohin führt dieser Link? Denn im Moment funktioniert er nicht mehr.

Hallo @Psoy,

Nichts mehr, das waren die Anfänge von Gladys V4 bei ihrer Konzeption, glaube ich ^^

Da habe ich mich geirrt, ich hätte genauer sein müssen, ich sprach von diesem Link im Beitrag:

Kein Problem,
Für Tabplus ist alles gut, ich muss nur noch lernen, wie es funktioniert. Ich habe bereits die Datenbank in Tabplus geöffnet, das ist ein erster Schritt :grinning:
nochmals danke