Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
linknx sur OSX 10.6 serveur
#1
Bonjour à toutes et à tous, ja'i actuellement une installation knx pilotée par une machine virtuelle (ubuntu) tournant eibd, linknx 1.0.30 et Webknx (1.0).

Pour des raisons de latence j'essaie de migrer les service sur un Mac Mini en OSX 10.6 serveur.

Utilisation de l’environnement de développement standard apple dernière version.
Installation dans /opt/knx
configure --prefix=/opt/knx

PATH=$PATH./opt/knx/bin
env DYLD_LIBRARY_PATH=/opt/knx/lib


EIBD aucun problèmes, fonctionne avec une client linknx sous linux.

Linknx, fonctionne via webknx au niveau de la commande (switch ON/OFF) mais les clients webknx ne reçoivent pas les updates.

Après installation du script linknx-cmd.php je remarque que:

linknx reçoit bien les requêtes xml et prépare les réponses, ensuite fait appel a pth_write_ev avec la réponse (dans xmlserver.cpp), mais cette réponse n'arrive jamais au client web.

Si linknx est interrompu (SIGINT ou ctrl C) celui-ci envoit alors la réponse (flush ?). J'ai essayé de linker linknx avec les version pthsem 2.0.5, 2.0.6, 2.0.7 mais même constat, les réponses ne sont pas envoyées avant l'interruption de linknx (aussi essayé avec PTH NOBLOCKING sur les handles des clients web, pth_write au lieu de pth_write_ev mais sans résultats).

Quelqu'un a-t-il réussi a faire tourner linknx en natif sous osx ?
Si oui dans quelles conditions ?

Merci de toute aide,

JP
Répondre
#2
C'est un problème au niveau du navigateur web... Tu utilises quoi ?
Répondre
#3
Chrome - Firefox - Internet Explorer (sous XP) - Safari (sous OSX).

avec le page linknx-cmd.php tel que sur http://ouaye.net/linknx/other/linknx-cmd-php.txt

Tous ont le même comportement avec linknx (sous osx), soit ils attendent la réponse qui n'arrive que si linknx recoit le SIGINT.

La même page sur linknx Ubuntu retourne les commandes xml sans devoir arrêter linknx sur les mêmes navigateurs.

Le problème me semble donc plus provenir de linknx sur OSX

JP


Le problème a déjà été cité dans la discussion suivante http://www.knx-fr.com/archive/index.php/thread-271.html, mais sans suite.
Répondre
#4
Moreover:

Petit script en perl:

#!/usr/bin/perl
use warnings;
use strict;
use IO::Socket::INET;


my $EOT = pack('C',4);
my $response;
my ($sock, $kidpid);

$sock = IO::Socket::INET->new(Proto => "tcp",
PeerAddr => "192.168.1.40",
PeerPort => 1028)
|| die "Failed : $!";

my $command ="<read><object id='Coin TV temperature'/></read>".$EOT;

#my $command ="<read><config><objects/></config></read>".$EOT;

$sock->autoflush();

$sock->write($command);

while ( $response = <$sock> ) {

print $response;
sleep(1);
$sock->write($command);

}
$sock->close;

Donne sur linknx OSX et Linux

jcoenen@Vubuntu:~$ readknx.pl
<read status='success'>20.68</read>
<read status='success'>20.68</read>
<read status='success'>20.68</read>
^C

Donc tout semble fonctionner.

Si je demande la liste des objets/config.

Linknx linux:

jcoenen@Vubuntu:~$ readknx.pl
<read status="success">
<config>
<objects>
<object type="13.xxx" id="Accumulated power" gad="4/0/4" log="true">Accumulated Power</object>
<object type="1.001" id="Alarme Activee" gad="1/3/6" init="persist" log="true">Alarme Active</object>
<object type="3.007" id="Bureau Light room switch" gad="1/0/29" flags="cwtus">Bureau Light room switch</object>
<object type="1.001" id="Bureau Plafond 39 switching" gad="1/1/170" log="true">Bureau Plafond 39 switching</object>
<object type="1.001" id="Bureau Rampe Neon Mezzanine 37 switching" gad="1/1/171" log="true">Bureau Rampe Neon Mezzanine 37 switching</object>
<object type="5.xxx" id="Chambre Alex Light room switch" gad="1/0/26" flags="cwtus">Chambre Alex Light room switch</object>
<object type="1.001" id="Chambre Alex Liseuse 50 switching" gad="1/1/150">Chambre Alex Liseuse 50 switching</object>
<object type="1.001" id="Chambre Alex Plafond 42 switching" gad="1/1/149">Chambre Alex Plafond 42 switching</object>
<object type="1.001" id="Chambre Ami Light room switch" gad="1/0/24" flags="cwtus">



Mais sous OSX rien ne revient


Alors que linknx recoit bien la demande et renvoit la réponse (

2012-10-17 15:02:29,873 [DEBUG] ClientConnection: PROCESSING MESSAGE:
2012-10-17 15:02:29,873 [DEBUG] ClientConnection: <read><config><objects/></config></read>
2012-10-17 15:02:29,873 [DEBUG] ClientConnection: END OF MESSAGE
2012-10-17 15:02:29,875 [DEBUG] ClientConnection: SENDING MESSAGE

2012-10-17 15:02:29,875 [DEBUG] ClientConnection: XMLSERVER sendmessage: size = 16140
message
<read st<config><objects<object type="1.001" id="Bureau Plafond 39 switching" gad="1/1/170" log="true">Bureau Plafond 39 switching</object> <object type="1.001" id="Bureau Rampe Neon Mezzanine 37 switching" gad="1/1/171" log="true">Bureau Rampe Neon Mezzanine 37 switching</obje<object type="5.xxx" id="Chambre Alex Light room switch" gad="1/0/26" flags="cwtus">Chambre Alex Light room switch</object> <object type="1.001" id="Chambre Alex Liseuse 50 switching" gad="1/1/150">Chambre Alex Liseuse 50 switching</object>

A priori, les commandes qui reçoivent une réponse d'une ligne semble fonctionner, par contre les commandes qui sont répondues par plusieurs lignes semblent coincer.

Je crains que le problème ne soit dans pthsem ...

Je continue les investigations.
Répondre
#5
Problème localisé dans xmlserver.cpp
linknx retourne maintenant les message d'état aux clients (perl, knxweb ...)
Répondre
#6
Bravo !

À faire remonter aux dev.
Répondre
#7
(18/10/2012, 10:14:38)fma38 a écrit : Bravo !

À faire remonter aux dev.

C'est fait !

Bug added and resolved sur sourceforge.

Maintenant c'est a voir comment ils vont intégrer la chose.

- dans xmlserver.cpp modifier la construction du message retourné.

- voir s'il y moyen de changer le stream ioctl (? pthsem ? ioctl ?) de façon a forcer l'envoi du message a la réception du EOT.

- autre.

Mais bon pour moi l'essentiel est d'avoir un solution simple qui permette d'implémenter eibd/linknx entièrement sous Mac OSX.

JP.
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)