IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langages de programmation Discussion :

Un électronicien qui débute en KNX


Sujet :

Langages de programmation

  1. #1
    Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 17
    Points : 2
    Points
    2
    Par défaut Un électronicien qui débute en KNX
    Bonjour à tous,

    Je suis électronicien, et dans le cadre d'un projet, j'utilise des modules KNX.
    J'ai fait la programmation par ETS, et le système fonctionne comme voulu.
    Maintenant je souhaite développer une IHM.

    J'ai eu des cours d'info dans mon cursus (Java, C++), mais je n'ai pas utilisé cela depuis 2007...Donc c'est très flou pour moi aujourd'hui, et je ne sais pas par où commencer.

    En clair, je voudrais être aiguillé vers la solution qui sera la plus rapide pour développer quelque chose de très simple:

    Une interface avec:
    - 2 boutons à cliquer qui commandent les modules E/S KNX.
    - 1 "voyant" type lampe, qui reporte l'état d'une E/S KNX.

    J'ai à ma disposition un router IP (IPR/S 2.1 de chez ABB) pour la COM en IP avec le bus KNX.

    Merci à tous!

  2. #2
    Membre régulier
    Inscrit en
    Juin 2010
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 40
    Points : 73
    Points
    73
    Par défaut
    Bonjour,

    Votre interface à l'air simple, vous avez dit que vous avez eu des cours basés sur du C++, mais que cela est flou pour vous aujourd'hui.

    Ce qu'il faut savoir, c'est si vous avez encore des notions de ce langage.
    Si oui, je vous conseil de rester sur ce langage, ou peut-être d'aller voir du coté du C# (qui est un C++ avec pas mal d'ajouts, mais qui simplifient pas mal le développement de code (simples ou complexes))

    Si vous n'avez plus aucunes notions, vous pouvez prendre le langage de votre choix. Par exemple, C++, C#, ou encore Java. Rien ne vous en empêche.

    En recherchant sur Google, j'ai trouvé des API pour KNX assez facilement (autant pour Java, que pour C#)

    Maintenant, vous l'aurez compris, mon avis personnel va sur le C# ou le Java qui sont assez simples à prendre en main (et surtout assez rapide à écrire)

    Pour partir depuis le début (peu importe le langage), Developpez.net est une bonne base, et plus de plus amples informations il y a des tutoriels sur ce site.

    Vous n'avez plus qu'à faire un choix de langage.

    Bon courage pour votre projet !

  3. #3
    Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 17
    Points : 2
    Points
    2
    Par défaut
    Merci pour votre réponse.

    J'ai effectivement des notions, puisque j'ai fait 3 ans d'info indus dans mon cursus, mais tout cela est un peu rouillé puisque aujourd’hui je ne code plus que du C microcontrôleur...

    Je suis en train de télécharger Eclipse Java, et je fais quelques recherches sur les librairies dédiées KNX.

    Je vais faire un tour sur le site, pour me rafraîchir les idées!

    Merci.

  4. #4
    Membre régulier
    Inscrit en
    Juin 2010
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 40
    Points : 73
    Points
    73
    Par défaut
    Pour Java, il y a l'API Calimero qui s'occupe de gérer les communications (et bien plus) KNX.

    Maintenant, étant encore un tout mini-rikiki dans le métier, j'aurai aimé l'avis d'une personne à plus forte expérience pour confirmer (ou pas) mes dires.

  5. #5
    Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 17
    Points : 2
    Points
    2
    Par défaut
    Merci pour cette API.

    Là je recommence à 0 avec Eclipse IDE JAVA.

    Etape 1: Hello world...

    Etape 2: Créer 2 boutons et un texte dynamique dans une fenêtre

    Etape 3: Lier les actions à un flux texte

    Ensuite je partirai à la lecture de l'API KNX.

    Encore merci!

  6. #6
    Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 17
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    J'ai avancé un peu sur la partie interface graphique. J'ai mes boutons et un voyant qui sont fonctionnels, et interagisse avec un flux texte.

    Maintenant je souhaiterai utiliser une image de fond, sur laquelle sont déjà dessinés 3 boutons et 2 voyant.
    Je souhaite que lorsque l'on passe la souris à l'endroit des boutons, ça devienne cliquable, et que les voyants tombent à l'endroit des voyant dessinés.

    Quelles classes me conseillez-vous pour réaliser cela?

    Merci par avance.

  7. #7
    Membre régulier
    Inscrit en
    Juin 2010
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 40
    Points : 73
    Points
    73
    Par défaut
    Bonjour,

    Je ne suis pas sur de comprendre. Tu veut animer une image ? Ou mettre une image en fond, et animer des boutons ?

    Je ne comprend pas trop (si tu avais un dessin )

    Cordialement

  8. #8
    Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 17
    Points : 2
    Points
    2
    Par défaut
    Bonjour Kurogane,

    Je vais essayer d'expliquer un peu la chose:

    L'image est statique, à ceci prêt, qu'il y a dessus une zone à gauche, destinée à représenter 2 voyants. A savoir que ces voyant peuvent être éteints, allumés fixes ou clignotant.

    Pour cela, je suppose que j'ai le choix entre:
    - Utiliser 4 images globales, représentant les 4 possibilité d'allumage des voyant (mais certainement lourd à gérer en terme de rafraîchissement).
    - Couper l'image en plusieurs zones et ne rafraîchir qu'une partie.
    - Colorer les ronds des voyants en fonction de mes flux (dessin d'un rond).

    Et il y a une zone à droite, destinée à représenter les 3 boutons.

    Merci

  9. #9
    Membre régulier
    Inscrit en
    Juin 2010
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 40
    Points : 73
    Points
    73
    Par défaut
    Tes voyant se modifient en fonction d'une action sur ton interface ? Ou bien en fonction des flux ?

  10. #10
    Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 17
    Points : 2
    Points
    2
    Par défaut
    Les voyants sont indépendants des boutons.

    Bien que logiquement ils réagissent en retour du fonctionnement du système hard en KNX après les appuis sur les boutons.
    Mais si le système n'est pas connecté ou défaillant, alors il ne doit pas y avoir de retour d'info et donc pas d'allumage des voyants.

    C'est donc le flux (via KNX) qui indique si on doit à un instant T allumer ou non l'un ou l'autre ou les 2 voyants.

  11. #11
    Membre régulier
    Inscrit en
    Juin 2010
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 40
    Points : 73
    Points
    73
    Par défaut
    Je vois le principe, et je comprend même comment faire de manière grossière.
    Mais un peu moins de manière concrète.

    Pour m'expliquer, je pense qu'il va te falloir une classe Bouton, avec des méthodes Allumer, Eteindre, etc.

    Tu instancie (et positionne sur ton interface graphique) 2 instances de cette classe, et lors de la lecture de ton flux, faire jouer ces méthodes.

    Je suis vraiment désolé, mais je rappel que étant vraiment un tout nouveau dans le domaine du développement, je doit manquer des choses liées au contexte, et je pense pas que je puisse aider à 100% en fonction de la situation, mais je vais essayer de m'expliquer.

    Code Pseudo-code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Si réception du flux
    	....[Chose qui se font en fonction du flux]...
    		Si le signal du flux doit allumer le bouton 1
    			Allumage du bouton 1 avec la méthode Allumer {quelque chose comme Bouton1.Allumer()}
    		Sinon
    			Extinction du bouton 1 {Bouton1.Eteindre()}
    
    		Si le signal du flux doit allumer le bouton 2
    			Allumage du bouton 1 avec la méthode Allumer {quelque chose comme Bouton2.Allumer()}
    		Sinon
    			Extinction du bouton 1 {Bouton2.Eteindre()}
    
    		Si pas de réception du flux
    			Extinction du bouton 1 {Bouton1.Eteindre()}
    			Extinction du bouton 2 {Bouton2.Eteindre()}

    De plus, en Java il est facile de graphiquement créer des formes, et des couleurs pour les colorier, ou encore d'intégrer des images.

    Pour créer des formes simples, il y a la classe "Graphics", avec les méthodes pour les colorier, etc...

    Sinon, pour tes propres voyants, tu peut créer tes images et les inclures comme des JLabel :
    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    JLabel image = new JLabel( new ImageIcon( "mon_image.jpg"));
    Attention, les images dans le fichier src de Eclipse ne sont pas lue/trouvable. Il faut les mettre à la base du projet.

    Et pareil pour ton image de fond (mais dans ce cas je te propose un liens vers un tuto Oracle, si jamais ton image est lourde à charger, et peut avoir des soucis à se charger, mieu vaut prévoire le coup)

    Et après tout ça, j'entre-vois une première esquisse de la classe bouton
    Code Schéma de classe : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Classe Bouton{
    	Constructeur Bouton()
    		Création d'un bouton
    
    	Methode Allumer()
    		Remplissage/coloriage de la forme, ou affichage de l'image correspondant à l'état allumé
    
    	Methode Eteindre()
    		Vidage de la forme, ou remplissage de l'image de ton bouton par l'image correspondant à l'état éteind

    En espérant que ça t'aide un peu

    Cordialement

  12. #12
    Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 17
    Points : 2
    Points
    2
    Par défaut
    Merci pour cette réponse, je vais donc faire évoluer mon projet dans ce sens.
    Je tiens au courant des modifs et résultats.

  13. #13
    Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 17
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    Juste pour dire que j'avance à petit pas. Aujourd'hui, j'ai ajouté mon image de fond.

    Je vais maintenant créer les méthodes liées aux IO.

    Cordialement,
    GM

  14. #14
    Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 17
    Points : 2
    Points
    2
    Par défaut
    News...

    Je passe à l'intégration de l'API KNX dans le projet (je mets en veille pour le moment la partie IHM).

    Je démarre donc les investigations sur Caliméro...

  15. #15
    Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 17
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    J'ai ajouté la librairie Calimero à mon projet, mais je ne sais pas par où démarrer.

    A savoir que mon objectif est:

    - 2 boutons sur mon IHM, dont l'état doit être reproduit sur un module KNX.
    - 1 voyant sur mon IHM qui doit reproduire l'état de l'entrée d'un module KNX.
    - L'interface est en IP (IPR/S 2.1)

    La programmation des modules a été faite sur ETS4.

    Pouvez-vous me proposer une bonne méthode pour implémenter tout cela?

    Cordialement,

  16. #16
    Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 17
    Points : 2
    Points
    2
    Par défaut
    J'ai avancé un peu aujourd'hui, et voici ce que j'arrive à faire pour le moment:
    - Connexion PC / passerelle IP KNX.
    - Réagir aux appui sur les boutons simulant les état d'entrée du module KNX ABB.
    - Afficher (dans le shell) l'adresse attribuée au bouton sur lequel on a appuyé.

    La prochaine étape qui me reste à mettre en oeuvre est le pilotage du module de sortie KNX ABB:

    Je vous tient au courant de mes tests, et n'hésitez pas si vous voulez plus d'informations, ou si vous avez des commentaires à faire!

    Cordialement,
    GM

  17. #17
    Membre chevronné
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 941
    Points : 1 950
    Points
    1 950
    Par défaut
    Citation Envoyé par greg89 Voir le message
    La prochaine étape qui me reste à mettre en oeuvre est le pilotage du module de sortie KNX ABB:

    Je vous tient au courant de mes tests, et n'hésitez pas si vous voulez plus d'informations, ou si vous avez des commentaires à faire!

    Cordialement,
    GM
    Bonjour,

    C'est intéressant comme projet, j'ai moi-même fait mon installation KNX pour chez moi ( pilotage des lumières et volets roulant ) avec ETS

    Je vois que tu comptes piloter un module ABB, comment va tu faire cela ? Tu a trouvé de la documentation pour cela ?

  18. #18
    Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 17
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    Pour le moment, je ne détecte et (souhaite) pilote que du TOR, voici mon install (sur table!):
    - ABB sv/s 30.320.5
    - ABB be/s 4.230.2.1
    - ABB sa/s 8.16.6.1
    - ABB ipr/s 2.1

    Via ETS 4 en démo, j'ai configuré mon install.

    Pour le pilotage du module sorties, je vais faire des essais aujourd'hui, ou demain. Pour le moment, je n'ai absolument pas d'idée sur la/les méthodes à utiliser pour y parvenir...

    Je vous tiens au courant, mais si vous avez des idées, je suis preneur!

    Cordialement,

  19. #19
    Membre chevronné
    Avatar de free07
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 941
    Points : 1 950
    Points
    1 950
    Par défaut
    Citation Envoyé par greg89 Voir le message
    Pour le pilotage du module sorties, je vais faire des essais aujourd'hui, ou demain. Pour le moment, je n'ai absolument pas d'idée sur la/les méthodes à utiliser pour y parvenir...

    Je vous tiens au courant, mais si vous avez des idées, je suis preneur!

    Cordialement,
    Je m'y suis aussi intéressé il y a de cela 5 ou 6 ans. Et si je me souviens bien, les logiciels de pilotage en KNX ( dont fait partie ETS ) s'appuient sur une base de données développée par les constructeurs de modules KNX, pour le pilotage desdits modules.
    Pour chaque module, tu a une base de données développé par le constructeur du module qui te permet de le piloter via knx mais impossible d'avoir accès à cette base de données. Je ne connais que l'association KNX qui a ces informations et qui se gardent bien de les délivrer.

    A moins que depuis cela ai changé ( j'en doute fort ), pour avoir accès à ces bases de données et bien... c'est impossible pour un particulier, on dit que KNX est une techno ouverte, oui, c'est vrai mais si tu comptes t'interesser à sa programmation, c'est le parcours du combattant.

    Il y a des projets dans le monde du logiciel libre qui ont fait certaines choses, bien souvent limités
    Si cela t'interesse, je pourrai essayer de retrouver certains.

    Je ne souhaite pas te décourager, je résume simplement les difficultés que j'ai rencontré.

    Bon courage !

  20. #20
    Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 17
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    J'ai fait quelques essais hier, sans succès.

    Pour le moment, la partie lecture se fait parfaitement.
    Pour la partie écriture, il semble pourtant, sous Calimero exister des méthode write() dédiées au boolean, qui devrait correspondre (quand on renseigne l'adresse spécifiée via la programmation, précédemment faite dans ETS).

    Je n'ai pas bien compris l'utilisation des méthodes, si quelqu'un peux me guider dans la bonne direction?

    Merci par avance,
    GM

Discussions similaires

  1. [El Kun] Jeune qui débute
    Par El Kun dans le forum Présentations
    Réponses: 1
    Dernier message: 13/05/2014, 09h58
  2. Réponses: 18
    Dernier message: 08/10/2012, 16h27
  3. Réponses: 6
    Dernier message: 15/07/2010, 19h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo