ldleman / yana-server

Interface PHP de domotique Y.A.N.A (You Are Not Alone)
http://projet.idleman.fr/yana
107 stars 59 forks source link

RASPBERRY PI 2 - Problème de fonctionnement avec RadioEmission #117

Closed chriskross closed 9 years ago

chriskross commented 9 years ago

Bonjour à tous, Je reviens à la charge suite à l'arrivée du PI 2 (MORE FASTER OH YEAH) . je me permets de vous faire remonter un probleme de gestion des GPIO sur cette version. J imagine que cette version n'est pas encore prise en charge sur yana. Je vais parcourir un peu les plugins et les class pour voir si j'arrive à faire quelque chose... Actuellemnent :

@+ tout le monde

ps @ldleman : si tu peux faire quelque chose pour moi, je t en serai reconnaissant ou bien même aiguille moi car je sens que je vais legerrement ramer ! ;-) merci

thib3113 commented 9 years ago

Oh, qql qui as déjà le Pi2 , pourrais tu me donner le résultat d'un

gpio readall

stp ( il me faut un copier coller exact ), je te passerais un bout de code pour les gpio si tu veux, et il me faudrais ton numéro de révision stp, soit le résulat de cette commande :

cat /proc/cpuinfo | grep Revision

Merci d'avance

édit : il me faudrais aussi savoir si tu as des gpios optionnels, si oui combien ?

chriskross commented 9 years ago

gpio readall +-----+-----+---------+------+---+---Pi 2---+---+------+---------+-----+-----+ | BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM | +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+ | | | 3.3v | | | 1 || 2 | | | 5v | | | | 2 | 8 | SDA.1 | IN | 1 | 3 || 4 | | | 5V | | | | 3 | 9 | SCL.1 | IN | 1 | 5 || 6 | | | 0v | | | | 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 | | | | 0v | | | 9 || 10 | 1 | ALT0 | RxD | 16 | 15 | | 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 | | 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | | | 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 | | | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 | | 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | | | 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 | | 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 | | | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 | | 0 | 30 | SDA.0 | IN | 1 | 27 || 28 | 1 | IN | SCL.0 | 31 | 1 | | 5 | 21 | GPIO.21 | IN | 1 | 29 || 30 | | | 0v | | | | 6 | 22 | GPIO.22 | IN | 1 | 31 || 32 | 0 | IN | GPIO.26 | 26 | 12 | | 13 | 23 | GPIO.23 | IN | 0 | 33 || 34 | | | 0v | | | | 19 | 24 | GPIO.24 | IN | 0 | 35 || 36 | 0 | IN | GPIO.27 | 27 | 16 | | 26 | 25 | GPIO.25 | IN | 0 | 37 || 38 | 0 | IN | GPIO.28 | 28 | 20 | | | | 0v | | | 39 || 40 | 0 | IN | GPIO.29 | 29 | 21 | +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+ | BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM | +-----+-----+---------+------+---+---Pi 2---+---+------+---------+-----+-----+

chriskross commented 9 years ago

puis pour la revision ->

Revision : a01041

voila @thib3113 si tu peux me dépatouiller cela serait super cool !

@ très bientot et merci

thib3113 commented 9 years ago

ok, donc ça ne change pas des autres, et il as 40 pins. Je vais donc te donner un bout de code rapide :

        preg_match("~\|(?:(?'LBCM'\s*[0-9]*\s*)\|(?'LwPi'\s*[0-9]*\s*)\|(?'LName'\s*[^\|]*\s*)\|(?'LMode'\s*[^\|]*\s*)\|(?'LValue'\s*[^\|]*\s*)\|(?'LPhysical'\s*[0-9]*\s*))\|\|(?:(?'Rphysical'\s*[0-9]*\s*)\|(?'RValue'\s*[0-9]*\s*)\|(?'RMode'\s*[^\|]*\s*)\|(?'RName'\s*[^\|]*\s*)\|(?'RwPi'\s*[^\|]*\s*)\|(?'RBCM'\s*[0-9]*\s*))\s*\|~i", $value, $matches);

ça te retourne un tableau un tableau avec la ligne en cour dans les bonnes cases :P, quand tu fais une commande en php, ça te retourne un tableau , donc tu fais un foreach ( le $value étant donc la ligne en cours ). Dans ce tableau, tu as des clef qui commence par un R, c'est le pin de droite de la ligne, et une liste de clef qui commence par un L qui correspondent donc au pin de gauche. Ensuite il y à donc : BCM : le pin bcm wPi : le pin wiring pi Name : le nom du pin Mode : le mode du pin Value : la valeur du pin Physical : le numéro du pin physique

je te laisse donc en faire ce que tu veux :P

Tu te demanderas pourquoi je fais une regex compliqué au lieu d'une simple boucle for, et bien , tout simplement car la boucle for fait monter le cpu de mon Raspi pendant 3s, alors que la regex fait la même chose en moins de 1s

