Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rojaflex 433.92 Shuttercontroll support #955

Closed
Hofyyy opened this issue Apr 18, 2021 · 268 comments · Fixed by #1030
Closed

Rojaflex 433.92 Shuttercontroll support #955

Hofyyy opened this issue Apr 18, 2021 · 268 comments · Fixed by #1030
Labels
not ASK/OOK alternative modulation compared to the standard

Comments

@Hofyyy
Copy link

Hofyyy commented Apr 18, 2021

Specifications for new sensor / switch / or other device ...

  • manufacturer: Rojaflex
  • model name: MLSF-10/17
  • pictures of the device / the board (very helpful), see below
    The chip in the remote is the: TI_CC110L

I am able to receive data with:
cc1101_config | Freq: 433.920 MHz, Bandwidth: 325 KHz, rAmpl: 42 dB, sens: 8 dB, DataRate: 5603.79 Baud
cc1101_config_ext | Modulation: ASK/OOK, Syncmod: No preamble/sync | 2021-04-18 13:11:18

Specifications

FHEM LOG with Verbose 5

log.rtfd.zip

  • Versionmodul (FHEM Module):
@sidey79
Copy link
Contributor

sidey79 commented Apr 18, 2021

Please provide logdata as text

@Hofyyy
Copy link
Author

Hofyyy commented Apr 18, 2021

Hello,

Thank you for the quick reply!

You will find the log attached.
I did some UP/Down/stop with the remote to one Shutter
log.txt

@sidey79
Copy link
Contributor

sidey79 commented Apr 18, 2021

We need some information when you send one of the commands.

Best approch:

Press one button serval times and paste the log snippet for that time here.

Repeat this with every button

@elektron-bbs
Copy link
Contributor

elektron-bbs commented Apr 18, 2021

Mir scheint, das hier ein Sensor mit Protokoll 38 dazwischen funkt und von der Fernbedienung keinerlei Signale empfangen werden:

Decoded matched MU protocol id 38 dmsg W38#BE221B42E length 36 dispatch(1/4) RSSI = -49.5

Bitte den Test mit der Fernbedienung nochmal mit deaktivierten Protokoll 38 wiederholen. Verbose 4 sollte ausreichen und bitte notieren wann welche Taste betätigt wurde, oder gleich in separate Logs für up/down/stop.

Die Bezeichnung der Fernbedienung wäre wichtig zu wissen.

@Hofyyy
Copy link
Author

Hofyyy commented Apr 19, 2021

Hello,

