Signalduino Entwicklung

Begonnen von thoffma3, 05 Juli 2015, 23:01:00

Vorheriges Thema - Nächstes Thema

Ellert

Zitat von: habeIchVergessen am 12 Mai 2016, 19:32:40
@Ellert: du hast recht
https://github.com/habeIchVergessen/RFFHEM/raw/dev-r32/FHEM/00_SIGNALduino.pm
00_SIGNALduino.pm heruntergeladen und shutdown restart.

3. Pi SIGNALduino empfängt und aktualisiert ein bestehendes SOMFY Gerät, aber autocreate legt kein SOMFY-Gerät an.
3. Pi SIGNALduino  SOMFY Gerät versucht zu senden, das zeigt beim 2. Pi mit FHEMduino keine Wirkung.
Log vom 3. Pi:
Zitat2016.05.12 20:47:02 4: signal433/msg READ: MC;LL=-1045;LH=799;SL=-616;SH=414;D=AAAAAAAB330;C=404;L=42;
2016.05.12 20:47:16 4: signal433/msg READ: MC;LL=-1985;LH=1921;SL=-891;SH=1024;D=56E82FEE8;C=981;L=35;
2016.05.12 20:47:17 4: signal433/msg READ: MC;LL=-1983;LH=1925;SL=-1006;SH=945;D=ADD05FDD0;C=956;L=34;
2016.05.12 20:47:55 5: signal433/write: adding to queue sendMsg P43#A911000912389A#R6
2016.05.12 20:47:55 5: signal433: sendmsg Preparing rawsend command for protocol=43, repeats=6, clock=250 bits=A911000912389A
2016.05.12 20:47:55 4: signal433: sendmsg Somfy RTS data: 5646464FD5EDFF, clock: 250
2016.05.12 20:47:55 5: signal433: sendmsg prepared manchester signal with clock=1
2016.05.12 20:47:55 4: signal433/set: sending via SendMsg: SM;R=6;C=1;D=A911000912389A
2016.05.12 20:47:56 5: signal433 SW: SM;R=6;C=1;D=A911000912389A
2016.05.12 20:47:56 4: signal433/msg READ: SM;R=6;C=1;D=A911000912389A
2016.05.12 20:47:56 5: signal433/HandleWriteQueue: nothing to send, stopping timer

RappaSan

