Hallo,
ich möchte alle Lichter auf einen Schlag ein- oder ausschalten, die Lichtschalter heißen "Licht.EG.Flur", "Licht.OG.Bad" usw., sind also durch einen . voneinander getrennt.
set Licht.* off
Als Ergebnis bekomme ich nun "Can't locate object method "set" via package "Licht" (perhaps you forgot to load "Licht"?) at (eval 4290) line 1. ". Ich habe es schon mit " versucht, selbes Ergebnis. Habe ich etwas übersehen?
so wird das vermutlich nix....
Schau Dir mal structure an.
...und die Verwendung des "." in Gerätenamen ist auch eher suboptimal (schau dir mal die Bedeutung des "." in regex an ;) ).
Was liefert denn ein
list Licht.*
Zitat
...und die Verwendung des "." in Gerätenamen ist auch eher suboptimal
Dachte ich auch schon, blöderweise verwende ich den . überall (gewohnt aus anderen Entwicklungssprachen). Gibt es da einen Workaround? Ein \ davor oder so?
list Licht.*
Licht.DG.Flur
Licht.DG.Schraege
Licht.EG.Flur
Licht.EG.HWR
Licht.EG.WC
...
Licht.EG.Nina
Hi Det20,
Ich habe fast die gleichen Namensgebung wie Du, bloß ohne die sinnlosen Punkte.
Da funktioniert das was Du willst einwandfrei. Einfach so ;D
Wenn Du das nicht mehr ändern willst kannst Du einen Filter im devspec nehmen. Du setzt z.B. attr <> comment auf Licht und kannst dann set comment=Licht off verwenden.
Siehe -> https://fhem.de/commandref_DE.html#devspec
Bei Dir muss das eigentlich auch funktionieren, es wird wohl ein Gerät dabei sein was kein Schalter ist. Schau das list nochmal komplett an.
Gruß Otto
Da habe ich doch einen Punkt vergessen, so funktioniert es:
set Licht.EG.* off
set Licht.OG.* off
Danke für die schnellen Antworten
es braucht keinen Workaround, Du kannst mit regEx den Punkt nicht einfach so eindeutig ermitteln, dass ist alles. Der Punkt match jedes Zeichen auch den Punkt.
Du kannst nur nicht auf diese Wiese Licht.bla von Licht_bla unterscheiden.
Der Fehler liegt in einem Deiner Geräte.
Gruß Otto