{"id":26245944,"url":"https://github.com/duglof/wifirelay","last_synced_at":"2026-05-09T05:34:17.433Z","repository":{"id":282212748,"uuid":"947781901","full_name":"Duglof/WifiRelay","owner":"Duglof","description":"Wifi remote relay for WifiThermostat or standalone relay","archived":false,"fork":false,"pushed_at":"2025-03-19T10:01:19.000Z","size":2266,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-15T10:06:40.246Z","etag":null,"topics":["auto-off","esp32","esp8266","multilanguage","multilingual","relay","timeout","timer","wifi-relay-controllers"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Duglof.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-03-13T08:40:28.000Z","updated_at":"2025-03-19T10:01:22.000Z","dependencies_parsed_at":"2025-03-13T14:01:01.642Z","dependency_job_id":null,"html_url":"https://github.com/Duglof/WifiRelay","commit_stats":null,"previous_names":["duglof/wifirelay"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Duglof/WifiRelay","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Duglof%2FWifiRelay","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Duglof%2FWifiRelay/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Duglof%2FWifiRelay/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Duglof%2FWifiRelay/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Duglof","download_url":"https://codeload.github.com/Duglof/WifiRelay/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Duglof%2FWifiRelay/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274411806,"owners_count":25280193,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-10T02:00:12.551Z","response_time":83,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["auto-off","esp32","esp8266","multilanguage","multilingual","relay","timeout","timer","wifi-relay-controllers"],"created_at":"2025-03-13T13:16:46.753Z","updated_at":"2026-05-09T05:34:17.374Z","avatar_url":"https://github.com/Duglof.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# WifiRelay : Remote relay for WifiThermostat\nWifiRelay for ESP8266 or ESP32\n\nVersion testée en mode bistable et en mode monostable\n\n## Modes de fonctionnement\n- A la mise sous tension le relais est off (l'état du relais n'est pas sauvegardé)\n- L'état du relais peut être fixé par une requète http ou mqtt\n### Mode Bistable\n- Le relais conserve sont état indéfiniment. La réception d'une nouvelle requète http ou mqtt permet de changer sont état\n### Mode Monostable\n- A chaque requète On, le relais passe à on est le timeout est positionné à sa valeur configurée (voir Configuration)\n- Lorsque le timeout arrive à échéance, l'état du relais passe à Off automatiquement\n- Une nouvelle requète à on réarme le timeout en le mettant à sa valeur de configuration\n- C'est le fonctionnement d'une minuterie\n- Cela évite que le chauffage reste activé en cas de perte de réseau\n- En fonctionnement normal, le thermostat envoyant l'état de son relay toutes les minutes (à configurer sur le thermostat), le WifiRelay restera à On\n- Une requète Off met le relay off et arrête le timeout.\n## Fonctionnalités\n- Serveur Web pour la configuration et le suivi (multilangue français anglais)\n  - Changement de langue automatique en fonction de la langue de votre navigateur\n- Accès avec le nom réseau e.g. http://\u003cnom réseau\u003e.local/\n  - ex : wifirel-23178f.local (à entrer dans la bare d'adresse de votre navigateur) \n- Données stockées dans le système de fichier LittleFS \n- Configuration du réseau Wifi en se connectant à WifiRelay avec un téléphone mobile\n- Paramétrage de la Time zone pour avoir la bonne heure : exemples\n  - Paris DST : \"CET-1CEST,M3.5.0,M10.5.0/3\"\n  - British DST : \"GMT0BST,M3.5.0/01,M10.5.0/02\"\n  - Eastern Standard Time : \"EST5EDT,M3.2.0/2,M11.1.0\"\n  - Indian Standard Time : \"UTC-05:30\"\n  - China Standard Time : \"CST-8CDT-8,M4.2.0/2,M9.2.0/3\"\n- Gestion automatique de l'heure été/hiver via la Time Zone configurée\n- Paramètrage du serveur de temps (ntp)\n- Réception de requète http pour positionner le relay (remplacer wifirel-23178f par le nom réseau de votre WifiRelay )\n  - ex : http://wifirel-23178f.local/setrelay?relay1=on\n  - ex : http://wifirel-23178f.local/setrelay?relay1=off\n  - ex : http://wifirel-23178f.local/setrelay?relay1=1\n  - ex : http://wifirel-23178f.local/setrelay?relay1=0 \n- Envoi possible des données vers jeedom \n- Envoi possible des données à un serveur MQTT\n- Envoi possible d'un requète http\n  - Données envoyées :\n    - %REL1% : Etat du relais ( 0 = Off ; 1 = On)\n- Mise à jour via OTA (Wifi)\n  - La mise à jour de logiciel peut être effectué via wifi (sans connecter la prise usb du module esp)\n  - La procédure est décrite dans mon autre projet github : LibTeleinfo\n\n## Configuration Wifi\nDepuis votre téléphone portable :\n- Se connecter au réseau Wifi WifiRel-XXXXXX (XXXXXX aura la valeur de votre WifiRelay)\n- Navigateur (chrome ou autre) url : http://192.168.4.1\n- Sélectionner l'onglet Configuration\n- Réseau Wifi : Mettre le SSID (cliquer sur la loupe pour afficher la liste des réseaux et sélectionner le votre)\n- Clé Wifi    : Mettre le mot de passe de votre réseau Wifi\n- Clicker sur Enregistrer\n- Déployer Avancée\n- Cliquer sur Redémarrer Wifirelay\n- Wifirelay se connectera à votre réseau Wifi\n- Accéder à votre box pour connaître sa nouvelle adresse IP ou utiliser WifiRel-XXXXXX.local (remplacer XXXXXX par votre valeur)\n\n\n# Hardware\n\n## Connection\n\n|    Module         | Module Pin |  ESP82666 \u003cbr\u003e ESP12E/ESP12F | ESP8266 \u003cbr\u003e WEMOS D1 Mini| ESP32 \u003cbr\u003e ESP32 30 pin |  ESP32 Mini \u003cbr\u003e ESP32-C6 14 pin |\n|-------------------|------------|--------------|--------------|---------------|---------------|\n| HI-LINK           | -Vo        | G            | G            | GND           |  GND          |\n| HI-LINK           | +Vo        | VIN          | 5V           | VIN           |  +5V          |\n|       -           |            |              |              |               |               |\n|                   |            |              |              |               |               |\n| RELAY (NO)        | IN1        | GPIO 12 (D6) | GPIO 12 (D6) | A4 (GPIO 32)  | GPIO 6        |\n| RUF RELAY N°2     | IN1        | GPIO 14 (D5) | GPIO 14 (D5) |               | GPIO 14 select\u003cbr\u003e built-in antenna |\n|                   |            |              |              |               |               |\n| LED INTERNE       |            | GPIO 2 (D4) \u003cbr\u003e blue| GPIO 2 (D4) \u003cbr\u003e blue| GPIO 2 (D2) \u003cbr\u003eblue | GPIO 8 (D8) \u003cbr\u003e rgb led |\n\n- HI-LINK : HLK-PM01 : INPUT 100-240VAC 50-60Hz : OUTPUT 5VDC 3W\n- RELAY              : 5V Relay Module (DC- -\u003e -Vo ; DC+ -\u003e +Vo)\n  - Attention ESP ne supporte pas 5V : Relais 5V commandés pas un niveau bas à interfacer avec un opto-coupleur (schéma ci-dessous)\n\n- Possible ajout petit afficheur OLED en SPI (SDA,SCL)\n  - A ce jour, le code pour l'afficheur n'existe pas\n\nSous réserve de tests\n\n## Relay Interface\n### Version 1\n![Relay Interface V1](docs/relay_wemos_mini_D1.jpg)\n\n- C'est une version conçue spécialement pour ESP8266 Wemos D1 mini\n- Au vue des photos, il semblerait que le relais soit piloté par D1\n- Le relais est actif quand l'entrée de commande passe au niveau 1\n- Elle se branche directment (ESP32 aussi).\n- Il existe une version plus configurable appelée 'Bouclier relais V2.0.0 pour LOLIN (WEMOS) D1 mini'\n  - 7 IO configurables D0, D1, D2, D5, D6, D7, D8 (Par défaut : D1)\n  - Mais c'est uniquement si on veut le plugger directement sur un Wemos D1 mini sinon on connecte D1 du relais sur le GPIO de son choix\n\n### Version 2\n![Relay Interface V2](docs/relay_interface.jpg)\n\n- L'esp8266 ou ESP32 fonctionne en 3.3V alors que le relais est en 5V.\n- Ajout d'un opto-coupleur LTV 814 et d'une résistance de 1K pour l'interface\n- Quand la sortie GPIO passe au niveau 1 (3.3V) le relais passe à l'état actif\n- A la mise sous tension ou en l'absence de programme, le relais est à l'état inactif\n- Exemple de connexion à GPIO 12 pour un ESP8266 12F\n\n## ESP8266 12E/12F\n\n[esp8266 12e 12f](docs/esp12e-gpio.png)\n\n[esp8266 HTU21 connections](docs/ESP12e-gpio-htu21.jpg)\n\n[esp8266 DS18B20 connections](docs/ESP12e-gpio-ds18b20.jpg)\n\n## ESP8266 WEMOS D1 Mini\n\n[Wemos D1 Mini](docs/WEMOS-D1-Mini.jpg)\n\n[Wemos D1 Mini BME280 connections](docs/WEMOS-D1-Mini-gpio-bme280.jpg)\n\n## ESP32 30 Pins\n\n[esp32 gpio](docs/ESP32-dev-kit-30pins-pinout.png)\n\n## ESP32-C6 \n\n[esp32-C6](docs/ESP32-C6-Mini.png)\n\n[esp32-C6 HTU connections](docs/ESP32-C6-gpio-htu21.jpg)\n\n# Software\n|       Nom     |      Localisation         | Version |  Nom ou Lien                                                                                    |   Commentaire    | Voir | \n|---------------|---------------------------|---------|-------------------------------------------------------------------------------------------------|------------------|------|\n| Arduino IDE   | Desktop                   | V1.8.18 |                                                                                                 | Pas version 2.x  | (1)  |\n| Ardiuno IDE   | Fichiers/Préférences      |         | http://arduino.esp8266.com/stable/package_esp8266com_index.json                                 | Pour ESP8266     | (2)  |\n| Ardiuno IDE   | Fichiers/Préférences      |         | https://espressif.github.io/arduino-esp32/package_esp32_index.json                              | Pour ESP32       | (2)  |\n| Arduino IDE   | Dossier Arduino/tools     | V0.5.0  | https://github.com/esp8266/arduino-esp8266fs-plugin/releases/download/0.5.0/ESP8266FS-0.5.0.zip | Pour ESP8266     | (3)  |\n| Arduino IDE   | Dossier Arduino/tools     | V2.0.7  | https://github.com/lorol/arduino-esp32fs-plugin/releases/download/2.0.7/esp32fs.zip             | Pour ESP32       | (4)  |\n| Arduino IDE   | Dossier Arduino/libraries |         | https://github.com/Pedroalbuquerque/ESP32WebServer                                              | Pour ESP32       | (5)  |\n| Arduino IDE   | Dossier Arduino/libraries |         | WifiRelay/librairie/Syslog-master.zip                                                           |                  | (5)  |\n| Arduino IDE   | Dossier Arduino/libraries | V3.0.2  | PubSubClient V3.0.2 : https://github.com/hmueller01/pubsubclient3/releases/tag/v3.0.2           |                  | (5)  |\n\n- (1) ESP8266 et ESP32 Skech Data Upload ne fonctionnent pas sur version 2.x\n- (2) Ajouter les deux même si vous ne l'utilisez pas\n- (2) Séparer les liens pas une virgule\n- (2) Ne pas oublier d'aller dans le gestionnaire de cartes et d'installer : esp8266 by ESP8266 community v3.1.2\n- (2) Ne pas oublier d'aller dans le gestionnaire de cartes et d'installer : esp32 by Espressif Systems v3.1.1\n- (2) Après avoir relancé Arduino IDE vous devriez avoir dans le menu Outils/Type de carte 'ESP8266 Boards (3.1.2)' et 'ESP32 Arduino'\n- (3) A décompresser dans le répertoire du disque Arduino/tools qui est situé à côté du répertoire Arduino/libraries (Créer le répertoire tools s'il n'existe pas)\n- (3) Après avoir relancé Arduino IDE vous devriez avoir dans le menu Outils 'ESP8266 Sketch Data Upload'\n- (4) A décompresser dans le répertoire du disque Arduino/tools qui est situé à côté du répertoire Arduino/libraries (Créer le répertoire tools s'il n'existe pas)\n- (4) Après avoir relancé Arduino IDE vous devriez avoir dans le menu Outils vous devez avoir 'ESP32 Sketch Data Upload'\n- (5) A décompresser dans le répertoire du disque Arduino/libraries\n- (6) A installer que si l'on utilise ce capteur (option de compilation dans WifiTherm.h)\n- (6) A installer depuis l'Arduino IDE Outils/Gérer les bibliothèques\n\n# Web interface\n\n## Etat de WifiRelay\n\n![Etat du relais Fr](docs/web-relay-state-fr.jpg)\n\n## Données du système\n![Données du système](docs/web-relay-system.png)\n\n## Configuration\n\n### Wifi\n![Config Wifi](docs/web-relay-config-wifi-fr.png)\n\n### Relay\n![Config Relay](docs/web-relay-config-relais-fr.png)\n\n### Mqtt\n![Config Mqtt](docs/web-relay-config-mqtt-fr.png)\n\n### Jeedom\n![Config Jeedom](docs/web-relay-config-jeedom-fr.png)\n\n### Avancée\n![Config avancée](docs/web-relay-config-avancee-fr.png)\n\n## Fichiers du système\n![Fichiers du système](docs/web-relay-files.png)\n\n# Tests\n## Tests Mqtt\n#### Mqtt published values\n![Tests Mqtt](docs/WifiRelay-mqtt-test.png)\n| Topic                              | Donnée             | Commentaire             |\n|------------------------------------|--------------------|-------------------------|\n| WIFI-RELAY/relay/relay1            | Etat du relais     | on/off                  |\n| WIFI-RELAY/relay/errors            | Erreurs            | none/readSensor/sendMqtt \u003cbr\u003e sendJeedom/sendHttp |\n\n#### Mqtt update command\n| Topic                              | Donnée             | Commentaire             | Voir |\n|------------------------------------|--------------------|-------------------------|------|\n| WIFI-RELAY/set/setmode             | Mode               | stopped/started         | (1)  |\n| WIFI-RELAY/set/setconfig           | Config             | permanent/timeout       | (2)  |\n| WIFI-RELAY/set/setrelay1           | Status             | off/on                  | (3)  |\n\n- (1) Relay is off ; do not execute set/setrelay on\n- (2) relay is set off if timemout occur\n- (2) timeout is reseted when a new command setrelay1 on is received\n- (3) values can be also 0 or 1\n  \n## Test Jeedom (Core V4.4.19)\n### Configuration de votre jeedom\n\n#### Création de l'objet Maison\n\n- Outils/Objets : Cliquer sur + pour ajouter l'objet Maison\n- Accès depuis la synthèse : Dashboard\n- Options : Visible\n- Type : Pièce\n\nC'est nécessaire pour que le code du scénario fonctionne sans modification\n\n#### Creation plugin virtuel Relay\n\n- Ajouter le plugin Virtuel (gratuit)\n- Dans le plugin virtuel, cliquer sur + pour ajouter 'WifiRelay'\n- Configurer WifiRelay comme ci-dessous\n![Plugin WifiThermostat Equipement](docs/jeedom/virtual_wifithermostat_equipement.png)\nObjet parent : Maison : Nécessaire pour que le script du scénario fonctionne sans modification\n![Plugin WifiThermostat Commandes](docs/jeedom/virtual_wifithermostat_commandes.png)\nMettez exactement les mêmes noms aux commandes, elle sont utilisées dans le script du scénario WifiThermostat\n\n### Configuration de WifiRelay \n- Dans la section Configuration/Jeedom\n- Nom du serveur jeedom : Entrer l'IP de votre jeedom\n- URL : La valeur par défaut est correcte\n  - Remplacer id=1 en mettant l'ID de votre commande Etat : ex : id=3 si id : 3 dans le nom de l'onglet Commande de WifiRelay\n- Clé API : Entrer la clef API du core de votre jeedom\n- Mise à jour : Toutes les minutes\n- Cliquer sur Enregistrer\n- Dans Avancer, cliquer sur 'Redémarrer WifiRelay'\n\n### Jeedom Dashboard Maison\n![Dashboard WifiRelay](docs/jeedom/jeedom_dashboard_maison.png)\n\n\n# Outils à installer (optionnel)\nPour le debug des exceptions qui apparaitrait dans 'Outils/Moniteur série'\n\nCela permet de convertir les valeurs hexadécimales en nom et numéro de ligne du code source\n\n## Installation\n|       Nom     |      Localisation         | Version  |  Nom ou Lien                                                                                           |   Commentaire   | Voir | \n|---------------|---------------------------|----------|--------------------------------------------------------------------------------------------------------|-----------------|------|\n| Arduino IDE   | Desktop                   | V1.8.18  |                                                                                                        | Pas version 2.x | (1)  |\n| Arduino IDE   | Dossier Arduino/tools     | V2.0.0   | https://github.com/me-no-dev/EspExceptionDecoder/releases/download/2.0.0/EspExceptionDecoder-2.0.0.zip | Pour ESP8266    | (1)  |\n| Arduino IDE   | Dossier Arduino/tools     | V2.0.3   | https://github.com/me-no-dev/EspExceptionDecoder/releases/download/2.0.3/EspExceptionDecoder-2.0.3.zip | Pour ESP32      | (1)  |\n\n- (1) Ne peuvent pas être installés simultanément car il sont dans le même répertoire (c'est l'un ou l'autre)\n\n## Utilisation\n- Il faut absolument compiler votre Croquis (sinon il vous demandera de sélection un fichier elf)\n- Ouvrir le fenêtre Outils/ESP Exception Decoder (qui s'ouvrira sans poser de question)\n- Et coller dans cette fenêtre le message d'exception\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fduglof%2Fwifirelay","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fduglof%2Fwifirelay","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fduglof%2Fwifirelay/lists"}