Erweiterung CULFW um Somfy/Simu

Begonnen von thdankert, 31 Mai 2014, 14:20:23

Vorheriges Thema - Nächstes Thema

thdankert

Hallo zusammen,

ich habe den Vatertag genutzt, und der CULFW das Senden von Befehlen für Somfy/Simu Rolladenmotoren beigebracht.
Der Code ist noch sehr rudimentär, funktioniert aber bereits bei mir :-)

Biser kann man die Befehle nur über den raw-Modus absenden, ich entwickele noch ein FHEM-Modul dazu.
Somfy verwendet einen rollierenden Code und "Verschlüsselung" (XOR), um sich vor Angriffen zu schützen.
Der Code ist ein linearer Counter, und jeder Kanal einer Fernbedienung hat seinen eigenen.

Wenn ich also über den CUL Somfy-Befehle absende, und dabei den Counter erhöhe,
kommt irgendwann meine normale Fernbedienung aus dem Tritt.
Da muss man dann solange auf der FB drücken, bis deren rolling code dort angekommen ist, wo der Empfänger ihn erwartet.

Die Lösung ist simpel, und so plane ich auch mein FHEM-Modul: ich definiere einen neuen (virtuellen) Fernbedienungskanal,
lerne den Empfänger an diesen an, und FHEM kann dann selbst den rolling code verwalten.
Damit komme ich meiner bisherigen Fernbedienung nicht in die Quere.

Den Code fürs Senden habe ich analog zu Intertechno gehalten, und auf das "Y" gelegt, das war noch frei.
Code ist getrennt über "#ifdef HAS_SOMFY".

Da ich selbst nur 2 SCC zum testen habe, ist auch nur dort der Code zum Aufruf bei "Y" enthalten.
Wer mutig ist, kann das aber gern zu seiner Board-Definition hinzufügen.

Im Anhang ist der Patch basierend auf der letzten SVN-Version (Revision 416).
Commandref & CHANGED sind ebenfalls aktualisiert und im patch.

War das Vorgehen hier richtig, oder sollte ich sowas lieber auf der CUL-Fans Mailingliste posten?

Viele Grüße,
Thomas

PS: Ich würde mich sehr freuen, wenn jemand mit Somy oder Simu Rolladenmotoren das mal testen könnte.
Dimmer und Schalter müssten schon funktioneren, eventuell muss man noch ein extra Kommando implementieren.
Sobald mein FHEM-Modul dazu fertig ist, poste ich im entsprechenden Board.
RPI mit FHEM, 2x Stackable CC (868 und 433MHz)

postman

#1
Hallo thdankert,

Ich bin derzeit dabei, mit Hilfe einiger Elektronikbastelleien, mir eine Lösung für die Ansteuerung von Somfy RTS Rollläden zu bauen.
Ich will dafür eine IO-platine für den Raspberry verwenden, an die, über Optokoppler getrennt, die Somfy-Handsender angeschlossen werden.

Deshalb folgende Frage:
Kann ich damit jetzt, ohne den Umweg über Bastelleien mit Originalhandsendern zumachen, Somfyrollläden direkt ansteuern? oder habe ich das jetzt falsch verstanden?
Würde das so funktionieren, könnte ich mir die oben beschriebene Bastelei sparen  ;)

Gruß
Uwe

Ich verwende für den FHEM einen Raspberry pi V2 mit einem CUL V3 und einer 32 Port IP-Platine
Raspberry Pi Version 2 QUAD-CORE CPU und 1 GB RAM, CUL V3 868 MHz,  stapelbarer CC1101 (SCC) 433 MHz, Enocean-Stick,Jeelink-Stick, BSB-Lanadapter

Spruch eines Ausbilders: Theorie ist, wenn man alles weiss und nichts funktioniert; Praxis ist, wenn alles funktioniert und keiner weiss warum...

thdankert

Hallo Uwe,