you were totally right. It was nothing from the remote included :-(

I bought a real SDR stick now and I am able to see the signal in Cubic SDR.
I will now try to learn how to see the:

  • Frequenz; the modulation and the encoding.

I seethe signal with rtf_433.
I will try to fetch some information.

Does the rtl_433 verbose output help too?

Best regards

@Hofyyy
Copy link
Author

Hofyyy commented Apr 19, 2021

I was able to gather some logs. from rtf_433. Does that help?
I did each command 3 times per log with some free lines in-between ...

bridge_down.txt
bridge_stop.txt
bridge_up.txt
remote_down.txt
remote_stop.txt
remote_up.txt

@elektron-bbs
Copy link
Contributor

Ich vermute, dass es sich um eine Art Frequenzmodulation handelt. Die Datenrate beträgt wahrscheinlich 10 kHz. Es fehlen uns noch wichtige Daten wie Syncword, Präambel und Frequenzhub.
Versuche doch bitte mal mit der Software Universal Radio Hacker (URH) diese Daten noch zu ermitteln.
Eine Fortsetzung der Diskussion in deutsch wäre mir lieber.

Google translator:
I suspect it is some kind of frequency modulation. The data rate is probably 10 kHz. We are still missing important data such as syncword, preamble and frequency deviation.
Please try to determine this data with the Universal Radio Hacker (URH) software.
I would prefer to continue the discussion in German.

@HomeAutoUser HomeAutoUser added the not ASK/OOK alternative modulation compared to the standard label Apr 20, 2021
@Hofyyy
Copy link
Author

Hofyyy commented Apr 20, 2021

Hi elektron-bbs,

danke für die Hilfe.
Da ich noch neu bin, kann ich die Sachen nicht so akkurat liefern.
Ich lese mich noch ein.

Ich habe mal ein paar "Records" von dem URH angehängt. damit bist du wahrscheinlich 3x schneller als ich. Und ein Bild vom Stop command. Vielleicht hilft das schon mal.

Bildschirmfoto 2021-04-20 um 17 55 40

urh_capture.zip

@elektron-bbs
Copy link
Contributor

Das sieht doch schon sehr gut aus. URH dekodiert da diese Nachrichten:

remote_shutter-küche_2x-down_433_92MHz-1MSps-1MHz
aaaaaaaad391d391083122fd298a018a8e30cd [Pause: 3459 samples]
aaaaaaaad391d391083122fd298a018a8e30cd [Pause: 48986 samples]
aaaaaaaad391d391083122fd29ea01026602a6 [Pause: 3258 samples]
aaaaaaaad391d391083122fd29ea01026602a6 [Pause: 967860 samples]
aaaaaaaad391d391083122fd298a018a8e30cd [Pause: 3454 samples]
aaaaaaaad391d391083122fd298a018a8e30cd [Pause: 48883 samples]
aaaaaaaad391d391083122fd29ea01026602a6 [Pause: 3264 samples]
aaaaaaaad391d391083122fd29ea01026602a6 [Pause: 1654809 samples]

remote_shutter-küche_2x-stop_433_92MHz-1MSps-1MHz
aaaaaaaad391d391083122fd290a010a8e30fb [Pause: 3250 samples]
aaaaaaaad391d391083122fd290a010a8e30fb [Pause: 1089845 samples]
aaaaaaaad391d391083122fd290a010a8e30fb [Pause: 3256 samples]
aaaaaaaad391d391083122fd290a010a8e30fb [Pause: 1938033 samples]

remote_shutter-küche_2x-up_433_92MHz-1MSps-1MHz
nicht eindeutig

remote_shutter-wohn_2x-stop_433_92MHz-1MSps-1MHz
aaaaaaaad391d391083122fd270a010a8c3227 [Pause: 3257 samples]
aaaaaaaad391d391083122fd270a010a8c3227 [Pause: 453800 samples]
aaaaaaaad391d391083122fd270a010a8c3227 [Pause: 3245 samples]
aaaaaaaad391d391083122fd270a010a8c3227 [Pause: 1119678 samples]

remote_shutter-wohn_2x-up_433_92MHz-1MSps-1MHz
aaaaaaaad391d391083122fd271a011aac12e1 [Pause: 3513 samples]
aaaaaaaad391d391083122fd271a011aac12e1 [Pause: 49864 samples]
aaaaaaaad391d391083122fd27ea010264007a [Pause: 3259 samples]
aaaaaaaad391d391083122fd27ea010264007a [Pause: 619385 samples]
aaaaaaaad391d391083122fd271a011aac12e1 [Pause: 3519 samples]
aaaaaaaad391d391083122fd271a011aac12e1 [Pause: 28759 samples]
aaaaaaaad391d391083122fd27ea010264007a [Pause: 3258 samples]
aaaaaaaad391d391083122fd27ea010264007a [Pause: 1027863 samples]

Kannst du den Spectrum Analyzer nochmal bitte mit größerer Bandbreite laufen lassen. Nur 1 kHz scheint mir zu schmal. Probiere mal mit 100 oder 200 kHz. Im Spektrum müssten dann 2 "Zacken" zu erkennen sein, so wie in den Abbildungen im Wiki (https://wiki.fhem.de/wiki/Unbekannte_Funkprotokolle#SIGNALduino_-_FSK).

@Hofyyy
Copy link
Author

Hofyyy commented Apr 20, 2021

Hallo,
es freut mich, das du es schaffst mit dem Urh das Signal zu decodieren.
Werde mal gucken ob ich das auch hinbekomme
Anbei schon mal der Screenshot und noch mal zwei Records von der Bridge.
ich denke mir es schadet nicht einen zweiten Sender zum vergleichen zu haben.
Bildschirmfoto 2021-04-20 um 21 58 11

uhr_capture_bridge.zip

@elektron-bbs
Copy link
Contributor

Ich habe die neuen Mitschnitte noch nicht komplett gecheckt, aber erste Versuche sahen schon gut aus.
Was wir noch brauchen, ist der Frequenzhub (Deviation). Das kannst du ermitteln, in dem du nochmal den Analyzer startest. Die Frequenz wird dir angezeigt, wenn du mit der Maus auf das Spektrum gehst. Wir benötigen die Frequenzen der beiden "Zacken".

Ich habe hier noch einen Hinweis diesbezüglich aus den Weiten des Internets :-)

Zoom in on your signal with the RTL-SDR capture.
Deviation is how much the signal deviates from center to transmit a symbol (1 or 0 in this case).
Measure the frequency difference between the two peaks and divide by two.

RX filter BW should be enough to fit the whole signal,
plus account for some error in center frequency for whatever reason (doppler shift, oscillator drift, etc).
The downside of setting it too high is that the receiver is less sensitive,
so maybe set it to 4x-6x your deviation for experimenting.

rfcat might be easier to experiment with than SmartRF studio.

@Hofyyy
Copy link
Author

Hofyyy commented Apr 21, 2021

Hallo,

das linke Horn hat: 433,90
Mitte: 433,92
das rechte Horn hat: 433,94

Kann das hinkommen? Ich gucke jetzt mal ein paar Videos zu dem Thema.

Viele Grüße

@elektron-bbs
Copy link
Contributor

Ja, das passt - 20 kHz.

@Hofyyy
Copy link
Author

Hofyyy commented Apr 22, 2021

Hallo,

kannst du mir deine Errungenschaften, also die Signaleigenschaften einmal zusammenfassen?

ich würde mich schon mal an eine manuelle Decodierung mit dem 433 terminal program wagen wollen.

Viele Grüsse

@elektron-bbs
Copy link
Contributor

Was ich bisher heraus gefunden habe:

Frequenz: 433,92 MHz
Modulation: wahrscheinlich 2-FSK
Datarate: 10 kHz
Deviation: 20 kHz

Meine Notizen zu den Nachrichten:

aaaaaaaad391d391083122fd2 98 a01 8a8e30cd remote_shutter-küche_2x-down_433_92MHz-1MSps-1MHz
aaaaaaaad391d391083122fd2 90 a01 0a8e30fb remote_shutter-küche_2x-stop_433_92MHz-1MSps-1MHz
aaaaaaaad391d391083122fd2 90 a01 0a8e0    bridge_shutter-küche_2x-stop_433_92MHz-1MSps-1MHz
aaaaaaaad391d391083122fd2 90 a01 088e0    bridge_shutter-küche_2x-stop_433_92MHz-1MSps-1MHz
aaaaaaaad391d391083122fd2 91 a01 1aae0    bridge_shutter-küche_2x-up_433_92MHz-1MSps-1MHz
aaaaaaaad391d391083122fd2 70 a01 0a8c3227 remote_shutter-wohn_2x-stop_433_92MHz-1MSps-1MHz
aaaaaaaad391d391083122fd2 71 a01 1aac12e1 remote_shutter-wohn_2x-up_433_92MHz-1MSps-1MHz

aaaaaaaad391d391083122fd298a018a8e30cd
aaaaaaaa                   4 Byte preamble
d391                       2 Byte sync
d391                       2 Byte sync
083122fd298a018a8e30cd    11 Byte data

@Hofyyy
Copy link
Author

Hofyyy commented Apr 22, 2021

Ich glaube ich habe ein paar Muster im Protokoll erkannt.
Mal am Beispiel von dem ersten Kommando:

Original = 0xaaaaaaaad391d391083122fd298a018a8e30cd
aaaaaaaa 4 Byte preamble
d391 2 Byte sync
d391 2 Byte sync
083122fd2 ???
9 0xf #Kanal" (0-15) 1-15 sind die spezifischen Rolläden"
8 0xf #Command "0x0 Stop; 0x1 Up; 0x8 Down; 0xe Status
a ??? Vielleicht Anzahl folgende Hex Zahlen? -> 10?
01 ???
8 0xf #Command Wiederholung bei Remote und Shutter, Bei Status 0xe hier 0x0?!?!
a8 0xff #Ziel HWID "0xa8 R. Küche; 0x26 Fernbedienung; 0xaa R.Wohnzimmer; 0x88 Bridge;
e30cd ??? Checksumme?

@Hofyyy
Copy link
Author

Hofyyy commented Apr 23, 2021

I am now able to see the messages live with:
rtl_433 -R 0 -X "n=rojaflex,m=FSK_PCM,s=100,l=100,r=102400,preamble=0xaaaaaaaa"
Now the question is how to put this into a file.

@elektron-bbs
Copy link
Contributor

Original = 0xaaaaaaaad391d391083122fd298a018a8e30cd
aaaaaaaa 4 Byte preamble
d391 2 Byte sync
d391 2 Byte sync
083122fd2 ???
9 0xf #Kanal" (0-15) 1-15 sind die spezifischen Rolläden"

Laut Doku Kanäle 1 bis 15, dann gibt es da noch (Zitat):
"Wenn das Symbol „A“ unterlegt ist, ist die Gruppensteuerung aktiviert. Hier können Sie alle 15 Kanäle gleichzeitig mit der AUF/STOPP/AB Taste steuern."
Hier wäre da noch zu klären, ob da 0x0 oder 0xF gesendet wird.
Welche Fernbedienungen hast du eigentlich und was meintest du für ein Gerät mit "bridge" in den Aufzeichnungen, evtl den Funkrepeater?

8 0xf #Command "0x0 Stop; 0x1 Up; 0x8 Down; 0xe Status

Was ist 0xE Status?
Wird damit der aktuelle Status der Motoren angefordert? Das System scheint ja offensichtlich bidirektional zu arbeiten. Eine Taste dafür finde ich auf keiner Fernbedienung.
Allerdings gibt es auch noch den Programmierknopf auf der Rückseite der Fernbedienungen.

a ??? Vielleicht Anzahl folgende Hex Zahlen? -> 10?
01 ???
8 0xf #Command Wiederholung bei Remote und Shutter, Bei Status 0xe hier 0x0?!?!

Remote und Shutter?
Siehst du irgendwo die Rückmeldungen von den Rolladen?
Oder sind die hier schon enthalten:

remote_shutter-küche_2x-down_433_92MHz-1MSps-1MHz
aaaaaaaad391d391083122fd298a018a8e30cd [Pause: 3459 samples]
aaaaaaaad391d391083122fd298a018a8e30cd [Pause: 48986 samples]
aaaaaaaad391d391083122fd29ea01026602a6 [Pause: 3258 samples]
aaaaaaaad391d391083122fd29ea01026602a6 [Pause: 967860 samples]
aaaaaaaad391d391083122fd298a018a8e30cd [Pause: 3454 samples]
aaaaaaaad391d391083122fd298a018a8e30cd [Pause: 48883 samples]
aaaaaaaad391d391083122fd29ea01026602a6 [Pause: 3264 samples]
aaaaaaaad391d391083122fd29ea01026602a6 [Pause: 1654809 samples]

Es sind jeweils 2 x 2 Nachrichten, wahrscheinlich pro Tastendruck. Habe ich aber nicht bei allen Aufzeichnungen gefunden (siehe Anhang Rojaflex.txt).
Rojaflex.txt

a8 0xff #Ziel HWID "0xa8 R. Küche; 0x26 Fernbedienung; 0xaa R.Wohnzimmer; 0x88 Bridge;
e30cd ??? Checksumme?

Da ist noch einiges zu klären.
Ich versuche mich erstmal an den Registersettings für den CC1101.

@elektron-bbs
Copy link
Contributor

I am now able to see the messages live with:
rtl_433 -R 0 -X "n=rojaflex,m=FSK_PCM,s=100,l=100,r=102400,preamble=0xaaaaaaaa"
Now the question is how to put this into a file.

Ich weiß nicht, was rtl_433 dir da liefert.

@Hofyyy
Copy link
Author

Hofyyy commented Apr 23, 2021

  1. Ich weiß nicht, was rtl_433 dir da liefert.

Mit dem Kommando "rtl_433 -R 0 -X "n=rojaflex,m=FSK_PCM,s=100,l=100,r=102400,preamble=0xaaaaaaaa" bekomme ich live die Hexwerte, die du dankenswerter Weise manuell berechnet hast. Also noch nicht wirklich mehr als wir jetzt haben. Nur besser zum Debuggen.

  1. Laut Doku Kanäle 1 bis 15, dann gibt es da noch (Zitat):
    "Wenn das Symbol „A“ unterlegt ist, ist die Gruppensteuerung aktiviert. Hier können Sie alle 15 Kanäle gleichzeitig mit der AUF/STOPP/AB Taste steuern."
    Hier wäre da noch zu klären, ob da 0x0 oder 0xF gesendet wird.

Auch wenn ich das noch mal validieren muss, bin ich zu 99% sicher das in dem Fall eine 0x0 gesendet wird.

  1. Was ist 0xE Status?
    a ??? Vielleicht Anzahl folgende Hex Zahlen? -> 10?
    01 ???
    8 0xf #Command Wiederholung bei Remote und Shutter, Bei Status 0xe hier 0x0?!?!

Es wird auf jedes Kommando von der "Fernbedienung" eine Antwort von dem Rolladen gesendet.
Das 0xE sehe ich bei den Nachrichten, die vom Rolladen kommen.
Die Kommandos von den Rolläden sind in den Listen oben also enthalten.

remote_shutter-küche_2x-down_433_92MHz-1MSps-1MHz

  • Remote: aaaaaaaad391d391083122fd298a018a8e30cd [Pause: 3459 samples]
    Auf ein 0x8 "runter"
  • Rolladen: aaaaaaaad391d391083122fd29ea01026602a6 [Pause: 3258 samples]
    kommt ein 0xe "status"
  1. Welche Fernbedienungen hast du eigentlich und was meintest du für ein Gerät mit "bridge" in den Aufzeichnungen, evtl den Funkrepeater?
  • Ich habe eine normale Fernbedienung "Rojaflex HSR-15"
  • Und ich habe eine Rojaflex Bridge "PD2 Powerdrive"
    Da sagt das Handy über die Cloud des Anbieters was es tun soll. Und dann sendet das PD2 Powerdrive
    wie die Fernbedienung ein Signal. Es ist wahrscheinlich nur ein Raspberry mit einer Platine und einem Custom Linux.
    Das gute ist aber, das ich so von zwei Geräten das senden Testen kann. Link

Dann habe ich durch Zufall noch vielleicht Kompatible Protokolle gefunden die ich gleich mal teste:

  • Der "archos_tbh_decoder.c" verwendet die identische Preamble und Syncwörter nur auf einer leicht anderen Basisfrequenz.
  • Und ich habe folgendes Produkt gefunden "SmartWise RF Bridge Pro" welches verschiedene Hersteller kann.
    Nach der Liste: Rojaflex, Smarthome mit Dooya-encoding
    Link

@Hofyyy
Copy link
Author

Hofyyy commented Apr 23, 2021

Ich bin mit der Analyse des Commandos schon ganz gut voran gekommen. Dazu morgen mal mehr. Allerdings habe ich mich schon an Checksummen hoch und runter gerechnet. ich denke das ist eine CRC16 am Ende. Hast du da eine Idee?

@Hofyyy
Copy link
Author

Hofyyy commented Apr 23, 2021

Hier der akutelle Stand, wenn man alle festen Werte von vorne weglässt.
Die ersten Commands hatten Fehler. Anbei die neue Datei
commands.docx

Interessant ist, das die Fernbedienung 2 Unterschiedliche Kommandos bei Runter sendet, wovon ich nur das erste verstehe. Und die Bridge sendet nur das erste Kommando beim Runter ...

@elektron-bbs
Copy link
Contributor

Ich habe die Nachrichten, die ich aus den Mitschnitten von URH erfassen konnte, mal in einer Excel-Datei erfasst. Vielleicht kannst du diese ja mal ergänzen.
Rojaflex.xlsx

@Hofyyy
Copy link
Author

Hofyyy commented Apr 24, 2021

Hallo elektron-bbs,

Ich gucke mir deine Tabelle morgen mal an. Mit ein bisschen Glück habe ich die Struktur jetzt vollständig.
Es scheint einen Message Token zu geben und eine CRC. Siehe Captures.
Interessant ist das die Kanalnummer auf den MessageToken addiert wird. Also immer wenn ich einen kleineren Kanal nehme z.b. von 9 auf 8. Dann wird der Messagekey einen Wert kleiner.

Es scheint also nicht mit IDs von den Geräte gearbeitet zu werden. Annahme.
Sondern mit Token die die Channel ID und das Commando enthalten. Somit reagiert jeder Rolladen auf der ID auf das Commando und kann den Token in der Rückantwort verwenden. Was sie auch tun. So mit kann die Fernbedienung die Antworten zu Ihren Kommandos zuordnen.
Soweit zu meiner aktuellen Vermutung.

Des Weiteren nehme ich an das diese Token von dem Rolladen geprüft und übernommen werden und immer in der Antwort gleich bleiben.

Anbei mal ein Capture von meinem getunten sdr_433 und die *.c Datei mit viel Doku.
Leider noch viel Annahmen und ich habe noch keine Ahnung wie man den Token berechnet und die CRC :-(

Und vielleicht sind auch noch Annahmen nicht richtig.
logfile.docx
commands.docx
rojaflex.c.docx

Noch ein kleiner Nachtrag an Erkenntnissen:

  • Die Bridge (Raspberry Blackbox) senden bei den Commandos keine CRC, siehe commands.docx.
    Man bräuchte diese also nicht zwingend zu reimplementieren.
  • Die Bridge senden das 0xEA Commando nicht. Ist wahrscheinlich auch nicht nötig.
    Einzeln kann ich es leider "noch" nicht abschicken. Ich glaube es ist ein
    "Get Current Status an die Rolläden"
  • Ich dachte erst, dass das 0xEA Commando von einem Rolladen kommt. Also "Confirm"
    Ich bin dann aber noch mal auf die Idee gekommen die Sicherungen raus zu nehmen,
    Und siehe da es kam auch von der Fernbedienung :-)
  • Zu dem Message Key. Wenn ich das richtig sehe ist der beim Reinen Runter Kommando recht statisch.
    Siehe commandos.docx

Basis Token für hoch bei Kanal 0: 0x1AA5

  • Das erste Byte ist das Command also hier 0x1a.
  • Das zweite ist mir nicht ganz klar. Scheint bei Kanal 0 bei mir immer a5 zu sein,
    Und die Kanalnummer wird einfach addiert. Wo die a5 herkommt ist mir unklar.

Basis Token für runter bei Kanal 0: 0x8A85

  • Das erste Byte ist das Command also hier 0x8a.
  • Das zweite ist mir nicht ganz klar. Scheint bei Kanal 0 bei mir immer 85 zu sein,
    Und die Kanalnummer wird einfach addiert. Wo die 85 herkommt ist mir unklar.

Basis Token für Stop bei Kanal 0: 0x0A85

  • Das erste Byte ist das Command also hier 0x0A.
  • Das zweite ist mir nicht ganz klar. Scheint bei Kanal 0 bei mir immer 85 zu sein,
    Und die Kanalnummer wird einfach addiert. Wo die 85 herkommt ist mir unklar.

Basis Token für GetStatus bei Kanal 0: 0x025D // Das tanzt aus der Reihe

  • Das erste Byte ist "nicht" das Commando 0xEA???!!! sondern magische 0x02
  • Das zweite scheint 5D als Basis zu haben und dann wieder die Kanalnummer drauf.

Also wenn es eine HomeID als statischen Schlüssel gibt Byte 10-12 und er User diese eingibt,
oder man Sie aus bekannten Nachrichten rausfiltert. Sollten wir jetzt in der Lage sein statische Kommandos ohne CRC (wie die Bridge) zu generieren.

@Hofyyy
Copy link
Author

Hofyyy commented Apr 25, 2021

Dank dem folgendem Tool konnte ich die CRC rausfinden und validieren.
./reveng -w 16 -s $msg1 $msg2 $msg3

CRC16/CMS:
// width=16 poly=0x8005 init=0xffff refin=false refout=false xorout=0x0000 check=0xaee7 residue=0x0000

Berechnet sich von Byte Position 8 (Name "Länge") bis zur Position 16 inklusive.
return crc16( &msg[8], 9, 0x8005, 0xffff);

Also die letzten zwei Byte von der Fernbedienung sind validiert eine CRC16/CMS.

@elektron-bbs
Copy link
Contributor

Spitzen Leistung, mal sehen, wie wir das in FHEM umsetzen können. Unter Umständen kann das ja auch schon der CC1101 selbst.

@Hofyyy
Copy link
Author

Hofyyy commented Apr 25, 2021

Ich denke doch, die Firma setzt ja den TI_CC110L ein, siehe Dokumentation oben. Ich glaube der baut auf dem CC1101 auf. Ich komme jetzt erstmal weiter und probiere es kurzfristig per Sonoff RF 433 bridge und MQTT anzusteuern. Wäre natürlich auch cool wenn Ihr die Firma unterstützt.

Viele Grüße
Sag bescheid wenn du noch was brauchst.

Ich gucke mal ob ich die Tage einen Message Generator in Bash schreibe.

@Hofyyy
Copy link
Author

Hofyyy commented May 3, 2021

Hey electron,

ich habe den Decoder in rtf433 fertig implementiert und würde den Hersteller jetzt in FHEM übertragen wollen. Wie kann ich denn am besten helfen? Kannst du mir die Register Settings für den FSK mode für den SIGNALDuino geben? Damit kenne ich mich ja leider noch nicht so aus. Wenn ich die Hex Werte bekomme kann ich wieder starten mit dem Plugin.

Siehe: merbanan/rtl_433#1705

@elektron-bbs
Copy link
Contributor

Ich mache mal einen Schuss aus der Hüfte, ohne jegliche Gewähr :-)
Ich habe einen neuen Branch erstellt: master_rojaflex

