yana-server icon indicating copy to clipboard operation
yana-server copied to clipboard

amélioration de la table pilotant les GPIO

Open juliendiotworldtour opened this issue 9 years ago • 55 comments

Bonjour Idleman, j'aimerai pouvoir ajuster d'autres paramètres lorsque je veux piloter mes GPIO: Pouvoir sélectionner plusieurs GPIO pour une seule commande vocale Décider si l'état initial de mon GPIO est Actif ou Inactif (c'est déja le cas pour l'instant pour 1 seul GPIO à la fois) Pouvoir lancer deux fonctions différentes avec une seule commande vocale (par exemple lorsque je dis "Yana, douche" ma temporisation pour la pompe lance ses cycles et une temporisation différente pour allumer une lampe se lance en parallèle) Permettre de temporiser les GPIO selon des cycles en seconde ON/OFF prenant en compte l'état initial de mon GPIO. Ainsi la première durée entrée commence soit OFF, soit ON.

Parce qu'un dessin vos 1000mots, voici un petit tableau pour résumer cela! evolution commande vocale

Merci!!!

juliendiotworldtour avatar Dec 14 '15 11:12 juliendiotworldtour

Peux tu préciser le plugin sur lequel tu aimerais cette feature?

ldleman avatar Dec 16 '15 13:12 ldleman

Oui, je l'aimerai sur le plugin "commandes vocales", bien que je ne puisse pas l'utiliser avec la voix dans mon cas avec mon Androphone.

Si c'est plus simple pour toi de copier une partie de ce plugin pour le modifier à ta façon afin d'en créer un nouveau qui s'appelle "VCLC" pour "Voice Controlled Logic Controller" (pas de risque d'endommager celui qui marche ! ), voici ce que j'aimerai :

Pouvoir écrire une commande vocale/cliquable sous la forme "Yana, allume la douche" (existe déjà)

