10_SOMFY.pm - Somfy RTS (und kompatible)

Begonnen von viegener, 12 Mai 2016, 21:06:46

Vorheriges Thema - Nächstes Thema

Fhemfatal

#195
#ifndef _BOARD_H
#define _BOARD_H

#include <avr/io.h>
#include <stdint.h>

/* if you have an Arduino with only 8MHz disable the next line */
#define HAS_16MHZ_CLOCK

/* if you are using a CC1101 module for 868MHz disable the next line */
#if defined (nanoCUL433)
#define HAS_CC1100_433
#endif

#define SPI_PORT PORTB
#define SPI_DDR DDRB
#define SPI_SS 2
#define SPI_MISO 4
#define SPI_MOSI 3
/* die aufgelötete gelbe LED ist an PB5/SCLK angeschlossen! */
#define SPI_SCLK 5

#define CC1100_CS_DDR SPI_DDR
#define CC1100_CS_PORT          SPI_PORT
#define CC1100_CS_PIN SPI_SS


/* CC1101 GDO0 Tx / Temperature Sensor */
#if 0
#define CC1100_OUT_DDR DDRC
#define CC1100_OUT_PORT         PORTC
#define CC1100_OUT_PIN          PC0
#define CC1100_OUT_IN           PINC
#define CCTEMP_MUX              CC1100_OUT_PIN
#else
#define CC1100_OUT_DDR DDRD
#define CC1100_OUT_PORT         PORTD
#define CC1100_OUT_PIN          PD3
#define CC1100_OUT_IN           PIND
#define CCTEMP_MUX              CC1100_OUT_PIN
#endif

/* CC1101 GDO2 Rx Interrupt */
#define CC1100_IN_DDR DDRD
#define CC1100_IN_PORT          PIND
#define CC1100_IN_PIN           PD2
#define CC1100_IN_IN            PIND

#define CC1100_INT INT0
#define CC1100_INTVECT          INT0_vect
#define CC1100_ISC ISC00
#define CC1100_EICR             EICRA

/* externe LED */
#define LED_DDR                 DDRB
#define LED_PORT                PORTB
#define LED_PIN                 1

//#define LED_ON_DDR              DDRB
//#define LED_ON_PORT             PORTB
//#define LED_ON_PIN              1


#define BOARD_ID_STR            "nanoCUL868"
#define BOARD_ID_STR433         "nanoCUL433"

/* define this device as a 433 MHz one */
/* this isn't done like a CUL by reading a port pin but instead a fixed value of 0 for mark433_pin is used */
#define MULTI_FREQ_DEVICE
#define MARK433_PIN mark433_pin
#define MARK433_BIT             0
extern const uint8_t mark433_pin;

#define HAS_UART
#define UART_BAUD_RATE          38400

/* ATMega328P has only one UART, no need to define the UART to use */
//#define USART_RX_vect           USART0_RX_vect
//#define USART_UDRE_vect         USART0_UDRE_vect

#define TTY_BUFSIZE             128


#define RCV_BUCKETS            2      //                 RAM: 25b * bucket
#define FULL_CC1100_PA                // PROGMEM:  108b
#define HAS_RAWSEND                   //
#define HAS_FASTRF                    // PROGMEM:  468b  RAM:  1b
//#define HAS_ASKSIN
/* Intertechno Senden einschalten */
#define HAS_INTERTECHNO



#define HAS_CC1101_RX_PLL_LOCK_CHECK_TASK_WAIT
#define HAS_CC1101_PLL_LOCK_CHECK_MSG
#define HAS_CC1101_PLL_LOCK_CHECK_MSG_SW
/* HAS_MBUS requires about 1kB RAM, if you want to use it you
   should consider disabling other unneeded features
   to avoid stack overflows
*/
//#define HAS_MBUS

#  define HAS_TX3
#  define HAS_UNIROLL

#  define HAS_SOMFY_RTS
#  define HAS_RFNATIVE

//#  define HAS_MEMFN

#if defined (nanoCUL433)
/* Intertechno Empfang einschalten */
#  define HAS_IT
#  define HAS_REVOLT
#  define HAS_TCM97001
#  define HAS_HOMEEASY
#  define HAS_BELFOX
#  define HAS_MANCHESTER
#endif

