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

utiliser 1 GPIO en entrée pour couper tous les GPIO de sorties Actifs #227

Closed juliendiotworldtour closed 8 years ago

juliendiotworldtour commented 8 years ago

Salut @ldleman , j'aimerai savoir quand est ce que tu pensais intégrer à Story les GPIO en entrée à même titre qu'une phrase ou un évènement pour définir une "cause" ? J'aimerai en effet me servir d'un interrupteur qui ne me sert à rien pour le moment comme un système de désactivation de tous mes GPIO. Par exemple, lorsque je quitte mon camion ou lorsque je pars me coucher, plutôt que de devoir sortir le téléphone de ma poche (ou aller le chercher alors que je suis au chaud dans mon duvet!), je donne une impulsion (j'appuie je relache) sur cet interrupteur et hop, tous les GPIO pilotant mes relais se coupent! Lorsque je retourne à mon camion, j'utilise de nouveau mon téléphone pour les activer à ma guise. Voici ce que je souhaite faire:

Nom du scénario: Coupe Tout Cause: GPIO 21 Inactif Effet: GPIO 0,7,6,5,4,3,2,1 Actif (j'ai une carte relai inversée)

Je ne souhaite pas avoir de commande vocale allié à ce scénario puisque celui-ci dois seulement se déclencher par l'intermédiaire de mon interrupteur.

J'ai essayé avec Switchi mais il ne réagit pas comme je souhaite (il me créé en plus des doublons de commandes vocales comme je dois rentrer chaque fonction 1 à 1 afin de pouvoir les grouper sous une seule commande vocale de groupe).

Merci Idleman!!!

juliendiotworldtour commented 8 years ago

Salut la compagnie! Bon j'ai décidé de prendre le taureau par les cornes en modifiant un peu dans le PLUGIN STORY cause.class.php et effect.class.php (remplacer "inactif" par "actif", et "pause" par "tempo")

Je me suis aussi dit que si je copiais le bout de code du effect.class.php concernant les GPIO dans le cause.class.php je toucherai au graal! Voici le bout de code du effect.class.php ajouté à cause.class.php cause class php_modification

Mais en fait non ça ne suffit pas. Il doit me manquer un bout de code quelque part pour que le RPI2 et YANA comprennent que je veuille utiliser mon GPIO 21 (d'après la pin Map Yana) en entrée! Rappel du scénario souhaité: lorsque je "ferme" mon interrupteur, la différence de potentiel entre le GPIO 21 et l'alimentation 3,3V mesurée par le RPI2 envoi l'ordre à mes GPIO 0,1,2,3,4,5,6,7 de passer à la valeur 1 (correspondant à Inactif par rapport au branchement sur ma carte relai)

Merci la compagnie!

story_gpio-causes story_gpio-effets

ldleman commented 8 years ago

Yop @juliendiotworldtour le taureau est plus gros que tu ne pense ^^, un simple copier coller ne suffira pas car les causes sont beaucoup plus complexes que les effets.

Un effet c'est une simple action, une cause il faut un déclencheur au niveau du code, pour la cause temps c'est un crontab, pour la cause speech c'est le serveur socket, mais pour une cause gpio il faut un programme tiers qui déclenche l'evenement lors d'un changement de gpio, je suis en train de travailler dessus, j'ai un truc assez fonctionnel mais qui ne fonctionne qu'avec un nombre limité de pin pour le moment, je te tiens au jus dès que j'ai push une version alpha.

juliendiotworldtour commented 8 years ago

Merci beaucoup @ldleman, tu es au top! Mon branchement reste dans l'attente de tes avancées bien venues! Du coup, intègres tu du Python dans Yana?

ldleman commented 8 years ago

Bon j'ai bricolé un truc mais c'est experimentale, si tu veux tester, faut update ton yana (git pull) et suivre la commande d'installation sur la home des scenarios. Actuellement seul les pins 0-1-2-3-4 sont dispo en entré, j'espere que ça te suffira :)

juliendiotworldtour commented 8 years ago

Merci beaucoup @ldleman! Juste une question: par rapport à la programmation pour les pins en entrée , comment dois je raccorder mon interrupteur? Car il faut que j'utilise 3 fils je crois (3,3v/Masse/gpio IN) J'ai vu différents montages possibles mais cela dépend de la façon dont on programme le GPIO en entrée Aussi, quelles valeurs de résistances me conseilles tu et où les placer? Comment dois-je me brancher? Merci beaucoup de ton aide et patience!

ldleman commented 8 years ago

La forme la plus simple pour moi : raspberry_pi_butt-schem

juliendiotworldtour commented 8 years ago

Bonjour @ldleman, j'ai effectué ton branchement (avec une résistance de 4,7 kohms car je n'avais pas de 10kohms sous le coude). Et bien ça ne marche pas! Ahah J'utilise le GPIO 1. Est ce que je dois utiliser une Masse en particulier ou je peux prendre n'importe laquelle ?

(J'ai bien ajouté les lignes de commande dans crontab -e, tout en remplaçant wget http://localhost par http://mon.adresse.ip au cas où et comme Yana Server se trouve dans mon répertoire /HTML, j'ai bien rajouté cela dans la nouvelle ligne de commande /var/www/HTML/yana-server/...)

Merci beaucoup d'être aussi efficace !

ldleman commented 8 years ago

yop.

Déjà essaye de vérifier que nerve fonctionne bien tape : cd /var/www/HTML/yana-server puis ./nerve

Il devrait t’écrire un truc du genre

Nerves ready, waiting life.

Ensuite vas sur ta dashboard, change l'etat du gpio 0 et verifie que nerve te retourne bien le message :

GPIO 0 CHANGED TO 1 LAUNCH php action.php GPIO_HAS_CHANGED 0 1

Si ça marche, c'est que le soucis viens bien de ton montage.

juliendiotworldtour commented 8 years ago

Salut @ldleman , merci pour ces infos! J'ai refais un git pull hard origin master pour etre sûr de bien être d'aplomb.

J'ai bien repris l'installation lettre par lettre dans le crontab -e (d'ailleurs il y a une erreur dans le @reboot /var/www/html/yana-server/nerve /var/www/HTML/yana-server/action.php -O /dev/null 2>&1)

J'ai vérifié que mon GPIO 1 n'était pas utiliser en tant que sortie dans l'une de mes commandes vocales ou scénarios.

Lorsque je fais cd /var/www/html/yana-server puis ./nerve voici ce que PuttY me retourne: segmentation fault

Nerve est bien présent au bon endroit pourtant

nerve

comment puis-je te donner plus de détail par rapport à cela?

Merci ldleman!

ldleman commented 8 years ago

Oops, mea culpa j'ai oublié de te dire de préciser le parametre action dans la commande nerve : cd /var/www/HTML/yana-server puis ./nerve action.php

juliendiotworldtour commented 8 years ago

Bon et bien Il semblerait que mon montage ne fonctionne pas avec la resistance de 4.7kohms... Je vais essayer avec le GPIO 0 voir si j'ai le même résultat. Peux tu me donner un exemple de scénario a reproduire en utilisant un GPIO en entrée ? Peut être que mon scénario n'est pas correct non plus... Aussi, je vais me brancher sur le RPI2 comme tu l'as fais en utilisant les mêmes pins. Est ce que le fait d'utiliser 2 pin de masse pourrait jouer? ( un pin de masse pour ma carte relai alimentée en 5v, et un pin de masse pour mon circuit 3,3v utilisant le GPIO 1 en entrée).

Au moins en essayant de reproduire ce qui marche pour toi, peut être que j'ai une chance d'y arriver!

Merci @ldleman!

ldleman commented 8 years ago

Tu as fait la manip ? Il te dis quoi dans la console quand tu change un gpio via l'interface ?

juliendiotworldtour commented 8 years ago

C'est bon tout marche nickel! En fait il fallait que je supprime le scénario et que je le recréé. Maintenant tout fonctionne comme une montre suisse! Merci énormément pour ton travail @ldleman, après autant de mois passé a essayer mon van dans tous les sens, je dispose enfin dune ergonomie optimum!

ldleman commented 8 years ago

Je suis content que ça fonctionne :), n'hésite pas a refaire un pull du gestionnaire de scénario j'ai bossé dessus dans la derniere heure pour résoudre quelques bugs restant et ajouter la feature de confidence sur les phrases (dans l'ancienne verison, elles étaient toures a 0.80 par defaut donc pas top).

Je clos, n’hésite pas a rouvrir si besoin :)