Autor Thema: define/defmod: Namensraum Device unklar  (Gelesen 248 mal)

Offline curt

  • Full Member
  • ***
  • Beiträge: 422
define/defmod: Namensraum Device unklar
« 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?


RPI 3 Busware-CC1101 Jeelink HomeMatic Z-Wave (USB) + viele RPI Zero W

Offline kumue

  • Sr. Member
  • ****
  • Beiträge: 938
Antw:define/defmod: Namensraum Device unklar
« Antwort #1 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
RPi3 als FHEM-Server mit DBLog und configdb
Homematic mit HMLAN, HMUSB und paar Sensoren und Aktoren
Informativ Informativ x 1 Liste anzeigen

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 17184
Antw:define/defmod: Namensraum Device unklar
« Antwort #2 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.
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.me/MOldenburg
Mein GitHub: https://github.com/LeonGaultier
kein Support für cfg Editierer

Offline Otto123

  • Hero Member
  • *****
  • Beiträge: 10663
    • Otto's Technik Blog
Antw:define/defmod: Namensraum Device unklar
« Antwort #3 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
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7490+7412,WRT1900ACS-OpenWrt,Sonos,ET9200,Arduino nano,ESP8266

Offline curt

  • Full Member
  • ***
  • Beiträge: 422
Antw:define/defmod: Namensraum Device unklar
« Antwort #4 am: 12 Dezember 2018, 00:49:36 »
Danke @kumue und @CoolTux.
(Eigentlich gehört das in die commandref - wen muss ich da ansprechen?)

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 3 Busware-CC1101 Jeelink HomeMatic Z-Wave (USB) + viele RPI Zero W