IR-WolAndShut
Présentation
Le projet a pour but de pouvoir démarrer et éteindre un ordinateur via une télécommande infrarouge (universel ou via récupération de code de la télécommande de votre télévision). Le boitier doit être autonome et n'a pas besoin d'être programmé via un ordinateur avant utilisation, un logiciel doit être exécuter au démarrage sur l'ordinateur cible.
Exemple d'utilisation: - Personne à mobilité réduite (télécommande spécialisé) - Bouton de démarrage difficilement accessible - Démarrer en avance un ordinateur long à démarrer - Forcer l'extinction d'un ordinateur dans une autre pièce (l'ordinateur de l'ado qui ne veut pas venir manger) - ...
Architecture
Un arduino avec shield ethernet relié sur le même réseau local que l'ordinateur cible. Si l'ordinateur cible est relié en wi-fi au réseau local, seule la fonctionnalité d'extinction fonctionnera (pas de wake on lan sur carte wi-fi). Après l'installation du boitier et la mise en place du logiciel sur l'ordinateur, une procédure d'initialisation est à suivre (voir "installation"), ensuite tout est fonctionnelle. Cette procédure n'est pas à relancer en cas de coupure de courant sur l'arduino (les données sont gardées en mémoire par l'arduino). L'architecture de test: Une box, un switch, le boitier IR-WolAndShut sur le switch, un pc sur le même réseau (relié au switch ou à la box). Testé avec télécommande samsung et pentax.
Le boitier doit pouvoir être pointer grossièrement par la télécommande de l'utilisateur.
Hardware: - Arduino Nano (atmega328p) - Ethernet shield ENC28J60 (attention dans mon cas j'ai du alimenter ce shield en 5v malgré qu'on trouve les docs sur le net signalant qu'il est alimenté en 3.3v) - Récepteur infrarouge TSOP382 - Une led pour indicateur visuel - Deux boutons poussoir (type pullup), pour lancer les procédures d'installations.
Eagle project (à optimiser mais les grandes lignes sont la): File:WolAndShut.zip Les librairies eagle (à installer dans le dossier lbr de votre install eagle: File:lbr.zip Software: - Arduino IDE 1.6.6
Côté arduino
Librairie arduino
- IRremote v2.01: Pour la réception infraouge (https://github.com/z3t0/Arduino-IRremote) - Ethercard: Pour la partie ethernet (https://github.com/jcw/ethercard) - IPAddress et EEPROM inclus avec l'IDE arduino 1.6.6
Code arduino
Le code pourra être très largement optimisé, il est largement commenté, tout est précisé dans le fichier ci-dessous: Fichier ino v0.2 File:WolAndShut_v0.2.ino.zip
Pour information, les codes de télécommande et l'adresse mac du pc cible est enregistré lors de la procédure d'installation en EEPROM. En cas de coupure électrique ou autre, les codes sont gardés en mémoire donc il n'est pas nécéssaire de refaire la procédure d'installation.
En cas de problème de récupération de l'adresse mac, une version de code ou l'adresse mac est écrite en dur est disponible (variable destmac):
Côté PC Cible
Matériel
Une carte réseau compatible avec la fonctionnalité Wake on lan. Il y a plein de tuto sur le net sur cette fonctionnalité et voir pour activer ou vérifier l'activation: https://openclassrooms.com/courses/wake-on-lan Le boitier arduino et l'ordinateur doivent être sur le même réseau local (rélié sur la même box)
Code python
Le code pourra être optimisé. Créé sous python 2.7. Cette version du soft est uniquement compatible windows pour le moment (mais pourra être adapté facilement à linux) Pyinstaller a été utilisé pour générer l'éxécutable windows (pyinstaller -F -w XXXX.py)
L'utilisateur final n'a pas besoin d'installer python ou les librairies sur son ordinateur. Seul le fichier .exe est nécéssaire ainsi que deux autorisations dans le pare-feu windows.
Le fichier original en .py modifiable: xx
Le fichier exécutable en .exe: xx
Installation Windows
Une fois l'arduino finalisé côté hardware et chargée avec le code vous pouvez procéder à l'installation:
- Brancher l'arduino au réseau ethernet puis brancher l'arduino électriquement. L'arduino allumera la lampe verte le temps du démarrage (récupération de son adresse ip) puis la led s'eteindra. - Copier le fichier exe (WolAndShut.exe) dans votre menu démarrer (le soft démarrera automatiquement avec windows). Cette étape est indispensable !!! - Ouvrer le port UDP Entrant numéro 5003 sur le pare-feu windows (il y a plein de tutoriel sur internet si besoin) - Pour cette première installation, cliquer sur l'exe (pour lancer le logiciel) - On passe du côté du boitier arduino maintenant - Appuyer sur le bouton poussoir qui controle l'initialisation de l'adresse mac (dans mon cas celui le plus proche de la led infrarouge, la led noire). Vérifier votre montage pour savoir lequel est le votre (toutes les indications sont dans la partie architecture). ATTENTION: Si vous utilisez le code avec l'adresse mac manuelle passez directement au réglage de la télécommande (le bouton pour la mac ne sert à rien). - La led se met a clignotter une fois (ou un peu plus si la réponse est longue à avoir). - La led est de nouveau éteintes (moins de deux secondes après, cela signifie que tous s'est bien passé). Si elle clignotte plus longtemp un problème pour récupérer l'adresse mac de l'ordinateur peut avoir lieu. Vérifier que vous avez bien démarrer l'executable du côté de l'ordinateur (le fichier exe WolAndShut.exe). Puis redémarrer l'arduino et recommencer l'installation du côté arduino. - Prenez votre télécommande, et regarder quels sont les deux boutons que vous allez utiliser pour les fonctionnalités wake on lan et shutdown (deux boutons distincts !!!!) - Appuyer sur le bouton poussoir qui controle l'initialisation des codes a utiliser pour la télécommande - La led se met a clignoter rapidement puis va rester allumer - Quand la led est allumé, appuyer sur la touche de la télécommande prévue pour le wake on lan - La led clignotte rapidement une fois le code reçu puis va rester à nouveau allumer. - Quand la led est allumé, appuer maintenant sur la touche de la télécommande prévue pour l'extinction du PC - La led va clignotter lentement 5s et va s'éteindre. - L'installation est finit. Si vous changer de PC cible ou si vous voulez changer de bouton de la télécommande vous devrez refaire la procédure d'installation (côté arduino et côté PC en cas de changement d'ordinateur)
Utilisation
- Pointer votre télécommande vers le boitier WolAndShut - Si l'ordinateur est éteint: En cas d'appuie sur la touche de wake on lan, le pc va démarrer automatiquement. Un appuie sur la touche d'extinction ne fera rien. - Si l'ordinateur est allumé (session ouverte): En cas d'appuie sur la touche wake on lan, il ne se passe rien. Un appuie sur l'extinction va eteindre le PC après 30s en affichant un pop-up d'information. Toutes les applications seront fermés automatiquement. Pensez à sauvegarder votre travail
Bonus
Le boitier pour ma carte prototype (le boitier est assez spécifique car l'assemblage est un prototype) .(skp et stl) File:WolAndShutCase.zip
TODO
- Compatibilité linux a mettre en place - Optimiser le code - Voir comment démarrer le logiciel .exe même si la session utilisateur n'est pas ouverte => Le mettre en tant que service - Voir si il est possible pour l'utilisateur d'annuler l'ordre d'extinction (techniquement faisable ? proteger par mot de passe ?) - Ajouter les schemas d'architecture et schema de cablage de l'arduino - Ajouter une aide en cas de besoin de débuggage (en cas de problème éventuel) - Mise en forme et illustration dans le wiki - Voir pourquoi sur certain PC l'executable ne fonctionne pas (il est tout de suite stoppé sans message d'erreur) - Voir pourquoi sur certain PC l'adresse mac envoyé est mal formatté (erroneous packet)