SIGNALDuino Empfänger Firm- und Hardware

Begonnen von Ralf9, 02 Oktober 2016, 22:59:51

Vorheriges Thema - Nächstes Thema

Ralf9

Hallo,

ich habe hier mal die Infos zur SIGNALDuino Empfänger Firm- und Hardware zusammengefaßt:

Falls mit dem SIGNALDuino auch Sensoren empfangen werden, die Manchester (MC) Nachrichten senden, dann sollte ein Firmware Update auf die Version 3.3. durchgeführt werden.
Bei der V 3.3. wurde die Dekodierung von Manchester Nachrichten deutlich verbessert.

Es sollte ein Superhet oder Superheterodyne Empfänger verwendet werden.
Ein Superregeneration Empfänger ist nicht zu empfehlen.

Als 868 MHz Empfänger ist dieser zu empfehlen:
http://www.elv.de/elv-empfangsmodul-rx868sh-dv.html


Mit einem USRIOT Serial Ethernet Converter Modul
USR-TCP232-T2 oder
USR-TCP232-T oder
usr-k1
ist es auch möglich den SIGNALDuino über Ethernet anzubinden. Ich habe es mit dem USR-TCP232-T2 und einem Pro Mini getestet.
Zwischem dem TX vom Pro Mini und dem RX vom USR-TCP232.. ist ein Level Shifter notwendig,da der USR mit 3,3 V arbeitet.

Eine Remoteanbindung ist auch mit socat oder ser2net (noch ungetestet) möglich:
https://forum.fhem.de/index.php/topic,59473.msg508448.html#msg508448

Hier ist eine Anleitung von @hjgode um einen Arduino Nano mit der SignalDuino Software und einem ESP-01 über WLAN anzubinden:
http://www.hjgode.de/wp/2015/11/05/fhem-serielle-gerat-uber-wifi-anbinden/

Sidey versucht ob es auch nur mit dem ESP funktioniert:
Zitat von: Sidey am 24 September 2016, 09:59:55
Ich habe den ESP mal SIGNALESP genannt und mit aktuellen Bibliotheken neu compiliert.

Die Funktion (Empfang getestet) ist gegeben. (Serielle Ausgabe)
Wie schon vor einiger Zeit, resettet sich der ESP Recht häufig. In FHEM sieht man das nur, wenn man die Uptime anruft.

Übrigens mag es der ESP nicht, wenn er sich den Empfänger mit einem Arduino teilt.

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

Ralf9

#1
Inzwischen gibt es für den Signalduino eine Firmware die den CC1101 unterstützt. Es wird die Verkabelung des nanoCUL verwendet.
Hier sind Schaltungsvarianten mit dem 3,3V 8MHz promini bei denen man sich keine Gedanken über Levelshifter machen muß, da keine benötigt werden.
https://forum.fhem.de/index.php/topic,69042.msg605241.html#msg605241

Die Firmware ist noch in Entwicklung.
Ich habe die folgenden Befehle eingebaut. Gesendet werden sie mit
get sduino raw

Alle Werte sind in hex:
C<reg>
    <reg> is a (two digit) hex number: return the value of the cc1101 register. <reg>=99 dumps the first 48 registers.
    Example: C35 -> C35 = 0D

e
    EEPROM / factory reset.  resets all eeprom values without reboot

r<AA>
    Read eeprom  (da das "R" beim SIGNALDuino bereits mit freeram belegt ist, habe ich das "r" verwendet)
r<AA>n
    Read 16 byte from eeprom (z.B. r00n)

W<AA><DD>
    Write eeprom (schreibt einen Wert ins EEPROM und ins CC1101 Register. Die eeprom Adresse hat einen Offset von 2. z.B W041D schreibt 1D ins Register 2)

WS<AA>
   Strobe commands z.B:
   34   Enable RX
   36   Exit RX / TX  (idle state)

x<pp> Change the (EEPROM) PA tables (power amplification for RF sending)