Pouvoir lancer cette commande sur plusieurs GPIO (par exemple le GPIO qui lance ma pompe et le GPIO qui allume la lumière dans ma douche, les 2 s'effectuant uniquement avec la seule commande "Yana, lance la douche" ) et, suivant cette logique, que ces GPIO lancent des programmes différents (le cycle douche pour le GPIO 1 et le cycle éclairage pour le GPIO 2)

Pouvoir déterminer des cycles ON/OFF en seconde, l'état initial étant défini par une case qu'on coche ou décoche: Par exemple pour le GPIO 1 qui gère ma pompe de douche, j'ai 2 cycles ON (20 et 60 secondes) et 2 cycles OFF (5 et 40 secondes). Dans la colonne "cycle en seconde", j'écris ces valeurs comme suit : 5,20,40,60 (ici, je choisi l'état initial du GPIO 1 sur OFF) une fois le dernier cycle accompli, le GPIO 1 passe à l'état suivant (si la dernière valeur rentrée correspond à un cycle ON, le GPIO 1 passe ensuite à OFF)

J'espère que tu vois où je veux en venir avec ce charabia !

Je n'utiliserai pas plus de 2 GPIO en même temps pour te simplifier le codage. J'ai regardé de mon côté pour écrire le plugin moi même, je pense que je n'y arriverai pas car je n'ai aucune base en c++, css, php, javascript,... Je sais seulement lire et appliquer se que je trouve sur les forums !

Une fois que tout est en place, je te fais une vidéo et rédige un article sur mon blog !!!

Merci beaucoup Idleman !

juliendiotworldtour avatar Dec 23 '15 08:12 juliendiotworldtour

Salut,

Ensuite si tu veux, j'ai un plugin qui permet de faire des groupes de GPIO sur une seule commande vocale par exemple, mais ca ne gère pas les tempos, il s'agit de Switchi, par contre la version du market ne doit pas être récente, et surement encore buger. Si ça peux t'intéresses, je peux essayer de te sortir ma version de dev de chez moi.

Chez moi je gère avec ce plugin plus de 50 Pins, dont 32 sorties qui pilotent des relais... Il est purement orienter commutation, le but est de pouvoir changer une sortie ou un ensemble de sorties, par commutation manuelle, commande vocal, ou par les widgets. Et sur plusieurs RPI de façon centralisée si besoin.

Dit moi si ça pourrait convenir à ton besoin. A ta dispo.

Charal avatar Jan 05 '16 16:01 Charal

Tu as un multiplicateur pour gérer autant de sorties ? Ce plugin m'intéresse mais à termes j'aimerai vraiment pouvoir gérer 2 GPIO (douche et éclairage) avec des cycles de temporisations différents (5s off, 25s on, 40off, 60on pour la douche et 130s on pour l'éclairage )

Je viens d'essayer yana V2, il ne m'autorise pas de connexion hors internet (je me connecte à YANA en hot spot depuis mon android)

Merci !!!

juliendiotworldtour avatar Jan 05 '16 16:01 juliendiotworldtour

Non comme je te l'ai dit, mon plugin peux s'installer sur plusieurs rpi, et un seul sert de maitre pour gérer les pins des autres RPI, donc j'en ai 2 pour gérer tout l’éclairage, les interrupteurs et les prises électriques chez moi, soit un peu plus de 50 Pins au total.

Dans tous les cas même les PI2 comme les miens, avec 40 pins, n'en dispose réellement que de 28 utilisable, dont 2 à préconiser en sortie à cause d'une résistance interne plus forte, du au protocole SDA/SCL (GPIO 8 et 9).

Sinon tu as des circuits qui permettent de monter jusqu’à 128 pins, via des composants type MCP23017 et le protocole I2C, ou des cartes toutes faite comme celle-ci : https://www.abelectronics.co.uk/p/18/IO-Pi?CatName=0&c=0 La librairie wiringPi est compatible en plus.

Cependant de mémoire, tu n’as qu’un seul type de résistance interne, pull up ou pull_down je ne sais plus, donc en fonction de ton besoin ca peux être bloquant.

Pour la partie tempo il faut que je regarde, c’est un bon bout de code en plus, je ne te garantis rien. Pour le client v2, je n’ai pas eu l’occasion de la tester, mais ça reste du réseau, donc si je comprends bien, tu essayes de te connecter avec une ip public vers chez toi, donc il faut sur ta box que tu crées une règle de NAT.

Le socket d’Idle pour le moment fonctionne sur le port 9999 (ce qui va surement énerver ton firewall si tu en as un), donc tu devras créer une règle NAT dans ce genre : Port Externe 9999 Port Interne 9999 IP Interne : l’ip de ton Rpi serveur socket.

Et au niveau du client Yana v2, il faudra que tu fournisses l’adresse ip public de ta box, toujour sur le port 9999. Voilà a ta dispo si besoin @lex

Charal avatar Jan 05 '16 17:01 Charal

Merci pour toutes ces infos. En effet je ne pense pas venir à utiliser la même configuration que toi comme je n'utilise qu'un seul RPI2. Cependant si SWITCHI est utilisable sur un seul RPI2 pour activer/désactiver plusieurs GPIO simultanément ça m'intéresse .

Pour yana v2, je suis tout le temps hors ligne. Je n'utilise pas de box Internet mais directement le hotspot de mon téléphone pour communiquer avec mon RPI2. Ainsi j'accède directement à yana server en tapant l'URL de mon RPI2 dans mon browser Chrome. Toutefois yana V2 m'impose de me connecter à internet sans quoi il me bloque d'entrée de jeu

juliendiotworldtour avatar Jan 05 '16 17:01 juliendiotworldtour

Switchi tourne très bien sur un seule rpi, le principe est simple, tu as plusieurs sortie, par exemple le néon de ta salle de bain, le spot au-dessus de ta douche, et une ampoule au plafond en plus.

Tu vas donc créer trois « association » (dans ton cas avec seulement des sorties vu que n’as pas d’interrupteur en entrée) dans switchi, avec le nom et le GPIO, et ensuite tu crées un groupe « salle de bain » ou tu intègres les trois précédentes « associations ».

A partir de là, ça te crée un widget sur le dashboard du groupe « salle de bain », ou tu vois les trois point lumineux, que tu peux activer/désactiver un par ou, ou les trois ensemble, et pareil pour les commande vocales.

Chaque association a une commande vocale, donc dans notre exemple tu auras : Yana allume le néon de la salle de bain, Yana eteint le néon de la salle de bain Yana allume le spot de la douche, Yana éteint le spot de la douche, Yana allume l’ampoule au plafond Yana éteint l’ampoule au plafond (Sachant que tu peux désactiver n’importe quelles commandes vocales dans le plugin si elles te gênent) Et aussi une commande vocale pour le groupe complet, Yana allume la salle de bain Yana éteint la salle de bain Ces commandes agissent sur les trois associations d’un coup.

Pour la partie réseau, je pensais que tu souhaitais accéder au serveur socket par internet, ce qui devrait fonctionner. Mais s’il s’agit d’une spécificité de l’application Android, voit directement avec les développeurs qu’Idle t’a cité. Bonne soirée @lex

Charal avatar Jan 05 '16 17:01 Charal

Salut Alex, comment vas tu? je viens d'installer Switchi mais je n'arrive pas à enregistrer mes associations ou groupe lorsque je clique sur "ajouter" Une idée du problème? Merci!

juliendiotworldtour avatar Jan 06 '16 17:01 juliendiotworldtour

Salut Julien,

Pour commencer, je ne sais même plus qu'elle version bugger de Switchi est en ligne sur le market, mais tu devrais le désactiver :D, et je te préviens quand j'ai mis en ligne ma version.

Bizarre concernant l'ajout, dans les dernières versions, c'est du full Ajax, donc ça ne recharge plus les pages, ça actualise les éléments. Encore une fois tu as surement une version bugger.

Pour info, tu as une doc d'installation pdf aussi dans le plugin qui peu te donner des exemples, des impressions écrans etc.

Concernant le Pin d'entrée et de sortie, il faut comprendre un peu le fonctionnement, si le but est seulement d'allumer ou déteindre des pins qui allument des relais par exemple, tu n'auras cas renseigner le GPIO de sortie, celui qui doit changer lors de tes commandes vocales etc.

Le pin d'entrée est à fournir si tu souhaites qu'un interrupteur puisse aussi déclencher ce pin. Je m'explique, j'ai développé ce plugin pour ma maison, avec un câblage un peu particulier, le but est que je puisse par exemple, allumer la lumière de mon Salon, par commande vocale, par l'interface web, mais aussi par les interrupteurs du salon prévu à cet effet à la base dans la maison(ça semble logique :) ).

En gros, tous mes interrupteurs sont alimentés en 3,3v, et les retours sont connectés sur des GPIO d’entrée du rpi.

Donc le rpi « sait » quand j’actionne un interrupteur (via le service de scan que le plugin te pousse a installer), et il centralise ainsi tous les moyens de commutation, que je le fasse par interrupteur, interface web, commandes vocales, c’est le RPI qui gère la lumière (et les prises aussi chez moi). Donc comme tu as du le comprendre, le champ GPIO d’entrée n’est a renseigné que si tu veux aussi commuter le GPIO de sortie par un ou des interrupteurs.

Car pour finir, tu peux aussi paramétrer 10 interrupteurs qui allument une lumière ou plusieurs lumière, ou un seul qui alimente 10 lumières, tout le câblage de la maison devient dynamique, et si demain je veux embêter ma copine (une grande passion :D ), je peux paramétrer en quelques secondes que l’interrupteur de la salle de bain, allume la lumière du salon, de la chambre ainsi que 3 prises électrique dans le garage et électrocuter le chat du voisin.

Et je ne vais pas rentrer dans les possibilités de grouper les associations, par pièce ou par besoin, genre « le coin jour », comme ça tu pourras dire « Yana allume le coin jour », et toutes les associations du coin jour s’allumeront.

Je sais que ce n’est pas intuitif au premier coup d’œil, mais une fois que tu as le concept c’est plus facile. 

J’essaie de trouver le temps ce soir d’envoyer une version à jour sur le market et je te préviens. A ta dispo @lex

Charal avatar Jan 06 '16 17:01 Charal

Julien,

Je viens de publier ma version qui fonctionne chez moi, dit moi si tu rencontres des difficultés. Regarde la doc si besoin, l'une des premières chose à faire est de rendre le Script d'installation dans le plugin exécutable, et de le lancer. Si tu avais une version précédente du plugin, penses à lancer le script de désinstallation de l'ancien plugin, avant de charger le nouveau. Dans tout les cas le plugin te donneras les commandes à exécuter si il détecte que le scan n'est pas actif.

A ta dispo @lex

Charal avatar Jan 06 '16 19:01 Charal

Salut Idleman, j'ai essayer le plugin STORY et voici ce que j'ai fait avec (GPIO 3 = douche) exemple yana douche sans lumiere

je ne sais pas à quelle moment je peux ajouter ma commande "write GPIO 0 1", pause 130 secondes, "write GPIO 0 0" au sein de ce scénario pour piloter ma lampe de douche comme je veux la garder allumée toute la durée de la douche.

Une idée? Merci

juliendiotworldtour avatar Jan 06 '16 19:01 juliendiotworldtour

Merci Alex, tu n'as pas trainé dis donc! Je te tiens au courant si j'ai des problèmes.

juliendiotworldtour avatar Jan 06 '16 19:01 juliendiotworldtour

et bien Alex, je suis toujours dans l'impossibilité d'ajouter mon association... J'ai beau cliquer sur "ajouter", rien ne charge ou ne se passe... D'ailleurs aucun boutons ne fonctionnent (je ne peux pas par exemple activer/désactiver les commandes vocales) est-ce que cela peut venir du navigateur qui bloque quelque chose? switchi impossible ajouter

juliendiotworldtour avatar Jan 06 '16 19:01 juliendiotworldtour

Julien,

Ne serais tu pas un adepte de vielle version d'internet explorer :)? C'est le javascript qui ne se lance pas apparemment... Essaye avec un google Chrome ou Mozilla si tu peux, dans tout les cas tu auras une meilleur expérience utilisateur ^^.

Charal avatar Jan 06 '16 21:01 Charal

J'utilise Google chrome. Après peut être qu'adblock plus le bloque mes contenues javascript... J'essayerai avec Firefox et je te dis

juliendiotworldtour avatar Jan 07 '16 00:01 juliendiotworldtour

Salut Julien,

Sinon fait aussi un ctrl+f5 pour vider le cache, il a peu être garder la javascript de la version bugger du plugin. Et sinon regarde dans Google Chrome> le bouton en haut à droite qui t'ouvre le menu déroulant>Plus d'outil>Outil de développement. Et tu verras si il y a des erreurs Javascript qui apparaissent.

A ta dispo @lex

----- Mail original -----

De: "juliendiotworldtour" [email protected] À: "ldleman/yana-server" [email protected] Cc: "Charal" [email protected] Envoyé: Jeudi 7 Janvier 2016 01:05:13 Objet: Re: [yana-server] amélioration de la table pilotant les GPIO (#157)

J'utilise Google chrome. Après peut être qu'adblock plus le bloque mes contenues javascript... J'essayerai avec Firefox et je te dis

— Reply to this email directly or view it on GitHub .

Charal avatar Jan 07 '16 08:01 Charal

@juliendiotworldtour peux tu me donner le scénario fonctionnel exacte que tu souhaite executer ? ex :

  1. Phrase blahblah
  2. on allume la douche 5 sc
  3. on allume la lampe de douche 2sc etc...

ldleman avatar Jan 07 '16 09:01 ldleman

Salut Julien,

As tu pu faire le test? J'ai un deuxième utilisateur qui me remonte un problème de formulaire pour ajouter des associations. J'aimerais vous aidez, mais je manque d'info. Bonne journée et a ta dispo.

----- Mail original -----

De: "juliendiotworldtour" [email protected] À: "ldleman/yana-server" [email protected] Cc: "Charal" [email protected] Envoyé: Jeudi 7 Janvier 2016 01:05:13 Objet: Re: [yana-server] amélioration de la table pilotant les GPIO (#157)

J'utilise Google chrome. Après peut être qu'adblock plus le bloque mes contenues javascript... J'essayerai avec Firefox et je te dis

— Reply to this email directly or view it on GitHub .

Charal avatar Jan 12 '16 09:01 Charal

Salut Alex, j'ai essayé avec Firefox et je suis face au même problème. Le service Switchiscan marche bien. je ne sais pas trop quelles informations te donner car moi même je ne sais pas où chercher n'étant point développeur pour un sous... J'ai bien fait ctrl+f5 avec chrome, désactivé AdblockPlus mais je ne peux ni sélectionner une icône différente, et rien ne se passe lorsque je clique sur "ajouter"

Penses-tu qu'un "Git-pull" pourrais aider?

juliendiotworldtour avatar Jan 12 '16 11:01 juliendiotworldtour

Bonjour Idleman, désolé pour mon absence mais j'ai bien été pris sur les pistes avec les fortes chutes de neige que nous avons à Chamonix!

Voici le scénario exact que je souhaiterai avec GPIO 0 pour ma lampe et GPIO 3 pour la pompe

Phrase d'activation: "Yana, lance la douche" GPIO 0 On pendant 130 secondes GPIO 3 Off pendant 5 secondes GPIO 3 On pendant 25 secondes GPIO 3 Off pendant 40 secondes GPIO 3 On pendant 60 Seconde GPIO 0 Off GPIO 3 Off

Et pour laver mon VTT voici le scénario:

Phrase d'activation: "Yana, lavage VTT" GPIO 3 On pendant 120 secondes GPIO 3 Off

Merci beaucoup pour votre aide les gars, j'aimerai tellement être autonome pour ne pas vous donner du travail en plus mais hélas, j'ai trop à rattraper pour être capable de suivre le mouvement!

juliendiotworldtour avatar Jan 12 '16 11:01 juliendiotworldtour

Alex, voici l'erreur que je rencontre sur les icônes. Toutefois aucune erreur n'apparaît lorsque je clique sur "ajouter" bien que je clique dessus comme un âne! erreur switchi

juliendiotworldtour avatar Jan 12 '16 11:01 juliendiotworldtour

Salut Julien,

Il te suffit dans un des deux navigateur ,(je connais plus Google Chrome), d'aller dans l'onglet d'option en haut à droite puis "Plus d'outil">"Outil de développement" Et tu devrais voir lorsque tu essayes d'ajouter une association, si une erreur s'inscrit en bas, ou si une crois rouge apparaît sur la fenêtre, ce qui indique une erreur JavaScript Comme les exemples d'image ci-dessous. Je pourrais ainsi savoir quelles sont les erreurs que rencontre ton navigateur. Merci

Charal avatar Jan 12 '16 11:01 Charal

Super, donc apparemment le fichier Javascript ne se charge pas, tu pourrais m'envoyer, ou regarder, le code lorsque tu fais un clic droit >afficher le code source. A la fin, il doit y avoir trois ligne qui importe mes fichiers Javascript. Tu as cas me le transférer je ferais le trie, tu vas t’embêter sinon... merci

Charal avatar Jan 12 '16 11:01 Charal

voici le code source javascript js

Après est-ce que le soucis peut venir de l'emplacement de mon Yana-server? car je ne suis pas dans /var/www/yana-server mais bien /var/www/html/yana-server

juliendiotworldtour avatar Jan 12 '16 12:01 juliendiotworldtour

Super Julien,

Je vais pouvoir râler après Idleman, les fichiers JS que déclarent mon plugin à Yana -server ne sont pas chargé par Yana-Server. Je pense qu'il y a peut être eu une erreur lors de l’installation du Plugin. Je regarde de mon coté avec Idleman, si tu veux tu peux tenter ça en attendant, ça peux fonctionner : Désactive le plugin Switchi, Supprimer le dossier Switchwirevocal dans yana-server/plugins/, Re-Télécharge le depuis Yana-server>Configuration>Plugins>Market Et réactive le.

Tu es sur de repartir sur de bonne base coté plugin.

Tient moi au courant si tu as le temps de faire le test. Merci

Charal avatar Jan 12 '16 12:01 Charal

Bonjour Julien,

Nous avons fait des tests avec Idleman, et sur nos différents environnements, et nous n'arrivons pas à reproduire tes problèmes JS.

Pour le moment nous avons deux pistes à explorer, celle de la réinstallation du plugin que je tes envoyé dans mes précédant Email, et la mise à jour de ton navigateur.

J'ai aussi une idée, sauf erreur j'ai vu que tu testais "Story" ‘Idleman, qui inclus aussi du JS et du CSS sur les pages du plugin.

Si tu pouvais comme tu l’as fait sur la page de mon plugin, m'envoyer le code source de fin où les JS sont chargés.

Le but est de déterminer si c'est seulement sur mon plugin, ou sur tous.

Si le JS n'est pas chargé non plus, tu rencontreras des problèmes sur la plupart des plugins...

Merci de tes tests.

@lex

----- Mail original -----

De: "juliendiotworldtour" [email protected] À: "ldleman/yana-server" [email protected] Cc: "Charal" [email protected] Envoyé: Mardi 12 Janvier 2016 13:06:48 Objet: Re: [yana-server] amélioration de la table pilotant les GPIO (#157)

voici le code source javascript

— Reply to this email directly or view it on GitHub .

Charal avatar Jan 13 '16 09:01 Charal

C'est bon, je viens de désinstaller réinstaller switchi et ça marche!!!

juliendiotworldtour avatar Jan 13 '16 17:01 juliendiotworldtour

Par contre j'ai été con... j'ai voulu désinstaller et réinstaller STORY sauf qu'il n'est pas présent sur le market. Je sens que je vais devoir faire un git pull pour le récuperer!

juliendiotworldtour avatar Jan 13 '16 17:01 juliendiotworldtour

Voilà une belle erreur ICC :D ! T'es bon pour payer une bière a @Charal pour te faire pardonner XD !

ldleman avatar Jan 14 '16 08:01 ldleman

Va pour une tournée avec Idleman, vu que je me suis retourné sur lui injustement :p

Charal avatar Jan 14 '16 13:01 Charal