Mir ist der zulässige Namensraum für Devices unklar. Im zuständigen Eintrag der commandref fand ich auch nichts: Erlaubte Länge, UTF-8, Sonderzeichen?
Eigentlich geht es mir aber nur um ".", also den schnöden Punkt: Sind Punkte in einem devicename zulässig? Also wäre beispielsweise eine IP-4 als devicename zulässig?
bei IP-4 sehe ich zwar keine Punkt, aber egal ;)
loki> define IP-4 dummy
Invalid characters in name (not A-Za-z0-9._): IP-4
loki> define IP.4 dummy
loki> list IP.4
Internals:
CFGFN
NAME IP.4
NR 5609
STATE ???
TYPE dummy
Attributes:
ergo.. Punkt ja, Stich nein
Man kann diesbezüglich ein Blick in die fhem.pl werfen
sub
goodDeviceName($)
{
my ($name) = @_;
return ($name && $name =~ m/^[a-z0-9._]*$/i);
}
sub
makeDeviceName($) # Convert non-valid characters to _
{
my ($name) = @_;
$name = "UNDEFINED" if(!defined($name));
$name =~ s/[^a-z0-9._]/_/gi;
return $name;
}
Eine Beschränkung der Länge der Devicenamen gibt es nicht direkt. Allerdings gilt das nicht für die Datenbankmodule configDB und dblog.
Und man sollte bedenken, dass der Punkt im regExp eine Sonderfunktion hat. Er steht für jedes Zeichen.
Das macht dann bei Devicenamen ein scharfes regExp schwieriger.
Ich persönlich vermeide in Namen im Computerumfeld alles außer Zahlen und Buchstaben. "Irgendeiner" hat im Zweifelsfall ein Problem damit und man sucht sich denn Wolf. Ich bevorzuge die Strukturierung entsprechend der ungarische Notation :D
Gruß Otto
Danke @kumue und @CoolTux.
(Eigentlich gehört das in die commandref - wen muss ich da ansprechen?)
Zitat von: Otto123 am 09 Dezember 2018, 10:25:33
Und man sollte bedenken, dass der Punkt im regExp eine Sonderfunktion hat. Er steht für jedes Zeichen.
Das macht dann bei Devicenamen ein scharfes regExp schwieriger.
@Otto123
Ja, starkes Argument.
Aktuell geht es mir um IPv4 als Device-Namen. Da könnte es gehen, mir fällt im Moment nichts ein, was ich da mit regExp veranstalten könnte. (Ich werde gelegentlich vorstellen, an was ich baue.)