Signalduino Entwicklung

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

Vorheriges Thema - Nächstes Thema

Ralf9

Zitat von: Sidey am 16 Mai 2016, 16:09:59
Naja, man kann dafür ja das SC Kommando verwenden.

Da kann man eine Raw Nachricht vor der MC Nachricht senden lassen.
Damit lässt sich das zum Arduino ganz gut übertragen.

ungefähr so?
SR;R=6;P0=2480;P1=-2480;P2=4960;P3=-620;D=010123;SM;R=6;C=660;D=A1B7B7B62A1200;SR;R=6;P0=-30415;D=0;

Das dürfte dann aber nur mit Repeat = 1 funktionieren.

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

Sidey

Der Befehl geht mit SC;R=6; Los.
Danach kann man mit SR und SM angeben, was gesendet werden soll. (So wie Du es geschrieben hast).
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem,zigbee2mqtt

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

habeIchVergessen

#1712
Zitat von: Ralf9 am 16 Mai 2016, 17:14:45
SR;R=6;P0=2480;P1=-2480;P2=4960;P3=-620;D=010123;SM;R=6;C=660;D=A1B7B7B62A1200;SR;R=6;P0=-30415;D=0;

Warum steht im SR-Kommando D=010123/D=0? Sind das Daten? Werden die übertragen?
Wo gibt es eine Doku zu SC/SR usw.?

Zitat von: Sidey am 16 Mai 2016, 17:41:08
Der Befehl geht mit SC;R=6; Los.

R=6 meint auch 6x wiederholen?

wie ich es verstanden habe:

  • SC

    • eine Art Macro, der alle nachfolgenden Kommandos enthält
  • SR

    • R num. Wert = Wiederholungen
    • Px num. Wert = Pulslänge, Vorzeichen +(HIGH)/-(LOW)
    • D Daten
  • SM

    • R wie oben (pro Macrodurchlauf nur 1x, deshalb entfallen)
    • C halbe Pulslänge
    • D Daten

Dann würde sich folgendes ergeben:
SC;R=6;SR;R=6;P0=2560;P1=-2560;D=0;SR;P0=4960;P1=-640;D=0;SM;C=640;D=A1B7B7B62A1200;SR;P0=-30415;D=0;

Sidey