Ein Update darauf erfolgt mit folgendem Befehl:

update all https://raw.githubusercontent.com/RFD-FHEM/RFFHEM/master_rojaflex/controls_signalduino.txt

Nach einem Neustart von FHEM muss bei dem SIGNALduino (434MHz, CC110x) unter dem Menupunkt "Display protocollist" das Protokoll 109 aktiviert werden. Anschließend muss noch das Attribut "rfmode" auf den Wert "Rojaflex" gesetzt werden. Nachdem der CC1101 konfiguriert ist (das dauert einige Sekunden) aktualisieren sich die Readings auf folgende Werte:

cc1101_config Freq             433.920 MHz, Bandwidth: 101 KHz, rAmpl: 33 dB, sens: 8 dB, DataRate: 9992.60 Baud 
cc1101_config_ext Modulation   2-FSK, Syncmod: 30/32 sync word bits detected 
cc1101_patable                 C3E = 00 84 00 00 00 00 00 00 

Solltest du damit schon etwas empfangen, so siehst du das erstmal nur im Log:

2021.05.04 20:55:19 3: sduinoD1: Unknown code u109#E5527FF7CFF6EF7CFF7EE9C87F1AAD80083009108300811637800000, help me!

Ich schätze aber eher, das du dich erstmal durch die Register des CC1101 kämpfen musst um die vielfältigen Konfigurationen einzustellen. Ich habe mir dazu eine Excel-Datei erstellt, die ich mal mit hochlade. Vielleicht hilft dir das etwas.