MIt C35 wird das MARCSTATE Register ausgelesen:
01 - IDLE
02 - XOFF
0D - RX
12 - ENDCAL
13 - TX



Mit dem WS Befehl kann der state des CC11001 gewechselt werden. Hier ist sind einige strobe commands:
31  SFSTXON  Enable and calibrate frequency synthesizer (if MCSM0.FS_AUTOCAL=1). If in RX (with CCA): Go to a wait state where only the synthesizer is running (for quick RX / TX turnaround).
34  Enable RX
35  Enable TX
36  Exit RX / TX  (idle state)
3D  No operation. May be used to get access to the chip status byte.


Beim WS Befehl wird der chip status zurück gegeben:
0  IDLE       IDLE state  (Also reported for some transitional states instead of SETTLING or CALIBRATE)
1  RX         Receive mode
2  TX         Transmit mode
3  FSTXON     Fast TX ready
4  CALIBRATE  Frequency synthesizer calibration is running
5  SETTLING   PLL is settling
6  RXFIFO_OVERFLOW
7  TXFIFO_UNDERFLOW



Mit dem x Befehl kann die Sendeleistung geändert werden. Hier sind die Werte für 433 MHz:
34 -10_dBm
68  -5_dBm
60   0_dBm
84   5_dBm
C8   7_dBm
C0  10_dBm


Mit C3E kann die PATABLE ausgelesen werden
Mit r30n kann die im EEPROM gespeicherte PATABLE ausgelesen werden

Die PATABLE besteht aus 8 Werten. Da das PA ramping nicht verwendet wird, wird nur der zweite Wert verwendet.




Hier sind die allgmeinen Befehle:
? -> help
V -> Version
R -> freeRam
t -> uptime
XE -> enableReceiver
XQ -> disableReceiver
P -> Ping
CG -> getConfig
enableMessagetype
  CES -> MS
  CEC -> MC
  CEU -> MU
disableMessagetype
  CDS -> MS
  CDC -> MC
  CDU -> MU
CER -> Einschalten der Datenkomprimierung (config: Mred=1)
CDR -> Abschalten der Datenkomprimierung (config: Mred=0)


S -> send
SR;R=3;...   sendet die Daten im Raw-Modus dreimal wiederholt
SM;R=3;...   sendet die Daten Manchester codiert dreimal wiederholt
SC;R=3;...   sendet eine kombinierte Nachricht dreimal wiederholt (das SC am Anfang wird benötigt um bei einer kombinierten Nachricht ein repeat anzugeben)

In meiner Firmware V 3.3.2 gibt es zusätzlich noch:
https://forum.fhem.de/index.php/topic,82379.msg744554.html#msg744554
CED -> Debugausgaben ein
CDD -> Debugausgaben aus
CDL -> Message-LED aus
CEL -> Message-LED ein
CEO -> Einschalten der sehr langen MU-Nachrichten (config: MuNoOverflow=1)
CDO -> Abschalten der sehr langen MU-Nachrichten
CSmscnt=[Wert]     -> Wiederholungszähler für den split von MS Nachrichten (default=4)
CSmuthresh=[Wert]  -> Schwellwert in us für den split von MU Nachrichten (0=aus)
CSmcmbl=[Wert]     -> minbitlen für MC-Nachrichten
CSfifolimit=[Wert] -> Schwellwert für debug Ausgabe der Pulsanzahl im FIFO Puffer

?S -  show configSet commands (z.Zt.:  fifolimit mcmbl mscnt muthresh)

eC - initEEPROMconfig
     Damit werden die config Daten im EEPROM auf default zurückgesetzt

In den FIFO Empfangspuffer gehen z.Zt. 100 Pulse, dh. eine Ausgabe von MD=100 bedeutet ein Pufferüberlauf

Ab meiner Firmware V 3.3.2.2-rc10 gibt es

