FHEM Forum

FHEM - Hausautomations-Systeme => SlowRF => Thema gestartet von: HomeAuto_User am 20 Februar 2018, 21:26:29

Titel: [Patch] - 10_FS20.pm - Housecode
Beitrag von: HomeAuto_User am 20 Februar 2018, 21:26:29
Hallo,

bitte folgenden Patch einpflegen.
Mit dieser Änderung werden via SIGNALduino alle Housecode´s verarbeitet.

Ohne diesen Patch werden manche Housecode´s nicht angelegt.

PS: Die Änderung fürs senden via SIGNALduino folgt später.  ;)
Titel: Antw:[Patch] - 10_FS20.pm - Housecode
Beitrag von: rudolfkoenig am 20 Februar 2018, 22:40:42
Alternativ schickt SIGNALduino die Werte mit lc().
Vorteil: ich muss nicht Angst haben, dass einer der 1000+ Installationen mit FS20 deswegen warum auch immer ein Problem kriegt.
Titel: Antw:[Patch] - 10_FS20.pm - Housecode
Beitrag von: elektron-bbs am 22 Februar 2018, 20:06:29
Wärest du denn prinzipiell bereit, eine Erweiterung des Moduls zum Senden über den SIGNALduino einzubauen?

Es ginge dabei nur um eine Ergänzung in der sub "FS20_Set" in folgender Art:


  my $io = $hash->{IODev};
  if ($io->{TYPE} eq "SIGNALduino") {   # das IODev ist ein SIGNALduino
... Umwandlung Sendedaten für SIGNALduino ...
    IOWrite($hash, 'sendMsg', $newmsg); # send SIGNALduino
  } else {                                 # das IODev ist kein SIGNALduino
    IOWrite($hash, "04", "010101" . $hash->{XMIT} . $hash->{BTN} . $c);     # send CUL
  }


Test läuft hier mit einem CUL und einem SIGNALduino bereits seit ca. 1/4 Jahr problemlos.
Titel: Antw:[Patch] - 10_FS20.pm - Housecode
Beitrag von: rudolfkoenig am 24 Februar 2018, 08:33:58
Waere der Aufwand der Umwandlung vom FHZ-Format in SignalDuino deutlich aufwendiger, als im 10_FS20.pm?

CUL muss diese Umwandlung genauso machen, und es waere nicht logisch, die Umwandlung in einigen Faellen im logischen Modul, in anderen Fellen im physikalischen Modul zu machen.
Titel: Antw:[Patch] - 10_FS20.pm - Housecode
Beitrag von: elektron-bbs am 25 Februar 2018, 20:53:14
Ja, der Aufwand wäre höher. Eine Möglichkeit wäre noch, ein zweites FS20-Modul für SIGNALduino bereitzustellen, aber das halte ich eigentlich für übertrieben, da es bis auf ca. 30 Zeilen Code identisch zu deinem Modul wäre.

Was den ursprünglichen Patch angeht: Es zieht sich durch den gesamten Code der 00_CUL.pm und 10_FS20.pm, das Hex-Ausgaben in lower case gewandelt werden, warum dann logischerweise nicht auch in der FS20_Parse?
Titel: Antw:[Patch] - 10_FS20.pm - Housecode
Beitrag von: Ralf9 am 11 März 2018, 00:01:55
ZitatWaere der Aufwand der Umwandlung vom FHZ-Format in SignalDuino deutlich aufwendiger, als im 10_FS20.pm?
In der 00_SIGNALduino.pm müssten wir für die ID 74 (FS20) beim dispatch eine Sonderbehandlung einbauen:
$dmsg = lc($dmsg) if ($id eq '74');
Log3 $name, SDUINO_DISPATCH_VERBOSE, "$name Dispatch: $dmsg, $rssi dispatch";
Dispatch($hash, $dmsg, \%addvals);  ## Dispatch to other Modules



Beim Parse im FS20-Modul wäre die folgende Anpassung notwendig:
  my $dev = lc(substr($msg, 16, 4));
  my $btn = lc(substr($msg, 20, 2));
  my $cde = lc(substr($msg, 24, 2));


Ich würde es besser und sauberer finden, wenn die Anpassung beim Parse im FS20-Modul gemacht würde.
Dies würde auch das Parse im FS20-Modul etwas robuster machen.
Da ich anfänglich bei mir das "lc" noch nicht drin hatte, kam es bei mir beim Testen zu seltsamen Effekten und Fehlern. Das FS20 device wurde per autocreate 2 mal angelegt. Einmal mit Grossbuchstaben und einmal mit Kleinbuchstaben.

Gruß Ralf
Titel: Antw:[Patch] - 10_FS20.pm - Housecode
Beitrag von: rudolfkoenig am 11 März 2018, 10:36:16
Wie du es so schoen demonstriert hast, gibt es keinen nennenswerten Unterschied zwischen den beiden Loesungen, beide sind im Prinzip Einzeiler. Ob die Umstellung im physikalischen oder logischen Modul besser untergebracht ist, darueber laesst sich streiten, ich habe aber aus einem anderen Grund Bedenken FS20.pm zu aendern: meiner Erfahrung nach kriegt man bei alten Modulen selbst mit eine Bugfix Aerger, weil die Leute sich darauf eingestellt haben. Deswegen bitte ich dich, die Anpassung im Signalduino durchzufuehren.
Titel: Antw:[Patch] - 10_FS20.pm - Housecode
Beitrag von: Sidey am 12 März 2018, 20:41:55
Hi Rudi,

es sind zwei Anpassungen in FS20 notwendig.

$hash->{Match}     = "^81..(04|0[cC])..0101[aA]001";

und

my ($hash, lc($msg)) = @_


Klar kann man das jetzt auch im Physischen Modul nachbehandeln. Aber ich finde der Code des physischen Modules wird schwer wartbar, wenn dort Umwandlungen genau für ein logisches Modul eingebaut werden.

Da es bei Hexadezimalwerten keinen Unterschied der Wertigkeit zwischen groß und Kleinschreibung gibt würde ich dich bitten das in das FS20 Modul einzubauen.
Wenn es in FHEM ein Standard wäre, alle hex Werte immer in Kleinbuchstaben zu übergeben würde ich es ja verstehen, dass man so etwas in das physische Modul einbaut, mir ist so etwas aber nicht bekannt.


Mir ist natürlich bewusst, dass jede Änderung zu einem Fehler führen könnte, aber die Wahrscheinlichkeit ist wohl sehr gering, dass es zu einem Fehler kommt, denn die Werte die heute an das Modul übergeben werden können funktionieren weiterhin.

Im Sinne der Wartbarkeit ist die Lösung in FS20 aber Zukunftssicherer finde ich.

Grüße Sidey
Titel: Antw:[Patch] - 10_FS20.pm - Housecode
Beitrag von: rudolfkoenig am 13 März 2018, 09:50:18
Ich habe deine Argumente gehoert, und auch vorher verstanden.
Fuer mich, als FS20 Maintainer, ist Risiko/Gewinn Verhaeltnis zu gross.