CC1101-Register.xlsx

@Hofyyy
Copy link
Author

Hofyyy commented Sep 19, 2021

Das klingt gut. Hast du auch schon Device 0 getestet?

Nein noch nicht. Mache ich die Tage und melde mich dann noch mal.

@Hofyyy
Copy link
Author

Hofyyy commented Sep 24, 2021

Der Test von Kanal 0 (alle Rolladen gleichzeitig) war zu 50% erfolgreich.

  • Wenn ich das Gerät 0 im FHEM Webinterface bediene ändern sich die Zustände aller anderen korrekt.
  • Wenn ich die Fernbedienung benutze, ändert sich nichts. Da scheint noch ein Fehler im Receive zu sein
    0.txt
    .

@Hofyyy
Copy link
Author

Hofyyy commented Sep 24, 2021

Wenn ich es richtig sehe, liegt es am Housecode vergleich.
Hier wäre auch die Frage ob wir es "Housecode" oder "ident" nennen.

Zeile 343: my $housecode = substr $rawData,2,7;
Zeile 419: ... && substr($defs{$d}{DEF},0,7) eq $housecode && ...

@elektron-bbs
Copy link
Contributor

elektron-bbs commented Sep 26, 2021

  • Wenn ich die Fernbedienung benutze, ändert sich nichts. Da scheint noch ein Fehler im Receive zu sein