diese Idee hatte ich auch zuerst - da mir die zusätzlichen Handsender aber zu teuer sind, und ich ja schon den 433MHz SCC habe, habe ich versucht, das Funkprotokoll zu verstehen und nachzubauen.

Um deine Frage zu beantworten: ja, genau das ist hiermit möglich.
Aber (!): bisher geht das nur über den RAW-Modus des CUL, ich habe noch kein FHEM-Modul dazu geschrieben.

Wenn das fertig ist, kannst du die Somfy-Rolläden als neue Geräte hinzufügen und über FHEM steuern.
Im aktuellen Zustand ist das aber noch nicht sehr komfortabel geschweige denn WAF-kompatibel :-)

Aktuell geht es so: du drückst auf deiner Fernbedienung die Programmiertaste für einen Rolladen,
und sendest danach vom CUL einen Funkbefehl, der dem Rolladen eine neue Fernbedienung vorspielt.
Danach sind die gekoppelt, und du kannst direkt vom CUL aus den Rolladen steuern.
Leider musst du dir den Rolling Code merken, der wird noch nicht gespeichert :-)

Wenn du also an einer schnellen Lösung interessiert bist, ist deine "Bastelei" vermutlich der bessere Weg.

Wenn ich das FHEM-Modul fertig habe, ist das (hoffentlich) die elegantere Lösung.

Grüße,
Thomas
RPI mit FHEM, 2x Stackable CC (868 und 433MHz)

postman

Hallo Thomas,
DANKE für die schnelle Antwort :-)
ja, genau so etwas stelle ich mir vor. Ich scheue mich auch davor, Handsender zu kaufen und dann an denen rumzubraten (selbst wenn es in der bucht welche für ca. 20 € gibt, ist das bei meinen 6 Rollläden schon recht teuer). Das Risiko, dass die SMD-Bauteile auf den Handsendern den Hitzetot sterben ist relativ hoch.
Leider habe ich mir den 868 ziger Cul gekauft; aber der lässt sich ja für die Versuche mal zeitweilig umprogramieren. Ich habe auch schon versucht mit hilfe von Hyperterm unter Windows Somfysender auszulesen. War leider nicht erfolgreich, ich konnte nur damit eine steigende bzw. fallende Flanke auslesen. Daten wurden leider nicht angezeigt. Daher habe ich mich dann erst mal mit der Bastellösung beschäftigt. Werde das wohl auch erst einmal weiter verfolgen. Parallel werde ich aber auch Dein Modul ausprobieren, auch wenn ich nicht so fit in Perl bin (kann man ja lernen, ist sicherlich auch nicht viel schlimmer als VB.Net).

Gruß
Uwe
Raspberry Pi Version 2 QUAD-CORE CPU und 1 GB RAM, CUL V3 868 MHz,  stapelbarer CC1101 (SCC) 433 MHz, Enocean-Stick,Jeelink-Stick, BSB-Lanadapter

Spruch eines Ausbilders: Theorie ist, wenn man alles weiss und nichts funktioniert; Praxis ist, wenn alles funktioniert und keiner weiss warum...

thdankert

#4
Ja, mit einem CUL 868 geht es auch, es wird wie bei Intertechno kurzzeitig umgeschaltet.
Einziges Problem könnte dabei die Reichweite sein, aber das muss man einfach ausprobieren.

Aktuell gibt es noch kein FHEM Modul dazu, d.h. es gibt noch kein "define XXXX somfy", es geht halt nur per "set CUL raw Y......".

Zum Auslesen: entweder du nutzt den Monitor-Mode vom CUL, der die steigende/fallende Flanke anzeigt, oder du nimmst einen Logic Analyzer mit billigem 433MHz Empfänger (ich habe einen Buspirate mit einem 5€ Funkmodul von eBay).

Unter http://pushstack.wordpress.com/somfy-rts-protocol/ findest du eine sehr gute Übersicht, die mir auch beim Implementieren des Protokolls geholfen hat. Es gibt auch noch ein Patent, welches den Aufbau eines Somfy-Frames beschreibt.
RPI mit FHEM, 2x Stackable CC (868 und 433MHz)