chriskross commented 9 years ago

comment expliques-tu que je ne puisse pas piloter mes gpios alors qu'ils sont semblablent aux b+ ?

merci @thib3113

thib3113 commented 9 years ago

aucune idée :/, il me faudrais un Rpi2 pour faire des tests :/, sinon go google

chriskross commented 9 years ago

@thib3113 @ldleman je continue mes investigations peu fructueuse! Par le terminal la commande initiale ./radioEmission ne donne rien. J'ai donc recompilé le programme " g++ radioEmission.cpp -o radioEmission -lwiringPi" comme la librairie WIRINGPI à legerement changé depuis l'arrivée du pi2, je me suis dit que peut etre ... avec un peu de chance, il y aurait du mieux.
donc apres une commande ./radioEmission 2 XXXXXXX 1 on ou off pas d'action au niveau de mes prises, cependant j'ai bien le gpio associé qui bascule sur "OUT" via gpio readall .

+++ peut etre que quelqu un est legerement plus eclairé sur le probleme ?

chriskross commented 9 years ago

Bonsoir à tous,

J'ai fais quelques recherches sur GOOGLE... pour le PI2 les librairies de WIRINGPI semblent ne pas être totalement au point . CQFD D'autre domotiqueur locost, ont les mêmes problèmes avec RCSWITCH (https://code.google.com/p/rc-switch/) . Je n'ai malheureusement que des récepteurs chacon (homeeasy) donc je n'ai fait que des essais sur ce type de protocole (HRCSWITCH https://github.com/maditnerd/HRCSwitch et radioEmission https://github.com/ldleman/yana-server/tree/master/plugins/radioRelay ) . j'ai toute fois recompiler le programme radioEmission de @ldleman "car il fonctionne parfaitement avec mon mon pi b+" en faisant varier les délais sur les verrou et les délais des bits 0 et 1. Toujours pas de solution. snifff

petit constat, lorsque j 'initie une commande d’émission via le terminal ou yana server, la commande est 4 fois plus longue à l’exécution. cependant l’état de la pin destiné à la date de l’émetteur passe bien sur OUT. pour info, mon pi 2 -> Kernel : Linux 3.18.5-v7+ armv7 et pour mon b+ -> Kernel : Linux 3.18.5+ armv6l.

Je pense donc comme les autres posters, que le problème est lié aux librairies de WIRINGPI (https://projects.drogon.net/raspberry-pi/wiringpi/download-and-install/ ) .

@++ tout le monde

ps : si quelqu'un à la solution, je suis preneur bien entendu ;-) Je ferai retour de mes trouvailles... ++

merci @thib3113 @maditnerd @ldleman pour votre aide.

chriskross commented 9 years ago

Nouvelle trouvaille, quand on aime on ne compte pas !!!

Problème à priori sur les delais usleep du pi2 "I see 1ms on B+ and 28ms(!) on Pi2. "

pi@raspberrypi ~ $ time ./a.out

real 0m20.094s user 0m0.000s sys 0m0.020s

topic qui traite le sujet, http://www.raspberrypi.org/forums/viewtopic.php?p=684334

+++

thib3113 commented 9 years ago

le pi2 viens de sortir, les retours utilisateurs doivent être entrain d'arriver, et les developpeurs doivent être entrain de mettre à jour tout ça. La dernière mise à jour du raspberry pi date de hier, et celui de wiring pi il y à 5 jours, wait & see

chriskross commented 9 years ago

Bonsoir @ldleman , @thib3113 , @maditnerd et à toute la communauté,

Voila, il est temps de cloturer ce post! La solution vient d'être trouvée. yes yes yes !!!! je m'en veux de ne pas y avoir pensé plutot mais les histoires de delais m'ont mis la puce à l'oreille ce matin au reveil. ;-) comme quoi la nuit est parfois songeuse.

Je vous indique la procedure a suivre dans via terminal en super-utilisateur evidement ( sudo su) : 1 - Faire les mises à jour de Raspbian ( apt-get update && apt-get upgrade); 2 - Installer les dernieres librairies de wiringpi ( suivre la procedure sur le site -> https://projects.drogon.net/raspberry-pi/wiringpi/download-and-install/ ); 3 - Faire la mise à jour firmware du RPI ( rpi-update ) pour les curieux le github -> "https://github.com/Hexxeh/rpi-update"; 4 - Finaliser le tout, par un redémarrage ( reboot ).

et profitez de nouveau de yana-server !!!!!

Voila les loulou @++ tout le monde et longue vie à YANA!!!!

thib3113 commented 9 years ago

ah, ben une simple update quoi ...

chriskross commented 9 years ago

Oui oui plutot simple, l update du rpi coté firmware est la resolution... Etape, Que l on ne fait pas assez souvent !! Bref rien de bien compliqué au moins si certains on le probleme, ils nauront plus a chercher ++