Autor Thema: [Patch] - 10_FS20.pm - Housecode  (Gelesen 1015 mal)

Offline HomeAuto_User

  • Developer
  • Full Member
  • ****
  • Beiträge: 286
[Patch] - 10_FS20.pm - Housecode
« 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.  ;)
« Letzte Änderung: 20 Februar 2018, 21:28:05 von HomeAuto_User »
- FHEM v5.9 | Rasberry PI 3
- radino CC1101 433Mhz (SIGNALduino)| - radino CC1101 868Mhz (CUL) | nano 433Mhz (SIGNALduino) - Sensoren: 3x FHT 80b | 5x FHT 80 TF-2 | 2x S300TH | 1x WS7000-20 | 5x "Hideki" | THR128 und andere ;-)

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 19532
Antw:[Patch] - 10_FS20.pm - Housecode
« Antwort #1 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.

Offline elektron-bbs

  • New Member
  • *
  • Beiträge: 15
Antw:[Patch] - 10_FS20.pm - Housecode
« Antwort #2 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.

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 19532
Antw:[Patch] - 10_FS20.pm - Housecode
« Antwort #3 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.

Offline elektron-bbs

  • New Member
  • *
  • Beiträge: 15
Antw:[Patch] - 10_FS20.pm - Housecode
« Antwort #4 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?

Offline Ralf9

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2139
Antw:[Patch] - 10_FS20.pm - Housecode
« Antwort #5 am: 11 März 2018, 00:01:55 »
Zitat
Waere 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
« Letzte Änderung: 11 März 2018, 10:08:30 von Ralf9 »
FHEM auf Cubietruck mit Igor-Image, SSD und  hmland + HM-CFG-USB-2,  HMUARTLGW Lan,   HM-LC-Bl1PBU-FM, HM-CC-RT-DN, HM-SEC-SC-2, HM-MOD-Re-8, HM-MOD-Em-8
HM-Wired:  HMW_IO_12_FM, HMW_Sen_SC_12_DR, Selbstbau IO-Module
SIGNALduino

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 19532
Antw:[Patch] - 10_FS20.pm - Housecode
« Antwort #6 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.

Offline Sidey

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2156
Antw:[Patch] - 10_FS20.pm - Housecode
« Antwort #7 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
Signalduino, HMLan, Raspberry Pi, Mysensors, ESPEasy, HABridge für Echo

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 19532
Antw:[Patch] - 10_FS20.pm - Housecode
« Antwort #8 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.

 

decade-submarginal