CSmaxnumpat=[Wert]  -> Mit maxnumpat kann man dann die max Anzahl Pattern bis auf 16 erhöhen (P0-PF Hex), default ist 8.
CSmaxpulse=[Wert]   -> Mit maxpulse kann man die max Pulslänge (default -32001) verkleinern, ab der ein Ende erkannt wird. Z.B. mit maxpulse 17000 wird -18532 als Ende erkannt.


Ab meiner Firmware V 3.3.4 gibt es
https://forum.fhem.de/index.php/topic,82379.msg1010643.html#msg1010643

rN<adr16> -> read 64 Byte from EEPROM
b         -> Info über die gerade aktive Bank
bs        -> banksummary
b<0-9>    -> damit können die cc1101 Register zwischen 10 verschiedenen EEPROM Bänken (0000, 0100, 0140, 0180, 01C0,..) umgeschaltet werden.
CW<reg><val>, <reg><val>...  -> damit kann eine folge von cc1101 Registern gesetzt und in die aktuelle EEPROM Speicherbank geschrieben werden

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

prodigy7

Hallo Ralf9,

danke für die hilfreiche Übersicht! Ich hab mir hier schon einen 433MHz Signalduino zusammengebaut und würde das gerne auch für 868MHz tun. Dass RX Modul von ELV hatte ich auch schon im großen Thread "entdeckt", aber was nehme ich für TX? Ich hab hier noch 433 TX Module liegen, die sind aber sicherlich nicht geeignet oder?
Ich hab hier noch einen CC1101 (RF1100SE), der wird aber nicht dafür geeignet sein oder?

prodigy7

Ellert

Zitat von: Ralf9 am 03 Oktober 2016, 01:20:00
Liest hier auch jemand mit der sich mit den CC1101 Empfänger auskennt oder ist es besser, wenn ich diese Frage  in CUL Hard- und Firmware stelle?

Der beim SIGNALDuino verwendete RXB6 Superheterodyne Empfänger hat recht gute Empfangseigenschaften.

Weiß zufällig jemand, wie dies im Vergleich dazu bei einem Empfänger mit einem CC1101 aussieht?
Hat ein Empfänger mit dem CC1101 bessere Empfangseigenschaften als der RXB6 Superheterodyne?

Bei ebay habe ich 2 Typen gefunden:

D-Sun CC1101 Wireless Transceiver Module
- Adopt FSK modulation,support OOK/ASK/MSK modulation;

CC1101 Wireless Kabellos RF Transceiver Modul mit SMA Antenna
- Support 2-FSK, GFSK and MSK modulation;
Ist dieser für OOK/ASK weniger geeignet, da dies hier nicht dabeisteht?

Gruß Ralf

Die verwendbaren Transceiver sind im Wiki gut beschrieben Die_unterschiedlichen_Ausführungen_des_Funkmoduls
Es wäre schon interessant wenn die SD-Firmware auf der nanoCUL Hardware laufen würde.

Ich nutze den nanoCUL433 und den SD 433 und habe bei der Nutzung keine Unterschiede in der Sende und Empfangsleistung festgestellt. Meine Sensoren befinden sich alle innerhalb eines Umkreises von 7 m.

Ralf9

Zitat von: prodigy7 am 03 Oktober 2016, 09:31:50
aber was nehme ich für TX? Ich hab hier noch 433 TX Module liegen, die sind aber sicherlich nicht geeignet oder?
Ich hab hier noch einen CC1101 (RF1100SE), der wird aber nicht dafür geeignet sein oder?

Wenn ich das richtig überblicke verwendet bis jetzt noch niemand beim SIGNALDuino einen 868MHz sender.
Bei 868MHz gibt es beim Senden auch die 1% Regel zu beachten.

Bei elv gibt es diesen Sender:
http://www.elv.de/hf-sendemodul-tx868-75-868-mhz.html

Der CC1101 ist für den SIGNALDuino nicht geeignet.

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

Ralf9

Zitat von: Sidey am 24 September 2016, 09:59:55
Ich habe den ESP mal SIGNALESP genannt und mit aktuellen Bibliotheken neu compiliert.