#if defined (nanoCUL868)
//#  define HAS_ASKSIN_FUP
#  define HAS_MORITZ
#  define HAS_RWE
#  define HAS_ESA
//#  define HAS_HOERMANN
//#  define HAS_HOERMANN_SEND
#  define HAS_HMS
#  define OFF_LACROSSE_HMS_EMU          // if you like HMS emulation for LaCrosse temp devices

#define HAS_SOMFY_RTS
//#define HAS_FHT_80b                     // PROGMEM: 1374b, RAM: 90b
//#define HAS_FHT_8v                    // PROGMEM:  586b  RAM: 23b
//#define HAS_FHT_TF
//#define FHTBUF_SIZE          174      //                 RAM: 174b
//#define HAS_KOPP_FC
//#define HAS_ZWAVE                     // PROGMEM:  882
#endif

habeIchVergessen

Zitat von: RaspiLED am 14 Mai 2018, 23:34:13

...
Compiling C: ../../clib/somfy_rts.c
...

die Source kompilieren und später auch zu linken, sind 2 verschiedene Sachen. vermute mal, dass das Makefile von culfw benutzt wird, richtig?

MarNei

Hallo zusammen,

ich steuere aktuell meine 4 Somfy Rolläden über FHEM mit einem CUL, was sehr gut funktioniert. Dummerweise habe ich irgendwann durch akute Unfähigkeit meine Originalfernbedienung der Rolläden umprogrammiert, dass ich jetzt nicht mehr in der Lage bin, die einzelnen Rolläden anzusprechen und in den Programmiermodus zu versetzen. An die Stromversorgung der Rolläden komme ich auch nicht einfach dran. Nun habe ich über FHEM ja eigentlich eine funktionierende Fernbedienung. Kann ich über FHEM einen Rolladen in den Programmiermodus versetzen, damit ich die Fernbedienung wieder richtig programmieren kann? Unter den set-Werten finde ich hier leider nichts passendes, aber ich denke mir in meiner Naivität, dass das doch eigentlich gehen muss.

Ich wäre über sachdienliche Hinweise wirklich dankbar!

stefanru

Hi MarNei,

unter set gibt es den Punkt prog.
Das sollte helfen.

Guten Morgen :-)

MarNei

Hallo stefanru,

danke für die Antwort. Ich befürchte, dass set prog nicht das ist, was ich suche. Ich suche den Befehl, der den Rolladen kurz zucken lässt. Das macht er, wenn ich auf der Fernbedienung hinten den kleinen Knopf lange drücke. Dann ist er im Programmiermodus. Über set prog kann ich dannach den Rolladen in FHEM pairen. Um aber die Fernbedienung auf diesen Rolladen zu programmieren funktioniert es leider nicht. Gibt es einen Befehl der äquivalent zu dem langen Drücken auf den Knopf hinten auf der Fernbedienung ist?

Danke schön!

stefanru

Ach mist, du hast recht. Da war ich zu schnell.
Prog ist zum bestätigen.

Nein ist mir leider auch nicht bekannt.


viegener

@MarNei: Die Funktion des hinteren kleinen Knopfes lässt sich bei meinen Somfy-Rolläden durch den prog befehl erreichen, allerdings nur wenn ich ausserdem das Attribut repetition auf einen hohen Wert (10 oder so) setze. Vielleicht musst Du etwas experimentieren, aber damit sollte es möglich sein.

Hängen denn alle Rolläden an der selben Sicherung?

Alternativ kannst Du auch dadurch, dass Du die Fernbedienung soweit wie möglich von anderen Rolläden wegbewegst, oder durch Aluflie sogar die Reichweite sehr gering machst versuchen mit der Fernbedienung einen einzelnen Rolladen in den Progmodus zu versetzen.
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

MarNei

@viegener: Vielen Dank für den Hinweis mit dem Attribut repetition! Das ist das, was ich gesucht habe. Wenn ich den auf 15 setze, schaltet der Rolladen wirklich beim prog-Befehl in den Programmiermodus. Wäre ich alleine niemals drauf gekommen.  :)

TomHB

Hallo Forum!

Ich habe da einmal eine kleine Frage: Bei der Benutzung von "go-my" also definierter Zwischenposition ändert sich der Status nicht weg von "open".
Bei der Benutzung von "on/off" ist alles ok.
Die Markiesen funktionieren soweit und sind auch in einer 'structure' zusammengefasst.

