{"id":33046,"date":"2019-10-31T21:50:27","date_gmt":"2019-10-31T18:50:27","guid":{"rendered":"https:\/\/prohoster.info\/blog\/vizualnoe-programmirovanie-dlya-sonoff-basic\/"},"modified":"2019-10-31T21:50:27","modified_gmt":"2019-10-31T18:50:27","slug":"vizualnoe-programmirovanie-dlya-sonoff-basic","status":"publish","type":"post","link":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/vizualnoe-programmirovanie-dlya-sonoff-basic","title":{"rendered":"Programmation visuelle pour Sonoff Basic","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Programmation visuelle pour Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/0682cb274648d8a8d16b17bced0116d7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nUn article sur la fa\u00e7on de transformer un appareil chinois bon march\u00e9 en un contr\u00f4leur logique programmable. Cet appareil trouvera son utilisation tant dans l'automatisation domestique que dans le cadre de cours pratiques en informatique scolaire.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\n<em>\u00c0 titre de r\u00e9f\u00e9rence, par d\u00e9faut, le programme Sonoff Basic fonctionne avec une application mobile via un service cloud chinois. Apr\u00e8s la modification propos\u00e9e, toute interaction ult\u00e9rieure avec cet appareil sera possible via un navigateur.<\/em> <\/p>\n<h2>Section I. Connecter Sonoff au service MGT24<\/h2>\n<p><\/p>\n<h3>\u00c9tape 1. Cr\u00e9er un tableau de bord<\/h3>\n<p>\nInscrivez-vous sur le site <noindex><a rel=\"nofollow\" href=\"http:\/\/mgt24.ru\">mgt24<\/a><\/noindex> (si vous n'\u00eates pas encore inscrit) et connectez-vous avec votre compte.<br \/>\n<b class=\"spoiler_title\">Connexion<\/b><img decoding=\"async\" alt=\"Programmation visuelle pour Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/e9b310a7cb7d2da90ac8161407944a8c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPour cr\u00e9er un panneau de contr\u00f4le pour un nouvel appareil, cliquez sur le bouton &#171;+&#187;.<br \/>\n<b class=\"spoiler_title\">Exemple de cr\u00e9ation de tableau de bord<\/b><img decoding=\"async\" alt=\"Programmation visuelle pour Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/dc10d7009ea65c72714c2ccd2314ed0b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nUne fois le tableau de bord cr\u00e9\u00e9, il appara\u00eetra dans la liste de vos tableaux de bord.<\/p>\n<p>Dans l'onglet \u00ab Installation \u00bb du tableau de bord cr\u00e9\u00e9, trouvez les champs \u00ab ID de l'appareil \u00bb et \u00ab Cl\u00e9 d'autorisation \u00bb, car ces informations seront n\u00e9cessaires pour configurer l'appareil Sonoff.<br \/>\n<b class=\"spoiler_title\">Exemple d'onglet<\/b><img decoding=\"async\" alt=\"Programmation visuelle pour Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/f6cc6f1f469c6278c38c4c63288d9ba2.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>\u00c9tape 2. Flasher l'appareil<\/h3>\n<p>\nAvec l'outil <noindex><a rel=\"nofollow\" href=\"https:\/\/esp8266.ru\/download\/esp8266-utils\/XTCOM_UTIL.zip\">XTCOM_UTIL<\/a><\/noindex> , t\u00e9l\u00e9chargez le firmware <noindex><a rel=\"nofollow\" href=\"http:\/\/mgt24.ru\/en\/docs\/firmware\/plc_basic.bin\">PLC Sonoff Basic<\/a><\/noindex> dans l'appareil ; pour cela, vous aurez besoin d'un convertisseur USB-TTL. Voici <noindex><a rel=\"nofollow\" href=\"https:\/\/esp8266.ru\/esp8266-obnovlenie-proshivki-xtcom_util\/\">l'instruction<\/a><\/noindex> et <noindex><a rel=\"nofollow\" href=\"http:\/\/mgt24.ru\/en\/docs\/#!sonoff.md#%D0%9F%D0%B5%D1%80%D0%B5%D0%BF%D1%80%D0%BE%D1%88%D0%B8%D0%B2%D0%BA%D0%B0_Sonoff_%D1%81_%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E_\">un guide vid\u00e9o<\/a><\/noindex>.<\/p>\n<h3>\u00c9tape 3. Configurer l'appareil<\/h3>\n<p>\nAlimentez l'appareil. Apr\u00e8s que la diode LED s'allume, appuyez sur le bouton et maintenez-le enfonc\u00e9 jusqu'\u00e0 ce que la diode commence \u00e0 clignoter p\u00e9riodiquement et uniform\u00e9ment.<br \/>\n\u00c0 ce moment, un nouveau r\u00e9seau wi-fi appara\u00eetra avec le nom \u00ab PLC Sonoff Basic \u00bb, connectez votre ordinateur \u00e0 ce r\u00e9seau.<br \/>\n<b class=\"spoiler_title\">D\u00e9codage de l'indication LED<\/b><\/p>\n<p>Indication LED<br \/>\n\u00c9tat de l'appareil<\/p>\n<p>clignotement double p\u00e9riodique<br \/>\npas de connexion au routeur<\/p>\n<p>brille en continu<br \/>\nconnexion \u00e9tablie avec le routeur<\/p>\n<p>clignotement p\u00e9riodique et uniforme<br \/>\nmode point d'acc\u00e8s wi-fi<\/p>\n<p>\u00e9teint<br \/>\npas d'alimentation<\/p>\n<p>Ouvrez votre navigateur internet et saisissez dans la barre d'adresse le texte \u00ab 192.168.4.1 \u00bb, acc\u00e9dez \u00e0 la page des param\u00e8tres r\u00e9seau de l'appareil.<\/p>\n<p>Remplissez les champs comme suit :<\/p>\n<ul>\n<li>\u00ab Nom du r\u00e9seau \u00bb et \u00ab Mot de passe \u00bb (pour lier l'appareil au routeur wi-fi domestique).<\/li>\n<li>\u00ab ID de l'appareil \u00bb et \u00ab Cl\u00e9 d'autorisation \u00bb (pour l'authentification de l'appareil sur le service MGT24).<\/li>\n<\/ul>\n<p>\n<b class=\"spoiler_title\">Exemple de configuration des param\u00e8tres r\u00e9seau de l'appareil<\/b><img decoding=\"async\" alt=\"Programmation visuelle pour Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/47d02b3883ce3896157da4dcc4fe7f40.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEnregistrez les param\u00e8tres et red\u00e9marrez l'appareil.<br \/>\nIci <noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/XTzGJI7y7t8?t=376\">un guide vid\u00e9o<\/a><\/noindex>.<\/p>\n<h3>\u00c9tape 4. Connexion des capteurs (facultatif)<\/h3>\n<p>\nLe micrologiciel actuel prend en charge jusqu'\u00e0 quatre capteurs de temp\u00e9rature ds18b20. Ici <noindex><a rel=\"nofollow\" href=\"http:\/\/mgt24.ru\/en\/docs\/#!sonoff.md#%D0%9F%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D1%82%D0%B5%D1%80%D0%BC%D0%BE%D0%B4%D0%B0%D1%82%D1%87%D0%B8%D0%BA%D0%B0_ds18b20_%D0%BA_Sonoff,_%D0%BC%D0%BE%D0%BD%D1%82%D0%B0%D0%B6%D0%BD%D1%8B%D0%B5_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B\">un guide vid\u00e9o<\/a><\/noindex> sur le montage des capteurs. Apparemment, cette \u00e9tape sera la plus compliqu\u00e9e, car elle n\u00e9cessitera de l'habilet\u00e9 manuelle et un fer \u00e0 souder.<\/p>\n<h2>Section II. Programmation visuelle<\/h2>\n<p><\/p>\n<h3>\u00c9tape 1. Cr\u00e9ation de sc\u00e9narios<\/h3>\n<p>\nL'environnement de programmation utilis\u00e9 est <noindex><a rel=\"nofollow\" href=\"https:\/\/developers.google.com\/blockly\/\">Blockly<\/a><\/noindex>, cet environnement est simple \u00e0 utiliser, donc pour cr\u00e9er des sc\u00e9narios simples, il n'est pas n\u00e9cessaire d'\u00eatre programmeur.<\/p>\n<p>J'ai ajout\u00e9 des blocs sp\u00e9cialis\u00e9s pour \u00e9crire et lire les param\u00e8tres de l'appareil. L'acc\u00e8s \u00e0 chaque param\u00e8tre se fait par son nom. Pour les param\u00e8tres des appareils distants, des noms composites sont utilis\u00e9s : \u00abparam\u00e8tre@appareil\u00bb.<br \/>\n<b class=\"spoiler_title\">Liste d\u00e9roulante des param\u00e8tres<\/b><img decoding=\"async\" alt=\"Programmation visuelle pour Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/6ba0f789a4d3e0a394f4773d2c401416.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Exemple de sc\u00e9nario de commutation cyclique d'une charge (1 Hz) :<br \/>\n<img decoding=\"async\" alt=\"Programmation visuelle pour Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/66876fcb1d029b1a06098a8f2118bba7.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nExemple de sc\u00e9nario synchronisant le fonctionnement de deux appareils distincts. En effet, le relais de l'appareil cible r\u00e9p\u00e8te le fonctionnement du relais de l'appareil distant.<br \/>\n<img decoding=\"async\" alt=\"Programmation visuelle pour Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/a44e81ce1301c7908ac9fa7437785162.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSc\u00e9nario pour un thermostat (sans hyst\u00e9r\u00e9sis) :<br \/>\n<img decoding=\"async\" alt=\"Programmation visuelle pour Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/0efa8a8f5e67f5ffd0812af5a2cececa.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPour cr\u00e9er des sc\u00e9narios plus complexes, vous pouvez utiliser des variables, des boucles, des fonctions (avec des arguments) et d'autres constructions. Je vais \u00e9viter de tout d\u00e9tailler ici, car il existe d\u00e9j\u00e0 beaucoup de <noindex><a rel=\"nofollow\" href=\"http:\/\/blockly.ru\/\">mat\u00e9riel p\u00e9dagogique sur Blockly<\/a><\/noindex>.<\/p>\n<h3>\u00c9tape 2. Ordre d'ex\u00e9cution des sc\u00e9narios<\/h3>\n<p>\nLe sc\u00e9nario fonctionne en mode continu, et d\u00e8s qu'il atteint sa fin, il red\u00e9marre. Il y a deux blocs qui peuvent temporairement suspendre le sc\u00e9nario, \u00abdelay\u00bb et \u00abpause\u00bb.<br \/>\nLe bloc \u00abdelay\u00bb est utilis\u00e9 pour des d\u00e9lais en millisecondes ou en microsecondes. Ce bloc respecte strictement l'intervalle de temps, bloquant le fonctionnement de tout l'appareil. <br \/>\nLe bloc \u00abpause\u00bb est utilis\u00e9 pour des d\u00e9lais en secondes (ou moins), et il ne bloque pas l'ex\u00e9cution d'autres processus dans l'appareil.<br \/>\nSi le sc\u00e9nario contient une boucle infinie sans \u00abpause\u00bb, l'interpr\u00e9teur initiera automatiquement une petite pause.<br \/>\nEn cas d'\u00e9puisement de la m\u00e9moire allou\u00e9e, l'interpr\u00e9teur arr\u00eatera l'ex\u00e9cution de ce sc\u00e9nario vorace (faites attention aux fonctions r\u00e9cursives).<\/p>\n<h3>\u00c9tape 3. D\u00e9bogage des sc\u00e9narios<\/h3>\n<p>\nPour d\u00e9boguer un script d\u00e9j\u00e0 charg\u00e9 dans l'appareil, il est possible de lancer un pas \u00e0 pas de la trace de programme. Cela peut \u00eatre extr\u00eamement utile lorsque le comportement du script ne correspond pas \u00e0 ce que l'auteur avait pr\u00e9vu. Dans ce cas, le pas \u00e0 pas permet \u00e0 l'auteur de localiser rapidement la source du probl\u00e8me et de corriger l'erreur dans le script.<\/p>\n<p>Script de calcul de la factorielle en mode d\u00e9bogage :<br \/>\n<img decoding=\"async\" alt=\"Programmation visuelle pour Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/ea6e23729fd530b79b89c9481e78bd64.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nL'outil de d\u00e9bogage est tr\u00e8s simple et se compose de trois boutons principaux : \u00ab d\u00e9marrer \u00bb, \u00ab un pas en avant \u00bb et \u00ab arr\u00eater \u00bb (n'oublions pas aussi les boutons \u00ab entrer \u00bb et \u00ab quitter \u00bb du mode d\u00e9bogage). En plus de la trace pas \u00e0 pas, il est possible de d\u00e9finir un point d'arr\u00eat sur n'importe quel bloc (en cliquant avec la souris sur le bloc).<br \/>\nPour afficher les valeurs actuelles des param\u00e8tres (capteurs, relais) sur le moniteur, utilisez le bloc \u00ab print \u00bb.<br \/>\nIci <noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/2mK6gvqe_18\">vid\u00e9o d'introduction<\/a><\/noindex> sur l'utilisation du d\u00e9bogueur.<\/p>\n<h2>Section pour les curieux. Qu'est-ce qui se cache sous le capot ?<\/h2>\n<p>\nPour que les scripts fonctionnent sur l'appareil cible, un interpr\u00e9teur de bytecode et un assembleur de 38 instructions ont \u00e9t\u00e9 d\u00e9velopp\u00e9s. Dans le code source de blockly, un g\u00e9n\u00e9rateur de code sp\u00e9cialis\u00e9 a \u00e9t\u00e9 int\u00e9gr\u00e9, qui convertit les blocs visuels en instructions assembleur. Ensuite, ce programme assembleur est transform\u00e9 en bytecode et transmis \u00e0 l'appareil pour ex\u00e9cution.<br \/>\nL'architecture de cette machine virtuelle est assez simple et il n'est pas particuli\u00e8rement utile de la d\u00e9crire, vous trouverez de nombreux articles sur la conception de machines virtuelles simples sur Internet.<br \/>\nPour la pile de ma machine virtuelle, j'alloue g\u00e9n\u00e9ralement 1000 octets, ce qui est plus que suffisant. Bien s\u00fbr, des r\u00e9cursions profondes peuvent \u00e9puiser n'importe quelle pile, mais il est peu probable qu'elles aient une application pratique.<\/p>\n<p>Le bytecode final est assez compact. Par exemple, le bytecode pour le calcul de la m\u00eame factorielle ne fait que 49 octets. Voici sa forme visuelle de repr\u00e9sentation :<br \/>\n<img decoding=\"async\" alt=\"Programmation visuelle pour Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/1c6a8b693cbf2131f1f1369d97ad034b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEt voici son programme assembleur :<\/p>\n<pre><code class=\"javascript\">shift -1\nldi 10\ncall factorial, 1\nprint\nexit\n:factorial\nld_arg 0\nldi 1\ngt\nje 8\nld_arg 0\nld_arg 0\nldi 1\nsub\ncall factorial, 1\nmul\nret\nldi 1\nret\n<\/code><\/pre>\n<p>Si la forme assembleur n'a pas de valeur pratique, l'onglet \u00ab javascript \u00bb, en revanche, offre une vue plus famili\u00e8re que les blocs visuels :<\/p>\n<pre><code class=\"javascript\">function factorial(num) {\n  if (num &gt; 1) {\n    return num + factorial(num - 1);\n  }\n  return 1;\n}\n\nwindow.alert(factorial(10));\n<\/code><\/pre>\n<p>En ce qui concerne la performance. Lors de l'ex\u00e9cution d'un sc\u00e9nario simple de clignotement, j'ai obtenu une onde de 47 kHz sur l'oscilloscope (avec une fr\u00e9quence d'horloge du processeur de 80 MHz).<br \/>\n<img decoding=\"async\" alt=\"Programmation visuelle pour Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/961a50c7ef269265443e078a1a81291a.jpg\" style=\"display:block;margin: 0 auto;\" \/><img decoding=\"async\" alt=\"Programmation visuelle pour Sonoff Basic\" src=\"\/wp-content\/uploads\/2019\/05\/a416044b4cea01121e04e27ae7d1fef2.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nJe consid\u00e8re que c'est un bon r\u00e9sultat, en tout cas, cette vitesse est presque dix fois plus rapide que celle de <noindex><a rel=\"nofollow\" href=\"http:\/\/esp8266freq.blogspot.com\/2016\/12\/esp-speed-compare-in-lua-micropython.html\">Lua<\/a><\/noindex> et <noindex><a rel=\"nofollow\" href=\"https:\/\/www.espruino.com\/Performance\">Espruino<\/a><\/noindex>.<\/p>\n<h2>Partie finale<\/h2>\n<p>\nPour conclure, je dirais que l'utilisation de sc\u00e9narios nous permet non seulement de programmer la logique de fonctionnement d'un appareil individuel, mais aussi de relier plusieurs appareils en un seul m\u00e9canisme, o\u00f9 certains appareils influencent le comportement des autres. <br \/>\nJe souligne \u00e9galement que la m\u00e9thode de stockage des sc\u00e9narios choisie (directement dans les appareils eux-m\u00eames et non sur un serveur) facilite le changement d'appareils fonctionnant d\u00e9j\u00e0 vers un autre serveur, par exemple un Raspberry personnel, ici <noindex><a rel=\"nofollow\" href=\"http:\/\/mgt24.ru\/en\/docs\/#!raspberry.md\">l'instruction<\/a><\/noindex>.<\/p>\n<p><i>C'est tout, je serais ravi d'entendre des conseils et des critiques constructives.<\/i><br \/>\n<br \/>Source : <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/436272\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0421\u0442\u0430\u0442\u044c\u044f \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0438\u0437 \u0434\u0435\u0448\u0451\u0432\u043e\u0433\u043e \u043a\u0438\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440. \u0422\u0430\u043a\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e \u043d\u0430\u0439\u0434\u0451\u0442 \u0441\u0432\u043e\u0451 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043a\u0430\u043a \u0432 \u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438, \u0442\u0430\u043a \u0438 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0437\u0430\u043d\u044f\u0442\u0438\u0439 \u043f\u043e \u0448\u043a\u043e\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u043a\u0435. \u0414\u043b\u044f \u0441\u043f\u0440\u0430\u0432\u043a\u0438, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 Sonoff Basic \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c \u0447\u0435\u0440\u0435\u0437 \u043a\u0438\u0442\u0430\u0439\u0441\u043a\u0438\u0439 \u043e\u0431\u043b\u0430\u0447\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441, \u043f\u043e\u0441\u043b\u0435 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u043c\u043e\u0439 \u043f\u0435\u0440\u0435\u0434\u0435\u043b\u043a\u0438, \u0432\u0441\u0451 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0435 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0441 \u044d\u0442\u0438\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\u043c \u0441\u0442\u0430\u043d\u0435\u0442 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":24803,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-33046","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0421\u0442\u0430\u0442\u044c\u044f \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0438\u0437 \u0434\u0435\u0448\u0451\u0432\u043e\u0433\u043e \u043a\u0438\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/vizualnoe-programmirovanie-dlya-sonoff-basic\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0412\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u043b\u044f Sonoff Basic | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0421\u0442\u0430\u0442\u044c\u044f \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0438\u0437 \u0434\u0435\u0448\u0451\u0432\u043e\u0433\u043e \u043a\u0438\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/vizualnoe-programmirovanie-dlya-sonoff-basic\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:50:27+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:50:27+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Programmation visuelle pour Sonoff Basic | ProHoster","description":"Article sur comment un appareil chinois bon march\u00e9.","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/vizualnoe-programmirovanie-dlya-sonoff-basic","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"fr_FR","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0412\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u043b\u044f Sonoff Basic | ProHoster","og:description":"\u0421\u0442\u0430\u0442\u044c\u044f \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0438\u0437 \u0434\u0435\u0448\u0451\u0432\u043e\u0433\u043e \u043a\u0438\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430.","og:url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/vizualnoe-programmirovanie-dlya-sonoff-basic","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:50:27+00:00","article:modified_time":"2019-10-31T18:50:27+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"33046","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 13:45:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:47:29","updated":"2026-01-21 13:45:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/33046","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/comments?post=33046"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/33046\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media\/24803"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=33046"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=33046"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=33046"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}