Die Funktion (Empfang getestet) ist gegeben. (Serielle Ausgabe)
Wie schon vor einiger Zeit, resettet sich der ESP Recht häufig. In FHEM sieht man das nur, wenn man die Uptime anruft.

Übrigens mag es der ESP nicht, wenn er sich den Empfänger mit einem Arduino teilt.

Kann dies mit dem Wlan überhaupt funktionieren? Dem ESP muß doch regelmässig etwas Zeit gegeben werden, damit er sich ums Wlan kümmern kann.
Wie sieht es aus, wenn während der ESP sich ums Wlan kümmert, vom 433/868 MHz Empfänger eine Signalflanke kommt, kann der Interrupt dann die interne Wlan Routine unterbrechen?

@hjgode
weißt Du zufällig was darüber?

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 Interrupt unterbricht das WLAN. Damit das WLAN läuft, muss man immer mal delay oder yield aufrufen
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem

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

habeIchVergessen

Wenn ich die Doku richtig in Erinnerung habe, dann gibt es "nur" Software-Interrups auf dem ESP8266. Ob die das WLAN unterbrechen wage ich zu bezweifeln.

Ralf9

ZitatWie schon vor einiger Zeit, resettet sich der ESP Recht häufig. In FHEM sieht man das nur, wenn man die Uptime anruft.

Sind die häufigen resets inzwischen weg?
Ein Grund dafür könnte der watchdog sein der einen Reset durchführt, falls die internen Routinen (u.a. wlan und tcp-Stack) nicht mindestens einmal pro Sekunde ausgeführt werden.

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

Ralf9

Ich möchte auch mit dem ESP Link den ESP an den Signalduino anbinden.
Ich möchte dazu den "WeMos D1 mini" und "Arduino pro mini" verwenden.

Das hier irretiert mich etwas
http://www.ebay.de/itm/ABVERKAUF-WeMos-kompatibel-D1-Mini-NodeMcu-ESP8266-i2c-Arduino-/182320253021?hash=item2a7322485d:g:6XIAAOSwzJ5Xcj2u
ZitatBei diesem Angebot handelt es sich um den Abverkauf unseres Bestandes an kompatiblen WeMos Modulen. Da wir unseren Kunden preisgünstige aber 100% zuverlässige Module und Sensoren anbieten möchten, fallen die WeMos kompatiblen Module aufgrund hoher Fehleranfälligkeit aus unserem Sortiment.

Spricht was gegen diesen hier?
http://www.ebay.de/itm/WeMos-D1-mini-IOT-ESP8266-DIY-ESP12-WLAN-WiFi-NodeMcu-Arduino-Raspberry-Pi-E23P-/172357074201?hash=item2821483d19:g:Jb4AAOSwCGVX67lw

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

Zitat von: Ralf9 am 25 Oktober 2016, 21:07:53
Sind die häufigen resets inzwischen weg?

Bei mir schon. Er lief einige Tage ganz gut. Dann hat er sich aufgehangen.. keine Ahnung was passiert ist. Es.könnten auch äußere Einflüsse verantwortlich gewesen sein.

Der  Watchdog will regelmäßig resettet werden, das ist richtig. Mit WLAN oder tcp Stack hat das allerdings wenig zu tun. Der Watchdog operiert unabhängig davon.

Die WLAN Anbindung ist noch nicht eingebaut. Das muss noch finalisiert werden.

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

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

Ralf9

#11
ich habe nun auch den ESP erfolgreich an den Signalduino angebunden.
Ich habe dazu den "WeMos D1 mini" und "Arduino pro mini" verwendet, Schaltung siehe Anlage.
Da ich den ESP Link nicht zum funktionieren gebracht habe, habe ich den Beispiel sketch
ESP8266WIFI - WiFiTelnetToSerial
von der Arduino IDE mit einigen Anpassungen verwendet.

Nachtrag:
Die Schaltung gilt für UART pins swapped.