Anbei die Attribute. Hat jemand eine Idee, wo mein Fehler ist?



define MarkiseUnten SOMFY xxx xxx xxx
attr MarkiseUnten userattr room_map structexclude
attr MarkiseUnten IODev nanoCUL433
attr MarkiseUnten devStateIcon open:awning.off closed:awning
attr MarkiseUnten drive-down-time-to-100 27
attr MarkiseUnten drive-down-time-to-close 27
attr MarkiseUnten drive-up-time-to-100 28
attr MarkiseUnten drive-up-time-to-open 28
attr MarkiseUnten eventMap on:Ausfahren off:Einfahren go-my:ZwischPos
attr MarkiseUnten model somfyblinds
attr MarkiseUnten room .Markisen,Wohnzimmer
attr MarkiseUnten webCmd Einfahren:Ausfahren:ZwischPos:Stop

TomHB


Ellert

Die Event bezogenen Attibute werden nur funktionieren, wenn es auch passende Events gibt, statt go-my evtl. die dazu gehörende Position oder passende Regex mappen und ggf. devStateIcon ergänzen.

TomHB

ZitatDie Event bezogenen Attibute werden nur funktionieren, wenn es auch passende Events gibt

Da hätte ich vermutet, das da nichts extra angelegt werden müsste, da es ja auch bei den Grundfunktionen (on/off) ohne funktioniert.

viegener

Zitat von: TomHB am 09 Juni 2018, 10:53:57
Hallo Forum!

Ich habe da einmal eine kleine Frage: Bei der Benutzung von "go-my" also definierter Zwischenposition ändert sich der Status nicht weg von "open".
Bei der Benutzung von "on/off" ist alles ok.
Die Markiesen funktionieren soweit und sind auch in einer 'structure' zusammengefasst.

Anbei die Attribute. Hat jemand eine Idee, wo mein Fehler ist?



define MarkiseUnten SOMFY xxx xxx xxx
attr MarkiseUnten userattr room_map structexclude
attr MarkiseUnten IODev nanoCUL433
attr MarkiseUnten devStateIcon open:awning.off closed:awning
attr MarkiseUnten drive-down-time-to-100 27
attr MarkiseUnten drive-down-time-to-close 27
attr MarkiseUnten drive-up-time-to-100 28
attr MarkiseUnten drive-up-time-to-open 28
attr MarkiseUnten eventMap on:Ausfahren off:Einfahren go-my:ZwischPos
attr MarkiseUnten model somfyblinds
attr MarkiseUnten room .Markisen,Wohnzimmer
attr MarkiseUnten webCmd Einfahren:Ausfahren:ZwischPos:Stop


Das Problem ist, das go-my eine Position anfährt, die nur der Rolladen kennt. Da Somfy auch keine Rückmeldung zur POsition gibt, ist bei go-my danach keine definierte Position mehr vorhanden. Der Rolladen fährt sozusagen irgendwo hin. On/off sind dagegen definierte Positionen, die für alle Rolläden gleich sind.

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

TomHB


FHEM16

#209
Ich habe das gleiche Problem und behelfe mir über einen kleinen Umweg (nichts perfektes aber besser als keine Rolladenbewegung)

Vorbereitung:
1. mit "set ROLLADEN01 pos XX" die Poition finden, die mit go-my angefahren wird
2. diese Position (XX) im Rolladen-Device über die Befehlszeile speichern (go-my_exact und go-my_pos)
   setreading ROLLADEN01 go-my_exact XX
   setreading ROLLADEN01 go-my_pos XX (AufAbrunden beachten: bei z.B. exact =54 muss 50 und bei =55 muss 60 angegeben werden)

Rolladen ansteuern:
set ROLLADEN01 go-my,
sleep 60; setreading ROLLADEN01 state [ROLLADEN01:go-my_pos],
sleep 60; setreading ROLLADEN01 position [ROLLADEN01:go-my_pos],
sleep 60; setreading ROLLADEN01 exact [ROLLADEN01:go-my_exact]

Der Rolladen fährt jetzt nach go-my und nach 60 Sekunden werden die Werte für state, position und exact gesetzt (Fhem kennt somit die Position wieder)
Es funktioniert nicht perfekt aber es hilft ein wenig.

Viele Grüße
Fhem16