Comment contrôler les prises de courant à haute fréquence à bas prix de openhab

prises de courant intelligentes sont la façon la plus simple d`automatiser votre maison, mais à environ 40 $ chacun pour une prise en fonction Wi-Fi ou ZWave, vous êtes peu susceptibles d`acheter plus de quelques-uns.

Vous pouvez déjà avoir des prises sur la base bon marché RF bien - le genre qui viennent avec leur propre télécommande personnalisée, et ont des canaux et sélecteurs ID sur le dos. Malheureusement, il n`y a pas smart hubs à domicile sur le marché que le travail avec ceux-ci. Ne serait-il pas génial si vous pouviez relier ceux dans votre système de maison intelligente bricolage en quelque sorte? Eh bien, vous pouvez - assez facilement en fait - avec environ 10 $ en pièces.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

Avec un peu plus de travail, vous pouvez également intégrer un autre matériel à distance par RF sur mesure, comme cet écran de cinéma du budget.

De quoi as-tu besoin:

  • ESP8266 NodeMCU v12E carte dev (modèle exact n`a pas d`importance, v1 ou v3 devrait être bien aussi). La raison pour laquelle nous utilisons un conseil NodeMCU est parce que nous voulons que la simple connexion Wi-Fi plus tard. Le lien est pour un paquet de 2, qui ressort à 7 $ chacun.
  • Paquet de l`émetteur et le récepteur 433Mhz (environ 3 $).
  • RCSwitch et bibliothèques MQTT, et notre code - tous disponibles pour téléchargement à partir Github.
  • Un serveur MQTT, local ou distant.
  • Certaines prises commandées RF fonctionnant sur 433 bande mHz (il doit indiquer sur la télécommande). J`ai acheté le mien de Maplin comme un paquet de 3 pour environ 20 £ (25,89 $).

Si ceci est votre première fois la programmation de la carte NodeMCU, vous aurez besoin de télécharger les plug-ins Arduino pour elle: suivre avec la première partie de notre Arduino Tueur guide d`introduction pour la puce NodeMCU / ESP8266. Vous aurez également besoin pilotes CH430. Vous pouvez trouver les pilotes signés macOS CH430 ici ou Windows ici.Rencontrez le tueur Arduino: ESP8266Rencontrez le tueur Arduino: ESP8266Et si je vous ai dit il y a une carte Arduino dev compatible avec le Wi-Fi pour moins de 10 $? Eh bien, il y a.Lire la suite

Je l`ai utilisé v1.6.5 de l`Arduino parce que tout introduit plus plus de problèmes que de solutions. Downgrade si vous avez pas déjà.

Avant de poursuivre, je vais supposer un niveau de base de connaissances sur programmation Arduino, et que vous avez la configuration de votre NodeMCU dans le gestionnaire du conseil d`administration, et sont en mesure de télécharger correctement un code de démonstration. Vous devez également avoir ajouté les bibliothèques incluses dans notre téléchargement à votre Arduino / bibliothèques dossier.

Si vous avez un existant bibliothèque PubSubClient ou MQTT, sauvegarder et retirez - celui que j`ai inclus dans le téléchargement est le seul où je pouvais recevoir des messages de manière fiable sur NodeMCU, et j`ai essayé beaucoup!

RF sniffing (en option)

Cette étape est nécessaire si vous ne souhaitez contrôler commutateur DIP ou composez prises de courant de sélection - ceux-ci sont pris en charge hors de la boîte, et la modification de code minimal sera nécessaire (ce qui est toujours intéressant de faire d`abord, bien que, de sorte que vous » ll comprendre ce qui se passe dans les coulisses).

Si vous avez d`autres télécommandes RF que vous souhaitez essayer d`ajouter, vous devez d`abord « renifler » les codes RF transmis. Pour ce faire, charger la ReceiveDemo_Advanced croquis de la Menu -gt; Exemples -gt; RCSwitch le filtre, et changer la ligne suivante à partir de 0

mySwitch.enableReceive(0)- // récepteur sur interruption 0 = gt; c`est la broche # 2

à 2.

mySwitch.enableReceive(2)- // Récepteur sur GPIO 2 / D4.