#1651
Hab noch ein anderes Problem:
Heute das update des dev.r32 forks durchgeführt.
Danach ist kein schalten der IT-Steckdosen mehr möglich. :(
Ich spiele derzeit die alte Software aus einem vorher gesicherten Image wieder drüber....

Ralf9

Zitat von: Ellert am 12 Mai 2016, 20:52:40
00_SIGNALduino.pm heruntergeladen und shutdown restart.

3. Pi SIGNALduino empfängt und aktualisiert ein bestehendes SOMFY Gerät, aber autocreate legt kein SOMFY-Gerät an.
3. Pi SIGNALduino  SOMFY Gerät versucht zu senden, das zeigt beim 2. Pi mit FHEMduino keine Wirkung.
Log vom 3. Pi:
2016.05.12 20:47:55 4: signal433: sendmsg Somfy RTS data: 5646464FD5EDFF, clock: 250
2016.05.12 20:47:55 5: signal433: sendmsg prepared manchester signal with clock=1


Das kann so nicht funktionieren. Die Ermittlung des manchesterclock aus der clockrange ist noch fehlerhaft ( clock=1 )


Ich habe mal die notwendigen Änderungen für das IOWrite des SIGNALduino in die 10_SOMFY.pm eingebaut. Ist noch ungetestet.

https://github.com/Ralf9/test/commit/3fd7071e07773ee0ce592e8ea71b980e7dd84957


https://raw.githubusercontent.com/Ralf9/test/master/FHEM/10_SOMFY.pm


Gruß Ralf
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 HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

RappaSan

Nach restore der "alten" dev-r32 (V 3.2.0-b22 SIGNALduino - compiled at Apr 18 2016 22:59:19 ) geht alles wieder...

Sidey

Der FHEMduino wird das Signal nicht richtig Auswerten, welches der SIGNALduino sendet. Allerdings sollten die Rolläden darauf reagieren.

Viegener wäre wohl bereit den Patch für das Somfy Modul auf zu nehmen.
@Ralf: schickst Du ihm den mal?

https://forum.fhem.de/index.php?topic=53319.0

Grüße Sidey
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem,zigbee2mqtt

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker

habeIchVergessen

Zitat von: Ralf9 am 12 Mai 2016, 21:15:28
Das kann so nicht funktionieren. Die Ermittlung des manchesterclock aus der clockrange ist noch fehlerhaft ( clock=1 )
hab schon ein Ticket erstellt.

Zitat von: Ralf9 am 12 Mai 2016, 21:15:28
Ich habe mal die notwendigen Änderungen für das IOWrite des SIGNALduino in die 10_SOMFY.pm eingebaut. Ist noch ungetestet.
war zu langsam.

Anbei mein Entwicklungsstand.
10_SOMFY.pm steht als Pull-Request aus.
00_SIGNALduino.pm kann ich noch nicht liefern, da nicht zu aktuellem 10_SOMFY.pm kompatibel.

habeIchVergessen

Zitat von: Sidey am 12 Mai 2016, 21:27:57
@Ralf: schickst Du ihm den mal?

ich habe bereits Encrypt, Decrypt und Checksummen in 10_SOMFY.pm verschoben und 00_SIGNALduino.pm entsprechend angepasst (s. letzen Post).
Wollt ihr die nochmal begutachten, bevor Ralf's Patch benutzt wird?

Ralf9

#1657
Zitat von: habeIchVergessen am 12 Mai 2016, 21:42:55
ich habe bereits Encrypt, Decrypt und Checksummen in 10_SOMFY.pm verschoben und 00_SIGNALduino.pm entsprechend angepasst (s. letzen Post).
Wollt ihr die nochmal begutachten, bevor Ralf's Patch benutzt wird?

@Sidey: wie hättest Du es gerne?
Ist es ausreichend, wenn wie von @habeIchVergessen eingebaut, das Encrypt in die SOMFY_SendCommand verschoben wird?

+ if ($io->{TYPE} ne "SIGNALduino") {
+ # das IODev ist kein SIGNALduino
+ Log3($name,5,"SOMFY_sendCommand: $name -> message :$message: ");
+ IOWrite( $hash, "Y", $message );
+ } else {  # SIGNALduino
+ my $SignalRepeats = AttrVal($name,'repetition', '6');
+ # swap address, remove leading s
+ $decData = substr($message, 1, 8) . substr($message, 13, 2) . substr($message, 11, 2) . substr($message, 9, 2);
+
+ my $check = SOMFY_RTS_Check($name, $decData);
+ my $encData = SOMFY_RTS_Crytp("e", $name, substr($decData, 0, 3) . $check . substr($decData, 4);
+ $message = 'P43#' . $encData . '#R' . $SignalRepeats;
+ Log3 $hash, 4, "$io->{NAME} SOMFY_sendCommand: $name -> message :$message: ";
+ IOWrite($hash, 'sendMsg', $message);
+ }



Oder soll auch das Decrypt in die SOMFY_Parse verschoben werden?

sub SOMFY_Parse($$) {
my ($hash, $msg) = @_;
my $name = $hash->{NAME};

return "IODev unsupported" if ((my $ioType = $hash->{TYPE}) !~ m/^(CUL|SIGNALduino)$/);

# preprocessing if IODev is SIGNALduino
if ($ioType eq "SIGNALduino") {
my $encData = substr($msg, 2);
return "Somfy RTS message format error!" if ($encData !~ m/A[0-9A-F]{13}/);

my $decData = SOMFY_RTS_Crypt("d", $name, $encData);
my $check = SOMFY_RTS_Check($name, $decData);

return "Somfy RTS checksum error!" if ($check ne substr($decData, 3, 1));

Log3 $name, 4, "$name: Somfy RTS preprocessing check: $check enc: $encData dec: $decData";
$msg = substr($msg, 0, 2) . $decData;
}


Gruß Ralf
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 HBW_IO_SW
Maple-SIGNALduino, WH3080,  Hideki, Id 7

habeIchVergessen

ist schon drin


# preprocessing if IODev is SIGNALduino
if ($ioType eq "SIGNALduino") {
my $encData = substr($msg, 2);
return "Somfy RTS message format error!" if ($encData !~ m/A[0-9A-F]{13}/);

my $decData = SOMFY_RTS_Crypt("d", $name, $encData);
my $check = SOMFY_RTS_Check($name, $decData);

return "Somfy RTS checksum error!" if ($check ne substr($decData, 3, 1));

Log3 $name, 4, "$name: Somfy RTS preprocessing check: $check enc: $encData dec: $decData";
$msg = substr($msg, 0, 2) . $decData;
}

viegener

Grosse Überraschung und Respekt!

Ich hatte den SIGNALDuino etwas aus den Augen verloren, klar bin ich bereit 10_SOMFY.pm an den Signalduino anzupassen,

Wenn ich das richtig verstehe wäre Empfang und Senden möglich. Es müsste dann noch Anpassungen geben, so dass man auch die Verbindung zwischen Handfernbedienung (Empfang) und FHEM-Steuerung (Senden) in SOMFY einbauen, dass kann ich auch noch nachrüsten.

Das wäre dann vielleicht auch für mich ein Anlass meinen Signalduino aus dem letzten Jahr von Steckbrett auf eine Platine zu bauen...

Mein Vorschlag gebt mir doch die entsprechenden Routinen ich mache dann den Einbau, dass es für mich wartbar bleibt.

Gibt es bei Euch Erfahrungen mit der Reichweite im Vergleich mit einem CUL?

Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

hjgode

Thema: SignalDuino stoppt:

weiss noch nict was da los ist. Hier mal mit verbose 5 und debug 1:

2016.05.12 21:33:09 4: Hideki_Parse sduinoIP incomming P12#75E2BA4A0CBEC255375700
2016.05.12 21:33:09 4: Hideki_Parse SensorTyp = 30 decodedString = 7526cede14c246ff59f900
2016.05.12 21:33:09 4: sduinoIP decoded Hideki protocol model=Hideki_30, sensor id=26, channel=1, temp=21.4, hum
idity=46, bat=ok, rain=0
2016.05.12 21:33:09 5: deviceCode: Hideki_30_1
2016.05.12 22:03:12 3: Opening sduinoIP device 192.168.0.99:23
2016.05.12 22:03:12 3: sduinoIP device opened
2016.05.12 22:03:12 1: define: 192.168.0.99:23
2016.05.12 22:03:12 1: init: 192.168.0.99:23
2016.05.12 22:03:12 5: sduinoIP SW: V
2016.05.12 22:03:12 5: sduinoIP/RAW (ReadAnswer): V 3.2.0-b23 SIGNALduino - compiled at May  8 2016 01:24:34

2016.05.12 22:03:12 5: sduinoIP: command for gets: ?
2016.05.12 22:03:12 5: sduinoIP SW: ?
2016.05.12 22:03:12 5: sduinoIP/RAW READ: /? Use one of V i R t X F S P C G

2016.05.12 22:03:12 4: sduinoIP/msg READ: ? Use one of V i R t X F S P C G
2016.05.12 22:03:12 5: sduinoIP/HandleWriteQueue: nothing to send, stopping timer
2016.05.12 22:03:15 5: sduinoIP/RAW READ: /^BMC;LL=-998;LH=956;SL=-510;SH=465;D=AE23974A6403EAF154620B0;C=473;L=90;^C

2016.05.12 22:03:15 4: sduinoIP/msg READ: ^BMC;LL=-998;LH=956;SL=-510;SH=465;D=AE23974A6403EAF154620B0;C=473;L=90;^C
2016.05.12 22:03:15 4: sduinoIP: Found manchester Protocol id 10 clock 473 -> OSV2o3
2016.05.12 22:03:15 5: sduinoIP: protocol does not match return from method: ()
2016.05.12 22:03:15 4: sduinoIP: Found manchester Protocol id 12 clock 473 -> Hideki protocol
2016.05.12 22:03:15 4: sduinoIP: hideki protocol converted to hex: 75E2BACA02BE3D55466800 with 92 bits, messagestart 0


Um 21:33 die letzte Meldung und um 22:03 schlägt dann meine watchdog zu.

Mal sehen...

~Josef
Debian SID mit aktuellem FHEM, nanoCUL 866, JeeLink EC3000, fhemduino, SIGNALduino,
3 x TFA TH Sensor, 1 x TFA TH Arduino Sender, 3 x EC3000, 4 x Elro Schaltsteckdosen, ESA2000
offline: Wibo Funkthermostat, 2 x ELV Funkthermostat FHT80, 2 FS20 ST4 Funksteckdose

habeIchVergessen

Zitat von: viegener am 12 Mai 2016, 22:11:05
Mein Vorschlag gebt mir doch die entsprechenden Routinen ich mache dann den Einbau, dass es für mich wartbar bleibt.

wenn das Okay von Sidey vorliegt, dann würde ich einen Pull-Request erstellen. Die Diffs sind überschaubar.

habeIchVergessen

Zitat von: hjgode am 12 Mai 2016, 22:18:13
Thema: SignalDuino stoppt:

weiss noch nict was da los ist. Hier mal mit verbose 5 und debug 1:

ist ggf. der fehlende ":" hinter SOMFY die Ursache?


my $clientsSIGNALduino = ":IT:"
... ."Dooya:"
."SOMFY"
."SIGNALduino_un:"
;

Sidey

Zitat von: Ralf9 am 12 Mai 2016, 22:04:12
@Sidey: wie hättest Du es gerne?
Ist es ausreichend, wenn wie von @habeIchVergessen eingebaut, das Encrypt in die SOMFY_SendCommand verschoben wird?

Hmm, ich weiss nicht. So langsam verliere ich den Überblick, bei den vielen verschiedenen Ständen..
So wie ich das jetz sehe, kann die crypt Funktion für encrypt und decrypt verwendet werden. Wenn Viegener damit kein Problem hat, würde ich es dann in 10_SOMFY belassen, sonst haben wir die Funktion später ja 2 mal.

Zum Senden müsste dann Im 00_SIGNALDuino  nur noch invertiert werden, wenn ich das richtig sehe.


Grüße Sidey
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem,zigbee2mqtt

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker

habeIchVergessen

ja.

Auszug aus meinem Entwicklungsstand (s. hier)

sub SIGNALduino_SomfyRTS_Recv()
{
my ($name, $bitData, $rawData) = @_;

    (my $negBits = $bitData) =~ tr/10/01/;   # Todo: eventuell auf pack umstellen
my $encData = SIGNALduino_b2h($negBits);

# no Somfy RTS message
return (-1, "not a valid Somfy RTS message!") if ($encData !~ m/A[0-9A-F]{13}/);

#Log3 $name, 4, "$name: Somfy RTS protocol enc: $encData";
return (1, $encData);
}

sub SIGNALduino_SomfyRTS_Send($$)
{
my ($name, $data) = @_;

# no Somfy RTS message
return (-1, "not a valid Somfy RTS message!") if ($data !~ m/A[0-9A-F]{13}/);

(my $negData = $data) =~ tr/0123456789ABCDEF/FEDCBA9876543210/;

#Log3 $name, 4, "$name: Somfy RTS protocol neg: $negData";
return (1, $negData);
}