FHEM Forum

FHEM => Sonstiges => Thema gestartet von: curt am 09 Dezember 2018, 02:39:27

Titel: define/defmod: Namensraum Device unklar
Beitrag von: curt am 09 Dezember 2018, 02:39:27
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?


Titel: Antw:define/defmod: Namensraum Device unklar
Beitrag von: kumue am 09 Dezember 2018, 03:21:42
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
Titel: Antw:define/defmod: Namensraum Device unklar
Beitrag von: CoolTux am 09 Dezember 2018, 07:58:25
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.
Titel: Antw:define/defmod: Namensraum Device unklar
Beitrag 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.

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
Titel: Antw:define/defmod: Namensraum Device unklar
Beitrag von: curt am 12 Dezember 2018, 00:49:36
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.)