FHEM Forum

FHEM - Entwicklung => FHEM Development => Thema gestartet von: viegener am 05 Mai 2016, 11:47:45

Titel: allowed und SNAME im device hash (für AnalyzeCommand)
Beitrag von: viegener am 05 Mai 2016, 11:47:45
Ich wollte gestern allowedCommands für telegramBot einbauen und dafür die Logik in AnalyzeCommand benutzen. Dabei bin ich über ein Problem/ eine Frage gestolpert:

Allowed arbeitet nur wenn im device-hash der SNAME gesetzt ist. Dies wird normalerweise wohl in TcpServerUtils erledigt, allerdings benötige ich keinen TcpServer (sondern ein non-blocking longpoll über httputils).
=> Ich habe jetzt mal selber SNAME im hash gesetzt konnte aber keine Beschreibung/Info finden, wo SNAME noch verwendet / erwartet wird

Frage: Sind da Seiteneffekte zu erwarten oder passt das so?

Generelle Anmerkung: im device-hash sind einige reservierte Namen in Verwendung bei denen man interessante Effekte erzielen kann wenn man sie für eigene Zwecke "missbraucht". Gibt es da eigentlich so etwas wie einen "reservierten Namensraum"?
Titel: Antw:allowed und SNAME im device hash (für AnalyzeCommand)
Beitrag von: rudolfkoenig am 05 Mai 2016, 12:14:19
Reservierter Namensraum gibt es nicht, und SNAME ist auch nur ein de-facto "Standard" dadurch, dass mehrere Module (FHEMWEB, Blocking, allowed) es verwenden.
Titel: Antw:allowed und SNAME im device hash (für AnalyzeCommand)
Beitrag von: viegener am 05 Mai 2016, 12:32:03
OK und Danke, also werde ich das erstmal nutzen und habe es auch im Wiki für AnalyzeCommand... beschrieben.
Titel: Antw:allowed und SNAME im device hash (für AnalyzeCommand)
Beitrag von: justme1968 am 05 Mai 2016, 12:34:37
wäre es eventuell sinnvoll nur dann auf SNAME zu prüfen wenn es auch SNAME gibt und andernfalls NAME zu verwenden?
Titel: Antw:allowed und SNAME im device hash (für AnalyzeCommand)
Beitrag von: rudolfkoenig am 05 Mai 2016, 12:44:44
Wenn du einen getesteten Patch erstellst, habe ich kein Problem damit.
Gibt es dafuer Anwendungsgebiete?
Titel: Antw:allowed und SNAME im device hash (für AnalyzeCommand)
Beitrag von: justme1968 am 05 Mai 2016, 13:03:59
ein beispiel für die anwendung:

im yowsup modul geschieht die kommunikation über einen einzigen prozess zu dem es ein fhem device gibt. für jeden kommunikationspartner wird ein eigenes fhem device angelegt. für jedes dieser partner devices lässt sich allowed verwenden.

die beziehung zwischen den modulen ist hier eher so wie bei physikalischen/logischen modulen mit einem zentralen io und clients. nicht wie bei web und telnet bei dem jedes device selber den io macht.

SNAME steht hier also in jedem device auf dem eigenen namen und nicht auf dem namen des io devices.


der patch wäre etwa so:Index: 96_allowed.pm
===================================================================
--- 96_allowed.pm (revision 11386)
+++ 96_allowed.pm (working copy)
@@ -57,7 +57,11 @@
   my ($me, $cl, $type, $arg) = @_;

   return 0 if($me->{disabled});
-  return 0 if(!$me->{validFor} || $me->{validFor} !~ m/\b$cl->{SNAME}\b/);
+  if( $cl->{SNAME} ) {
+    return 0 if(!$me->{validFor} || $me->{validFor} !~ m/\b$cl->{SNAME}\b/);
+  } else {
+    return 0 if(!$me->{validFor} || $me->{validFor} !~ m/\b$cl->{NAME}\b/);
+  }

   if($type eq "cmd") {
     return 0 if(!$me->{allowedCommands});
Titel: Antw:allowed und SNAME im device hash (für AnalyzeCommand)
Beitrag von: rudolfkoenig am 05 Mai 2016, 13:15:47
Habs eingecheckt.
Titel: Antw:allowed und SNAME im device hash (für AnalyzeCommand)
Beitrag von: viegener am 05 Mai 2016, 13:25:38
OK, jetzt war ich mit meiner Antwort zu spät (ich hätte mit der SNAME-selber-setzen-Variante leben können  :D

Aber natürlich trotzdem Danke!