Forum KNX francophone / English KNX forum

Version complète : Fontionnement knxweb2
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
Hello,

Je suis en train d'implémenter la compatibilité linknx dans mon frame workpython, pKNyX. Cette compatibilité sera minimale, à savoir que je veux juste pouvoir utiliser knxweb par dessus, à la place de linknx.

Du coup, je voulais savoir quelles sont les choses à implémenter ? Pour l'instant, je vois :

- <read><config /></read>
- <read><objects /></read>
- <read><object id="" /></read>
- <read><objects /><object id="" /><object id="" /></objects></read>
- <write><object id="" value="" /></write>

Faut-il implémenter des choses plus fines, comme la lecture uniquement des rules ? La lecture d'un ou plusieurs objects est-elle nécessaire ?

Lors de la lecture de la config, quelles sont les choses à retourner impérativement, et celles que je peux zapper ?

Pour les configs des objets, est-ce que les infos suivantes à retourner suffisent :

- <objects><object id="light" type="1.001" />Lumière</object>

La notion de listener est-il utilisée directement par knxweb2 ?

Merci d'avance.

PS : où se trouve les routines de communication et de lecture avec linknx, dans knxweb2 ?
Je viens de voir que knxweb2 accède directement au fichier linknx.xml !!! Ça veut donc dire qu'on ne peut pas l'installer sur une machine différente de celle où tourne linknx ? Dommage, ça ! D'autant que la config peut être récupérée par le socket...
bonjour,

Non tu te trompe knxweb2 accède bien a linknx par un connexion socket.
Sur l'appli Windows Phone que je développe je me connecte bien directement a linknx (+a knxweb pour la partie design)
linknx.xml est charger au lancement de linknx est n'ai plus utilisé apres

il me semble que les routines de communication et de lecture avec linknx se trouve dans eibcommunicator.php
Si tu cherche une commande particulière je peux te la sortir rapidement
Ok, impec, alors.

eibcommunicator.php semble contenir les routines génériques, mais les commandes réelles sont passées en paramètre ; du coup, il faut que je retrouve qui l'appelle...

Je vais aussi essayer via la console de débugage de firefox ; je devrais voir passer tout ça, non ?
oui tu vois passer dans le fichier linknx.php
qu'a tu besoin je peut peut etre te simplifier la tache
Ben, comme expliqué plus haut, je veux savoir quelle sont les requêtes xml indispensables que je dois implémenter pour pouvoir faire tourner knxweb2 au dessus de mon framework, plutôt que linknx.

Je veux juste pouvoir lire/écrire sur les objets depuis knxweb2. Il faut bien sûr que j'implémente un 'read config', mais je ne sais pas trop s'il faut implémenter la commande générale, et retourner des champs vides pour les rules, les services, etc... ou s'il faut aussi implémenter un 'read config rules', par exemple. Idem pour le 'read objects' ; faut-il aussi un 'read objects object id=...' ?

Et pour les choses non implémentée (genre 'write config'), faut-il retourner une erreur, ou success ? J'ai peur de désynchroniser le truc, si je retourne ok, alors que ça ne fait rien derrière, en fait.
Tu ne veux utiliser que la partie Visu de KnxWeb?
et la partie config?

Tu vas deja rencontrer un premier probleme mais qui peut etre corrigé avec anthony
A l'installe de knxweb on fait un checkinstall.php
Dans cette procédure on verifi que linknx est en route avec
$linknx_running = exec('ps | grep linknx | grep -v grep');
je ne pense pas que ton frameworks y repondra


Au debut de chaque requet linknx retourne
<read status="success"> ou <write status="success">
suivis par les données demandée
En cas d'erreur il me semble qu'il retourne son erreur
Pour cette partie je pense qu'il faut que tu regarde dans les source de linknx dans le fichier xmlserver.cpp

Dans mon appli je ne verifie que la présence de status="success"

Une regle pour la partie config que j'ai constaté mais pas verifier
Tu part du fichier linknx.xml
Tu ajout <read> ou <write> suivis de arborescence du paramètre que tu veux lire ou ecrire
pour faire un suppression c'est un <write> suivis de arborescence et l'id en ajoutant delete="true"

Je te donne en gros tous ce que j'ai tu ferra le trie de ce que tu veux installer ou pas
<read><version/></read> : Retourne les versions des composant linknx
<read><config><objects/></config></read> : Retournes tous les objets
<read><config><rules/></config></read> : Retourne toutes les regles
<read><config><services/></config></read> : retourne tous les services
<admin><save/></admin> : Sauvegarde la config Linknx dans le XML
<write><config><objects><object id=\"" + Id + "\" gad=\"" + GAD + "\" flags=\"" + Flag + "\" type=\"" + Type + "\" init=\"" + Init + "\">" + Name + "</object></objects></config></write> : Ecrit un objet
<write><config><objects><object id=\"" + obj + "\" delete=\"true\"/></objects></config></write> : supprime un ojet
<write><object id='" + obj + "' value='" + value + "'/></write> : ecrit la valeur de l'objet
<read><object id='" + obj + "' /></read> : lis la valeur de l'ojet
<write><config><services><ioports><ioport id=\"" + ioport + "\" delete=\"true\"/></ioports></services></config></write> supprime un IOport
<write><config><services><ioports>" + IoPort.ToString() + "</ioports></services></config></write>
<write><config><rules>" + Rules.ToString() + "</rules></config></write>
<write><config><rules><rule id=\"" + rule + "\" delete=\"true\"/></rules></config></write>
<write><config><rules><rule id=\"" + RuleSelect.Id + "\" active=\"(true / false)" /></rules></config></write> active desactive une regle
<execute>" + ActionXML + "</execute>execute une action ou un groupe d'action
Merci beaucoup pour ces précisions ! C'est assez clair, là.

Concernant la vérification de la présence du process linknx, c'est très facile de lancer une tâche qui porte ce nom, et qui ne fait rien Wink

J'attaque l'intégration dans mon code...

Merci encore.