Câbler le module récepteur comme suit. En regardant l`avant de la carte du récepteur (elle est la plus longue des deux, l`émetteur est carrée) - le côté avec les composants sur:

  • Loin est juste GND. Connectez-vous à GND sur la carte NodeMCU.
  • Extrême gauche est CCV. Connectez-vous à VIN sur la carte NodeMCU.
  • Moyen deux broches sont le signal. Connectez un à D4 sur le NodeMCU (ils sont reliés entre eux, de sorte qu`il n`a pas d`importance qui).

433 câblage 1

Maintenant télécharger modifié ReceiveDemo_Advanced, et quand il est fait, ouvrez le moniteur série et commencez à appuyer sur des boutons sur votre télécommande. Copiez la décimale (y compris la longueur de bits), durée d`impulsion, et le protocole lorsque vous appuyez sur un bouton.

écran RF renifler

Après avoir fait cela, j`ai trouvé mon écran du projecteur utilisait

  • UP ÉCRAN: Reçu 8694273 / 24bit- Longueur d`impulsion: 355 ou 356- Protocole: 1
  • Écran vers le bas: reçu 8694276 / 24bit-Longueur d`impulsion: 355 ou 356- Protocole: 1

Continuer pour autant de boutons que vous avez besoin.

Test de l`émetteur

Ensuite, nous allons essayer les codes d`envoi en utilisant l`émetteur. Câbler le module émetteur (la case) comme suit. Attention: l`étiquetage sur ces axes est atroce.

La broche est en fait CCV au milieu, et non sur le côté gauche. Je détruit un module dans le processus de ceci comprendre. Cette chose qui dit « thermophile » est en fait « DATA », épelé à l`envers. Encore une fois, les données vont à D4, à VIN CCV et GND à la masse (retirer le module récepteur, vous ne avez plus besoin).

433 câblage 2

Chargez le Exemples -gt; RCSwitch -gt; TypeB_WithRotaryOrSlidingSwitches, et encore, changer la broche de données:

mySwitch.enableTransmit(dix)-

à

mySwitch.enableTransmit(2)-

Note, une variété d`exemples sont inclus dans la bibliothèque, et que l`on travaille pour vous dépendra du type exact de l`interrupteur que vous avez. Type A (commutateurs DIP) et B (cadrans ou curseurs) sont les plus communs - voir les photos sur la page RCSwitch. Pour le type B, activer et désactiver une prise est aussi simple que:

mySwitch.allumer(1, 4)-mySwitch.éteindre(1, 4)-

où 1 est le numéro de canal (la ligne du haut), et la figure 4 est l`ID de la prise (le cadran du bas). Ceux-ci ont été écrits en chiffres romains sur mes prises. peut donc être adressé un maximum de 16 prises individuelles, bien que plusieurs prises peuvent utiliser la même adresse si vous avez plusieurs périphériques pour activer à la fois.

Cependant, mon écran de projection était un peu différent - il a utilisé une longueur d`impulsion différente. Donc, pour faire fonctionner ceux-ci, ce qui suit travaillé. Notez que vous pouvez également définir un protocole différent si votre télécommande a besoin, mais assurez-vous de définir le protocole avant la longueur d`impulsion. La longueur d`impulsion est écrasée lors de la modification de protocole.

// Notez que mon écran nécessite en fait deux presses à bouton (pas long presse, mais deux presses physiques), donc je retarde un peu, puis d`envoyer à nouveau le même signalvide screenUp(){mySwitch.setPulseLength(358)-mySwitch.envoyer(8694273,24)- // (code décimal, le nombre de bits)retard(2000)-mySwitch.envoyer(8694273,24)-}vide screenDown(){mySwitch.setPulseLength(358)-mySwitch.envoyer(8694276,24)-retard(2000)-mySwitch.envoyer(8694276,24)-}

Testez tous vos codes fonctionnent d`abord avant de passer à l`étape suivante.

Contrôle par MQTT

Ouvrez le croquis que vous avez téléchargé à partir Github nommé mqtt_rcswitch.ino, et commencer en modifiant le SSID et le mot de passe réseau pour votre maison. Ensuite, changer le nom du canal si vous le souhaitez, et configurer le serveur MQTT. Si vous ne possédez pas déjà un serveur MQTT en cours d`exécution sur votre OpenHAB installer, lire la partie 2 du guide de notre OpenHAB débutant. Notez que mon code est conçu pour le type B prises (commutateur rotatif), mais vous pouvez modifier facilement pour les commutateurs DIP aussi.Guide de OpenHAB débutant Partie 2: ZWave, MQTT, Règles et ChartingGuide de OpenHAB débutant Partie 2: ZWave, MQTT, Règles et ChartingOpenHAB, le logiciel domotique open source, dépasse de loin les capacités d`autres systèmes d`automatisation de la maison sur le marché - mais il est difficile de se mettre en place. En fait, il peut être carrément frustrant.Lire la suite

La partie la plus importante du code est la message reçu() fonction, qui répond à des commandes de MQTT entrants. Dans cette fonction, nous d`abord vérifier le mot-clé important - j`ai choisi « switch » et « écran ». Dans le cas de « switch », nous analysons ensuite le canal et le bouchon puis ID- vérifier le corps de charge utile pour la commande.

vide message reçu(Sujet String, charge utile de chaîne, carboniser * octets, non signé int longueur) {si (sujet.Indice de("commutateur") gt; =0){// passer commande, analyser le canal et brancher id int canal = getValue(sujet,`/`,3).toInt()-int prise de courant = getValue(sujet,`/`,4).toInt()-si(charge utile == "sur"){mySwitch.allumer(canal, prise de courant)-}autre{mySwitch.éteindre(canal, prise de courant)-}}autre si (sujet.Indice de("écran") gt; =0){// contrôle de l`écransi(charge utile == "en haut"){screenUp()-}autre si(charge utile == "vers le bas"){screenDown()-}}/ * Ajouter un autre autre si ici pour écouter d`autres commandes (ou il suffit de modifier celle ci-dessus si vous ne voulez pas l`écran) * /}

