La partie 2 guide openhab débutant:, mqtt, z-wave règles et de la cartographie

Gratuit ne signifie pas toujours « pas aussi bon que payé », et OpenHAB ne fait pas exception. Le logiciel domotique open source dépasse de loin les capacités de tout autre système domotique sur le marché - mais il est difficile de se mettre en place. En fait, il peut être carrément frustrant.

Télécharger cet article entier en format PDF. Ne hésitez pas à le partager avec vos amis et votre famille.

Dans la partie 1 du guide, je vous ai traversé installer OpenHAB sur un Raspberry Pi, introduit les concepts de base de OpenHAB, et vous a montré comment ajouter vos premiers éléments dans le système. Aujourd`hui, nous allons va plus loin:Mise en route avec OpenHAB Home Automation sur Raspberry PiMise en route avec OpenHAB Home Automation sur Raspberry PiOpenHAB est une plate-forme domotique source mature, ouverte qui fonctionne sur une variété de matériel et est le protocole agnostique, ce qui signifie qu`il peut se connecter à presque tout matériel domotique sur le marché aujourd`hui.Lire la suite

  • Ajout de périphériques de Z-Wave
  • Ajout d`un contrôleur ultime Harmony
  • Présentation de règles
  • Présentation MQTT, et l`installation d`un courtier MQTT sur votre Pi, avec des capteurs sur un Arduino
  • Enregistrement des données et tracer le graphe

Video: openHAB 2 UI-driven Setup

Introduction à Z-Wave

Z-Wave a été le protocole domotique dominant depuis des années: il est fiable, a été largement développée, et travaille sur une gamme beaucoup plus que tous les autres produits de la maison intelligente. Il y a des centaines de capteurs Z-Wave disponibles pour vous qui exécutent un large éventail de tâches. OpenHAB pouvez travailler avec Z-Wave, mais il est embêtant de mettre en place, et la fiabilité est pas garantie.

Si vous envisagez l`achat d`une maison pleine de capteurs Z-Wave spécialement pour OpenHAB, je vous invite à reconsidérer sa position. Il peut travailler grand pour vous, ou il peut être en proie à des problèmes faibles mais persistantes. Au moins, ne pas acheter une maison pleine de capteurs jusqu`à ce que vous avez eu la chance d`essayer quelques-uns. La seule raison de choisir Z-Wave est si vous n`êtes pas 100% réglé sur OpenHAB, et que vous souhaitez laisser vos options ouvertes à l`avenir: Z-Wave par exemple fonctionne avec Samsung SmartThings plaque tournante, ainsi que des centres spécifiques Z-Wave tels que Homeseer, et une gamme d`autres options logicielles telles que Domoticz.Ce qui Smart Hub pour Home Automation est meilleur pour vous?Ce qui Smart Hub pour Home Automation est meilleur pour vous?Pendant un certain temps, les gens pensaient de l`idée que rien de plus qu`un gimmick, mais les rejets de produits récents ont montré que la domotique intelligente commence à la hauteur de ses promesses.Lire la suite

Bien que OpenHAB comprend une liaison de Z-Wave, vous devez toujours configurer le réseau Z-Wave premier, avant OpenHAB peut commencer à interroger pour les données. Si vous avez une carte contrôleur Rasberry, vous avez un logiciel fourni pour la configuration du réseau, donc nous ne couvrira pas ici. Si vous avez acheté un contrôleur Z-clé USB Aeotec ou similaire, vous n`avez probablement aucun logiciel inclus, alors lisez la suite.

Aeotec par Aeon Labs ZW090 Z bâton, Petit, BlancAeotec par Aeon Labs ZW090 Z bâton, Petit, BlancZ-onde adaptateur USB / firmware évolutivité Acheter sur Amazon 44,95 $