Mhmm, das kann ich nicht nachvollziehen... Wenn ich mit einem Gerät sende, werden auf dem anderen Gerät die Zustände aller Geräte mit gleicher Ident geändert. Es wird allerdings kein Event ausgelöst. Man muss erst die Seite aktualisieren.

Device0

Im Log sieht man beide Einträge:

2021.09.26 16:43:05 3: sduinoACM: SD_Rojaflex receive 3122FD2 channel 0, update SD_Rojaflex_3122FD2_12 up
2021.09.26 16:43:05 3: sduinoACM: SD_Rojaflex receive 3122FD2 channel 0, update SD_Rojaflex_3122FD2_9 up

@elektron-bbs
Copy link
Contributor

Wenn ich es richtig sehe, liegt es am Housecode vergleich.
Hier wäre auch die Frage ob wir es "Housecode" oder "ident" nennen.

Ich habe mich jetzt für "housecode " entschieden - da waren weniger Änderungen erforderlich :-)
Branch ist aktualisiert...

@Hofyyy
Copy link
Author

Hofyyy commented Sep 26, 2021

Super, ich mache mal ein Update.
Und das mit dem "Event" kann natürlich sein.
Ich prüfe mal das log und aktualisiere die Webseite manuell.

@Hofyyy
Copy link
Author

