Voici déjà quelques semaines que j'ai pris mon courage à deux mains et le fer à souder dans la troisième pour ajouter une ligne de pinoches sur le port série de ma prise S20. il faut tout démonter et libérer le circuit imprimé pour pouvoir travailler proprement mais cela ne présente pas de difficulté particulière.
Ceci fait, on garde la prise S20 avec les enrailles à l'air et peut maintenant s'attaquer à la reprogrammation.
Attention, TOUTES les étapes se font SANS brancher la prise S20 sur le secteur ! C'est le câble USB-Série qui fourni l’alimentation de la puce à reprogrammer, donc, j'insiste, il ne faut pas brancher la S20 sur le 230V avant que tout ne soit fini !
Coté ordinateur, j'ai utilisé un PC portable avec Windows 7, sur lequel j'ai installé le programme gratuit "Atom" qui est un éditeur de texte "hackable", donc modifiable par ajout de modules, ensuite j'y ai ajouté le module "Patformio IDE". Ce module "Platformio" contient un compilateur et diverses librairies dont celles pour la puce au coeur de la prise S20.
Depuis le site "tasmota" sur GitHub, on peut télécharger un archive contenant tous les fichiers sources, il faut ensuite la décompresser en local sur le PC.
Après avoir redémarré l'éditeur Atom, on peut le faire pointer sur la base des fichiers sources Tasmota et effectuer quelques réglages dans deux fichiers de configuration; personnellement, j'ai laissé un maximum de paramètres par défaut mais j'ai tout de même directement ajouté la configuration pour mon réseau WiFi (SSID, mot de passe WPA2).
Maintenant il faut ajouter un pont USB-Série qui fonctionne en 3,3 volts coté série et peut alimenter la puce avec cette tension, ensuite trouver le port COM virtuel associé sous Windows et ajouter cette information dans un fichier de configuration sous Atom.
Retirer le pont USB-Série du PC et le raccorder coté série sur la prise S20, préparer ses trois mains et rebrancher le pont sur le port USB du PC tout en maintenant le bouton de la prise S20 enfoncé quelques secondes pour mettre la puce en mode programmation. N.B. Ça marche aussi avec seulement deux mains mais c'est moins simple.
Maintenant, on peut lancer une compilation du firmware sur Atom/Platformio, cela prend 2 à 3 minutes et, à la fin de la procédure, si la compilation s'est bien passée, le firmware est automatiquement programmé sur la S20, ce qui prends aussi 2 à 3 minutes.
Chez moi, la programmation s'est planté 2 fois et j'ai donc du effectuer la procédure complète plusieurs fois.
Une fois la programmation réussie, on peut débrancher le pont USB-Série et remonter la prise S20 proprement.
Maitenant, on peut brancher la prise S20 sur le secteur, attendre qu'elle trouve le réseau WiFi, s'authentifie et obtienne une adresse IP --> faut jetter un oeil sur le serveur DHCP / son routeur / sa Box pour connaitre l'adresse IP de la prise S20 (ou alors on lui avait attribué une adresse IP fixe dans les fichiers de configuration).
A partir de là, le firmware Tasmota est installé mais, dans mon cas, il s'agissait du firmware de base sans KNX (j'avais essayé de configurer le KNX sur Platformio mais la compilation se plantait ... à creuser), donc j'ai lancé une mise à jour du firmware vers une version KNX disponible en ligne ... quelques minutes d'attente, un reboot de la S20 et, bingo, l'option KNX apparaît dans la partie configuration.
Configurer une adresse physique, quelques adresses de groupe et associer le tout au bouton et au relais de la S20 est assez logique et facile, personellement, j'ai aussi désactivé les autres protocoles de communication dont je ne me sers pas (MTQQ, etc).
Par contre j'ai eu quelques problèmes sous ETS5 pour créer un participant "dummy" car ma prise S20 se trouve forcément sur une ligne KNX de type "IP" et non pas "TP" (= câble vert) ... et je n'ai pas trouvé de fichier .vd5 pour un participant "dummy" sur ligne IP qui soit accepté par ETS5 ... si quelqu'un en a un, cela m'intéresse !
Mais j'ai finalement bidouillé un truc dans ETS pour m'en sortir, ajouté les adresses de groupe utilisées sur ma S20 aussi à d'autres participants sur câble vert et, surtout, bien pensé à reprogrammer mon coupleur de ligne/zone qui fait la passerelle entre câble vert et ethernet/IP pour que ces adresse de groupe soit aussi vues coté ethernet (c'est pour çà que créer un participant "dummy" sur la ligne "IP" est nécessaire ...).
Et là, youpie, çà fonctionne, je peux allumer ou éteindre la lampe derrière ma prise S20 depuis un poussoir KNX et, inversement, quand j'allume ou éteins ma lampe depuis le boton sur la S20, les leds de retour d'état sur mon poussoir KNX sont bien mises à jour.
Super, çà marche ! ... enfin, durant "un certain temps" comme aurait dit Fernand (à propos du fut du canon ...).
Et oui, car après 15-30-45 (?) minutes, je peux pousser comme je veux sur mon poussoir KNX ... rien ne bouge sur la S20, par contre l'inverse (pousser sur le bouton de la S20) fonctionne nickel et réactive le lien dans les deux sens avec le bus KNX pour "un certain temps".
Bref, y'a comme un problème.
Cela fait maintenant un mois que ma S20 est reprogrammée avec le firmware Tasmota KNX déjà compilé et disponible sur le web , c'est à dire compilé avec les paramètres et les librairies par défaut.
Tout fonctionne parfaitement, mis à part le lien KNX qui se perd après un temps variable ... et pour une durée variable, par contre, un appel vers la page web intégrée de la S20 fonctionne toujours.
Ce n'est pas un problème de mauvais signal WiFi et la S20 ne semble pas défectueuse.
Pour moi, le problème est ici :
- Le protocole KNX/IP utilise le "multicast", les messages KNX ne sont donc pas adressés à une adresse MAC spécifique.
- Pour économiser l'énergie, la puce de S20 se met en veille régulièrement et ne se réveille que lors d'une activité externe :
- un pression sur le bouton de la S20
- la réception d'un message ethernet/WiFi spécifiquement adressé à son adresse MAC, comme un appel à sa page web par exemple
- un timer interne
Donc, un télégramme KNX/IP n'étant pas directement adressé vers l'adresse MAC de la prise S20, une fois endormie, la S20 ne se réveille pas !
La solution tient probablement en la modification de certains paramètres avant compilation (désactiver le deep sleep ?, une autre librairie WiFi qui tient aussi compte des messages multicats , ... ?).
Je ne sais pas trop quand, mais compte bien chipoter pour trouver une solution.
Au pire, j'ai un micro serveur Linux qui pourrait envoyer un ping vers la S20 toute les 5 minutes.
En attendant, j'ai commandé 2 autres prises S20, car pour environ 10€ pièce, elles sont plutôt bien conçues et fabriquées ... et c'est mois de un dixième du prix d'une prise commandée KNX RF ou PL ... sans compter qu'il faudrait encore ajouter une passerelle spécifique.