Forum KNX francophone / English KNX forum
Lecture de GA et affichage décimal en PHP - Version imprimable

+- Forum KNX francophone / English KNX forum (https://www.knx-fr.com)
+-- Forum : Français (https://www.knx-fr.com/forumdisplay.php?fid=3)
+--- Forum : Logiciels libres (linknx, knxweb, pKNyX,...) (https://www.knx-fr.com/forumdisplay.php?fid=10)
+--- Sujet : Lecture de GA et affichage décimal en PHP (/showthread.php?tid=1128)

Pages : 1 2


Lecture de GA et affichage décimal en PHP - Anthony PENHARD - 19/05/2011

Salut,

jean-françois tu a été plus rapide ... je cherchais une solution ...

j'ai testé la modif que tu propose et c'est plutôt :
if ($len == 3)
$return=$buf[$i];
else
$return=array_slice($buf, 2);

dans mon test $len vaut 4
et $buf vaut Array ( [1] => 0 [2] => 64 [3] => 7 [4] => 158 )

et ensuite avec f2_decode on a bien le bon résultat

PS : j'ai toujours un message "*Notice*: Undefined variable: socket in *
/var/www/Test/eibclient.php* on line *251"
*c'est lors de l'appel de $con->EIBClose();
mais pas "bloquant"

merci
@+
Anthony

Le 19 mai 2011 21:32, jef2000 <jef2000@ouaye.net> a écrit :

> Salut,
>
> Effectivement, quand on a tout le code, c'est beaucoup plus facile de
> trouver le problème.
> C'est la fonction GroupRead qui n'est pas conçue pour retourner une
> valeur sur 2 bytes. Comme le commentaire à la fin le laisse penser:
> "// return the EIB status, 0=Off, 1=On, xx-dimmer value"
>
> En remplaçant:
> for ($i=3; $i<=$len; $i++)
> /* printf ("%02X", $buf[$i]);
> printf ("\n");
> */
> $return=$buf[$i]; // $return=$return.$buf[$i];
> par:
> if ($len == 3)
> $return=$buf[$i];
> else
> $return=array_slice($buf, 3);
>
> Ca pourrait aller mieux. Ensuite tu peux passer directement le
> résultat de GroupRead à la fonction f2_decode.
>
> Je suppose que tu n'utilises pas la fonction GroupRead dans d'autres
> scripts pour lire des valeurs sur plusieurs bytes. Vu que dans l'état
> actuel elle ne retourne que le dernier byte et oublie purement et
> simplement les autres.
>
> A+
>
> Jean-François
>
> On 19 mai, 20:53, "marc.assin" <raym...@warichet.com> wrote:
> > @Anthony> le problème viens de GroupRead a priori
> > > parce que si j'enlève les printf dans la fonction j'ai bien la valeur
> 079E
> > > qui apparaît et qui correspond bien à 19.5 :
> >
> > J'ai pas compris
> > Dans quelle fonction as-tu enlevé le printf ? et qui fait tout
> > marcher ?
> >
> > @Charles> donc je fais pas le test chez moi
> >
> > Je pense que ce n'est plus nécessaire.
> > Merci Charles
>


Lecture de GA et affichage décimal en PHP - Anthony PENHARD - 19/05/2011

pour mon PS
la modif dans eibclient.php
dans la fonction public function EIBClose()

remplacer
if ($socket === FALSE)
par :
if ($this->socket === FALSE)


Le 19 mai 2011 22:11, Anthony PENHARD <a.penhard@gmail.com> a écrit :

> Salut,
>
> jean-françois tu a été plus rapide ... je cherchais une solution ...
>
> j'ai testé la modif que tu propose et c'est plutôt :
>
> if ($len == 3)
> $return=$buf[$i];
> else
> $return=array_slice($buf, 2);
>
> dans mon test $len vaut 4
> et $buf vaut Array ( [1] => 0 [2] => 64 [3] => 7 [4] => 158 )
>
> et ensuite avec f2_decode on a bien le bon résultat
>
> PS : j'ai toujours un message "*Notice*: Undefined variable: socket in *
> /var/www/Test/eibclient.php* on line *251"
> *c'est lors de l'appel de $con->EIBClose();
> mais pas "bloquant"
>
> merci
> @+
> Anthony
>
> Le 19 mai 2011 21:32, jef2000 <jef2000@ouaye.net> a écrit :
>
> Salut,
>>
>> Effectivement, quand on a tout le code, c'est beaucoup plus facile de
>> trouver le problème.
>> C'est la fonction GroupRead qui n'est pas conçue pour retourner une
>> valeur sur 2 bytes. Comme le commentaire à la fin le laisse penser:
>> "// return the EIB status, 0=Off, 1=On, xx-dimmer value"
>>
>> En remplaçant:
>> for ($i=3; $i<=$len; $i++)
>> /* printf ("%02X", $buf[$i]);
>> printf ("\n");
>> */
>> $return=$buf[$i]; //
>> $return=$return.$buf[$i];
>> par:
>> if ($len == 3)
>> $return=$buf[$i];
>> else
>> $return=array_slice($buf, 3);
>>
>> Ca pourrait aller mieux. Ensuite tu peux passer directement le
>> résultat de GroupRead à la fonction f2_decode.
>>
>> Je suppose que tu n'utilises pas la fonction GroupRead dans d'autres
>> scripts pour lire des valeurs sur plusieurs bytes. Vu que dans l'état
>> actuel elle ne retourne que le dernier byte et oublie purement et
>> simplement les autres.
>>
>> A+
>>
>> Jean-François
>>
>> On 19 mai, 20:53, "marc.assin" <raym...@warichet.com> wrote:
>> > @Anthony> le problème viens de GroupRead a priori
>> > > parce que si j'enlève les printf dans la fonction j'ai bien la valeur
>> 079E
>> > > qui apparaît et qui correspond bien à 19.5 :
>> >
>> > J'ai pas compris
>> > Dans quelle fonction as-tu enlevé le printf ? et qui fait tout
>> > marcher ?
>> >
>> > @Charles> donc je fais pas le test chez moi
>> >
>> > Je pense que ce n'est plus nécessaire.
>> > Merci Charles
>>
>
>


Lecture de GA et affichage décimal en PHP - marc.assin - 20/05/2011

Merci à Jean-François et Anthony pour leur précieuse collaboration.

Je dois dire que j'ai fait une erreur d'appréciation, je pensais que
le module GroupRead faisait partie de la suite eibd et donc je ne l'ai
jamais soupçonné, ni même pris la peine de lire le code (vu qu'il
marchait bien pour les autres appli). Erreur !

Je vais essayer d'implémenter vos suggestions.

Encore merci


Lecture de GA et affichage décimal en PHP - marc.assin - 20/05/2011

On 20 mai, 09:20, "marc.assin" <raym...@warichet.com> wrote:
> Je vais essayer d'implémenter vos suggestions.

Désolé d'être pénible.... mais je n'arrive pas à implémenter la petite
modif dans GroupRead (il me semble que c'est correct, mais le script
reste pendu)

Est-ce qu'il y a moyen de me faire parvenir le script modifié svp ?

Merci d'avance


Lecture de GA et affichage décimal en PHP - Anthony PENHARD - 20/05/2011

> Est-ce qu'il y a moyen de me faire parvenir le script modifié svp ?

je te l'envoi par un autre mail en direct (car je n'ai pas accès a google
site la ou je suis)

j'ai modifié la fonction GourpRead pour rendre directement la "bonne"
valeur en incluant la fonctio "f2_decode" dedans

et donc en faisant :
$groupread = GroupRead($ip,$ga2);
echo "\n valeur : ".$groupread."°C\n";

cela doit fonctionner (chez moi ça marche !!)

@+
Anthony


Lecture de GA et affichage décimal en PHP - marc.assin - 20/05/2011

On 20 mai, 15:38, "Anthony PENHARD" <a.penh...@gmail.com> wrote:
> je te l'envoi par un autre mail en direct
Merci, c'est sympa !
Je crois que le problème est ailleurs
Je viens de me rendre compte que les tests précédents ne fonctionnent
plus non plus (ils se mettent en boucle).
J'ai cassé mon NAS ?!?

Juste pour être sûr ...
quand on fait un include, il s'agit bien d'un fichier .php
Ce fichier peut contenir une/plusieurs fonctions qui seront appelées
dans le script par leur nom de fonction. C'est correct ?
J'ai vérifié au niveau Linux si les droits d'accès sont bons, çà a
l'air bon.
J'ai redémarré eibd.... il y a un truc qui m'échappe ....


Lecture de GA et affichage décimal en PHP - marc.assin - 20/05/2011

On 20 mai, 16:14, "marc.assin" <raym...@warichet.com> wrote:
> je te l'envoi par un autre mail en direct
Ton script a marché du premier coup. Pourquoi pas le mien ?!?

> .. il y a un truc qui m'échappe ....
effectivement, lors de la suvegarde des fichiers php à destination du
web, il faut veiller à ce qu'ils soient au format UNIX et ANSI (case à
cocher dans l'éditeur)

de plus, suite à une errreur, le NAS a un comportement bizarre, les
scripts réputés valides ne fonctionnent plus pendant un certain
temps ... pfff