#1713
Zitat von: habeIchVergessen am 16 Mai 2016, 21:02:51
Warum steht im SR-Kommando D=010123/D=0? Sind das Daten? Werden die übertragen?
Wo gibt es eine Doku zu SC/SR usw.?
Nach D= kommen die Daten. Eine Dokumentation werde ich im Wiki (unter https://github.com/RFD-FHEM/SIGNALDuino/wiki/Commands) erstellen.



Zitat von: habeIchVergessen am 16 Mai 2016, 21:02:51
Dann würde sich folgendes ergeben:
SC;R=6;SR;R=6;P0=2480;P1=-2480;P2=4960;P3=-640;D=0;SM;C=640;D=A1B7B7B62A1200;SR;P0=-30415;D=0;

Fast, ich würde das Repeat 6 im Abschnitt SR weglassen, alles was nach SC kommt, wird ja schon 6x gesendet.

SC;R=6;SR;P0=2480;P1=-2480;P2=4960;P3=-640;D=0123;SM;C=640;D=A1B7B7B62A1200;SR;P0=-30415;D=0;

Man könnte es auch so schreiben: (ungetestet, sollte aber funktionieren)
SC;R=6;SR;P0=640;P1=-640;D=00001111000000001;SM;C=640;D=A1B7B7B62A1200;SR;P0=-30415;D=0;

Oder so geht es auch:
SC;R=6;SR;P0=2480;P1=-640;D=01111001;SM;C=640;D=A1B7B7B62A1200;SR;P0=-30415;D=0;

Ich würde auch fast annehmen, dass der Letzte SR Abschnitt auch nicht notwendig ist. Will man trotzdem eine Pause zwischen den Wiederholungen geht folgendes:

SC;R=6;SR;P0=2480;P1=-640;P2=-30415;D=201111001;SM;C=640;D=A1B7B7B62A1200;

Da wird dann halt auch vor der 1. Übertragung 30 ms gewartet. Machen das denn die Handsender zwischen den Wiederholungen?

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

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

habeIchVergessen

#1714
Also stehen in D im SR ein Index auf die P-Liste.

SC;R=6;SR;P0=-2560;P1=2560;P2=4960;P3=-640;P4=640;P5=-30415;D=101010101010102334433443434343343443343443343434344334344334343434433434433434434343344334433443434343344343344343434343434343435;

hardware sync:    10101010101010 (7x; eigentlich 2x beim ersten und 7x bei jedem weiteren Frame)
software sync:      23
data:                     3443344343434334344334344334343434433434433434343443343443343443434334433443344343434334434334434343434343434343
inter frame gap:   5

oder verständlicher:

SC;R=6;SR;P0=-2560;P1=2560;P2=4960;P3=-640;D=1010101010101023;SM;C=640;D=A1B7B7B62A1200;SR;P0=-30415;D=0;

Sidey

Ja so ist es.

Man kann mit SR auch ein Manchester Signal senden. Habe es jetzt nicht kontrolliert, ob es stimmt, aber es geht hier ja eher um das Prinzip denke ich.
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem,zigbee2mqtt

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

habeIchVergessen

gibt es Vorgaben bzgl. Benennung von Feldern in der Protokolldefinition?

Beispiel:   "43" => ## Somfy RTS
      {
         name          => 'Somfy RTS',
         ...
         msgIntro      => 'SR;P0=-2560;P1=2560;P2=4960;P3=-640;D=1010101010101023;';
         msgOutro      => 'SR;P0=-30415;D=0';
      },

und dann in SIGNALduino_Set generisch einbauen (manchester)

      my $intro = "";
      my $outro = "";
      
      $intro = $ProtocolListSIGNALduino{$protocol}{msgIntro} if ($ProtocolListSIGNALduino{$protocol}{msgIntro};
      $outro = ";" . $ProtocolListSIGNALduino{$protocol}{msgOutro} if ($ProtocolListSIGNALduino{$protocol}{msgOutro};

      if ($intro ne "" || $outro ne "")
      {
         $intro = "SC;R=$repeats;" . $intro;
         $repeats = 0;
      }

      $sendData = $intro . "SM;" . ($repeats > 0 ? "R=$repeats;" : "") . "C=$clock;D=$data" . $outro; #   SM;R=2;C=400;D=AFAFAF;

viegener

Ich habe gerade verschiedene Änderungen insbesondere die Korrekturen von habeIchVergessen in 10_SOMFY übernommen.
Wie gesagt werde ich das aber erst nach meinem Urlaub ins SVN spielen.

Ich kann momentan auch noch nicht sicherstellen, dass der autocreate funktioniert, da das wohl bisher nicht vollständige implementiert war (es gab ja keinen Empfängercode im CUL)

Sobald Senden/Empfangen über signalduino sauber funktioniert kann ich mich auch der frage widmen, wie man einen Fernbedienung und einen Somfy-Device innerhalb von 10_SOMFY koppelt, sodass der Devicestatus auch durch die Tastenfernbedienung aktualisiert wird.

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

Sidey

Also kurzer Zwischenstand.

Manchester Senden:
Das Senden bekomme ich mittlerweile so hin, wie es sein sollte.
Da ich sowohl senden als auch Empfangen aufgebaut habe, ist mir eine Schwäche in der Decoder routine aufgefallen.


Dass die Bits invertiert sind hängt stark damit zusammen. Derzeit decodiere ich, in dem ich den Zustand des vorherigen Bits kenne. Das führt allerdings zu einem Problem, wenn das Signal so wie beim SOMFY z.B. zusammengesetzt ist. Die Auswertung ist dann genau ein Bit verschoben, was zum Glück nur zu einer invertierten Form führt.

Ich denke darüber nach, die Decoder Routine zu ändern. So wie jetzt, ist es leider nicht möglich das zu empfangen, was gesendet wird.

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

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

Sidey

Hallo zusammen,

so kleines Update.

Ich habe den MC Decoder jetzt so angepasst, dass zumindest das Empfangen dem gesendeten übereinstimmt. *jubel*
Leider klappt irgendwas am OSV2 Protokoll gerade nicht. Das muss ich noch finden.

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

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

Ellert

Zitat von: Sidey am 22 Mai 2016, 22:27:36
Hallo zusammen,

so kleines Update.

Ich habe den MC Decoder jetzt so angepasst, dass zumindest das Empfangen dem gesendeten übereinstimmt. *jubel*
Leider klappt irgendwas am OSV2 Protokoll gerade nicht. Das muss ich noch finden.

Grüße Sidey
Ich stehe für Tests wieder zur Verfügung. Ich habe folgenden Stand:

00_SIGNALduino.pm 104841  2016-05-11 22:45:00Z v3.2.1-dev $
10_SOMFY.pm 11433 2016-05-12 19:15:18Z viegener
V 3.2.0-b24 SIGNALduino - compiled at May 14 2016 00:06:40


Sidey

#1721
Leider gibt es noch keinen neuen Stand zum Testen.

Die Sache ist leider doch etwas verzwickt. Obwohl die Manchester Codierung und Decodierung mit vielen Beispielen beschrieben ist, ist es gerade etwas verzwickt.

Da ich die Tage auch wenig Zeit hatte, gibt es noch keinen Durchbruch.


Edit:
Habe noch mal probiert. Wenn man die Bits invertiert, dann passt es auch für OSV2 wieder.
Gut, ist jetzt eigentlich keine Überraschung. Vorher war das Somfy Signal invertiert.




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

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

Burny4600

Typen Orgeon Temperatur Sensoren: THWR800,THGR810,THWR800
Werte werden urplötzlich falsch eingelesen.
2016.05.28 19:45:02 1: Error: T: 28.7 H: 34 BAT: ok has no TYPE
2016.05.28 19:45:02 1: Error: T: 15.6 H: 88 BAT: ok has no TYPE
2016.05.28 19:45:02 1: Error: T: 16.3 H: 86 BAT: ok has no TYPE


https://forum.fhem.de/index.php/topic,53938.msg455651.html#msg455651
LG Chris

Raspberry Pi 2-5, Bullseye Lite, Bookworm Lite
Schnittstellen: 1-Wire, FHEM2FEHEM, HM-MOD-UART, LAN, Modbus, MQTT, nanoCUL, RFXtrx433E, SIGNALduino, ser2net
Devices: APC, Eastron, FS20, IT, Homematic, MQTT, PV-(DEYE, EPEVER, FRONIUS), Resol-VBUS, S.USV, TEK603, WMR200, YouLess

Sidey

#1723
Hallo,


ich habe für den angepassten Manchester decoder erst mal einen neuen Branch aufgemacht.
Ich nehme an, wir müssen ein paar Kleinigkeiten anpassen, damit die Signale wieder verarbeitet werden können.

Folgendes müsste getestet und angepasst werden:

  • OSV2 und OSV3 (habe ich bereits invertiert)
  • Hideki (muss vermutlich invertiert werden)
  • Somfy (muss vermutlich nicht mehr invertiert werden

Updaten könnt ihr die Firmware und die Modulversion wie folgt:

update all https://raw.githubusercontent.com/RFD-FHEM/RFFHEM/dev-r32-mcspecial/controls_signalduino.txt



Invertieren lassen sich die Daten über einen Schalter in der Protokolldefinition:


"10"    => ## Oregon Scientific 2
{
polarity        => 'invert',



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

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

habeIchVergessen

wenn ein miniCUL AD40000D12389A (enc. ADE8E8E57F4755, neg. 5217171A80B8AA) sendet, dann können 4/7 Nachrichten mit der annähernd richtigen Länge und Bytefolge gelesen werden.

2016.05.30 01:55:22 5: Triggering miniCUL (1 changes)
2016.05.30 01:55:22 5: Starting notify loop for miniCUL, first event raw YsAD40000D12389A
2016.05.30 01:55:22 5: Notify from Device: miniCUL recieved
2016.05.30 01:55:22 4: sduino/msg READ: MC;LL=-1244;LH=1337;SL=-571;SH=640;D=56F47472BC;C=658;L=38;
2016.05.30 01:55:22 4: sduino/msg READ: MC;LL=-1339;LH=1246;SL=-675;SH=548;D=56F47472BC;C=597;L=38;
2016.05.30 01:55:22 4: sduino/msg READ: MC;LL=-1294;LH=1276;SL=-611;SH=679;D=56F47472BFA3AA8;C=651;L=57;
2016.05.30 01:55:22 4: sduino: Found manchester Protocol id 43 clock 651 -> Somfy RTS
2016.05.30 01:55:23 4: sduino/msg READ: MC;LL=-1283;LH=1291;SL=-675;SH=684;D=56F47472BFA3AA8;C=658;L=57;
2016.05.30 01:55:23 4: sduino: Found manchester Protocol id 43 clock 658 -> Somfy RTS
2016.05.30 01:55:23 4: sduino/msg READ: MC;LL=-1278;LH=1297;SL=-675;SH=691;D=56F47472BFA3AA8;C=662;L=57;
2016.05.30 01:55:23 4: sduino: Found manchester Protocol id 43 clock 662 -> Somfy RTS
2016.05.30 01:55:23 4: sduino/msg READ: MC;LL=-1280;LH=1294;SL=-675;SH=685;D=56F47472BFA3AA8;C=659;L=57;
2016.05.30 01:55:23 4: sduino: Found manchester Protocol id 43 clock 659 -> Somfy RTS


wenn ein sduino sendet, kann die 1 Wiederholung korrekt empfangen werden. Auffällig ist, das keine Wiederholung (gleiche Daten) zu sehen ist und die Länge weit überschritten wird.

2016.05.30 01:52:08 5: Cmd: >set sd2 raw SM;R=6;C=640;D=ADE8E8E57F4755;<
2016.05.30 01:52:08 4: set sd2 raw SM;R=6;C=640;D=ADE8E8E57F4755;
2016.05.30 01:52:08 5: Starting notify loop for sd2, first event raw SM;R=6;C=640;D=ADE8E8E57F4755;
2016.05.30 01:52:08 5: Notify from Device: sd2 recieved
2016.05.30 01:52:08 5: sd2 SW: SM;R=6;C=640;D=ADE8E8E57F4755;
2016.05.30 01:52:08 4: sduino/msg READ: MC;LL=-1485;LH=1269;SL=-662;SH=623;D=ADE8E8E57F475556F47472BFA3AAAB7A3A395FD1D555B8;C=630;L=181;
2016.05.30 01:52:08 4: sduino: Found manchester Protocol id 43 clock 630 -> Somfy RTS
2016.05.30 01:52:08 5: sd2/HandleWriteQueue: nothing to send, stopping timer
2016.05.30 01:52:08 4: sd2/msg READ: SM;R=6;C=640;D=ADE8E8E57F4755;
2016.05.30 01:52:10 4: sduino/msg READ: MC;LL=-1514;LH=1245;SL=-680;SH=598;D=A3A395FD1D555BD1D1CAFE8EAAADE8E8E57F4755;C=614;L=160;
2016.05.30 01:52:10 4: sduino: Found manchester Protocol id 43 clock 614 -> Somfy RTS