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

une seule commande pour va et vient filaire #190

Closed zb2oby closed 8 years ago

zb2oby commented 8 years ago

Bonjour, Je souhaite qu'au lieu de deux commandes type allume et eteind, je puisse commander mon relai via une seule commande type "lumiere"en conditionnant celle ci a l'état du gpio. Type gpio read 5 $state if $state=1 alors gpio write 5 0 else gpio write 5 1

Comme ca peux importe la position de mon inter manuel le relai filaire monté en va et vient change de position

Je ne voit pas du tout ou modifier la commande ni comment pour y arriver.

Quelqu'un a t'il deja eu ce besoin ?

Merci d'avance

zb2oby commented 8 years ago

Rebonjour

Je précise que actuellement mon soucis vient du fait que par exemple : Cas concret : 1/ j'allume vocalement mes spots (dc GPIO ON) 2/ j'eteinds manuellement mes spots (GPIO tjs ON) 3/ je souhaite rallumer vocalement: pb je suis déjà en ON donc je dois dire "eteind"... Dommage de devoir dire "eteind" pour allumer...

Voila pourquoi je cherche un moyen de lire l'état du gpio et de le passer a 1 ou 0 en fonction de son état précédent. Ce qui necessite 1 seule commande vocale. Ou bien 2 commandes pour le style mais qui fonctionneraient pareil.. Or je n'ai aucune connaissance en php. Je ne voit donc pas ou modifier tout ca.

Quelqu'un peut-il m'aider ?

Merci beaucoup tous.

zb2oby commented 8 years ago

rere bonjour,

J'ai fini par trouver tout seul..miraculeusement d'ailleurs...cela marche parfaitement bien mais je voudrais quand même faire valider par quelq'un qui touche un peu en PHP j'ai modifié dans le fichier plugin wirerelay le code de function wirerelay_plugin_change_state (L289) comme suit :

function wirerelay_plugin_change_state($engine,$state){ $wireRelay = new WireRelay(); $wireRelay = $wireRelay->getById($engine); $state = Gpio::read($wireRelay->pin); if($state==0){ Gpio::mode($wireRelay->pin,'out'); Gpio::write($wireRelay->pin,'1'); }else{ Gpio::mode($wireRelay->pin,'out'); Gpio::write($wireRelay->pin,'0'); } ...................la suite ne change pas...............................

Merci de votre validation même si ça a l'air de marcher pour le moment j’espère que ça ne va pas causer de problème ailleurs.

François

ldleman commented 8 years ago

Technique ce ne pose pas de problème mais comme tu modifie la fonction commune de changement d'état des relais ce fonctionnement sera appliqué sur tous les relais sur le mode de changement manuel (depuis l'interface) ainsi que sur le chnagement vocal, a terme ça pourrais être génant si tu as des relais qui fonctionnent de manière plus classique.

zb2oby commented 8 years ago

Merci pour ta réponse et bravo pour tout ce boulot ! Je vais peut-être me créer un plugin special pour ces relais du coup sur la base du plugin existant comme ça ca ne posera pas de souci si je veux des relais différents par la suite...

Encore merci