Aller au contenu

Lancement Xpl-Hub, Xpl-Rfxcom-Rx, Xpl-Logger


Messages recommandés

  • Réponses 308
  • Créé
  • Dernière réponse

Meilleurs contributeurs dans ce sujet

Aprés quelques jours de "repos informatique"... J'ai repris ce soir mon "projet".

J'ai (encore) tout réinstallé ipkg, et tout le nécessaire via la commande "ipkg install ..."

xpl-hub fonctionne

xpl-logger fonctionne

Par contre, pour xpl-mysql-logger, rien à faire, toujours une erreur :


Synology>

Synology> xpl-hub -i eth0 -v --define broadcast=0.0.0.0 &

Synology> Listening on 0.0.0.0:3865

Sending on 0.0.0.0


Synology> /opt/bin/xpl-mysql-logger -i eth0 -v --define broadcast=255.255.255.25

5 --define instance_id=synology

Can't locate xPL/Client.pm in @INC (@INC contains: /usr/lib/perl5/5.8.6/MARVELL_88F6281 /usr/lib/perl5/5.8.6 /usr/lib/perl5/site_perl/5.8.6/MARVELL_88F6281 /usr/lib/perl5/site_perl/5.8.6 /usr/lib/perl5/site_perl .) at /opt/bin/xpl-mysql-logger line 40.

BEGIN failed--compilation aborted at /opt/bin/xpl-mysql-logger line 40.


Ce qui est bizarre, c'est que dans l'erreur il me parle de perl 5.8.6,

Or quand je fais un perl-v, c'est bien la version 5.10.0 (celle que tu m'as donné Patrick) que j'ai installé

Lien vers le commentaire
Partager sur d’autres sites

Je crois que tu as raison. Je te poste quand meme pour confirmation ...


#!/usr/bin/perl -w

eval 'exec /usr/bin/perl -w -S $0 ${1+"$@"}'

if 0; # not running under some shell

=head1 NAME

xpl-mysql-logger - Perl script for logging infos into a MySQl database

...

Je peux remplacer comme ceci :

#!/opt/bin/perl -w

eval 'exec /opt/bin/perl -w -S $0 ${1+"$@"}'

if 0; # not running under some shell

=head1 NAME

xpl-mysql-logger - Perl script for logging infos into a MySQl database

...

Lien vers le commentaire
Partager sur d’autres sites

ça fonctionne ...

Par contre j'ai maintenant un problème de connexion à la BDD


Synology> /opt/bin/xpl-mysql-logger -i eth0 -v --define broadcast=255.255.255.25

5 --define instance_id=synology

XPL-MySQL en fonctionnement.

DBI connect('dbname=CAPTEURS;host=localhost;','root',...) failed: Access denied for user 'root'@'localhost' (using password: YES) at /opt/bin/xpl-mysql-logger line 46

Connection impossible

Pour ma base et mes tables, je les ai crée directement dans PhpMyAdmin, est-ce comme cela qu'il fallait faire ?

De toute façon, c'est un problème de conexion, je vais rebooter mon Syno.

Lien vers le commentaire
Partager sur d’autres sites

Ah on progresse... dommage que je n'y ai pas pensé avant !

Pour la base de donnée il faut la créer avec phpMyAdmin, puis tu vas créer un utilisateur qui aura tous les droits sur cette base !

l'as tu fait ?

Apparemment tu essaye de te connecter avec le user "root", a-tu is un mot de passe pour root ?

Patrick

Lien vers le commentaire
Partager sur d’autres sites

Oui c'est bon pour l'utilisateur, il devait y avoir un bug, maintenant je peux me connecter.


Synology> xpl-hub -i eth0 -v --define broadcast=0.0.0.0 &

Synology> Listening on 0.0.0.0:3865

Sending on 0.0.0.0

Synology> xpl-mysql-logger -i eth0 -v --define broadcast=255.255.255.255 --defin

e instance_id=synology

XPL-MySQL en fonctionnement.

Listening on 192.168.0.2:51944

Sending on 255.255.255.255

