define/defmod: Namensraum Device unklar

Begonnen von curt, 09 Dezember 2018, 02:39:27

Vorheriges Thema - Nächstes Thema

curt

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?


RPI 4 - Jeelink HomeMatic Z-Wave

kumue

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

CoolTux

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.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Otto123

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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

curt

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.)
RPI 4 - Jeelink HomeMatic Z-Wave