alexa-fhem / FHEM-Connector: Geräte in Alexa doppelt und ständig neu

Begonnen von FunkOdyssey, 24 Juli 2019, 12:40:45

Vorheriges Thema - Nächstes Thema

Hotbird

Hallo zusammen, ich habe das Problem auch schon seit einiger Zeit und kann eigentlich auch alles aus diesem Beitrag ausschließen. Wie kann ich aber das hier überprüfen ( wenn auf fhem seite das save file nicht korrekt geschrieben wird )? Es sind bei mir immer wieder die selben Geräte aber alle kommen über die HueBridge...

Ich habe jetzt mal die 6 Devices in eine Excel geschrieben ( mit FUUID ). Wenn ich die alten lösche und die "neuen" drin lasse dürfte sich ja eigentlich nichts ändern, außer die FUUID ändert sich.

mister

Ich kann diese Probleme auch bestätigen, auch wenn dieser Thread schon etwas älter ist alledings betrifft es bei mir nur zwei Geräte die immer wieder neu bzw doppelt gefunden werden.

Navigator

Habe auch noch diese Probleme. Ein Hue Lightstrip wird immer und immer wieder neu gefunden und doppelt eingetragen.  :(
Gruß aus Sachsen. FHEM auf Cubietruck. Vormals EZControl XS1 User.

fh-frank

Hallo, ich hatte auch dieses Problem, diverse Geräte tauchten immer wieder doppelt auf, auch ohne mein Zutun. Bei mir hörte der Spuk auf, als ich die Geräte in FHEM nicht mehr einem Raum zuordnete, der exakt den gleichen Bezeichner wie eine SmartHome Gerätegruppe/Raum in Alexa hatte. Ein konkretes Beispiel: Ich hatte das device "stehlampe" (ein shelly switch) in FHEM mit dem Attribut "room" einem Raum "Wohnzimmer" zugeordnet und in Alexa eine Gruppe mit dem Bezeichner "Wohnzimmer" angelegt, in der sich auch die "stehlampe" befand. Nachdem ich die Räume in FHEM anders als in Alexa benannt habe, war Ruhe. Vielleicht hilft das ja jemand weiter.

Navigator

...also das kann eigentlich nicht die Ursache sein. Ich hatte nie doppelte Bezeichnungen in FHEM und Alexa. Nachdem ich die immer wieder neuen, doppelten Geräte in FHEM umbenannt habe, ist auch bei mir nun Ruhe.
Gruß aus Sachsen. FHEM auf Cubietruck. Vormals EZControl XS1 User.

sTaN

Hallo Zusammen,

ich muss den Thread auch mal wieder hochholen, da ich den beschriebenen Bug auch von Anfang an bis heute mit mir herumschleppe.
Ich kann ebenfalls alle beschriebenen Punkte und Ursachen ausschließen. Habe sogar über einen längeren Zeitraum eine Tabelle mit FUUID gepflegt und hier änderte sich nichts. Betroffen sind bei mir leider 10 Geräte und alles Philips HUE Lampen.
Ich selbst hatte und habe auch nie ein Philips HUE Konto bzw. den Skill aktiv. Irgendetwas muss doch bei den HUE Geräten noch für Probleme sorgen, oder?
Ich würde ja gern mehr Details und Infos liefern, um das Problem zu fassen, bräuchte nur Auskünfte, was genau benötigt wird. Oder hat keiner mehr dieses Problem?
FHEM und Alexa-fhem alles aktuell. Die betroffenen Geräte wurden sogar gelöscht und neu angelegt, ohne Erfolg.

Gruß
sTaN
Raspberry Pi 3
2 x CUL CC1101-USB-Lite 868MHz
FS20 Komponenten, Philips HUE, Alexa-Fhem, MAX! Geräte, homebridge, harmony, Unifi, FirtzBox, MQTT, Aurora, Denon, Sonos, TabletUI, CALENDAR, EGPM2LAN, Pushover

IcedEarth

Ich schließe mich mal meinem Vorredner an.
Bei mir tauchen auch einige Geräte ab und an neu auf.
Wenn ich bspw nachttischlampe aus sage, wird sie ausgeschaltet. Bei an kommt aber die Aussage, dass es mehrere Geräte mit dem selben Namen gibt.
Wirklich seltsam.

gromeck

Ich konnte das Problem bei mir inzwischen eingrenzen und lösen.

Fehlerbild

Nach einem Neustart/Reload von FHEM bzw. einem erneuten Gerätescan in der Alexa-App wurden ein Teil meiner FHEM-Geräte von Alexa erneut als neue Geräte erkannt. Dadurch hatte ich anschließend Geräte mit identischen Namen doppelt in Alexa. Die alten Geräte funktionierten weiterhin, aber Alexa konnte wegen der doppelten Namen Sprachbefehle nicht mehr eindeutig zuordnen.

Zum Test habe ich schließlich alle FHEM-Geräte aus Alexa gelöscht und neu suchen lassen:

erster Scan: 26 neue Geräte
zweiter Scan: 20 neue Geräte

Interessant war, dass die sechs nicht erneut gefundenen Geräte ausnahmslos HomeMatic/CUL_HM waren. Die 20 Duplikate waren dagegen MQTT2_DEVICE bzw. dummy Devices. Das hat den entscheidenden Hinweis gegeben.

Ursache

Ich verwende alexa-fhem 0.5.65 lt. https://github.com/justme-1968/alexa-fhem/tree/master ist das der letzte Stand). In lib/fhem.js wird die für Alexa verwendete ID abhängig vom FHEM-Gerätetyp erzeugt.

Für CUL_HM wird eine stabile ID aus Typ und DEF verwendet:

if( this.type == 'CUL_HM' ) {
  this.serial = this.type + '.' + s.Internals.DEF;
  ...

Für nicht speziell behandelte Gerätetypen – darunter MQTT2_DEVICE und dummy – landet der Code dagegen hier:

else
  this.serial = this.fuuid;
this.uuid_base = this.serial || this.name;

Die daraus erzeugte uuid_base wird später zur endpointId für Alexa.

In meinem Fall waren die FUUIDs der betroffenen Geräte nicht dauerhaft stabil. Damit änderte sich aus Sicht von Alexa die endpointId, und Alexa hielt dasselbe FHEM-Gerät beim nächsten Scan für ein neues Gerät.

Das erklärt auch, warum meine HomeMatic-Geräte nie doppelt erschienen: deren ID basiert auf TYPE + DEF und blieb damit stabil.

Lösung

Da meine FHEM-Gerätenamen eindeutig und dauerhaft sind, verwende ich für MQTT2_DEVICE und dummy jetzt den Gerätenamen als stabile ID.

In lib/fhem.js habe ich den abschließenden Teil geändert von:


} else
  this.serial = this.fuuid;

auf:

} else if( this.type == 'MQTT2_DEVICE' || this.type == 'dummy' )
  this.serial = this.name;