Hofyyy commented Sep 26, 2021

Restest erfolgreich. Wie du gesagt hast, man muss die Webseite manuell neu laden.

Ein wenig unschön ist, das die Fernbedienung immer ein Request hinterher schickt und man daher im State Pauschal immer Refresh stehen hat. Allerdings möchte man ja auch sehen was ankommt. Da das Request nur für die Rolläden gedacht ist, könnten wir natürlich das Kommando auch komplett verwerfen, dann würde man ein bisschen schöner sehen was passiert.

Bildschirmfoto 2021-09-26 um 18 43 55

Siehe:
2021-09-26_18:39:33 SD_Rojaflex_3122FD2_0 motor: stop
2021-09-26_18:39:33 SD_Rojaflex_3122FD2_0 tpos: 0
2021-09-26_18:39:33 SD_Rojaflex_3122FD2_0 pct: 0
2021-09-26_18:39:33 SD_Rojaflex_3122FD2_0 cpos: 0
2021-09-26_18:39:33 SD_Rojaflex_3122FD2_0 RAWMSG: MN;D=083122FD201A011AA5;R=197;
2021-09-26_18:39:33 SD_Rojaflex_3122FD2_0 RSSI: -103.5
2021-09-26_18:39:33 SD_Rojaflex_3122FD2_0 Protocol_ID: 109
2021-09-26_18:39:33 SD_Rojaflex_3122FD2_0 DMSG: P109#083122FD201A011AA5
2021-09-26_18:39:33 SD_Rojaflex_3122FD2_0 request
2021-09-26_18:39:33 SD_Rojaflex_3122FD2_0 motor: stop
2021-09-26_18:39:33 SD_Rojaflex_3122FD2_0 tpos: 0
2021-09-26_18:39:33 SD_Rojaflex_3122FD2_0 pct: 0
2021-09-26_18:39:33 SD_Rojaflex_3122FD2_0 cpos: 0
2021-09-26_18:39:33 SD_Rojaflex_3122FD2_0 Protocol_ID: 109
2021-09-26_18:39:33 SD_Rojaflex_3122FD2_0 RSSI: -103.5
2021-09-26_18:39:33 SD_Rojaflex_3122FD2_0 RAWMSG: MN;D=083122FD20EA01025D;R=197;
2021-09-26_18:39:33 SD_Rojaflex_3122FD2_0 DMSG: P109#083122FD20EA01025D

