Comment construire une maison intelligente et ne pas devenir fou

image

Le mobilier intelligent, qui s'occupe lui-même de l'ordre dans la maison, est un incontournable pour presque toutes les images futuristes. En fait, un climat autorégulé, des lumières automatiques allumées et éteintes et une commande vocale des appareils électroménagers - tout cela peut être configuré maintenant. Mais il faudra un peu d'expérience, des connaissances de base dans le domaine de la technologie et parfois de la programmation, ainsi que toute une mer de fantaisie. Dans mon cas, je l'ai fait pour que seul le fantasme soit suffisant, mais avant tout ...

Je me suis intéressé à l'idée d'une «maison intelligente» il y a environ cinq ans. Au début, j'ai fait le système le plus simple. Elle contrôlait la lumière dans le couloir et la salle de bain par le capteur de mouvement, la hotte par le capteur d'humidité et aussi la station météo - à cette époque, tout le monde en était fou. Chaque bricolage qui se respecte devait faire une station météo.

Tout d'abord, j'ai équipé l'appartement d'un relais contrôlé pour allumer automatiquement la lumière dans le couloir et la salle de bain. Cela ressemblait à ceci: un capteur se tenait dans le couloir, le second dans la salle de bain.

Si quelqu'un allait dans la salle de bain, le capteur du couloir a détecté son mouvement et a immédiatement allumé la lumière dans le couloir et dans la salle de bain. En même temps, si personne n'est entré dans la salle de bain, cela a déjà été corrigé par le capteur situé à l'intérieur de la salle de bain. Après 15 secondes, la lumière s'est éteinte là-bas. Si une personne entrait dans la salle de bain, la lumière dans le couloir s'éteignait après une minute. 

