ioBroker/ioBroker.lovelace

lovelace no auto generated light/climate-entities in v3.0.1

sir0drake opened this issue · 8 comments

hallo und herzlichen dank für die tolle Umsetzung !

ich habe Probleme, meine Lichter einzubinden.
In der card "light" werden mir kein entity's zur auswahl gestellt.
Auch der Versuch den Adapter zu löschen und neu zu installieren bringt nichts.
die Nodes wurden alle einen Raum und eine Funktion "Lighnting" zugeordnet.

Gehe ich auf die entsprechenden Zigbee-Nodes werden mir die entity's in der card "light" angezeigt.
Ebenso in der Instance.
Nur nicht wenn ich auf meine eigenen Nodes gehe, dich ich unter userdata.0.... angelegt habe.
Eine doppelte Vergabe schließe ich aus.
habe ich mehrmals kontrolliert.

Auch in "Enums"

Habe auch alle Sonderzeichen entfernt...öäüß

Gleiches Problem habe ich auch mit climate.xxxx geräten.
Werden ebenfalls nicht eingebunden.

Da ich am Anfang viel experimentiert habe mit unterschiedlichen card's
( die nicht alle funktionieren ) vermute ich, das das system iob "verstrubbelt" ist.

Gibt es eine Möglichkeit alles von "lovelace" zu entfernen ( auch auf systemebene )
und komplett neu anzufangen ?

Versions:

  • Adapter version: 3.0.1
  • JS-Controller version: 4.2.24
  • Node version: v16.19.0
  • Operating system: "Debian GNU/Linux 11 (bullseye)"

Wäre über jeden Hinweis dankbar !!!!

Anmerkung:

ich habe folgende Zimmer-Struktur

0_userdata.0.Zimmer.Badezimmer
darunter dann einen Ordner Badezimmer_Licht_decke
darin dann die einzelnen Attrribute:
-ct als level.color.temperature
-level als level.brightness
-online als indicator.reachable ( nicht interessant für lovelace )
-On als switch

verschiebe ich jetzt den ganzen Ordner Badezimmer nach
0_userdata.0.Badezimmer ( Ohne .Zimmer. )
lege den Raum und die Functions dazu an,
erkennt lovelace für den Moment die Lampe als light und macht ein Auto Dect drauf.
kann die entity auch benutzen und eine card light dazu anglegen.

Starte ich jetzt iob neu, ist alles wieder weg, was ich eben geschrieben habe.
Natürlich sind noch die Zuordnungen für Raum und Function vorhanden.

wer weiß rat zu diesem verhalten...

Hast du vielleicht die Option an, dass automatische entities nur für Geräte aus alias.0 erzeugt werden?

Da sollten die zwar beim verschieben auch nicht auftauchen, aber das könnte ein Bug im Update Code sein.

Grundsätzlich werden die entities bei jedem Neustart von lovelace komplett neu generiert, da wird (aktuell) nichts dauerhaft gespeichert. Von daher kann sich bei den entities auch nichts durch Versuche dauerhaft zerschießen (zumindest lässt es sich durch einen Neustart beheben, bei vielen Objekt Updates kann durchaus mal was schief gehen).

Karten kannst du in den Instanzeinstellungen einfach wieder löschen. Wenn da nichts mehr steht, ist auch nichts mehr da.

Grundsätzlich muss für die Erkennung die Rolle richtig sein. Wichtig ist auch, dass alle Objekte existieren, also in deinem Fall auch das 0_userdata.0.Zimmer (ich empfehle "folder" bzw "Verzeichnis") und auch das Badezimmer (empfehle "device" bzw "Gerät").

Wenn du das "on" in ein "off" umdrehst, kann lovelace es auch automatisch verarbeiten (legt dann einen bimary_sensor an).

Nach diesen Kriterien werden die Geräte erkannt: https://github.com/ioBroker/ioBroker.type-detector/blob/master/DEVICES.md

Hilfreich ist auch ein Blick in den Geräte Tab von IoBroker. Wenn die Geräte da auftauchen, sollte es auch mit lovelace funktionieren.

Hallo Garfonso,

Danke für dein konstruktives Feedback.
Ich tue mich wohl noch etwas schwer, den ganzen Automatismus dahinter zu verstehen.

Ja, du hast recht: Unter "Devices/Geräte" stehen meine eigenen Zimmer/..DP's auch NICHT zur Verfügung.
Nur die manuellen, die ich unter der AliasVerwaltung erstellt habe.

