Table des matières

Lumière (photon + relais)

Ce montage permet de commander un relais pour allumer une lampe de chevet à distance, par l'intermédiaire d'une page web.
Attention, ce montage est relié au courant du secteur à 230V, prendre les précautions nécessaires!

composants

schéma du montage

code photon

Le relais est déclenché, soit directement par le bouton pour les tests, soit par une commande envoyée depuis la page web. La fonction interne du photon controleLumiere communique une valeur de retour à la page web selon l'ordre qu'elle a reçu.

lumiere.phot (cliquer pour afficher le code)

lumiere.phot
/*
    Utilisation d'un relais pour déclencher une lampe de chevet reliée au secteur
    Quimper, Dour Ru, 11 oct. 2018, pierre <at> lesporteslogiques.net
    particle photon + photon firmware 0.7.0
    Code sous licence CC BY-SA 4.0 : https://creativecommons.org/licenses/by-sa/4.0/deed.fr
 
    Le relais peut être déclenché par le bouton du circuit ou par une commande web
 
*/
 
int broche_led_interne = D7;
int broche_relais = D4;
int broche_bouton = D0;
 
boolean lumiere_on = false;
 
void setup() {
  pinMode(broche_led_interne, OUTPUT);
  pinMode(broche_relais, OUTPUT);
  pinMode(broche_bouton, INPUT);
  Particle.function("lumiere", controleLumiere);
}
 
void loop() {
  if (digitalRead(broche_bouton) == HIGH) {
    lumiere_on = !lumiere_on;
    if (lumiere_on) controleLumiere("on");
    else controleLumiere("off");
    delay(1000);
  }
}
 
int controleLumiere(String commande) {
  if (commande.equalsIgnoreCase("on")) {
    digitalWrite(broche_led_interne, HIGH);
    digitalWrite(broche_relais, HIGH);
    return 1;
  }
  else if (commande.equalsIgnoreCase("off")) {
    digitalWrite(broche_led_interne, LOW);
    digitalWrite(broche_relais, LOW);
    return 0;
  }
  return -1;
}

code web

lumiere.html (cliquer pour afficher le code)

lumiere.html
  1. <!DOCTYPE html>
  2. <!--
  3. Controle de relais à distance
  4. Quimper, Dour Ru, 11 oct. 2018, pierre <at> lesporteslogiques.net
  5. Code sous licence CC BY-SA 4.0 : https://creativecommons.org/licenses/by-sa/4.0/deed.fr
  6. -->
  7. <html>
  8. <head>
  9.  
  10. <meta charset="utf-8">
  11. <script src="https://code.jquery.com/jquery-3.1.1.min.js" type="text/javascript" charset="utf-8"></script>
  12.  
  13. <style type="text/css">
  14. div {
  15. width: 100px;
  16. height: 100px;
  17. background-color: white;
  18. position: absolute;
  19. top:0;
  20. bottom: 0;
  21. left: 0;
  22. right: 0;
  23. margin: auto;
  24. }
  25. input[type=button] {
  26. color: white;
  27. font-size: 1.5em;
  28. width: 100px;
  29. height: 100px;
  30. }
  31. .on { background:green; }
  32. .off { background:red; }
  33. </style>
  34.  
  35. <script>
  36.  
  37. // remplacer les * ci-dessous par le jeton d'authentification
  38. var accessToken = "****************************************";
  39. // remplacer les * ci-dessous par l'identifiant unique du photon
  40. var deviceID = "************************";
  41. var url = "https://api.particle.io/v1/devices/" + deviceID + "/lumiere";
  42.  
  43. function basculerLumiere(item){
  44.  
  45. function definirLumiere(message){
  46. $.post(url, {params: message, access_token: accessToken}, callback, "json");
  47. }
  48.  
  49. function callback(data){
  50. if (data.return_value == 1) {
  51. item.className = "off";
  52. item.value = "off";
  53. document.body.style.backgroundColor = "#FFFFFF";
  54. }
  55. else if (data.return_value == 0) {
  56. item.className = "on";
  57. item.value = "on";
  58. document.body.style.backgroundColor = "#000000";
  59. }
  60. else if (data.return_value == -1) {
  61. alert("Impossible de se connecter au Photon");
  62. }
  63. }
  64.  
  65. if(item.className == "on") {
  66. definirLumiere("on");
  67. } else {
  68. definirLumiere("off");
  69. }
  70. }
  71. </script>
  72. </head>
  73.  
  74. <body>
  75. <div>
  76. <input type="button" id="bouton" class="off" onClick="basculerLumiere(this)" value="off"/>
  77. </div>
  78. </body>
  79.  
  80. </html>