J'ai aussi pensé à de tels cas si quelqu'un réfléchissait trop en étant assis sur un «ami blanc» dans la salle de bain (j'avais une salle de bain combinée). Pour cela, la lumière dans la salle de bain a été divisée en deux groupes. L'un s'est éteint 3 minutes après que le capteur dans la salle de bain a cessé de détecter les mouvements, l'autre après 5 minutes. Donc, pendant plus de cinq minutes pour rester immobile dans la salle de bain à la lumière n'a pas fonctionné. Très discipliné. Cependant, vous pouvez toujours bouger votre main et continuer à penser à l'essentiel.

Un capteur d'humidité a également fonctionné dans la salle de bain, qui a automatiquement démarré la hotte si l'humidité dépassait 50%. Dès que la pièce a été ventilée à 45% d'humidité, la hotte s'est éteinte. 

La direction est passée - ou plutôt a essayé de passer - par la plate-forme Arduino. 


Photo prise sur le site Web du fabricant

Presque immédiatement, il est devenu clair que cette plateforme ne visait pas uniquement à créer une maison intelligente. Le principal inconvénient de travailler avec Arduino était que la plate-forme fonctionnait sans réseau, et sans lui, aucun écosystème vraiment unifié ne pouvait être obtenu. Bien sûr, je pourrais refaire l'Arduino et ajouter un support réseau, mais pourquoi? J'ai choisi un chemin plus simple et j'ai changé cette plateforme en une autre. 

Ayant suffisamment joué avec Arduino, j'ai reconnecté la maison à la carte ESP-8266. En fait, c'est le même Arduino, mais avec Wi-Fi +, il est plus compact. Ce module est toujours populaire auprès des fabricants de gadgets pour les maisons intelligentes. 


Photo prise sur Internet

En parallèle, j'ai essayé de rendre la maison intelligente encore plus intelligente. Par exemple, résolvez le problème du chauffage au sol 24h / 24 ou d'un climatiseur toujours allumé. Pour cela, j'ai acheté des thermostats WiFi chinois Beok. Ils ont permis d'éteindre le chauffage au sol à distance, mais ont dû le faire via une application spéciale dans le téléphone. 

J'ai résolu le problème de la télécommande du climatiseur à l'aide de l'émulateur de signal infrarouge Broadlink RM Pro. Rien de compliqué: vous enregistrez un signal du panneau de contrôle de la climatisation vers l'émulateur (il peut y avoir n'importe quelle technique contrôlée par la télécommande), puis sur le téléphone, vous appuyez sur un bouton dans l'application, et l'émulateur lit le signal précédemment enregistré. Dans le cas du climatiseur, j'ai eu l'occasion de l'allumer et de l'éteindre, de régler le mode de fonctionnement et de définir d'autres paramètres à distance.  

Commutateurs Livolo également installés. Avec leur aide, j'ai également pu allumer et éteindre les lumières par voie hertzienne. 



Parmi les inconvénients: pour le contrôle, j'ai dû réinstaller une application distincte et il n'y a pas eu de retour, c'est-à-dire que je ne pouvais pas voir que la lumière était allumée si elle était allumée ou éteinte par quelqu'un manuellement à l'aide d'un interrupteur conventionnel. 

Divers relais WiFi contrôlés tels que Sonoff ou Tuya et même le coûteux Danalock pour verrouiller l'appartement, qui nécessitait également une application séparée, sont également apparus dans la maison. Presque toutes ces petites choses (à l'exception de Danalock) que j'ai achetées sur le site chinois Aliexpress, où elles coûtaient un sou et me permettaient d'expérimenter sans investissements sérieux. 

L'un des premiers achats relativement sérieux a été le reniflard Tion. Avec le contrôle automatique du CO2, il a plus ou moins fait face, mais la température du chauffage de l'air en hiver devait constamment être ajustée manuellement. Et encore une fois - pour gérer, il était nécessaire d'installer une application distincte. 


La photo a été prise sur le site Web du fabricant.

Tous les capteurs et contrôleurs que j'ai essayés à l'époque, je ne m'en souviens même pas. Mon smartphone était encombré d'applications pour les gérer. C'était tout un zoo, qui devait constamment suivre. J'ai essayé de combiner la gestion de ces applications à travers toutes sortes d'agrégateurs comme HomeBridge / MajorDomo, etc. Mais tout le monde a montré ses lacunes importantes:

  • interface peu conviviale, et parfois juste une interface terrible
  • manque de support pour toutes les applications utilisées
  • connexion complexe

La recherche d'une application de gestion centralisée d'un tel volume de capteurs, contrôleurs et autres systèmes de contrôle n'a pas abouti. Ensuite, j'ai essayé de me rappeler de façon indépendante l'un des appareils «intelligents» - le reniflard très Tion. J'ai écrit un script pour contrôler automatiquement la température de chauffage en fonction de la température ambiante. Le fait est que le système de ventilation n'avait pas de réglage automatique de la température de chauffage de l'air. Il s'est avéré que la pièce était soit super chaude, soit super froide. Il n'y avait aucun moyen de parvenir à un terrain d'entente. Ici, à l'aide d'un script écrit et d'une pause, ce problème a été résolu. 

Le succès avec un script pour le reniflard m'a incité à créer ma propre application pour gérer une maison intelligente. L'objectif principal était de créer un programme avec une intégration pratique des appareils intelligents, des conditions d'automatisation à plusieurs niveaux et la capacité de gérer tous les appareils de la maison. 

Pendant environ un an, j'ai moi-même été engagé dans le développement d'applications back-end et front-end. 

Le côté serveur est écrit en NodeJS. Le choix en faveur de NodeJS a été fait en raison de la communauté développée, dans laquelle il existe des protocoles mis en œuvre pour presque tous les appareils sur le marché. La partie client est écrite en angulaire (ionique) et fonctionne sur Android / iOS. En général, l'architecture client-serveur classique.

Sur une note:Au cours du travail sur l'application, j'ai eu un aperçu technique de l'utilisation des impuretés lors de l'écriture des pilotes de périphérique. Je ne sais pas, peut-être pour certains, c'est élémentaire, mais il m'est vraiment devenu plus facile de respirer.

J'ai réécrit les pilotes de périphérique plusieurs fois jusqu'à ce que j'arrive à quelque chose comme ça:

Exemple de code d'un des appareils
import {XiaomiSubdeviceV2} from '../xiaomi.subdevice.v2';
import {load_power} from '../capabilities/load_power';
import {power_plug} from '../capabilities/power_plug';
import {PowerPurpose} from '../../base/PowerPurpose';
import {Relay} from '../../base/types/Relay';
import {HomeKitAccessory} from '../../hap/HomeKitAccessory';
import {Lightbulb2Accessory} from '../../hap/Lightbulb2Accessory';
import {Yandex} from '../../yandex/Yandex';
import {YandexLightOrSwitch} from '../../yandex/YandexLightOrSwitch';

export class LumiPlug extends XiaomiSubdeviceV2.with(Relay, power_plug, load_power, PowerPurpose,
  HomeKitAccessory, Lightbulb2Accessory,
  Yandex, YandexLightOrSwitch) {

  onCreate() {
    super.onCreate();
    this.model = 'Mi Smart Plug';
    this.class_name = 'lumi.plug';
    this.driver_name = 'Mi Smart Plug';
    this.driver_type = 3;
    this.parent_class_name = 'lumi.gateway';
  }

  getIcon() {
    return 'socket';
  }
}


L'essentiel est que, malgré l'abondance de différents appareils, ils font tous à peu près la même chose et fournissent environ les mêmes informations. Par conséquent, toutes les capacités des appareils ont été placées dans des impuretés distinctes, dont le pilote final se compose finalement. Par exemple, l'application prend en charge de nombreux appareils dotés de la fonction marche / arrêt. Il est fabriqué dans une impureté distincte et est utilisé de manière identique pour tous les appareils. Élémentaire, Watson!

Qu'est-ce que cela a donné: tout pilote d'un nouveau périphérique est écrit assez rapidement et facilement, car tout est standardisé et il n'est pas nécessaire de s'inquiéter du stockage ultérieur des informations reçues. Pour des protocoles complètement nouveaux (que je n'avais pas encore), des impuretés sont également écrites qui sont basées sur celles existantes. Ils reçoivent déjà des informations sur l'appareil et les transmettent plus loin dans la chaîne. Cette approche nous a permis de réduire la quantité de code de dizaines de fois (au départ, chaque pilote était une copie d'un pilote similaire).

Alors, petit à petit, j'ai parcouru tous les cercles de l'enfer pour finir le support et le front. Lorsque l'application a acquis un aspect assez tolérable, je me suis dit: pourquoi ne pas partager votre développement avec le public? Des partenaires ont été trouvés pour le projet et des assistants pour évoquer la candidature. 

Tout d'abord, il fallait penser à la conception de l'application. Pour ce faire, j'ai dû me tourner vers des designers professionnels. Je croyais naïvement que cela prendrait de 3 à 4 mois, mais finalement le processus a traîné en longueur. Malgré le fait que la structure de l'application n'a pas beaucoup changé par rapport à la source d'origine, tout a dû être refait.

En parallèle, j'ai - non pas seul, mais avec une équipe de partenaires de projet - acheté les appareils les plus populaires pour une maison intelligente et ajouté une application si elle ne supportait pas ces gadgets. Bientôt, cependant, il est devenu clair qu'il n'y aurait pas assez d'argent pour tous les appareils intelligents.Nous avons donc décidé de discuter avec les acteurs existants du marché et de convenir gratuitement d'échantillons de test d'équipements. Nous n'avons pas été refusés et Wirenboard et MiMiSmart sont devenus les premiers fournisseurs sérieux.

Donc, avec les gars, j'ai créé une nouvelle application pour la domotique intelligente avec une architecture client-serveur classique, qui est mise sur n'importe quelle plate-forme, et avec un design moderne et pratique. Rencontrez le BARY *.

* Le nom ne vient pas du nom de Bari Alibasov, mais du personnage du livre d'Arthur C. Doyle «Le chien des Baskerville» du majordome de Barrymore - votre «majordome intelligent» personnel. 

Que s'est-il passé: description de l'application avec de belles images et des chats


L'écran principal est un tableau de bord pratique avec la possibilité de visualiser et de gérer les paramètres des salles automatisées. Pratique - c'est le mot clé, car les tableaux de bord des applications avec lesquelles j'ai essayé de travailler devaient être configurés manuellement. Pas le passe-temps le plus agréable, la



maison peut être divisée en zones et les zones en pièces. Chaque pièce a différents paramètres: température, humidité, consommation électrique actuelle, etc., ainsi que des actions sélectionnées. Si nous cliquons sur la pièce, nous tomberons dans la liste des appareils qui y sont connectés:



Ici, vous pouvez allumer / éteindre l'appareil, et voir également son paramètre principal. Lors du passage à un appareil, un contrôle plus détaillé avec une liste complète des fonctions sera disponible. 

Tous les appareils sont connectés en utilisant les mêmes paramètres. Pour de nombreux appareils, il existe un assistant de connexion. Pas de configs pour ceux qui aiment plus chaud! Fondamentalement, il s'agit de spécifier l'adresse IP de l'appareil (pour de nombreux appareils, il existe une recherche automatique). Si l'adresse IP change soudainement, alors ça va, le serveur la trouvera automatiquement à la nouvelle adresse.



Il y a intégration avec Apple HomeKit, il est utilisé pour le contrôle vocal via Siri. Tous les appareils pris en charge dans BARY s'intègrent à Apple HomeKit en un seul clic (bonjour aux fans de HomeBridge). Pas sans le soutien de Yandex Alice. Elle était plus sympathique en termes de commandes d'interface. Par exemple, Siri ne veut pas fermer les rideaux avec la commande "fermer les rideaux", ne peut pas définir un certain niveau de volume sur le téléviseur et ainsi de suite. Yandex.Alice n'a pas de tels kookies. 

Pour la commodité de la gestion des terrains intelligents, l'automatisation a été mise en place: règles pour l'exécution de toutes les actions lors du respect d'un ensemble de conditions. Les automatisations sont logiques, à plusieurs niveaux, c'est-à-dire vous pouvez faire quelque chose comme: "Condition 1 et (Condition 2 ou Condition 3)." Le tout dans un bel éditeur d'automatisation logique:



Personnellement, j'avais déjà une centaine de programmes d'automatisation, et chacun d'entre eux peut être trouvé rapidement, car tout est regroupé par pièce et par appareil: les



scripts sont également pris en charge dans l'application. Un scénario est un complexe d'actions qui est effectué sous certaines conditions de l'automatisation. Pour ma maison intelligente, j'utilise uniquement l'ensemble standard:



j'ai quitté la maison / rentrer chez moi via l'Apple TV - il s'allume / s'éteint automatiquement lorsque tout le monde quitte la maison ou que quelqu'un rentre chez lui. Vous rentrez chez vous et l'annonceur aux yeux tristes de Channel 1 vous y rencontre déjà. Bien grande?

Eh bien, quel genre de maison intelligente sans la possibilité de regarder un chat?



Vous pouvez connecter n'importe quelle caméra capable de fournir un flux RTSP. 

Séparément, je veux parler du bloc des statistiques. Cela s'est avéré assez informatif:



dans la légende, la barre rouge est l'écart par rapport aux valeurs moyennes des six derniers mois, la barre grise est le débit dans les valeurs moyennes.

Sur la photo, mes statistiques de septembre. Il faisait froid, le chauffage n'avait pas encore été fourni, donc le chauffage était constamment allumé à la ventilation.

Vous pouvez également voir les statistiques de n'importe quel appareil connecté:



Au fait, la disponibilité de l'automatisation et des statistiques a réduit les coûts d'électricité de plus de 2 fois.

Tous les événements survenus sont stockés et peuvent être consultés:



Également sur la page principale, il y a un onglet spécial qui recueille tous les principaux indicateurs sélectionnés par l'utilisateur:



Soit dit en passant, la mesure de l'eau est mise en œuvre via le capteur d'ouverture de porte / fenêtre Xiaomi. Pour ce faire, au lieu d'un commutateur à lames, la sortie du compteur d'impulsions est soudée à un contact spécial et un compteur virtuel est créé dans BARY, dans lequel vous pouvez spécifier ce capteur comme source d'impulsions.

Architecture et sécurité


L'échange client-serveur est crypté à l'aide de la technologie AES et le serveur est situé directement à l'intérieur de la salle automatisée. À mon avis, cela protège le système autant que possible contre les interventions indésirables de tiers.

S'il n'y a pas d'adresse IP blanche, vous pouvez connecter le cloud. Il agira comme un intermédiaire, sans possibilité de décrypter les commandes, car les clés sont sur le serveur. 

Où obtenir


Le côté serveur peut être exécuté sur presque toutes les plateformes existantes - merci NodeJS. Pour les plates-formes les plus courantes, nous avons préparé des scripts qui feront tout le travail automatiquement.

Pour Raspberry Pi basé sur Debian Stretch:

wget -qO- "http://bary.io/install?target=pi" | sudo bash

le paramètre cible est responsable de la plate-forme cible et peut avoir les valeurs suivantes:
Raspberry Pi (Debian Stretch)
pi
Raspberry Pi (Debian Buster)
pi_buster
Tinker Board (Debian Stretch)
tb
Tableau Wiren (Debian Stretch)
wb

Si quelqu'un veut installer sur une autre plateforme, écrivez-nous et nous mettrons à jour le script. Si vous rencontrez des difficultés - écrivez également. Nous avons vraiment besoin de commentaires. 

L'application est disponible gratuitement sur Google Play et l' App Store . Peut-être qu'à la fin de l'année, la demande sera payée.

Conclusion


Pourquoi ai-je écrit cet article? L'objectif principal est d'obtenir des commentaires de votre part.

Actuellement, le projet se développe rapidement et toute notre équipe essaie de maximiser la liste des équipements pris en charge disponibles sur le marché. Bien que je ne sois pas seul à travailler sur le projet, les tâches sont restées les mêmes: créer l'application la plus pratique qui prend en compte les souhaits et résout les problèmes de tous ceux qui ont participé à l'installation indépendante de solutions intelligentes pour la maison.

Nous sommes ouverts au dialogue sur les intégrations possibles et sommes prêts à mettre en œuvre le plus rapidement possible le support matériel des entreprises intéressées par le partenariat. Vous obtenez une application prête à l'emploi et ne perdez pas de temps à développer des logiciels. Et nous proposons une large gamme d'appareils pris en charge pour tous les goûts et toutes les couleurs. Tout est bien. 

Plans immédiats et arc-en-ciel


Actuellement, mon équipe et moi sommes activement engagés dans le développement d'une unité de stockage vidéo. Il sera possible de placer la vidéo dans votre stockage à domicile ou dans un service cloud. Je pense qu'au début de l'année prochaine il sera possible de parler d'une nouvelle version. Doit-il être possible de passer en revue les meilleures perles d'un chat qui se divertit pendant que les propriétaires ne sont pas à la maison? 

L'année prochaine, nous prévoyons plus d'intégrations avec divers services: une liste d'achats et de choses à faire, un calendrier, etc. Il est venu, a regardé un écran - et tout était bien en vue. Plusieurs projets clés en main ont montré que cette tâche est pertinente.

Nous prévoyons également de démarrer la production de contrôleurs avec des logiciels préinstallés pour les solutions batch d'une maison intelligente (actuellement la solution batch "software + hardware" est disponible avec nos partenairesConseil Wiren .

Et la prise en charge de Google Home et d'Amazon Alexa. Eh bien, l'expansion de la gamme d'équipements pris en charge, bien sûr.

Soit dit en passant, peu importe, vous pouvez voir la liste des appareils pris en charge (non complète) sur notre site Web , et si quelque chose ne se trouve pas dans la liste, alors demandez dans le groupe télégramme .

Nous serons très reconnaissants si vous partagez ce qui vous manque dans les applications existantes et quelles fonctions vous ajouteriez à notre place.

Merci à tous d'avoir lu. Rendons nos maisons plus intelligentes ensemble!

All Articles