Par défaut puis, les commandes MQTT suite aux travaux:

living / control / commutateur / X / Y (où X est un canal, et Y est un bouchon ID- avec le corps de message activé ou désactivé)
living / control / écran (avec corps de message vers le haut ou vers le bas)

Utilisez la ligne de commande ou un client GUI MQTT pour tester vos appareils avant d`ajouter à OpenHAB.

Ajout à OpenHAB

En dernier lieu, nous avons juste besoin de créer des articles pour ces commutateurs OpenHAB. J`ai défini les éléments suivants pour l`instant, mais vous devriez être en mesure de comprendre comment ajouter plus:

/ * Dispositifs de RF433mHz * / Switch CinemaScreen "Écran" (Cinéma) {mqtt ="gt; [agent: living / control / écran: command: ON: la barre], gt; [agent: living / control / écran: command: OFF: up]"} Commutateur Switch41 "Switch41" (Cinéma) {mqtt ="gt; [agent: living / control / commutateur / 4/1: command: ON: on], gt; [agent: living / control / commutateur / 4/1: command: OFF: off]"} Commutateur Switch42 "Switch42" (Cinéma) {mqtt ="gt; [agent: living / control / commutateur / 4/2: command: ON: on], gt; [agent: living / control / commutateur / 4/2: command: OFF: off]"}

Vous devriez maintenant être en mesure de contrôler vos appareils RF de OpenHAB! Une chose que j`ai été agréablement surpris par la plage était - un seul nœud a été en mesure de couvrir la majeure partie de ma maison. Vous pouvez ajouter des cours d`un autre nœud, en écoutant le même canal, qui répète simplement les mêmes commandes, si vous avez besoin d`une couverture.

La seule limite à garder à l`esprit est que les prises eux-mêmes ne peuvent pas déclarer leur statut, donc si vous utilisez la télécommande d`origine, contrôler l`état de la prise ne peut pas se refléter avec précision dans OpenHAB. Stick à l`aide de l`interface juste OpenHAB et vous devriez être bien.

Des questions ou des problèmes? Loin dans les demande de commentaires, et je ferai de mon mieux pour aider. Si vous souhaitez améliorer mon code, ne hésitez pas à soumettre une demande de tirage.

Articles connexes