@elektron-bbs
Copy link
Contributor

Ich hätte ja erwartet, das nach dem request eine Rückmeldung der Antriebe erfolgt?!?

@Hofyyy
Copy link
Author

Hofyyy commented Sep 26, 2021

Das kann ich beantworten. Dazu gibt es eine kurze und eine lange Antwort.

Die kurze ist: Nein tun sie nicht.

Die lange:
Mein Eindruck ist Rojaflex hat keinen wirklichen Bidirektionalen modus eingebaut. sondern eher einen request um auf der Fernbedienung eine Prozentanzeige für einen Kanal anzeigen zu können.

  • Das würde auch erklären warum die bridge von rojaflex keinen request verschickt.
  • Auf Kanal 0 kommen keine antworten.
  • Schickt man zwei Rollläden kurz nacheinander los, antworten alle zum Schluss auf dem Kanal, von dem letzten Rolladen der losgeschickt wurde., also auf dem die Fernbedienung steht.

Um es kurz zu machen. Ich glaube die haben das nicht wirklich als Protokoll pro Kanal abgebildet.

So lange man nur einen benutzt (nicht die Null) funktioniert es halt per Zufall so wie man es erwarten würde.

@elektron-bbs
Copy link
Contributor

Das scheint dann noch etwas "Beta" zu sein...
Ich habe das jetzt geändert. Das Kommando "request" von Gerät 0 wird nicht mehr ausgewertet.
Ich gehe mal davon aus, das die Fernbedienung im unidirektionalen Modus kein "request" sendet. Wenn doch, müsste ich noch das Attribut "bidirectional" auswerten.
Branch wurde aktualisiert...

@Hofyyy
Copy link
Author

Hofyyy commented Sep 27, 2021

  1. Retest erfolgreich, sieht gut aus.
  2. Ich habe mich jetzt mal dran gemacht und die Fernbedienung auf "SI" umgestellt.
    Leider bekomme ich dann garkeine Commandos mehr auch nicht mit meinem RTL433.
    Es kann sein das die Fernbedienung in dem Modus auf einer anderen Frequenz senden.
    Es ist auf jeden Fall nicht so, das einfach ein Command weggelassen wird.
    Das gute ist, ich kann zurückschalten und es geht wieder.
  3. Beta
    Für mich sieht das auch so aus. Allerdings haben Sie auch keine Produkte, die es sauber benötigen.
    Die Bridge sendet nur die Kommandos "SI" und schickt noch nicht mal die Checksumme am Ende mit.
    Und die Fernbedienung zeigt ja nun mal nur den Status von dem gerade eingestellten Kanal / Rolladen an.
    Und genau das geht ja leider auch.

@elektron-bbs
Copy link
Contributor

zu 2.
Mist... Da wir das dann nicht testen können, würde ich vorschlagen, ich setze das Attribut "bidirectional" default auf 1 und schreibe irgendwo in die Doku, das zur Zeit nur dieser Modus unterstützt wird. Vielleicht findet sich ja irgendwann ein User, mit dessen Hilfe wird den unidirektionalen Modus nachrüsten können.

Wenn du dann keine weiteren Einwände hast, würde ich den Branch in den Master überführen.

@Hofyyy
Copy link
Author

Hofyyy commented Sep 29, 2021

Zu 2.

Dadurch, dass die Motoren ja falsch antworten, sobald sie gleichzeitig genutzt werden, würde ich es so lassen. Oder mindestens einstellbar lassen.

Ich habe im defaultsetup bidirectional auf 0, weil es sonst bei mir garnicht funktioniert.