Si vous disposez déjà d`une configuration réseau Z-Wave, vous pouvez simplement brancher votre contrôleur dans le Pi et commencer à configurer la liaison et les éléments. Si ceci est votre première incursion dans Z-Wave, il est un peu plus complexe.

Tout d`abord, sur le côté du matériel: chaque dispositif de commande possède son propre moyen de couplage avec des dispositifs (techniquement connu comme « le mode d`inclusion », dans lequel est associé à un ID de noeud). Dans le cas de la Aotec Z-Stick, cela signifie débranchant du port USB, et en appuyant sur le bouton une fois pour le placer en mode d`inclusion. Puis prendre près de l`appareil que vous jumelant, et appuyez sur le bouton d`inclusion sur ce trop (Ce sera aussi varier: ma prise Everspring nécessite le bouton à appuyer 3 fois rapidement, de sorte que la leçon est ici pour lire le manuel de votre appareil).

Le voyant Z-Stick brièvement pour indiquer le succès. Cela pose des problèmes lors de rebranchant dans le Pi, comme un nouveau port est attribué. Redémarrez votre Pi pour le réinitialiser retour au port standard si vous trouvez qu`il a été dynamiquement réaffecté un autre. Mieux encore: ne branchez pas dans la Pi jusqu`à ce que vous avez fait tous les appariements matériels premier.

Installation HABmin et Z-Wave Manchettes

Depuis OpenHAB ne fait pas un utilitaire de configuration pour Z-Wave, nous allons installer un autre outil de gestion web qui fait - ce qu`on appelle HABmin. Rendez-vous sur le dépôt Github HABmin télécharger la version actuelle. Une fois que vous avez décompressé, vous trouverez 2 .pot fichiers dans le répertoire addons - ceux-ci devraient placées dans le répertoire addons correspondant dans votre part OpenHAB Accueil (Si vous utilisez également la Aotec Gen5 Z-Stick, assurez-vous que vous avez au moins la version 1.8 du Z-Wave de liaison).

Ensuite, créez un nouveau dossier dans le répertoire webapps, et a appelé « habmin » (minuscule est important). Copiez le reste des fichiers téléchargés en là.

Note: Il y a aussi un HABmin 2 en cours de développement. L`installation est la même, mais avec un addon .jar. Il pourrait être intéressant d`essayer à la fois juste pour voir que vous préférez.

Si vous n`avez pas déjà, branchez votre contrôleur dans votre Pi. Tapez ce qui suit pour trouver le bon port.

ls / dev / tty *

Vous cherchez quoi que ce soit avec USB au nom, ou dans mon cas particulier, le Z-bâton lui-même présenté comme / Dev / ttyACM0 (Un modem). Il pourrait être plus facile de faire la commande une fois avant de vous le branchez, et une fois après, afin que vous puissiez voir ce qui change si vous n`êtes pas sûr.

devtty

Ouvrez le fichier de configuration OpenHAB et modifier la section sur Z-Wave, décommentant les deux lignes et de mettre votre adresse de périphérique. Une dernière étape pour moi était de permettre à l`utilisateur OpenHAB pour accéder au modem.

sudo usermod -a -G dialout openhab

Maintenant, pour lancer tout en action, redémarrez OpenHAB

Service openhab restart sudo

Si tout va bien, si vous vérifiez le journal de débogage, vous verrez quelque chose comme ça. Félicitations, vous êtes maintenant parler Z-Wave. Vous trouverez également le journal de débogage inondé de messages de différents noeuds Z-Wave. Commençons par vérifier HABMIN pour voir ce qu`il a trouvé: http: //openhab.local: 8080 / habmin / index.html (en remplacement openhab.local avec votre nom d`hôte Raspberry Pi ou l`adresse IP).

Zwave démarrage dans le journal openhab

Il y a beaucoup de choses à voir dans HABMIN, mais nous ne sommes vraiment préoccupés par la Configuration -gt; Liaisons -gt; Z-Wave -gt; Dispositifs onglet, comme vous pouvez le voir ci-dessous. Développez le nœud à modifier l`emplacement et l`étiquette de nom pour votre commodité.

modifier le nom du périphérique

Configuration des articles Z-Wave

Chaque dispositif Z-Wave aura une configuration spécifique pour OpenHAB. Heureusement, la plupart des appareils ont déjà été explorés et il y aura des exemples là pour le vôtre déjà. Configuration de périphériques personnalisés qui ne sont pas reconnues est bien au-delà de la portée de ce guide, mais supposons qu`il est pris en charge pour l`instant.

Tout d`abord, j`ai un interrupteur d`alimentation de base Everspring AN158 et le mètre sur le nœud 3. Une recherche sur Google m`a conduit rapidement à un billet de blog sur Wetwa.re, avec une configuration de l`élément de l`échantillon. Je me suis adapté cela comme suit:

commutateur Dehumidifier_Switch "déshumidificateur" {= ZWave"3: command = switch_binary"} Nombre Dehumidifier_Watts "la consommation d`énergie Déshumidificateur [% .1f W]" {= ZWave"3: command = mètre" }

Parfait.

La prochaine étape est un Aeotec Gen5 multi-capteurs.

Aeon Labs Aeotec Z-Wave Gen5 multi-capteurs (Z-Wave Plus)Aeon Labs Aeotec Z-Wave Gen5 multi-capteurs (Z-Wave Plus)La détection de mouvement, sensibilité à la lumière, la température et l`humidité - envoie des signaux à moins de 6 dispositifs associés Z-Wave, ces capteurs ne sont pas compatibles avec le "CLIN D`ŒIL" centre Acheter sur Amazon

Pour celui-ci, j`ai trouvé une configuration de l`échantillon à iwasdot.com, et mon multicapteur est sur le nœud 2.

nombre Hallway_Temperature "Couloir température [% .1f ° C]"  (Hall d`entrée, température) {= ZWave"2: 0: Commande = sensor_multilevel, SENSOR_TYPE = 1, sensor_scale = 0"} Nombre Hallway_Humidity "Hall d`entrée Humidité [% .0f %%]"  (Hall d`entrée, humidité) {= ZWave"2: 0: Commande = sensor_multilevel, SENSOR_TYPE = 5"} Nombre Hallway_Luminance "Hall d`entrée Luminance [% .0f Lux]" 																 (Hall d`entrée) {= ZWave"2: 0: Commande = sensor_multilevel, SENSOR_TYPE = 3"} Contacter Hallway_Motion "Hall d`entrée Mouvement [% s]" (Hall d`entrée, Mouvement) {= ZWave"2: 0: Commande = sensor_binary, respond_to_basic = true"} Nombre sensor_1_battery "Batterie [% s %%]" (La motion) {= ZWave"2: 0: Commande = batterie"}

Si le format de cela semble étrange, s`il vous plaît la tête sur le dos à la première Guide du débutant, en particulier la section de liaison Hue, où j`explique comment les éléments sont ajoutés. Vous aurez probablement jamais besoin de cette copie des exemples de coller comme, mais dans le cas où vous avez un nouvel appareil, la documentation de liaison détaille toutes les commandes.Mise en route avec OpenHAB Home Automation sur Raspberry PiMise en route avec OpenHAB Home Automation sur Raspberry PiOpenHAB est une plate-forme domotique source mature, ouverte qui fonctionne sur une variété de matériel et est le protocole agnostique, ce qui signifie qu`il peut se connecter à presque tout matériel domotique sur le marché aujourd`hui.Lire la suite

Logitech Harmony Binding

Avant de sauter dans les règles, je voulais ajouter une note rapide de travailler avec l`harmonie de liaison. Je suis un grand fan de la Harmony série de télécommandes ultimes pour simplifier l`expérience du centre multimédia à domicile, mais ils se souvent comme un système distinct au sein de la maison intelligente. Avec OpenHAB, Logitech Harmony et les activités de contrôle de l`appareil complet peut maintenant être une partie de votre système centralisé, et même inclus dans les règles d`automatisation.

Commencez par installer les trois fichiers de liaison que vous trouvez en utilisant apt-cache pour rechercher « l`harmonie »:

openhab apt-cache pour l`harmonie de liaison

Ne pas oublier de chown le répertoire des liaisons à nouveau lorsque vous avez terminé:

sudo apt-get install openhab-addon-action-harmonyhubsudo apt-get install openhab-addon contraignant-harmonyhubsudo apt-get install openhab-addon-io-harmonyhubsudo chown -Hr openhab: openhab / usr / share / openhab

Pour configurer la liaison, ouvrez le fichier openhab.cfg et ajouter une nouvelle section comme suit:

########## HARMONIE TELECOMMANDE ########## harmonyhub: host = 192.168.1.181 ou votre adresse IPharmonyhub: nom d`utilisateur =votre-harmonie-email-loginharmonyhub: mot de passe =votre mot de passe

L`adresse IP est celle de votre centre d`harmonie. Utilisez un scanner de réseau pour le savoir. Vous aurez également besoin d`entrer vos informations de connexion, ceux que vous entrez lorsque vous lancez l`utilitaire standard de configuration Harmony. C`est tout. Lors du redémarrage de votre Hue, votre journal de débogage doit avoir une explosion soudaine de sortie de la liaison.

Voici une liste au format JSON de toutes vos activités, des appareils et des commandes qui peuvent être envoyés. Il est une bonne idée de copier ce pour référence ultérieure. vous pouvez le rendre encore plus facile à lire avec des noeuds pliables en collant dans une ligne de formatter JSON comme celui-ci.

sortie openhab formaté json

Ainsi que l`activité standard PowerOff qui est un défaut, vous trouverez vos propres activités définies énumérées ici par son nom. Maintenant, nous allons créer un simple bouton de commande pour démarrer les activités. Tout d`abord, dans votre fichier articles, ajoutez la ligne suivante. Modifier le groupe et l`icône si vous le souhaitez.

/ * Hub Harmony * / String Harmony_Activity "Harmony [% s]"  (Living_Room) {harmonyhub ="*[activité actuel]" }

C`est un deux voies de liaison à cordes, qui est capable à la fois chercher l`activité en cours, et commander l`activité en cours d`être autre chose. Maintenant, nous pouvons créer un bouton pour cela, dans le fichier sitemap.

Commutateur item = Harmony_Activity cartographies = [PowerOff = `Off`, exercice = `exercice`, 13858434 = `TV`, Karaoke = `Karaoke`]

Dans le carré vous support voyez chaque activité ainsi que l`étiquette. En général, vous pouvez consulter directement les activités que vous les avez le nom figure sur votre télécommande, mais l`exception à ce que je trouvais, était quelque chose avec un espace dans le nom de l`activité, comme « Regarder la télévision ». Dans ce cas, vous devrez utiliser l`ID d`activité. Encore une fois, vous pouvez trouver l`ID dans la sortie de débogage JSON. Enregistrer et rafraîchir votre interface, vous devriez voir quelque chose de semblable à ceci:

openhab harmonie dans le plan du site

Vous pouvez également consulter les activités dans vos règles, comme nous le verrons ensuite. Lisez la page wiki pour plus d`informations sur l`harmonie obligatoire.

Video: Introduction to the Paper UI of openHAB 2

Introduction générale aux règles

La plupart des centres d`accueil intelligents comprennent une sorte de création de règles pour que vous puissiez réagir automatiquement aux données du capteur et des événements dans la maison. En fait, je dirais qu`une maison vraiment intelligente est pas celui que vous avez besoin de passer du temps à interagir avec des applications mobiles - il est celui qui est invisible à l`utilisateur final et complètement automatisé. À cette fin, OpenHAB comprend également une puissante règles langage de script que vous pouvez programmer, dépassant de loin la complexité de la plupart hubs intelligents maison ou recettes ifttt.Battle of the Smart Home Hub: Quelle est là et nouveautés à venir?Battle of the Smart Home Hub: Quelle est là et nouveautés à venir?Lire la suite

règles de programmation semble pire que ce qu`elle est. Commençons simple avec une paire de règles qui se transforment ou éteindre la lumière en fonction du capteur de présence:

Règle "la lumière de bureau lorsque James présente"whenItem JamesInOffice changé de OFF à ONthensendCommand (Office_Hue, ON) endrule "Bureau d`éclairage avant de feuilles James"whenItem JamesInOffice changé de ON à OFFthensendCommand (Office_Hue, OFF) fin

Tout d`abord, nous nommons la règle - être descriptif, afin de savoir quel événement est le tir. , Nous définissons notre règle simple en disant lorsque x est vrai, alors y faire. Fin signifie la fermeture de cette règle particulière. Il y a un certain nombre de mots spéciaux que vous pouvez utiliser dans les règles, mais pour l`instant, nous avons affaire à deux bits simples de syntaxe - Article, qui vous permet d`interroger l`état de quelque chose- et sendCommand, qui fait exactement ce que vous pensez qu`il va. Je vous ai dit que c`était facile.

Il est sans doute inutile d`utiliser une paire de règles, mais comme ma logique devient plus complexe, il sera bénéfique de les séparer pour savoir si j`entrant ou sortant de la zone - et il pourrait être une bonne idée d`ajouter un capteur de lumière quelque part dans l`équation que nous ne sommes pas tourner inutilement les lumières.

Regardons un autre exemple pour créer une règle planifiée.

Video: Installing openHAB on the Raspberry PI (tutorial - part II - Bindings, Sitemaps, Items and Habmin)

Règle "L`exercice tous les matins"cron whenTime "0 0 8 1/1 *? *"thenharmonyStartActivity ("Exercice")fin

Encore une fois, nous nommons les règles, les conditions de l`Etat quand il en cas d`incendie, et les mesures à prendre. Mais dans ce cas, nous définissons un modèle de temps. Le code drôle que vous voyez dans les citations est une expression de CRON pour Scheduler Quartz (le format est légèrement différent à un crontab régulier). Je cronmaker.com pour aider à créer l`expression, mais vous pouvez également lire le guide de format pour une explication détaillée et plus d`exemples.

générateur cron
CronMaker.com utilisé pour générer l`expression Cron correctement formaté

Mes règles dit simplement « 8 heures tous les matins, tous les jours de la semaine, dites-Harmony système ultime pour démarrer l`activité d`exercice », qui active à son tour la télévision, la Xbox, l`amplificateur, et appuie sur le bouton après une minute de lancement le disque dans le lecteur.

Malheureusement, OpenHAB n`est pas encore en mesure de faire l`exercice pour moi.

Une règle plus que je veux vous montrer quelque chose que j`utilise pour gérer les niveaux d`humidité dans ma maison. J`ai un déshumidificateur que je dois déplacer chaque fois que nécessaire, alors j`ai décidé de regarder tous mes capteurs d`humidité, trouver lequel est le plus élevé, et que stocker dans une variable. Il est actuellement déclenché chaque minute, mais qui peut facilement être abaissé. Jetez un premier coup d`oeil:

org.openhab.core.library.types à l`importation. * Les org.openhab.model.script.actions à l`importation. * de java.lang.Stringrule d`importation "humidité Moniteur"quand Cron temps "0 * * * *?"thenvar prevHigh = 0var highHum = ""Humidité .members.forEach [hum |? LogDebug ("humidity.rules", Hum.name) -Si (hum.state comme DecimalType gt; prevHigh) {prevHigh = hum.statehighHum = hum.name + ": " + Hum.state + "%"}] LogDebug ("humidity.rules", HighHum) -postUpdate (Dehumidifier_Needed, highHum) -fin

Le noyau de l`article est dans la Humidité? .members.foreach ligne. L`humidité est un nom de groupe pour mon humidité sensors- .membres saisit tous les éléments dans ce groupe- pour chaque itère sur eux (avec un format curieux support carré vous n`êtes probablement pas au courant). La syntaxe des règles est un dérivé de Xtend, de sorte que vous pouvez lire la documentation Xtend si vous ne pouvez pas trouver un exemple d`adaptation.

Vous aurez probablement pas besoin de bien - il y a des centaines d`exemple, les règles là-bas:

  • Explication détaillée des règles sur le wiki officiel
  • Les règles officielles page wiki échantillons
  • Prendre des règles à de nouveaux sommets
  • échantillons avancés à IngeniousFool.net

MQTT pour OpenHAB et Internet des objets

MQTT est un système de messagerie léger pour la communication machine-to-machine - une sorte de Twitter pour vos Arduinos ou Raspberry Pi pour parler les uns aux autres (même si bien sûr cela fonctionne avec beaucoup plus que celles-ci). Il est gagne rapidement en popularité et se trouver une maison avec l`internet des objets périphériques, qui sont généralement des micro-contrôleurs faibles ressources qui ont besoin d`un moyen fiable pour transmettre des données de capteur à votre hub ou recevoir des commandes à distance. C`est exactement ce qui va nous ferons avec.

Mais pourquoi réinventer la roue?

MQ Telemetry Transport a été inventé en 1999 le chemin du retour pour relier les oléoducs via des liaisons satellites lentes, spécialement conçues pour réduire au minimum l`utilisation de la batterie et la bande passante, tout en assurant la livraison de données fiables. Au fil des années, les principes de conception sont restés les mêmes, mais le cas d`utilisation est passé de systèmes embarqués spécialisés à Internet général des dispositifs Things. En 2010, le protocole a été libéré libres de droits, ouvert pour quiconque d`utiliser et mettre en œuvre. Nous aimons gratuitement.

Vous pourriez vous demander pourquoi nous même prendre la peine avec un autre protocole - nous avons déjà le HTTP après tout - qui peut être utilisé pour envoyer des messages rapides entre toutes sortes de systèmes connectés au Web (comme OpenHAB et IFTTT, notamment avec la nouvelle canal fabricant). Et vous auriez raison. Toutefois, les frais généraux de traitement d`un serveur HTTP est assez grand - si bien que vous ne pouvez pas facilement exécuter un sur un microcontrôleur embarqué comme l`Arduino (au moins, vous pouvez, mais vous n`aurez pas beaucoup de mémoire pour autre chose ). MQTT est d`autre part est léger, donc d`envoyer des messages autour de votre réseau ne sera pas obstruer les tuyaux, et il peut facilement entrer dans notre petit espace mémoire Arduino.IFTTT Connecte maintenant à tout: Présentation du canal MakerIFTTT Connecte maintenant à tout: Présentation du canal MakerLes utilisations possibles pour IFTTT sont infinies. Mais jusqu`à présent, il a été difficile de l`interface avec vos propres projets matériels. Aujourd`hui, tout a changé.Lire la suite

Comment fonctionne MQTT?

MQTT nécessite à la fois un serveur (appelé un « courtier ») et un ou plusieurs clients. Le serveur agit en tant qu`intermédiaire, les messages et recevoir rediffuser à tous les clients intéressés.

Video: Tuxedo Touch and Z Wave Devices

Continuons avec la Twitter-pour-machines analogie bien. Tout comme les utilisateurs de Twitter peuvent tweeter leurs propres vides de sens 140 caractères, et les utilisateurs peuvent « suivre » d`autres utilisateurs de voir un flux curated de messages, les clients MQTT peuvent souscrire à un canal particulier pour recevoir tous les messages à partir de là, ainsi que de publier leurs propres messages à ce canal. Ce modèle publication et abonnement est appelé pub / sous, par opposition à la tradition serveur client modèle de HTTP.

HTTP exige que vous tendre la main à la machine que vous communiquer avec, par exemple Bonjour, puis ont un va et vient de reconnaître constamment les uns les autres pendant que vous obtenez ou mettez des données. Avec pub / sous, le client faisant la publication n`a pas besoin de savoir quels clients sont abonnés: il pompe juste les messages, et le courtier les redistribue à tous les clients abonnés. Tout client peut à la fois publier, et abonnez-vous aux sujets, tout comme un utilisateur de Twitter.

Contrairement à Twitter cependant, MQTT ne se limite pas à 140 caractères. Il est agnostique des données, de sorte que vous pouvez envoyer un petit nombre ou de gros blocs de texte, datagrammes JSON-formatés, ou même des images et des fichiers binaires.

Ce n`est pas MQTT vaut mieux pour tout que HTTP - mais est plus approprié si nous allons avoir beaucoup de capteurs autour de la maison, des rapports constamment.

Il est également important de savoir que OpenHAB ne veut pas agir en tant que votre courtier MQTT - nous allons aborder ce peu plus tard. Cependant, OpenHAB agira en tant que client: il peut à la fois publier votre activité OpenHAB journal, ainsi que des canaux particuliers se lient à des appareils, de sorte que vous pouvez par exemple avoir un commutateur qui est contrôlé par des messages MQTT sur un canal particulier. Ceci est idéal pour la création d`une maison pleine de capteurs.

Installez sur votre mosquitto Pi

Bien que OpenHAB comprend un client MQTT de sorte que vous pouvez vous abonner à un sujet et publie également des messages, il ne sera pas agir comme serveur. Pour cela, vous devez soit d`utiliser un courtier MQTT basé sur le Web (payant ou gratuit), ou installer le logiciel gratuit sur votre Pi. Je voudrais tout garder dans la maison, donc je l`ai installé sur le mosquitto Pi.

Malheureusement, la version disponible via apt-get habituelle est complètement dépassée. Au lieu de cela, ajoutons les dernières sources.

wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.keysudo apt-key add-mosquitto repo.gpg.keycd /etc/apt/sources.list.d/sudo wget http: // repo. mosquitto.org/debian/mosquitto-wheezy.listsudo apt-get install mosquitto

C`est tout ce que nous devons faire pour avoir un serveur MQTT et en cours d`exécution sur le réseau local. Votre courtier est en cours d`exécution sur le port 1883 par défaut.

Vérifiez votre serveur MQTT travaille en utilisant le MQTT.fx libre, qui est multi-plateforme. Cliquez sur l`icône paramètres pour créer un nouveau profil, et entrez votre adresse IP ou le nom Raspberry Pi. Enregistrer, et cliquez sur se connecter. Si le petit feu en haut à droite devient vert, vous êtes bon pour aller.

exemple de profil mqttfx

Pour un test rapide, cliquez sur l`onglet « subscribe » et tapez inTopic / dans la zone de texte, puis appuyez sur la Souscrire bouton. Vous êtes maintenant abonné à recevoir des messages sur le sujet nommé inTopic, mais il vous montrerons 0 messages. Retour à la publication onglet, tapez inTopic dans la petite boîte, et un court message dans la grande zone de texte ci-dessous. Frappé Publier quelques fois et regarder en arrière sur l`onglet abonnement. Vous devriez voir quelques messages ayant paru dans ce sujet.

Test inTopic MQTT

Avant d`ajouter des capteurs réels à notre réseau, nous devons en apprendre davantage sur les niveaux de sujet, qui nous permettent de structurer et de filtrer le réseau MQTT. Les noms de sujet sont sensibles à la casse, ne devraient pas commencer par $, ou inclure un espace, ou des caractères non-ASCII - pratiques de programmation standard pour les noms de variables, vraiment.

Le / séparateur indique un niveau de sujet, qui est hiérarchique, par exemple les éléments suivants sont tous les niveaux de sujets valides.

inTopic / smallSubdivision / evenSmallerSubdivisionmyHome / LivingRoom / temperaturemyHome / LivingRoom / humiditymyHome / cuisine / temperaturemyHome / cuisine / humidité

Déjà, vous devriez voir comment cette structure d`arbre est parfait pour une maison intelligente complète de capteurs et appareils. La meilleure pratique pour une utilisation avec plusieurs capteurs dans une chambre simple est de publier chaque variable du capteur comme son propre niveau de sujet - ramification à une plus grande spécificité (comme dans les exemples ci-dessus) - plutôt que d`essayer de publier plusieurs types de capteurs sur le même canal .

Les clients peuvent ensuite publier ou abonnez-vous à un certain nombre de niveaux de sujets individuels, ou utiliser des caractères génériques spéciaux pour filtrer de plus haut dans l`arbre.

Les + substituts génériques pour un niveau donné de sujet. Par exemple:

myHome / + / température

souscrirait le client à la fois

myHome / SALLE DE SÉJOUR / temperaturemyHome / cuisine / température

... mais pas les niveaux d`humidité.

Le # est un caractère générique à plusieurs niveaux, de sorte que vous pouvez chercher quoi que ce soit à partir du réseau de capteurs LivingRoom avec:

myHome / LivingRoom / #

Techniquement, vous pouvez également vous abonner à la racine # que vous vous obtenez absolument tout va passer par le courtier, mais qui peut être comme coller un tuyau d`incendie dans votre visage: un peu écrasante. Essayez de vous connecter au courtier MQTT publique de HiveMQ et inscrivez-vous à #. Je suis arrivé à environ 300 messages en quelques secondes avant que mon client vient de s`écraser.

Astuce MQTT Débutant: «/ma maison/" est un sujet différent «ma maison/" - y compris une barre oblique au début crée un niveau de sujet vide, qui, bien que techniquement valable, n`est pas recommandée car elle peut être source de confusion.

Maintenant que nous connaissons la théorie, nous allons faire une expérience avec un Arduino, Ethernet Shield, et un capteur de température DHT11 et de l`humidité - vous avez probablement un dans votre kit de démarrage, mais sinon, juste échanger le capteur environnemental pour un mouvement capteur (ou même un bouton).

Publishing MQTT partir d`une connexion Ethernet avec

Si vous disposez d`un périphérique compatible Arduino hybride avec Wi-Fi ou Ethernet intégré, qui devrait également fonctionner. Finalement, nous voulons une meilleure / moins cher moyen de communiquer que d`avoir à utiliser une connexion réseau dans chaque chambre, mais cela permet d`apprendre les bases.

Commencez par télécharger la bibliothèque pubsubclient de Github. Si vous avez utilisé le bouton « Télécharger ZIP », la structure est un peu mal. Décompressez, renommer le dossier juste pubsubclient, puis retirez les deux fichiers du src le dossier et les déplacer d`un niveau à la racine du dossier téléchargé. Déplacez ensuite le dossier entier à votre Arduino / bibliothèques annuaire.

Voici mon exemple de code que vous pouvez adapter: la sortie du signal de DHT11 est sur la broche 7. Modifier l`adresse IP du serveur pour celui de votre Pi sur la ligne suivante:

client.setServer ("192.168.1.99", 1883) -

Malheureusement, nous ne pouvons pas utiliser son nom convivial (OpenHAB.local dans mon cas) comme la pile TCP / IP sur l`Arduino est très simpliste et en ajoutant le code de désignation Bonjour serait beaucoup de mémoire, nous ne voulons pas perdre. Pour modifier les sujets que les données du capteur est en cours de diffusion sur, faites défiler jusqu`à ces lignes:

char buffer [10] -dtostrf (t, 0, 0, tampon) -client.publish ("openhab / himitsu / température", Tampon) -dtostrf (h, 0, 0, tampon) -client.publish ("openhab / himitsu / humidité",tampon)-

Le code comprend également l`abonnement à un canal de commande. Trouvez et ajuster la ligne suivante:

client.subscribe ("openhab / himitsu / command") -

Examinez le code autour de là-bas et vous verrez que vous pouvez facilement contrôler une LED ou relais, par exemple en envoyant des commandes à des canaux spécifiques. Dans le code exemple, il envoie simplement un reçu message d`acquittement arrière de la commande.

Téléchargez votre code, branchez votre Arduino dans le réseau, et à l`aide MQTT.fx abonnez-vous à deux # ou openhab / himitsu / # (Ou quoi que vous avez changé le nom de la pièce, mais ne pas oublier d`inclure le # à la fin). Très bientôt, vous devriez voir des messages à venir en et si vous envoyez ON ou OFF au sujet de commande, vous verrez acquittements revenir aussi.

mqtt messages arduino revenir

MQTT Reliure pour OpenHAB

L`étape finale de l`équation est de raccorder ce en OpenHAB. Pour cela, bien sûr, nous avons besoin d`une liaison.

sudo apt-get install openhab-addon contraignant-mqttsudo chown -Hr openhab: openhab / usr / share / openhab

Et modifier le fichier de configuration pour activer la liaison.

mqtt: broker.url = tcp: // localhost: 1883mqtt: broker.clientId = openhab

Redémarrer OpenHAB

Service openhab restart sudo

Ensuite, nous allons ajouter un élément ou deux:

/ * MQTT Capteurs * / Numéro Himitsu_Temp "Himitsu température [% .1f ° C]"  (Himitsu, Température) {= MQTT"lt; [agent: openhab / himitsu / température: État: défaut]"} Nombre Himitsu_Humidity "Himitsu Humidité [% .1f %%]"  (Himitsu, humidité) {= MQTT"lt; [courtier: openhab / himitsu / humidité: état: par défaut]"}

Vous devriez maintenant comprendre le Format- il devient un Numéro article de la liaison MQTT, sur un sujet spécifique. Ceci est un exemple simple, vous voudrez peut-être se référer à la page wiki où il peut obtenir beaucoup plus complexe.

Félicitation, vous avez maintenant la base d`un réseau de capteurs à base Arduino pas cher. Nous allons revisiter ce à l`avenir et en plaçant l`Arduino de sur leur propre réseau RF à part entière. J`ai aussi créé une version identique pour Wizwiki 7500 cartes si vous en avez un de ceux-ci.

La persistance et graphique des données

Maintenant vous avez probablement un tas de capteurs mis en place, que ce soit de Z-Wave ou personnalisés Arduinos en cours d`exécution MQTT - de sorte que vous pouvez voir l`état actuel de ces capteurs à tout moment, et vous devriez également réagir à leur valeur dans les règles. Mais la chose intéressante sur les valeurs de capteur est généralement qu`ils changent au fil du temps: c`est là et la persistance vient en graphique. Persistance en OpenHAB signifie enregistrer les données au fil du temps. Nous allons aller de l`avant et RRD4J de configuration (Round Robin Database pour Java), appelé ainsi parce que les données sont enregistrées dans un mode de tournoi à la ronde - est mis au rebut les données anciennes pour compresser la taille de la base de données.

Installez les paquets de rrd4j avec les commandes suivantes.

sudo apt-get installer openhab-addon-persistance rrd4jsudo chown -hR openhab: openhab / usr / share / openhab

Ensuite, créez un nouveau fichier appelé rrd4j.persist dans le configurations / persistance dossier. Coller les éléments suivants:

Stratégies {everyMinute: "0 * * * *?"Toutes les heures 	: "0 0 * * *?"tous les jours	: "0 0 0 * *?"default = everyChange} Les {// persistent tout quand la valeur est mise à jour, à défaut, et les restaurer la base de données au démarrage *: stratégie = everyChange, RestoreOnStartup // suivante, nous définissons des stratégies spécifiques de everyHour pour quoi que ce soit dans le groupe de la température, et chaque minute et pour HumidityTemperature *: stratégie = everyHourHumidity *: stratégie = everyMinute // Sinon, vous pouvez ajouter des éléments spécifiques ici, tels que // Bedroom_Humidity, JamesInOffice: stratégie = everyMinute}

Dans la première partie de ce dossier, nous définissons des stratégies, ce qui signifie simplement donner un nom à une expression CRON. Ceci est la même chose que nous avons déjà fait avec My.OpenHAB, mais cette fois nous sommes créer de nouvelles stratégies que nous pouvons utiliser de la vraie vie, everyHour et everyMinute. Je ne les ai pas utilisé tout, mais je pourrais être à l`avenir.

Dans la seconde moitié du fichier, nous disons rr4dj les valeurs de données à sauvegarder. Par défaut, nous allons sauver tout à chaque fois qu`il met à jour, mais j`ai également précisé certaines stratégies à base de temps pour les capteurs spécifiques. Températures Je ne suis pas trop soucié, donc je me suis fixé que pour sauver everyHour seulement, mais l`humidité est une grande préoccupation pour moi, donc je veux voir comment il change chaque minute. S`il y a d`autres données que vous voulez spécifiquement pour enregistrer à des heures fixes, ajoutez ceux ici ou ajuster au besoin.

Remarque: si vous voulez représenter graphiquement les données aussi, vous devez stocker au moins une fois par minute. Peu importe si vos données de capteur est même mis à jour rapidement, il vous suffit de dire rr4dj pour stocker une fois par minute.

Avec cela défini, vous devriez commencer à voir la sortie de débogage vous dire que les valeurs sont stockées.

rrd4j mémoriser des données

La prochaine étape, nous allons faire quelques jolis graphiques de toutes ces données. Il est vraiment facile. Pour un graphique d`un capteur individuel, ajoutez ce qui suit à votre plan du site:

Graphique article = période Bedroom_Humidity = h

C`est littéralement tout ce que vous avez besoin. Les valeurs valides pour la période sont h, 4h, 8h, 12h, D, 3D, W, 2W, M, 2 M, 4 M, Y- il devrait être évident ce que cela signifie. valeur par défaut est D pour une journée complète de données si non spécifié.

Pour créer un graphique avec plusieurs éléments, un graphique simplement le nom du groupe à la place:

Graphique article = Hygrométrie = h

graphique

Vous pourriez également être intéressé de savoir que vous pouvez utiliser ce graphique elsewhere- elle génère une image en utilisant l`URL suivante: http: // YOUROPENHABURL: 8080 / Chart = humidité&période = h

Comment est Votre OpenHAB système à venir?

Qu`il est pour cette tranche du guide, mais ne vous attendez pas ce sera la dernière que vous entendez à propos de nous OpenHAB. Espérons que cela et le guide du débutant que vous avez donné une base solide pour développer votre propre système de OpenHAB complet - mais il est un processus qui est jamais vraiment complètement terminé.

Heureusement, OpenHAB peut bien évoluer de quelques dispositifs à des centaines, de la simple complexité des règles à l`ultime dans l`automatisation de la maison - alors comment est votre système à venir le long? Quels appareils avez-vous choisi? Quel est le prochain grand projet que vous allez aborder?

Parlons dans les commentaires - et s`il vous plaît, si vous avez trouvé ce guide utile, cliquez sur les boutons de partage pour dire à vos amis comment ils peuvent eux aussi configurer leur propre système OpenHAB.

Articles connexes