Mein Ziel ist es aber quasi alles aus einem Javascript heraus zu erstellen.

Pro Zimmer habe ich ein Javascript, das mir alle DPs erstellt.

Da sind dann auch verschiedenste Geräte drin.
Licht-Decke
Licht-Stripes
Licht-Schalter
PCs
Heizung ( thermostat)
Klima

Bis jetzt ging alles recht ordentlich unter 0_userdata.0.xxxx in meiner eigenen gedachten Zimmer-Struktur zu erstellen.
Alles mit createStateAsync(...)
Auch die iot ( Alexa ) Anbindung ging unter dem direkten Zugriff des common-object recht verständlich.

Ich habe bis zu diesem Zeitpunkt einen Bogen um Alias gemacht, da ich ja auf die o.g. Weise meine eigenen Alias'e geschaffen habe.

Gibt es mittlerweile Javascript-Funktionen, die es mir ermöglichen nach einem createStateAsync
eben dieses Object zu nehmen ( getObject ) und ihm einen Raum, eine Function und einen Alias dazu zu erstellen ?

Mein Ziel ist es, wirklich die gesamte Abfolge von Kommandos in Javascript abzubilden.

Stelle dir nur vor, mein IOB muß komplett neu aufgesetzt werden.

Alles in Alias ect manuell zu erledigen ist ein sehr großer Aufwand.
ich besitze so ca 40zigbee Geräte
dazu kommen diverse Thermostate ect...

Dafür hat man ja seinen kleinen pi, der das erledigt. :)

Der Tipp nach welchen Kriterien Geräte erstellt werden ist schon mal ein sehr guten Anfang
an dem ich mich entlang hangeln kann.

Wäre für jeden Hinweis dankbar, wie ich diese Umstellung in Javascript vornehmen kann/muss.

viele grüße & Dank

Gibt es mittlerweile Javascript-Funktionen, die es mir ermöglichen nach einem createStateAsync
eben dieses Object zu nehmen ( getObject ) und ihm einen Raum, eine Function und einen Alias dazu zu erstellen ?

Die gab es schon immer.
Die Objekte mit setObject erzeugen (halt da common.alias.id auf die richtige ID biegen und mit read/write Funktionen zur Konvertierung angeben -> dann muss dein Skript sich nicht drum kümmern die states zu setzen).

Und Objekt zu Raum & Funktion hinzufügen, geht, indem du mit getObject das dazugehörige enum-Objekt holst, da dann die id zu common.members hinzufügst und dann wieder mit setObject schreibst.

Ich habe von Anfang an alles in alias und alles mit einem Skript gebaut. :-)

Hallo Garfonso,
sehr gut. Dann geht es und ich muss "nur" meinen Code anpassen.
Leider drehe ich mich dabei etwas im kreis.

Unter 0_userdata.0 habe ich per script einen Testraum angelegt.
Darin erstelle ich ein Licht.
DIMMER
ON
TEMPERATURE
WORKING
Streng nach den Vorgaben in https://github.com/ioBroker/ioBroker.type-detector/blob/master/DEVICES.md

So sieht das jetzt aus.

image

Der "folder" 0_userdata.0.test_zimmer.test_zimmer_licht_decke
type = folder
role = light
room = test_raum
function = lighting

Und trotzdem wird er nicht in devices/Geräte angezeigt.
Entsprechend auch nicht in Lovelace.

image

Enums-ROOMS
image

Enums-FUNCTIONS
image

Ich weiß, das ich den Schritt in Richtung Alias noch nicht gegangen bin.
Aber es sollte doch auch so gehen.
Gerade device/Detection ist doch "so mein Verständnis" dafür gebaut worden.

Wo liegt mein Fehler ?

Jeder Hinweis bringt mich weiter.

vielen Dank

Der "folder" 0_userdata.0.test_zimmer.test_zimmer_licht_decke
type = folder

Mach das nicht zu einem folder, sondern einem device, also Gerät.

und genau das war es, was mir noch gefehlt hat.
jetzt werden meine lampen erkannt.
Sowohl von devices als auch von lovelace.

herzlichen Dank für dein Geduld und Tipps !!!!!

ich mach die zu, da es ja nicht wirklich ein ticket ist.
meine anderen fragen würde ich dann über das forum stellen.