Maison intelligente. Cerveaux
Lorsque tous les fils sont posés, les interrupteurs sont installés, le panneau électrique est fait (tout cela est décrit dans la première partie ), puis vous pouvez passer à la chose la plus intéressante - programmer le contrôleur. Comme je n'ai pas utilisé de contrôleur spécialisé pour une maison intelligente, mais un contrôleur d'automatisation industrielle, j'ai dû programmer à partir de zéro - il y a des entrées, il y a des sorties, tout le reste doit être programmé - que faire en appuyant sur un bouton (interrupteur sans fixation), comment programmer un gradateur , scripts, etc.
Mais tout d'abord. Initialement, l'architecture de ma maison intelligente comprenait les composants suivants:- contrôleur industriel Bélier de PLK110-32 (cerveau principal)
- Module de sortie analogique MU110-6U (utilisé pour contrôler les gradateurs)
- module pour l'entrée de signaux analogiques MV110-8A (ajouté plus tard pour prendre des mesures à partir de capteurs).
Tout cela est connecté ensemble via RS-485 et la perforation Modbus RTU. Le contrôleur principal est connecté à Ethernet pour la communication avec le monde extérieur.Pour contrôler depuis le téléphone, j'ai d'abord utilisé Iridium Mobile , que les fabricants m'ont gentiment fourni (oui, en utilisant ma position officielle à des fins personnelles!). Plus tard, je l'ai remplacé par un service Web basé sur Node JS. Plus tard, nous avons également ajouté une partie sans fil basée sur z-wave. J'ai l'intention d'écrire sur tout cela séparément, mais pour l'instant nous revenons à nos moutons.La programmation du contrôleur est effectuée dans l'environnement CoDeSys, qui prend en charge 5 langages spécialisés, dont j'ai maîtrisé deux - FBD (Function Block Language) et ST (Pascal-like language). En fait, au début, je pensais ne me contenter que de FBD, car la programmation dans ce langage ressemble à une représentation graphique dans un éditeur.
Ainsi, le sous-programme FBD (ou plutôt le bloc fonction) de traitement du commutateur dans le couloir ressemble à ceci. En plus d'allumer et d'éteindre la lumière dans le couloir, cet interrupteur est utilisé pour éteindre la lumière dans tout l'appartement. Une seule pression allume la lumière dans le couloir et une pression longue (1 sec) active la commande pour éteindre toutes les lumières.Au fur et à mesure que de plus en plus de fonctions et de capacités ont été ajoutées, je suis arrivé à la conclusion que le langage des diagrammes fonctionnels n'est pas du tout si pratique - il se révèle être un code lourd, la programmation est lente et le débogage est très gênant. Par conséquent, je suis progressivement passé au langage ST et je ne me tourne plus vers le langage FBD.À titre de comparaison, regardez comme ceci est un morceau du bloc fonction du gradateur dans le langage ST (d'accord, c'est une question complètement différente!):
Puisque nous parlons d'un gradateur, nous devons en parler spécifiquement. En fin de compte, il n'est pas du tout facile de trouver un gradateur (fer) adapté à une maison intelligente. Je n'ai pas pris en compte toutes sortes d'options consanguines, car toutes les fonctionnalités de base devraient être mises en œuvre sur les technologies de fil - j'ai écrit à ce sujet plus tôt. Le prix des gradateurs qui m'ont traversé ne m'a pas plu. De plus, il était nécessaire d'assurer la compatibilité avec ma maison intelligente. Au début, je me suis installé sur l'INSYTE LDD-400D, contrôlé par ModBus, ce qui m'a permis de le connecter directement au contrôleur sans modules supplémentaires, mais les amis qui l'ont utilisé dans leurs projets n'en ont pas très bien parlé, et en conséquence, j'ai décidé question avec un gradateur donc - mettez un relais à semi-conducteurs.
Le relais est contrôlé (via le module de sortie analogique) avec un signal 0-10V et délivre 10-220V respectivement. Veuillez noter que la tension minimale à la sortie du relais à semi-conducteurs n'est pas 0, mais 10 V - à cette tension, la spirale de la lampe à incandescence brille sensiblement. Ce problème est résolu comme suit: en plus du relais statique, le circuit contient également le relais intermédiaire (mécanique) habituel, et au niveau du programme, lorsqu'il est nécessaire d'éteindre complètement la lumière, le contrôleur éteint le relais intermédiaire et coupe le circuit.La deuxième difficulté avec l'organisation de la gradation de la lumière est de savoir comment faire une interface pratique, en tenant compte du fait que j'utilise un interrupteur conventionnel sans fixation comme contrôle.La première version de l'interface ressemblait à ceci (maintenant je ne me souviens plus exactement):- appui court - allume ou éteint la lumière (la lumière allumée au dernier niveau de luminosité)
- appui long lorsque la lumière est allumée - une diminution progressive de la luminosité, puis une augmentation nulle
- appui long lorsque la lumière est éteinte - augmentation en douceur de zéro
- appuyez deux fois pour allumer la lumière à pleine luminosité.
J'ai vécu avec cette option pendant plusieurs mois, mais je suis parvenu à la conclusion qu'elle n'est toujours pas très pratique et le plus souvent, seuls 3 modes sont utilisés - la lumière est allumée, la lumière est éteinte ou la lumière est allumée avec une fureur minimale. Par conséquent, j'ai implémenté une option discrète plus simple (qui reste jusqu'à présent):- appui court - allume / éteint la lumière (s'allume à pleine luminosité)
- appui long - allume la lumière à une luminosité de 25% et passe en mode gradateur;
- chaque pression suivante passe à l'étape suivante + 25%. Quittez le mode gradateur - par timeout.
Comme je l'ai dit dans un post précédent, le contrôle de boutons simples sans fixation n'est toujours pas la meilleure solution. En plus de l'exemple avec le variateur que je viens de citer, j'ai également mis en œuvre un scénario complexe pour allumer la lumière dans le salon. Nous préférons ne pas utiliser la lumière aérienne dans le salon et allumer immédiatement la lampe de bureau et les lumières dans le placard. J'ai automatisé ce processus et maintenant le contrôle de la lumière dans le salon ressemble à ceci:- un clic (si la lampe est éteinte) - allume la lampe et le rétro-éclairage
- un clic (si la lampe est allumée) - allume ou éteint la lumière supérieure
- une pression immédiatement après la seconde (lorsque le plafonnier est éteint) - éteint la lampe de bureau
- appui long - éteint toutes les lumières de la pièce
Les deux premiers points de ce scénario sont très adaptés du point de vue du modèle de comportement. Le dernier point est fait par analogie avec le couloir. Le troisième paragraphe est très controversé et n'est pas utilisé. Le problème est que la famille grogne, mais ce script est allée, mais pas un seul invité ne peut faire face à la lumière. Par conséquent, pour les scripts, vous avez besoin d'écrans tactiles ou de boutons multifonctions.Le système CoDeSys a la capacité de créer un panneau de visualisation et de contrôle. PLC110 ne prend pas en charge l'interface Web, la visualisation ne fonctionne donc que dans le complexe CoDeSys lui-même.
Voici à quoi ressemble le panneau de commande technique de ma maison intelligente. Technique, car au quotidien personne ne l'utilise. À une petite exception près, ce panneau sert d'interface à distance pour gérer une maison intelligente. Si je dois faire quelque chose à distance, je passe par TeamViewer à mon serveur domestique et j'utilise ce panneau. Un tel besoin survient très rarement, donc je n'ai même pas configuré d'accès à distance pour le service Web.En conclusion, le pour et le contre.Avantages:- Fiabilité - la solution a fait ses preuves (néanmoins, elle est construite sur une base de composants utilisée pour l'automatisation industrielle). Pendant tout ce temps, il n'y a pas eu un seul échec (!!!). Même après des surtensions, le système a démarré sans aucun problème.
- (, , ).
:Comme je l'ai dit dans le premier article, maintenant je regarderais de plus près les alternatives, mais si quelqu'un veut soudainement étudier cette solution, j'ai publié le code source fait dans CoDeSys sur github . (veuillez simplement être condescendant envers la qualité du code.Dans les parties suivantes - contrôle téléphonique et solutions sans fil. Source: https://habr.com/ru/post/fr389053/
All Articles