die motoren antworten ja, wenn gleichzeitig gesteuert, alle auf dem gleichen Kanal. Und dann bekommt man nie das letzte position update :-( das ist ja der ganze misst.

daher brauche ich das setting.

Merge wäre natürlich cool.

@elektron-bbs
Copy link
Contributor

Nicht, das wir uns falsch verstehen, ich ändere nur den Default-Wert, wenn das Attribut nicht angelegt ist.
Z.B. wird aus dieser Zeile:

if (AttrVal($name,'bidirectional',0) eq '0') {

dann

if (AttrVal($name,'bidirectional',1) eq '0') {

Dann werden von FHEM erstmal nur die Readings motor, state und tpos erzeugt. solange das Attribut "bidirectional" nicht vom User angelegt und auf 0 gesetzt wird.
Die Readings cpos und pct werden dann erst beim Parsen einer Nachricht vom Antrieb erzeugt.

@Hofyyy
Copy link
Author

Hofyyy commented Sep 30, 2021

Danke für die Erklärung. Super.

@Hofyyy
Copy link
Author

Hofyyy commented Oct 5, 2021

Wenn du gemerged hast, ist die Frage, wie ich meine Installation auf den Master umziehen kann. Gibt es da einen einfachen Befehl?

@elektron-bbs
Copy link
Contributor

Dazu reicht dann in Zukunft ein Befehl:

update all https://raw.githubusercontent.com/RFD-FHEM/RFFHEM/master/controls_signalduino.txt

oder einmalig dieser. um in Zukunft beim normalen Update die Module aus Master gleich mit zu aktualisieren:

update add https://raw.githubusercontent.com/RFD-FHEM/RFFHEM/master/controls_signalduino.txt

Ich bin aber noch nicht dazu gekommen. Ich gebe dann Bescheid, wenn es soweit ist.

@elektron-bbs
Copy link
Contributor

Ich habe jetzt erstmal nur ein Update auf diesen Branch durchgeführt. Bitte nochmal testen.
Wenn du dann keine Einwände hast, würde ich einen Pull Request in den Master vollziehen.

@Hofyyy
Copy link
Author

Hofyyy commented Oct 18, 2021

Update ist eingespielt. Test ongoing

@Hofyyy
Copy link
Author

Hofyyy commented Oct 19, 2021

funktioniert

@Hofyyy
Copy link
Author

Hofyyy commented Oct 19, 2021

Und ich habe jetzt doch gewisse Automationen auf Kanal 0 (alle Rollläden) umgestellt. Früher habe ich autom. alle Rollläden nacheinander angesteuert. Jetzt nutze ich durch deine Implementation das device 0. dadurch wird weniger gefunkt und es läuft sogar stabiler.

@elektron-bbs
Copy link
Contributor

OK, dann werde ich bei Gelegenheit einen pull request in den Master einleiten.

@Hofyyy
Copy link
Author

Hofyyy commented Nov 28, 2021

@elektron-bbs Vielen Dank für die ganze Mühe!
@sidey79 Und natürlich auch an dich für das Review und die super Testabdeckung.

Ich benutze Rojaflex via FHEM und zusätzlich via Hombridge mit dem FHEM connector plugin.

Anbei noch einmal meine Configuration für alle die einähnliches Setup haben.

  • Raspberry Pi
  • FHEM
  • NANO CUL (/dev/serial/by-id/usb-SHK_NANO_CUL_433-if00-port0@57600)
  • Firmware: 3.5.0-dev+20210808 SIGNALduino cc1101 (chip CC1101)
  • Im Nano Cul ist bei mir ausschließlich Protocol: 109 (SD_Rojaflex) aktiviert, siehe config png.

sduino_rojaflex_config

  Die Rolläden sollten beim Benutzen dann automatisch auftauchen.

uebersicht_rojaflex

Anbei meine Device Configuration:

  • Repetition 2 ist denke ich für alle sinnvoll. Das sendet die original Fernbedienung auch so.
  • Bidirectional könnte eigentlich auf 1, wenn die Rolläden das können, hat bei mir aber ärger gemacht, weil "meine" Rolläden da einen Bug haben.
  • Inversposition und homebridgemapping brauche ich nur für Apple HomeKit via Homebridge.

configuration_device

@sidey79
Copy link
Contributor

sidey79 commented Nov 28, 2021

@Hofyyy
Danke für das Lob und die Dokumentation.

@asztalosdani
Copy link

asztalosdani commented Jan 2, 2022

@Hofyyy

I am now getting further and try to control it with the Sonoff RF 433 bridge

sorry to hijack the conversation, were you able to do it with the Sonoff RF Bridge?

@Hofyyy
Copy link
Author

Hofyyy commented Jan 2, 2022

No I was not able to get it work with Sonoff RF Bridge, because the firmware is not able to speak the specific language. Also the special HF firmware which you can flash is also not able to speak the special format. The only easy way is not with this plugin :-P

@Hofyyy
Copy link
Author

Hofyyy commented Dec 16, 2023

@Hofyyy

I am now getting further and try to control it with the Sonoff RF 433 bridge

sorry to hijack the conversation, were you able to do it with the Sonoff RF Bridge?

I am again on this topic. where you able to run this via rhe sonoff bridge?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
not ASK/OOK alternative modulation compared to the standard
Projects
None yet
Development

Successfully merging a pull request may close this issue.

6 participants