Outils pour utilisateurs

Outils du site


domotique:api-e-we-link

Appareils SONOFF : mode cloud et mode DIY (réseau local)

Ref : http://developers.sonoff.tech/sonoff-diy-mode-api-protocol.html

Les devices SONOFF peuvent fonctionner sous 2 modes :

  • le mode cloud (ou eWeLink MODE), qui le mode par défaut
  • le mode DIY, qui correspond à un mode dans lequel le seul réseau nécessaire est le réseau local. Les appareils SONOFF sont alors adressés directement.

Cloud mode

C'est le mode par défaut. D'une manière ou d'une autre, l'appli android est capable de détecter le nouveau device, lui attribuer le wifi, lui donner les identifiants du compte ewelink avec lesquels s'adresser au serveur cloud, et dire à l'appareil qu'il devra dorénavant fonctionner en mode cloud, i.e en échangeant en permanence avec un serveur du cloud, pour recevoir ses commandes, ou pour régulièrement fournir son état.

DIY mode

Activation du mode DIY

The steps of entering the DIY Mode and connecting to an existing WiFi network:

  1. Power on;
  2. Long press the button for 5 seconds to enter Compatible Pairing Mode (AP) - User tips: If the device has been paired with eWeLink APP, reset the device is necessary by long press the pairing button for 5 seconds, then press another 5 seconds for entering Compatible Pairing Mode (AP)
  3. Entering the Compatible Pairing Mode (AP) by long press the paring button for 5 seconds after power on
  4. Connecting the Access Point named ITEAD-XXXXXXXXXX with default password 12345678 via mobile phone or PC
  5. Browser visits http://10.10.7.1/
  6. Filling in the existing WiFi network SSID and password
  7. Entering DIY Mode successfully with specific WiFi network connected.

Retrouver ses devices en mode DIY

DIY Mode LAN discovery implements IETF Multicast DNS protocol and DNS‑Based Service Discovery protocol The discovery process must follow the mDNS/DNS-SD Discovery protocol to discover the Sonoff DIY Mode device with “_ewelink._tcp” service type when your application or client connect with Internet (WiFi or Ethernet);

Retrouver ses devices en mode DIY

Tout ce qui suit fonctionne aussi avec les devices, quand ils sont en mode cloud.

sous windows

Télécharger et utiliser cet exe pour découvrir les devices et commencer à jouer avec

https://github.com/itead/Sonoff_Devices_DIY_Tools/blob/master/tool/tool_01DIY85_v330(log).exe

mdns-scan

It can be used to debug only, since it queries continuously

  sudo apt-get install mdns-scan 
// To launch, enter : 
mdns-scan
avahi-browse
sudo apt-get install avahi-utils
// To launch, enter : 
avahi-browse --all
// Or
avahi-browse --all -t -r
avahi-resolve

To get ip of a device :

avahi-resolve --name eWeLink_1000b176a7.local

Ici, eWeLink_1000b176a7.local peut être retrouvé à partir de la commande avahi-browse –all -t -r hostname = [eWeLink_1000997285.local]

Communiquer avec ses devices en mode DIY

On communique via des appels REST de type HTTP POST. Visiblement, les appareils écoutent sur le port 8081.
En mode cloud, les device se connectent au cloud et conserve une session pour les échanges ; néanmoins, ils conservent le port 8081 ouvert, mais ils ne répondent à aucune requête … :)

Exemple d'appel On considère que avahi-resolve –name eWeLink_1000b176a7.local a retourné 192.168.1.36

Pour obtenir les infos du device, on fait :

  curl -X POST http://192.168.1.36:8081/zeroconf/info -d '{ "deviceid":"","data":{} }'

Pour commander le device :

  curl -X POST http://192.168.1.36:8081/zeroconf/switch -d '{ "deviceid":"","data":{"switch":"on"} }'

Quelques références : https://www.youtube.com/watch?v=wOtS091ikQw

https://www.youtube.com/watch?v=HjzCxA9Fal8

Ref : https://ewelink-api.now.sh/docs/available-methods/setdevicepowerstate

Cette api permet de controller les devices en mode cloud (eWeLink)

Installation des dépendances

cd <le dossier dans lequel faire son projet de commade eWelink>

  npm install ewelink-api

Le dossier node_modules sera créé, avec les dépendances requises.

Exemple de script

const ewelink = require('ewelink-api');
const connection = new ewelink({
  email: 'xavier.marquis@gmail.com',
  password: 'free1979',
  region: 'eu'
});
async function Main() {	
	const devices = await connection.getDevices();
	console.log(devices);
		
	const device = await connection.getDevice('1000910231'); //deviceid
	console.log(device);
	
	const status = await connection.setDevicePowerState('1000910231', 'off');
	console.log(status);	
}
Main();
name deviceid params.staMac
Chambre1 sonoff plafond 1000910231
Sonoff salon 1000997285
Couloir 1000b176a7
Chambre2 sonoff plafond 1000995f10
Sonoff Entree 1000b1772a
domotique/api-e-we-link.txt · Dernière modification: 2021/02/16 17:20 (modification externe)