Puschel74

Hallo,

wir haben auch 9 Somfy-Rollläden die zur Zeit noch per original Fernbedienung bedient werden (müssen).
Genau wie Uwe wollte ich mir schon mit einem AVR-Net-IO plus K8IO etwas an eine original Fernbedienung "basteln".
Bis ich diesen Beitrag gesehen habe  ;D

Meine 868-CUNO sollten kein Problem mit der Reichweite haben da sie maximal 4 Meter von den Rollläden entfernt sind.
WAF ist erstmal auch egal - meine Frau hat da dran nicht rum zu spielen  :P
Nein Scherz.
Ich könnte erstmal mit den 4 Rollläden im DG "spielen" - dort ist zur Zeit unbewohnt und da stört es nicht.

Ich muss mich nur noch schlau machen wie ich das diff in die Firmware bekomme zum flashen.

Aber auch von mir besteht natürlich Interesse an deiner Lösung.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

postman

Wow,
Da bist Du sehr viel weiter als ich gekommen  ;D
Dass es noch kein Modul gibt, war mir schon klar. Ich werde mir das was Du als Anhang veröffentlicht hast aber dennoch mal ansehen. Ein Reichweitenproblem wird es wohl nicht geben: maximale Entfernung je nachdem wo ich den Raspberry plaziere max. 10 - 12 Meter
Zum Auslesen habe ich im Internet eine Beschreibung gefunden, wo beschrieben war, wie das mit Hyperterm und dem CUL funktioniert.
Es funktioniert auch, nur mit den Somfy RTS habe ich es nicht hinbekommen. Ein Heroal Handsender lies sich so auslesen.
Der Link ist auch interessant.
Gruß
Uwe
Raspberry Pi Version 2 QUAD-CORE CPU und 1 GB RAM, CUL V3 868 MHz,  stapelbarer CC1101 (SCC) 433 MHz, Enocean-Stick,Jeelink-Stick, BSB-Lanadapter

Spruch eines Ausbilders: Theorie ist, wenn man alles weiss und nichts funktioniert; Praxis ist, wenn alles funktioniert und keiner weiss warum...

thdankert

#7
Freut mich, dass es doch mehr Leute interessiert :-)

Was ich gepostet habe ist nur ein patch, der auf das aktuelle culfw-SVN angewendet werden muss.
Bisher habe ich den Code aber nur im SCC hinzugefügt, weil ich nur die zum Testen habe.

Ich kann aber gern eine fertige Firmware für euch erzeugen, wenn ihr mir sagt, welches Gerät ihr habt.
Den Patch werde ich noch erweitern, so dass der Befehl für Somfy ("Y") auch in anderen Boards aufrufbar ist.

Vielleicht schaff ichs heute abend, dann poste ich eine fertige Firmware für einen CUL hier.

Aber ihr könnt die Firmware auch selbst bauen:
- aktuelle SVN revision der culfw auschecken
- meinen Patch herunterladen
- Patch anwenden (vorher ins Verzeichnis culfw-code/culfw wechseln): svn patch culfw_somfy_send.diff
- neue CULFW bauen und flashen.

Wie gesagt, das funktioniert bisher nur problemlos für den SCC, aber ich werde nachher einen 2. Patch hochladen, der es auch zum CUL und CUNO hinzufügt.

RPI mit FHEM, 2x Stackable CC (868 und 433MHz)

thdankert

Ihr habt mich angespornt :-)

Anbei der neue Patch, der Somfy auch zum CUL und CUNO hinzufügt.
Gesendet wird mit Y - siehe die neue Commandref.
RPI mit FHEM, 2x Stackable CC (868 und 433MHz)

Puschel74

Hallo,

CUL habe ich in der Firma rumliegen - Notiz an mich, morgen mitnehmen nach Hause.

