Exemple d’utilisation CI-V / UDP

Quand j’avais décrit mon petit montage Dual Icom CI-V to UDP/IP, j’avais promis un exemple d’utilisation et c’est ce que je vous propose ici. Le but de l’exercice, c’est juste de faire un tout petit programme en ligne de commande qui affiche en temps réel la fréquence de chaque transceiver.  



Du transceiver au réseau :

Mon Dual Icom CI-V to UDP/IP est donc configuré avec les adresses de 2 de mes Icom’s (IC-7300 et IC 9700) et se connecte automatiquement à ma box dès qu’il est sous tension. Comme la valeur CI-V Transceive (Menu -> Set -> Connectors -> CI-V -> CI-V Transceive) de mes Icom est positionnée à ON (valeur par défaut), tout changement de fréquence ou de mode d’un des transceivers est broadcastée sur mon réseau local, et bien sûr, toutes commande CI-V correctement formatée et envoyé en UDP sur le port du CI-V UDP sera prise en compte par le transceiver concerné. A partir de là, il suffit de se pencher sur la notice des commandes CI-V de ces appareil modernes pour se rendre compte qu’il y a vraiment matière à s’amuser.

Programmation :

Pour l’exemple, on a juste besoin d’un simple écouteur UDP bindé sur le port du CI-V UDP. Chaque fois qu’il va transmettre des données, ce petit programme va les recevoir et les traiter pour identifier le poste qui les envoient et la fréquence.  Pour le langage de programmation, chacun peut faire avec ses habitudes. Un premier exemple en utilisant du JavaScript avec NodeJs. C’est simple, totalement portable et bigrement efficace.

Cela se passe de commentaire, mais pour résumer, on ouvre un port UDP et on bind sur le port du CI-V UDP. Toutes les données arrivent dans ‘server.on’. Ces données son renvoyées vers une première fonction qui identifie le transceiver par son adresse puis dans une autre qui décode la fréquence. Alors bien sur, ce n’est qu’un exemple qui ne fait aucun contrôle, mais qui est un bon début pour se familiariser avec le format CI-V.

Pour ceux qui préfère Python, on peut aussi faire avec, mais ce n’est pas vraiment une bonne idée si on veut développer une application plus conséquente ou finalement tout va reposer sur des évènements asynchrones.

Pour les projet plus ambitieux, C# avec NET est à mon sens la solution haut de gamme, mais pour l’exemple, ce serait prendre un éléphant pour écraser une mouche. On peut aussi faire en C avec l’Arduino IDE et utiliser un autre ESP32 comme client avec un petit écran spi ou lcd.

Ces 2 exemples de codes sont disponible sur le github du projet dans le dossier test.

Ca ne sert a rien, mais ça m’amuse :

Dans la colonne de droite du site, vous pouvez voir le résultat d’un code un peu plus évolué (toujours avec NodeJs). C’est le truc ‘Real Time Station’ qui met en ligne et en temps réel le statut des deux transceivers qui sont raccordés à mon Dual Icom CI-V to UDP/IP. Le serveur web est quand à lui hébergé sur un Raspberry Pi.

Ca peut servir :

J’ai plein d’idées pour que ce ‘gadget’ me serve à d’autres choses plus utiles. le 9700 et le 7300 sont d’excellents appareils, mais il y a beaucoup de chose que l’on utilise pas ou peu tout simplement par ce que se balader dans des menus pour changer par exemple les basses ou les paramètres hpf/lpf, ce n’est pas le genre de truc que l’on fait quand on fait des qso’s qui ne durent que quelques minutes (ou secondes). Imaginez par exemple un petit boitier, fixe avec écran ou sans fil genre télécommande, avec juste quelques boutons pour modifier ces paramètres plus directement. Allumer automatiquement le 9700 à une heure précise pour lui faire enregistrer le passage d’un satellite. Piloter un sélecteur d’antennes ne serait ce que pour compenser l’absence d’une prise antenne séparé pour les bande HF et le 6m. Bref, les possibilités ne manque pas qu’elles soit ‘hardware’ externe ou software …

CI-V

La liste des commandes CI-V de chaque appareil Icom se trouve dans le Full Manual. A noter que le Protocol CI-V est très bien fait. Il existe depuis plus de 30 ans et évolue au fil du temps et de l’arrivé de nouvelles technologies. Tout ça en gardant une compatibilité descendante et toujours la possibilité d’utiliser une simple liaison série half duplex sur 2 fils (prise remote). C’est notamment ce qui me permet de m’amuser avec tout ca, tout en gardant l’USB raccordé au PC pour les modes numériques.