else
  this.serial = this.fuuid;

Im alexa-fhem-Log sieht das danach beispielsweise so aus:

[FHEM] EG.Buero.Licht uses ID: EG.Buero.Licht

Statt der FUUID verwendet alexa-fhem für dieses MQTT2-Gerät jetzt also dauerhaft EG.Buero.Licht.

Test

Anschließend habe ich erneut sämtliche FHEM-Geräte aus der Alexa-App entfernt.

erster Scan: 26 neue Geräte
unmittelbar danach zweiter Scan: kein neues Gerät gefunden

Damit ist das Verhalten bei mir reproduzierbar behoben.

Ich habe den Patch bei mir per Script automatisiert, da eine Neuinstallation/ein Update von alexa-fhem die Änderung in fhem.js natürlich wieder überschreiben kann. Das Script prüft nach dem Patch außerdem mit node --check, ob die geänderte Datei syntaktisch gültig ist.

Langfristig wäre es sinnvoll, wenn alexa-fhem für alle Devices z.B. immer den Namen verwenden würde (dieser ist ja auch eindeutig), statt sich dort auf die FUUID zu verlassen.
FHEM 6.0 @ RaspberryPi3 Model B Rev1.2, 2 CUNX, 101 HM devices, 6 MQTT devices, 612 definitions in 5845 lines in 36 FHEM configuration files

justme1968

ZitatLangfristig wäre es sinnvoll, wenn alexa-fhem für alle Devices z.B. immer den Namen verwenden würde (dieser ist ja auch eindeutig), statt sich dort auf die FUUID zu verlassen.

nein. ist es nicht. sinnvoll ist es rauszufinden warum die fuuid nicht stabil ist. dafür gibt es sie schließlich.

name zu verwenden geht sehr schnell bei ersten rename schief.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968