Dann brauch ich keinen CUNO meiner Produktivumgebung "opfern" und kann auf meinem Reserve-RasPi mit deiner Firmware loslegen.

Wenn ich dich ganz unverschämt um eine fertige CUL.hex bitten dürfte  ;D
Einen Patch einbauen stellt nicht so die Hürde dar - aber das kompilieren mache ich nicht täglich (und da liegt bei mir jede Menge Fehlerpotential verborgen  8) ).
Flashen ist dann auch wieder kein Problem  ::)

Welche Info vom CUL brauchst du?
Reicht die momentane Firmwareversion aus (per version auslesbar)?
Zur Not hätte ich auch noch einen RasPi mit CSM-Modul.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

thdankert

Hi Puschel,

ich habe jetzt auf "gut Glück" die Firmware für CUL_V3 und V4 gebaut.
Die vom CUNO wollte noch nicht, da gab es ein paar Linker-Fehler (die ich noch nicht weiter untersucht habe).

CUL_V2 habe ich nicht aktualisiert, da reicht der Speicher eh schon kaum.

Flashe die mal, die müsste weiterhin 1.58 heißen, aber einen neuen Befehl namens "Y" erlauben (einfach mal mit ? abfragen).
RPI mit FHEM, 2x Stackable CC (868 und 433MHz)

Puschel74

Hallo,

danke für das Hex-file.
Ich werd das morgen mal auf den CUL flashen (liegt ja noch in der Firma rum  ;D ).

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Puschel74

Hallo,

nach dem flashen bekomme ich folgendes nach einem get CUL1 cmds angezeigt (in FHEM):
Zitat
CUL1 cmds => B C F i A Z E G M K U Y R T V W X e f m l t u x

Leider habe ich VOR dem flashen die cmds nicht abgefragt aber ich hoffe mal das es um das Y zwischen U und R geht  8)
Ich hab die CUL_3.hex genommen - am CUL steht CUL V3.2 868MHz drauf (nur zur Sicherheit  ;D )

Wenn das soweit alles in Ordnung ist kann ich mich dran machen und mal einen Rollladenmotor auf anlernen stellen.
Aber erstmal die commandref quälen  ::)

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

thdankert

Hallo Puschel,

das sieht gut aus, es geht genau um das "Y".
Versuch es einfach mal: Rollladen anlernen, und ein Kommando per raw hinsenden.

Ein mögliches wäre:
raw YsA0100001ABCDEF

Ys - Somfy senden
A0 - "Verschlüsselungskey" (erstes Zeichen ist immer A, und weil es eine neue Fernbedienung ist, fangen wir einfach mit 0 an)
10 - Kommando "My"
0001 - Rolling code (einfach mal testen, vielleicht gehts auch nur mit 0000)
ABCDEF - Addresse der neuen Fernbedienung

Mit etwas Glück sollte sich dein Rolladen jetzt in die My-Position bewegen. Für das nächste Kommando müssen der Verschlüsselungskey und der Rollingcode um 1 erhöht werden.
Der Key geht dabei immer von A0 bis A9, dann AA bis AF, und dann wieder A0.
Der Rollingcode wird immer stur um 1 erhöht.

PS: Mein FHEM-Modul ist fast fertig, ich kann es gerade nur nicht testen, weil ich diese Woche nicht zuhause bin.
RPI mit FHEM, 2x Stackable CC (868 und 433MHz)

Olly

Hallo Thomas,

toll, was du hier auf die Beine gestellt hast.
Kann man den Code wohl auch in einen anderen CUL implementieren? Aktuell schwebt mir da der FHEMduino vor, der ja teilweise die culfw nachbildet.
Leider kenne ich mich da nicht so gut mit aus, als dass ich aus deinem Patch etwas entnehmen kann, was man für den FHEMduino übernehmen könnte.

Gruß

    Olly
BananaPi 1GB;NetCSM 868MHz, miniCUL 433MHz, LaCrosseGateway, 2x SignalESP; FHEM 6.2