Adding client: 192.168.0.2:51944 "bnz-listener.synology"

Mais par contre il relance le hub au début de ton fichier ? Parce que si il écoute sur :

Listening on 192.168.0.2:51944

Il ne va rien trouver ?

Lien vers le commentaire
Partager sur d’autres sites

Salut,

Ca y est, j'ai recu mon RXFLAN, version xPL.

Alors, par rapport au tien, Patrick, y'a du changement. Les données sont plus envoyées sous la même forme. Fini les identifiant de capteurs par leur nom, c'est maintenant par catégorie (http://syno.haefling...egon_Scientific). Le format de l'adresse change, lui aussi. Mais en prime, on gagne l'unité sur la mesure et les données sont déparées par des slashs, plus faciles (quoique) à récupérer.

Il a donc fallu que je revoie mon fichier de log pour la bdd. Je suis en plein dedans pour intégrer les 2 types de récepteurs et banaliser le tout (avec tes remarques sur les accès multiples à la bdd wink.png).

Exemple avec le xpl-logger brut :

192.168.1.11:52156 [xpl-trig/sensor.basic: rfxcom-lan.0004a31f6294 -> * rain2 0x4200/rainrate/0.00/mmh]

192.168.1.11:52156 [xpl-trig/sensor.basic: rfxcom-lan.0004a31f6294 -> * rain2 0x4200/raintotal/25.40/mm]

192.168.1.11:52156 [xpl-trig/sensor.basic: rfxcom-lan.0004a31f6294 -> * rain2 0x4200/battery/100]

192.168.1.11:52156 [xpl-trig/sensor.basic: rfxcom-lan.0004a31f6294 -> * wind2 0xf700/gust/0.00/mps]

192.168.1.11:52156 [xpl-trig/sensor.basic: rfxcom-lan.0004a31f6294 -> * wind2 0xf700/average-speed/0.00/mps]

192.168.1.11:52156 [xpl-trig/sensor.basic: rfxcom-lan.0004a31f6294 -> * wind2 0xf700/direction/270.0]

192.168.1.11:52156 [xpl-trig/sensor.basic: rfxcom-lan.0004a31f6294 -> * wind2 0xf700/battery/100]

192.168.1.11:52156 [xpl-trig/sensor.basic: rfxcom-lan.0004a31f6294 -> * wind2 0xf700/gust/0.00/mps]

192.168.1.11:52156 [xpl-trig/sensor.basic: rfxcom-lan.0004a31f6294 -> * wind2 0xf700/average-speed/0.00/mps]

192.168.1.11:52156 [xpl-trig/sensor.basic: rfxcom-lan.0004a31f6294 -> * wind2 0xf700/direction/270.0]

192.168.1.11:52156 [xpl-trig/sensor.basic: rfxcom-lan.0004a31f6294 -> * wind2 0xf700/battery/100]

192.168.1.11:52156 [xpl-trig/sensor.basic: rfxcom-lan.0004a31f6294 -> * th2 0x1a01/temp/18.8/c]

192.168.1.11:52156 [xpl-trig/sensor.basic: rfxcom-lan.0004a31f6294 -> * th2 0x1a01/humidity/83/wet]

192.168.1.11:52156 [xpl-trig/sensor.basic: rfxcom-lan.0004a31f6294 -> * th2 0x1a01/battery/100]

Lien vers le commentaire
Partager sur d’autres sites

Super si tu as recu ton RFXcom, de mon coté je me suis penché sur ton code et ai réussi à le faire marcher. J'ai quelques remarques "structurelles" par rapport à ton code

  • Pourquoi cette séparation "mesures" et "relevés" je ne vois pas ce que ça apporte ?
  • Dans relevés tu enregistre de toute façon une ligne si ta valeur courante du capteur est égale à la valeur précédente (même si par là tu pointe sur la même ligne d'une autre table). Cette table "relevés" va grossir

    • J'avais pris le parti de savoir programmer l'intervalle minimum entre deux captures (différentes ou pas ) par exemple pour des données qui ne changent pas vite comme la température alors que pour la vitesse du vent je diminue cette valeur car cette valeur change beaucoup plus vite

    [*]Ensuite tu rempli bien le champ "nouveau_capteur" mais tu ne l'utilise pas !

Pour ce qui est du format dans ma version TCP/IP c'est le module xpl-rfxcom-rx qui se charge du codage en format xpl, la sortie directe de la version TCP/IP du RFXCOM n'est pas exploitable directement. Les unités ne sont de toute facon pas envoyées par le capteur mais codé dans le firmware du RFXcom XPL

Patrick

Lien vers le commentaire
Partager sur d’autres sites

Je vais me baser sur l'exemple d'une seule sonde de température pour illustrer mes propos sur le format de la BDD.

  • La différence entre les 2 tables mesures et relevés est là pour optimiser la BDD et ne pas la charger inutilement. Ce qu'il va se passer, c'est que la table mesures va grandir exponentiellement pour, dans quelques mois (vers les 6 mois), ne plus bouger (à 1 données près par semaine peut-être). Comment ? Grâce au lien entre la table relevés et la table mesures. La table mesures ne contient, comme son nom l'indique, que des mesures (valeur, unité). Pas de référence à un instant ou un capteur. Chaque couple valeur/unité est unique dans la table. Dans 6 mois, tu auras toutes les mesures de température effectuées (de -10 à +50° par exemple). Une ou plusieurs lignes de la table relevés vont alors pointer vers une ligne de la table mesures. Au bout de ces 6 mois, seule la table relevés va grandir, au rythme des relevés effectués, en pointant, à chaque fois, vers une ligne de la table mesures (qui elle, sera fixe).
  • Pour la table relevés, elle va effectivement grossir, mais beaucoup moins que la tienne. Une ligne de ma table relevés (id_capteur, id_mesure, timestamp) est beaucoup moins gourmande en espace (entre 6 et 12 octets au maximum) que pour ton format de table (où tu y enregistres modèle capteur, type, localisation, mesure, date/heure, soit au minimum 11 octets, maxi 325 octets).

    • Pour la table relevés, j'ai repris ton principe de si valeur mesurée = valeur précédente alors on ne l'enregistre pas dans la base. Par contre, il se peut que je ne l'ai pas mis en oeuvre correctement.

    [*]Pour le champ nouveau_capteur, c'est tout simplement car je ne t'ai pas expliqué à quoi il servait smile.png. Il est là pour que, lorsque tu changes les piles (et donc l'adresse de ton capteur), tu puisses lier les mesures du capteur entre ancienne et nouvelle adresse. Lié encore là au format de ma base. Au travers d'une IHM html, ce lien pourra être effectué, en changeant uniquement les id_capteur de la table relevés --> c'est à faire.

J'espère que mon explication a été assez claire, sinon dis le moi wink.png

Je reste ouvert à toute autre suggestion.

Lien vers le commentaire
Partager sur d’autres sites

Pourquoi utilise tu des adresses de broadcast différentes ? ca va pas marcher comme cela !

C'est par l'adresse de broadcast que xpl-mysql-logger va essayer de récupérer les infos

Patrick

Patrick,

Si je lance le hub, sans définir d'adresse de broadcast, il reste bloqué, et je ne peux plus taper d'autres commandes.

Pourquoi j'utilise deux adresses differentes, voilà ce qu'on m'avait dit sur xpl-project :

Tieske wrote:

beanz wrote:Looks like the RFXCOM device is using the generic local network broadcast address 255.255.255.255 but the xpl-hub is using the specific network broadcast address 192.168.0.255 so they are not actually talking to one another.

No. The hub listening on 192.168.0.255:3865 will *not* see the 255.255.255.255:3865 broadcast messages.

Try getting the xpl-hub to listen on the "any" 0.0.0.0 address (then it will see both types of broadcasts as Tieske assumed) by using:

--define broadcast=0.0.0.0

and use:

--define broadcast=255.255.255.255

on any clients (xpl-logger).

Regards,

Mark.

J'ai essayé en mettant la même adresse mais il reste à la ligne "adding client..."

DjMomo, maintenant que tu as reçu ton RFXLAN, as-tu essayé xpl-mysql-logger ? As-tu les mêmes problèmes ?

Lien vers le commentaire
Partager sur d’autres sites

Alors, effectivement, moi aussi j'ai eu des soucis sur le xpl-hub si je ne force pas l'adresse de broadcast à 0.0.0.0. Par contre, pas besoin de la définir sur le xpl-logger.

Et je n'ai pas de soucis de connexion à la BDD. As-tu créé un utilisateur avec un mot de passe qui puisse attaquer la BDD comme t'avait répondu Patrick ?

Lien vers le commentaire
Partager sur d’autres sites

Pour mon probleme de connexion a la BDD, c'est ok, le syno avait du bugger, je l'ai redémarré et c'est bon.

Pour xPL-hub, je dois définir l'adresse de broadcast à 0.0.0.0, et xPL-logger fonctionne quand je lance, mais mon probleme est avec xPL-mysql-logger où il bloque â Adding client...

Avec xpl-logger :


Synology> /opt/bin/xpl-hub -i eth0 -v --define broadcast=0.0.0.0 &

Synology> Listening on 0.0.0.0:3865

Sending on 0.0.0.0

Synology> /opt/bin/xpl-logger -i eth0 -v

Listening on 192.168.0.2:54817

Sending on 192.168.0.255

Adding client: 192.168.0.2:54817 "bnz-listener.Synology"

192.168.0.2:43395 [xpl-stat/hbeat.app: bnz-listener.Synology -> *]

192.168.0.2:43395 [xpl-cmnd/config.list: xpl-xplhal2.chartres7 -> bnz-listener.Synology - request]

192.168.0.2:43395 [xpl-cmnd/config.current: xpl-xplhal2.chartres7 -> bnz-listene                                                	r.Synology]

192.168.0.2:43395 [xpl-stat/config.app: xpl-xplhal2.chartres7 -> *]

192.168.0.2:43395 [xpl-stat/config.app: xpl-xplhal2.chartres7 -> *]

192.168.0.2:43395 [xpl-trig/sensor.basic: rfxcom-lan.0004a31bb697 -> * - temp2 0x2f01[temp]=14.6]

192.168.0.2:43395 [xpl-trig/sensor.basic: rfxcom-lan.0004a31bb697 -> * - temp2 0x2f01[battery]=100]

Avec xpl-mysql-logger :

Synology> /opt/bin/xpl-hub -i eth0 -v --define broadcast=0.0.0.0 &

Synology> Listening on 0.0.0.0:3865

Sending on 0.0.0.0

Synology> /opt/bin/xpl-mysql-logger -i eth0 -v

XPL-MySQL en fonctionnement.

Listening on 192.168.0.2:45707

Sending on 192.168.0.255

Adding client: 192.168.0.2:45707 "bnz-listener.Synology"

Lien vers le commentaire
Partager sur d’autres sites

Je constate aussi parfois ce genre de problème.

Ce que je fais, c'est de bien tout arrêter avant (cf script S99xpldaemon de Patrick), puis je relance xpl-hub puis xpl-mysql-logger. Si tu lances xpl-mysql-logger après avoir arrêté xpl-logger, parfois cela ne marche pas.

Enfin, comme écrit dans mon post de ce matin 06:58, le format des trames entre version TCP/IP et xPL n'est pas la même, donc le script de Patrick ne devrait pas fonctionner.

Il te faut remplacer dans xpl-mysql-logger (dans sub log)

$ligne =~ m/.*\> \* - (.*)/;
par
$ligne =~ m/.*\> \* (\w+ .*)/;
et supprime le # en début de ligne de
# print $par1, "\n";

Cela te permettra de voir au moins les logs.

Après, toujours dans le même post de ce matin, il faut reprendre une partie du code (ce que je suis en train de faire) pour qu'il soit compatible format xPL.

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.


×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.