Passerelle MySensors Somfy RTS
Publié : 05 oct. 2016, 21:11
Bonjour,
voici mon projet pour réaliser une passerelle Mysensors Somfy RTS
le projet a été inspiré de :
culfw http://culfw.de/culfw.html
et de ce thread sur le forum arduino https://forum.arduino.cc/index.php?topic=208346.0
Voici le matériel que j'ai utiliser en plus de mon arduino et de NRF
https://fr.aliexpress.com/item/1pair-2p ... 33574.html
il faut câbler la pin data de votre module RF sur la sortie 3, ceci est réglé dans la lib directement car je dois utiliser l'adressage direct des sorties (plus rapide).
sur le pin 8 vous pouvez brancher une led qui s'allume pendant la transmission
Pour commencer il vous faut configurer le sketch en définissant l'adresse de la télécommande c'est le define :REMOTE_CONTROL_ADRESS
ensuite définir un code tournant (rolingcode) c'est le define MyRolingCode. Il est probable que vous devez sauvegarder le rolingcode dans l'Eprom après chaque envoi et le relire avant chaque envoi.
ce n'est pas le cas pour ma pergola donc a voir avec votre matériel.
Ensuite mettez votre volet en mode programmation (appuis sur le bouton souvent situer au dos de votre télécommande), votre volet doit descendre un peu et remonter.
envoyer "PROG" à l'aide de votre nouvelle télécommande créer avec cette librairie.Votre volet doit de nouveau descendre et remonter.
attention au bout de 2 min il sort du mode programmation et refait ce mouvement si aucune nouvelle télécommande à été détectée.
maintenant votre arduino donc Jeedom est capable de piloter votre volet.
Les commandes disponibles sont :
SomfyCmd_My My Stop ou bouge en position favorite
SomfyCmd_Up Up Monte
SomfyCmd_MyUp My + Up Définit la limite haute du moteur en mode initialisation
SomfyCmd_Down Down Descend
SomfyCmd_MyDown My + Down Définit la limite haute du moteur en mode initialisation
SomfyCmd_UpDown Up + Down Change motor limit and initial programming mode
SomfyCmd_Prog Prog Pour enregister/Desenregister un télécommande
SomfyCmd_SunFlag Sun + Flag Active détection Vent et soleil (symbole SOLEIL et DRAPEAU sur une Telis Soliris RC)
SomfyCmd_Flag Flag Désactive détection Vent et soleil(symbole DRAPEAU sur une Telis Soliris RC)
Pour la réception :
Branchez le récepteur RF sur le pin A1
Pour commencer il vous faut configurer le sketch en définissant l'adresse de la télécommande c'est le define ADDRESS_REMOTE_1
dans setup il faut appeler la fonction somfy.beginRecive() qui configure l'entrée et les interruptions
dans loop vous pouvez interroger somfy.SomfyData.address pour récupérer l'adresse de la télécommande et somfy.SomfyData.cmd qui renvoi le commandes les commandes disponible sont le même que celle pour l'envoi (cette variable est de type enum.)
Pour l'utilisation de la lib avec une Puce type CC1101 :
le fonctionnement reste le même que avec de RF de base.
j'ai utilisé ce CC1101 : https://fr.aliexpress.com/item/1PCS-CC1 ... 0.0.ZyV5Hq
pour activer le fonctionnement du CC1101 il suffit d'appeler dans la fonction setup la fonction somfy.beginCC1101() si on ne veux pas définir d’amplification du signal particulière ou somfy.beginCC1101(CC1101_TxPower) ou TX power peux prendre les valeurs suivantes :
CC1101_TxPower_Minus30dBm pour une amplification de -30 dBm
CC1101_TxPower_Minus20dBm pour une amplification de -20 dBm
CC1101_TxPower_Minus15dBm pour une amplification de -15 dBm
CC1101_TxPower_Minus10dBm pour une amplification de -10 dBm
CC1101_TxPower_0dBm pour une amplification de 0 dBm
CC1101_TxPower_Plus5dBm pour une amplification de 5 dBm
CC1101_TxPower_Plus7dBm pour une amplification de 7 dBm
CC1101_TxPower_Plus10dBm pour une amplification de 10 dBm
sans paramètre la librairie utilise la valeur CC1101_TxPower_0dBm par défaut. dans la plupart des cas cela devrait suffire mais en fonction de votre environnement (distance, mur, etc...) vous pouvez être amené à utiliser l'amplification.
voici les pin du CC1101
et voici le câblage : j'ai bien sur entendu la lib avec des exemples d’émission et de réception avec et sans mysensors
J'ai testé la librairie sur
Arduino nano avec Atmega328p
Arduino Uno avec Atmega328p
Arduino Pro mini 5.0V avec Atmega328p
Arduino Mega merci @icare sauf CC1101
Arduino 101 merci @kenij
La librairie contient un exemple d'utilisation pour l’émission et la réception
il est bien sur possible de câbler l'émetteur et le récepteur sur le même Arduino les interruptions sont coupées pendant l’émission
N’hésitez pas a me faire un retour si des modifs sont nécessaires dans la librairie
V1.0 : Version initiale
V1.1 : Bugfix decalage data[6]
V2.0 : Ajout réception
V2.1: - Bugfix inversion de l'envoi des data (les data sont little endian) merci @Icare
- bugfix de cast pour l'adresse en reception merci @Icare
=> pour ceux qui utilisaient la V2 il vous faut revoir vos télécommandes en réception pour l'émissions il vous suffit d'inverser les 2 premiers byte avec les 2 derniers
- Bugfix pour Arduino MEGA merci @Icare
- ajout configuration des Entrées sortie pour Arduino MEGA merci @Icare
- ajout de la résistance de pull up pour l'entrée RX
V3.0 - Ajout du support des emetteur recepteur à base de puce CC1101 merci a @guimcha pour ses tests
- refonte de la librairie (séparation en plusieurs fichier ) il faut seulement faire un include de somfy_rts.h
- quelques bug mineur ont été corrigés
V4.0 - suppression de la division de la fréquence horloge par 2. il n'est plus nécessaire de mettre 57600 dans le moniteur de l'arduino ide. merci a
@pphill.
- optimisation de la réception merci @pphill
- quelques bug mineur ont été corrigés
- ajout du support de l'arduino 101 merci @kenij
- mise a jour des exemples en Mysensors V2.X
voici mon projet pour réaliser une passerelle Mysensors Somfy RTS
le projet a été inspiré de :
culfw http://culfw.de/culfw.html
et de ce thread sur le forum arduino https://forum.arduino.cc/index.php?topic=208346.0
Voici le matériel que j'ai utiliser en plus de mon arduino et de NRF
https://fr.aliexpress.com/item/1pair-2p ... 33574.html
il faut câbler la pin data de votre module RF sur la sortie 3, ceci est réglé dans la lib directement car je dois utiliser l'adressage direct des sorties (plus rapide).
sur le pin 8 vous pouvez brancher une led qui s'allume pendant la transmission
Pour commencer il vous faut configurer le sketch en définissant l'adresse de la télécommande c'est le define :REMOTE_CONTROL_ADRESS
ensuite définir un code tournant (rolingcode) c'est le define MyRolingCode. Il est probable que vous devez sauvegarder le rolingcode dans l'Eprom après chaque envoi et le relire avant chaque envoi.
ce n'est pas le cas pour ma pergola donc a voir avec votre matériel.
Ensuite mettez votre volet en mode programmation (appuis sur le bouton souvent situer au dos de votre télécommande), votre volet doit descendre un peu et remonter.
envoyer "PROG" à l'aide de votre nouvelle télécommande créer avec cette librairie.Votre volet doit de nouveau descendre et remonter.
attention au bout de 2 min il sort du mode programmation et refait ce mouvement si aucune nouvelle télécommande à été détectée.
maintenant votre arduino donc Jeedom est capable de piloter votre volet.
Les commandes disponibles sont :
SomfyCmd_My My Stop ou bouge en position favorite
SomfyCmd_Up Up Monte
SomfyCmd_MyUp My + Up Définit la limite haute du moteur en mode initialisation
SomfyCmd_Down Down Descend
SomfyCmd_MyDown My + Down Définit la limite haute du moteur en mode initialisation
SomfyCmd_UpDown Up + Down Change motor limit and initial programming mode
SomfyCmd_Prog Prog Pour enregister/Desenregister un télécommande
SomfyCmd_SunFlag Sun + Flag Active détection Vent et soleil (symbole SOLEIL et DRAPEAU sur une Telis Soliris RC)
SomfyCmd_Flag Flag Désactive détection Vent et soleil(symbole DRAPEAU sur une Telis Soliris RC)
Pour la réception :
Branchez le récepteur RF sur le pin A1
Pour commencer il vous faut configurer le sketch en définissant l'adresse de la télécommande c'est le define ADDRESS_REMOTE_1
dans setup il faut appeler la fonction somfy.beginRecive() qui configure l'entrée et les interruptions
dans loop vous pouvez interroger somfy.SomfyData.address pour récupérer l'adresse de la télécommande et somfy.SomfyData.cmd qui renvoi le commandes les commandes disponible sont le même que celle pour l'envoi (cette variable est de type enum.)
Pour l'utilisation de la lib avec une Puce type CC1101 :
le fonctionnement reste le même que avec de RF de base.
j'ai utilisé ce CC1101 : https://fr.aliexpress.com/item/1PCS-CC1 ... 0.0.ZyV5Hq
pour activer le fonctionnement du CC1101 il suffit d'appeler dans la fonction setup la fonction somfy.beginCC1101() si on ne veux pas définir d’amplification du signal particulière ou somfy.beginCC1101(CC1101_TxPower) ou TX power peux prendre les valeurs suivantes :
CC1101_TxPower_Minus30dBm pour une amplification de -30 dBm
CC1101_TxPower_Minus20dBm pour une amplification de -20 dBm
CC1101_TxPower_Minus15dBm pour une amplification de -15 dBm
CC1101_TxPower_Minus10dBm pour une amplification de -10 dBm
CC1101_TxPower_0dBm pour une amplification de 0 dBm
CC1101_TxPower_Plus5dBm pour une amplification de 5 dBm
CC1101_TxPower_Plus7dBm pour une amplification de 7 dBm
CC1101_TxPower_Plus10dBm pour une amplification de 10 dBm
sans paramètre la librairie utilise la valeur CC1101_TxPower_0dBm par défaut. dans la plupart des cas cela devrait suffire mais en fonction de votre environnement (distance, mur, etc...) vous pouvez être amené à utiliser l'amplification.
voici les pin du CC1101
et voici le câblage : j'ai bien sur entendu la lib avec des exemples d’émission et de réception avec et sans mysensors
J'ai testé la librairie sur
Arduino nano avec Atmega328p
Arduino Uno avec Atmega328p
Arduino Pro mini 5.0V avec Atmega328p
Arduino Mega merci @icare sauf CC1101
Arduino 101 merci @kenij
La librairie contient un exemple d'utilisation pour l’émission et la réception
il est bien sur possible de câbler l'émetteur et le récepteur sur le même Arduino les interruptions sont coupées pendant l’émission
N’hésitez pas a me faire un retour si des modifs sont nécessaires dans la librairie
V1.0 : Version initiale
V1.1 : Bugfix decalage data[6]
V2.0 : Ajout réception
V2.1: - Bugfix inversion de l'envoi des data (les data sont little endian) merci @Icare
- bugfix de cast pour l'adresse en reception merci @Icare
=> pour ceux qui utilisaient la V2 il vous faut revoir vos télécommandes en réception pour l'émissions il vous suffit d'inverser les 2 premiers byte avec les 2 derniers
- Bugfix pour Arduino MEGA merci @Icare
- ajout configuration des Entrées sortie pour Arduino MEGA merci @Icare
- ajout de la résistance de pull up pour l'entrée RX
V3.0 - Ajout du support des emetteur recepteur à base de puce CC1101 merci a @guimcha pour ses tests
- refonte de la librairie (séparation en plusieurs fichier ) il faut seulement faire un include de somfy_rts.h
- quelques bug mineur ont été corrigés
V4.0 - suppression de la division de la fréquence horloge par 2. il n'est plus nécessaire de mettre 57600 dans le moniteur de l'arduino ide. merci a
@pphill.
- optimisation de la réception merci @pphill
- quelques bug mineur ont été corrigés
- ajout du support de l'arduino 101 merci @kenij
- mise a jour des exemples en Mysensors V2.X