Nachtrag2:
Inzwischen habe ich es auch mit ESP Link getestet.

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

pejonp

#12
Hallo,

ich habe für meine WS-0101 und WH1080 Wetterstationen die Anbindung an den FHEM mit Signalduino über esp8266 realisiert.
Der 868 MHz Empfänger von elv (http://www.elv.de/elv-empfangsmodul-rx868sh-dv.html) ist am Signalduino angeschlossen und RX/TX sind an einem esp8266 nach dieser Schaltung von @hjgode (http://www.hjgode.de/wp/2015/11/05/fhem-serielle-gerat-uber-wifi-anbinden ) angeschlossen.

Beim ESP8266-01 ist die Version esp-link v2.2.3 - 2016-06-21 21:58:48 im Einsatz (https://github.com/jeelabs/esp-link).
Der Signalduino hat die Version (V 3.2.0-b21 SIGNALduino - compiled at Apr 16 2016 01:44:24).

Diese Anbindung läuft schon seit 2015, nach einem Hinweis von @hjgode (https://forum.fhem.de/index.php/topic,38831.msg365598.html#msg365598). Grund war auch, das der Nano sich nicht mehr per USB ansprechen ließ und auch die Anschlüsse am Banana Pi zu Ende gingen. Geflasht wird über ISP (mySmartUSB light), bei mir geht es nicht über den esp8266. Die Schaltung ist immer noch auf einem Steckbrett.

pejonp

LaCrossGW 868MHz:WT470+TFA+TX37-IT+EMT7110+W136+WH25A HP1003+WH2621
SignalD(CC1101):Bresser+WS-0101(868MHz WH1080)+Velux KLF200+MAX!+HM-MOD-UART:Smoke HM-SEC-SD+VITOSOLIC 200 RESOL VBUS-LAN+SolarEdge SE5K(Modbus)+Sonnen!eco8(10kWh)+TD3511+DRT710M(Modbus)+ZigBee+Z-Wave+MQTT+vitoconnect

andreasnol

Hallo
Ich hab mir schon einen 433MHz Signalduino zusammengebaut. Er funktioniert wuderbar jetzt auch mit Rollläden.
Tolle Arteit danke.
Aus platzgründen würde mich interesieren, ob schon jemand den Signalduino mit einem RFM-Funlmodul bestückt hat oder
einen Jeelink mit der Signalduino Software geflasht hat?

Andreas
2x Raspberry pi2 | NanoCUL | MapleCUL V1.3 | JeeLink
2x raspi-erweiterung mit
     2x CUL | 1x I2C | 1x uart | 1x 1wire (+DS18B20)
     1x MySensors Gateway

Ralf9

Hallo,

ich bin gerade dabei die set- und get-Befehle des CC1101 vom "00_CUL.pm" in die "00_SIGNALduino.pm" einzubauen.
Das "goto GOTBW" vom set bWidth gefällt mir nicht so richtig, dies müsste auch eleganter gehen

  } elsif($type eq "bWidth") {
    my ($err, $ob);
    if(!IsDummy($hash->{NAME})) {
      CUL_SimpleWrite($hash, "C10");
      ($err, $ob) = CUL_ReadAnswer($hash, $type, 0, "^C10 = .*");
      return "Can't get old MDMCFG4 value" if($err || $ob !~ m,/ (.*)\r,);
      $ob = $1 & 0x0f;
    }

    my ($bits, $bw) = (0,0);
    for (my $e = 0; $e < 4; $e++) {
      for (my $m = 0; $m < 4; $m++) {
        $bits = ($e<<6)+($m<<4);
        $bw  = int(26000/(8 * (4+$m) * (1 << $e))); # KHz
        goto GOTBW if($arg >= $bw);
      }
    }

GOTBW:
    $ob = sprintf("%02x", $ob+$bits);
    Log3 $name, 3, "Setting MDMCFG4 (10) to $ob = $bw KHz";
    CUL_SimpleWrite($hash, "W12$ob");
    CUL_WriteInit($hash);


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