allowed und SNAME im device hash (für AnalyzeCommand)

Begonnen von viegener, 05 Mai 2016, 11:47:45

Vorheriges Thema - Nächstes Thema

viegener

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"?
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

rudolfkoenig

Reservierter Namensraum gibt es nicht, und SNAME ist auch nur ein de-facto "Standard" dadurch, dass mehrere Module (FHEMWEB, Blocking, allowed) es verwenden.

viegener

OK und Danke, also werde ich das erstmal nutzen und habe es auch im Wiki für AnalyzeCommand... beschrieben.
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

justme1968

wäre es eventuell sinnvoll nur dann auf SNAME zu prüfen wenn es auch SNAME gibt und andernfalls NAME zu verwenden?
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

rudolfkoenig

Wenn du einen getesteten Patch erstellst, habe ich kein Problem damit.
Gibt es dafuer Anwendungsgebiete?

justme1968

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});
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

rudolfkoenig


viegener

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!
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können