Taula de continguts:

Alarma PIR a WiFi (i domòtica): 7 passos (amb imatges)
Alarma PIR a WiFi (i domòtica): 7 passos (amb imatges)

Vídeo: Alarma PIR a WiFi (i domòtica): 7 passos (amb imatges)

Vídeo: Alarma PIR a WiFi (i domòtica): 7 passos (amb imatges)
Vídeo: AUTONOMIE ÉNERGÉTIQUE en cas de coupure de courant C'EST POSSIBLE 2024, Juliol
Anonim
Image
Image
Alarma PIR a WiFi (i domòtica)
Alarma PIR a WiFi (i domòtica)

Visió general

Aquesta instrucció us donarà la possibilitat de veure la data / hora última (i opcionalment un historial de temps) de quan es van activar els PIR (sensors infrarojos passius) de la vostra alarma domèstica, al vostre programari domòtic. En aquest projecte, parlaré de com utilitzar-lo amb OpenHAB (programari domòtic gratuït, que faig servir personalment), tot i que funcionarà amb qualsevol altre programari o aplicació domòtica que admeti MQTT (també es descriu més endavant en aquest article). Aquesta instrucció us guiarà pels passos necessaris sobre com connectar una placa de circuit i Wemos D1 mini (una placa IOT que utilitza un xip ESP8266) que toca les zones d’alarma de la vostra caixa de control d’alarma de manera que quan una zona (que conté un o més PIR) s’activa, el Wemos envia un missatge sense fils mitjançant el protocol MQTT al vostre programari domòtic que al seu torn mostra l’última data / hora d’aquest activador. També es proporciona codi Arduino per programar els Wemos.

Introducció

La imatge superior és la que veig a través d’una de les pantalles de l’aplicació OpenHAB del meu iPhone. El text de la data / hora està codificat per colors per proporcionar una representació més ràpida de quan es va activar el PIR: es mostrarà en vermell (activat durant els darrers 1 minut), taronja (activat durant els darrers 5 minuts), verd (activat durant els darrers 30 minuts), blau (activat durant l'última hora) o d'una altra manera, negre. En fer clic a la data / hora, es mostrarà una vista històrica dels activadors PIR, on un 1 significa activat i 0 està inactiu. Hi ha molts usos per a això, per exemple, pot complementar la vostra solució de presència a casa, pot detectar moviments si esteu fora i mitjançant les regles d’OpenHAB, enviar notificacions al vostre telèfon, podeu utilitzar-ho com jo per veure si els meus fills estan aixecar-se a mitja nit, desencadenat per un PIR que resideix fora dels seus dormitoris.

OpenHAB és simplement el programari d’automatització domèstica que faig servir, n’hi ha molts altres, i si admeten MQTT, podeu adaptar aquest projecte fàcilment al programa que utilitzeu.

Supòsits

Aquesta instrucció suposa que ja teniu (o configurareu):

  • Viouslybviament, un sistema d’alarma domèstica amb PIR (sensors infrarojos passius) i que teniu accés al quadre de control d’alarma per connectar el cablejat necessari
  • S’està executant OpenHAB (programari domòtic de codi obert gratuït), tot i que, com s’ha comentat, hauria de funcionar amb qualsevol programari domòtic que pugui incloure una vinculació MQTT. Alternativament, podeu modificar el codi per adaptar-lo a les vostres necessitats.
  • El corredor Mosquitto MQTT (o similar) instal·lat i vinculant configurat amb OpenHAB (MQTT és un protocol de tipus subscripció / publicació de missatgeria que és lleuger i ideal per a la comunicació entre dispositius)

Si no executeu OpenHAB i un corredor MQTT, consulteu aquest excel·lent article al lloc web MakeUseOf

Què necessito?

Per crear el controlador sense fils, haureu d’origen les parts següents:

  • Wemos D1 mini V2 (té un xip sense fils ESP8266 incorporat)
  • Un comparador LM339 (això farà la comprovació de PIR inactiu vs activat)
  • Una font d'alimentació de 5 V CC per al Wemos (OR, un convertidor de corrent continu CC-DC. Nota: és possible que un regulador de voltatge LM7805 no funcioni per a aquesta aplicació, tal com es comentarà més endavant en aquest projecte)
  • Dos resistors per a un divisor de tensió (la mida dependrà de les tensions d'alarma, que es comentaran més endavant al projecte)
  • Una resistència d'1K ohm per actuar com a resistència de tracció per controlar la potència LM339
  • Un MOSFET 2N7000 (o similar) per activar lògicament el LM339 (possiblement opcional, que es discutirà més endavant al projecte)
  • Una placa de mida adequada per configurar i provar circuits
  • Un munt de cables de taulers per connectar-ho tot
  • Eines necessàries: talladores laterals, filferro de nucli únic
  • Un multímetre de CC (obligatori!)

Pas 1: el quadre de control del sistema d'alarma

La caixa de control del sistema d’alarma
La caixa de control del sistema d’alarma

Primer, algunes advertències i exempcions de responsabilitat

Personalment, tinc un sistema d'alarma Bosch. Us recomanaria que descarregueu el manual corresponent per al vostre sistema d'alarma en particular i que us familiaritzeu amb ell abans de començar, ja que haureu d'apagar el sistema d'alarma per connectar les zones. També us recomanaria que llegiu aquest article en la seva totalitat abans de començar.

A continuació es mostra una llista d'algunes coses que hauríeu de saber abans de començar: assegureu-vos de llegir-les i entendre-les abans de continuar. No assumeixo cap responsabilitat si enganxeu el sistema d'alarma i / o heu de pagar al vostre instal·lador per solucionar-lo. No obstant això, si llegiu i enteneu el següent i preneu les precaucions necessàries, hauríeu d'estar bé:

1. El meu sistema d'alarma tenia una bateria de seguretat dins de la caixa i també tenia un interruptor de manipulació a l'interior de la tapa (que proporciona accés a la placa del sistema d'alarma), de manera que fins i tot apagava l'alarma externament quan treieu el tauler frontal del control caixa va activar l'alarma! Per solucionar-ho mentre treballava al projecte, vaig passar per alt la protecció contra manipulacions desconnectant-la i curtcircuitant l’interruptor de manipulació (el fil vermell gruixut com es mostra a la foto superior)

2. En tornar a encendre el sistema d'alarma, al cap d'aproximadament 12 hores, el tauler de control d'alarma va començar a emetre un so amb codis d'error. Després de determinar els codis d'error mitjançant el manual, vaig saber que m'avisava que:

  • La data / hora no s'ha definit (necessitava el codi mestre i la seqüència de claus del manual per reconfigurar-los)
  • Que la bateria de seguretat no estava connectada (solució fàcil, només m'havia oblidat de tornar-la a endollar)

3. A la meva alarma, hi ha 4 blocs de connexió de zona (etiquetats com a Z1-Z4) per connectar els PIR a la placa principal d'alarma, però, el meu sistema d'alarma és capaç de tenir 8 zones. Cada bloc de connexió de zona pot executar 2 zones cadascuna (Z1 fa Z1 i Z5, Z2 fa Z2 i Z6, etc.). El sistema d'alarma té una protecció contra manipulacions integrada per impedir que algú digui, obrint la tapa al sistema d'alarma tal com s'ha esmentat anteriorment o tallant els cables a un PIR. Distingeix cada manipulador de zones mitjançant resistències EOL (final de línia). Es tracta de resistències de mida específica que resideixen al "final de la línia", és a dir, dins del PIR (o interruptor de manipulació de la caixa de control o caixa de sirena o el que estigui connectat a aquesta zona) Com s'ha esmentat, aquestes resistències s'utilitzen com a "manipulador" protecció '- tècnicament, si algú talla els cables a un PIR, perquè el sistema d'alarma espera veure una certa resistència d'aquest PIR, si canvia la resistència, suposa que algú ha manipulat el sistema i activarà l'alarma.

Per exemple:

A la meva alarma, la zona "Z4" té 2 cables, un surt al PIR al meu passadís i l'altre passa a l'interruptor de manipulació de la caixa de control d'alarma. Dins del passadís PIR, té una resistència de 3300 ohm. L'altre cable que s'executa al commutador de manipulació de la caixa de control té una resistència de 6800 ohm cablejada en sèrie. Així és com el sistema d'alarma (lògicament) distingeix entre els amortidors "Z4" i "Z8". De la mateixa manera, la zona "Z3" té un PIR (amb una resistència de 3300 ohm) i també el commutador de manipulació de sirena (amb una resistència de 6800 ohm) que conforma "Z7". L'instal·lador d'alarmes hauria preconfigurat el sistema d'alarma de manera que sàpiga quin dispositiu està connectat a cada zona (i ha canviat la mida de la resistència EOL perquè el sistema d'alarma estigui programat per saber quina mida tenen les diferents resistències EOL. no heu de canviar el valor d’aquestes resistències!)

Per tant, basat en l’anterior, perquè cada zona pot tenir diversos dispositius connectats també (amb valors de resistència diferents), i recordant la fórmula V = IR (voltatge = amplificadors x resistència), això també pot significar que cada zona pot tenir voltatges diferents. El que ens condueix al següent pas, mesurant cada zona de ralentí contra tensió desencadenada …

Pas 2: mesurar el voltatge de la zona d'alarma

Mesura del voltatge de la zona d'alarma
Mesura del voltatge de la zona d'alarma
Mesura del voltatge de la zona d'alarma
Mesura del voltatge de la zona d'alarma

Un cop hàgiu obtingut accés a la placa principal del vostre sistema d’alarma (i heu passat per alt l’interruptor de manipulació si en teniu un, segons el pas anterior), torneu a encendre el sistema d’alarma. Ara hem de mesurar la tensió de cada zona quan el ralentí (no hi ha moviment davant del PIR) contra el TRIGGERED (el PIR ha detectat moviment) Agafeu un bolígraf i un paper perquè pugueu anotar les lectures de tensió.

ADVERTÈNCIA: és probable que la major part del vostre sistema d'alarma funcioni amb 12 V CC, però tindrà la seva alimentació inicial a 220 V (o 110 V) de CA, amb un transformador que converteix la potència de CA a CC. LLEGEIX el manual i preneu precaucions addicionals per assegurar-vos que NO mesureu cap terminal de CA !!! Segons la captura de pantalla del meu sistema d'alarma en aquesta pàgina, podeu veure que la part inferior de la imatge és d'alimentació de CA, transformada a 12V CC. Mesurem el corrent continu de 12V a les caselles vermelles ressaltades. No toqueu mai l’alimentació de CA. Tingueu molta cura!

Mesurant la tensió PIR

Tinc 4 x PIR connectats a Z1 fins a Z4. Mesureu cadascuna de les zones de la següent manera.

  1. En primer lloc, identifiqueu el terminal GND i els terminals de zona al tauler d’alarma. Els he ressaltat a la imatge que es mostra al manual de la meva alarma Bosch.
  2. Agafeu el multímetre i ajusteu el voltatge a 20V CC. Connecteu el cable negre (COM) del multímetre al terminal GND de l’alarma. Col·loqueu el cable vermell (+) del multímetre a la primera zona, en el meu cas amb l'etiqueta "Z1". Anoteu la lectura del voltatge. Seguiu els mateixos passos per a la resta de zones. Les meves mesures de voltatge són les següents:
  • Z1 = 6,65 V
  • Z2 = 6,65 V
  • Z3 = 7,92V
  • Z4 = 7,92V

Segons l'anterior, les meves dues primeres zones només tenen PIR adjuntes. Les dues darreres zones tenen protecció contra manipulacions PIR i contra manipulacions (manipulació de la caixa de control Z3, manipulació de sirena Z4). Tingueu en compte les diferències de tensió.

3. És probable que necessiteu dues persones per a aquest següent pas. També haureu de saber quin PIR es troba en quina zona. Torneu enrere i llegiu el voltatge de la primera zona. Ara feu que algú de casa vostra camini davant del PIR, la tensió hauria de caure. Preneu nota de la nova lectura de voltatge. En el meu cas, les tensions es llegeixen de la següent manera quan s’activen els PIR:

  • Z1 = 0V
  • Z2 = 0V
  • Z3 = 4,30 V.
  • Z4 = 4,30 V.

Segons l’anterior, puc veure que quan s’activen les zones 1 i 2, el voltatge baixa de 6,65 V a 0 V. Tanmateix, quan s’activen les zones 3 i 4, el voltatge baixa de 7,92 V a 4,30 V.

Mesura d'alimentació de 12V

Utilitzarem el terminal de 12 V CC de la caixa de control d’alarma per alimentar el nostre projecte. Hem de mesurar la tensió de l'alimentació de 12 V CC. Tot i que ja indica 12V, hem de conèixer una lectura més precisa. En el meu cas, en realitat es llegeix 13,15 V. Escriviu-ho, necessitareu aquest valor al següent pas.

Per què mesurem la tensió?

El motiu pel qual necessitem mesurar la tensió de cada PIR és pel circuit que crearem. Utilitzarem un xip comparador de diferencial LM339 quad (o comparador quad op-amp) com a component elèctric central d’aquest projecte. El LM339 té 4 comparadors de tensió independents (4 canals) on cada canal pren 2 x tensions d’entrada (una entrada inversora (-) i una altra que no inverteix (+), vegeu el diagrama) Si la tensió de la tensió d’entrada inversora hauria de baixar la tensió que no inverteix, la seva sortida relacionada es traurà a terra. De la mateixa manera, si la tensió d'entrada que no inverteix cau per sota de l'entrada que inverteix, la sortida s'eleva fins a Vcc. Convenientment, a casa meva tinc 4 x alarmes PIR / zones, per tant, cada zona es connectarà a cada canal del comparador. Si teniu més de 4 x PIR, necessitareu un comparador amb més canals o un altre LM339.

Nota: el LM339 consumeix energia en nano-amplificadors, de manera que no afectarà la resistència EOL del sistema d'alarma existent.

Si això és confús, continueu al pas següent de totes maneres, començarà a tenir més sentit un cop ho connectem.

Pas 3: crear un divisor de tensió

Image
Image

Què és un divisor de tensió?

Un divisor de tensió és un circuit amb 2 x resistències (o més) en sèrie. Proporcionem tensió a (Vin) a la primera resistència (R1) L’altra pota de R1 es connecta a la primera pota de la segona resistència (R2) i l’altre extrem de R2 es connecta a GND. A continuació, prenem una tensió de sortida (Vout) de la connexió entre R1 i R2. Aquest voltatge es convertirà en el nostre voltatge de referència per al LM339. Per obtenir més informació sobre com funcionen els divisors de tensió, consulteu el vídeo de YouTube Adohms

(Nota: les resistències no tenen polaritat, de manera que es poden connectar de qualsevol manera)

Càlcul de la nostra tensió de referència

Suposant que la tensió cau quan s’activa el PIR (aquest hauria de ser el cas de la majoria d’alarmes), el que intentem és obtenir una lectura de tensió que estigui gairebé a mig camí entre la nostra tensió de ralentí més baixa i la màxima tensió activada, aquest es convertirà en el nostre voltatge de referència.

Prenent la meva alarma com a exemple …

Les tensions de ralentí de la zona eren Z1 = 6,65 V, Z2 = 6,65 V, Z3 = 7,92 V, Z4 = 7,92 V. Per tant, el voltatge de ralentí més baix és de 6,65 V

Les tensions activades per zona van ser: Z1 = 0V, Z2 = 0V, Z3 = 4.30V, Z4 = 4.30V. Per tant, la tensió activada més alta és de 4,30 V.

Per tant, hem de triar un nombre a mig camí entre 4,30 V i 6,65 V (no ha de ser exacta, sinó aproximadament). En el meu cas, la meva tensió de referència ha d’estar al voltant de 5,46 V. Nota: Si el voltatge de ralentí més baix i el màxim activat estan molt a prop els uns dels altres a causa de diverses zones que provoquen un rang de tensions diferents, és possible que hàgiu de crear 2 o més divisors de voltatge.

Càlcul dels nostres valors de resistència per al divisor de tensió

Ara tenim una tensió de referència, hem de calcular quines resistències de mida necessitem per crear un divisor de tensió que proporcionarà la nostra tensió de referència. Utilitzarem la font de tensió de 12 V CC (Vs) de l’alarma. Tanmateix, segons el pas anterior, quan mesuràvem l'alimentació de 12 V CC, en realitat vam obtenir 13,15 V. Hem de calcular el divisor de tensió utilitzant aquest valor com a font.

Calculeu Vout mitjançant la llei d'ohms …

Vout = Vs x R2 / (R1 + R2)

… o utilitzeu una calculadora divisora de tensió en línia:-)

Haureu d’experimentar amb els valors de la resistència fins aconseguir la sortida desitjada. En el meu cas, va funcionar amb R1 = 6,8 k ohm i R2 = 4,7 K ohm, calculat en forma llarga de la següent manera:

Vout = Vs x R2 / (R1 + R2)

Vout = 13,15 x 4700 / (6800 + 4700)

Vout = 61, 805/11, 500

Vout = 5,37V

Pas 4: Connecteu el LM339

Cablatge del Wemos D1 Mini
Cablatge del Wemos D1 Mini

Divisor de tensió a LM339 invertint entrades

Com s’ha comentat anteriorment pel que fa al comparador LM339, es necessitaran 2 x entrades. Un serà un voltatge de cada PIR a cada terminal que no inverteix (+) els canals, l’altre serà el nostre voltatge de referència al nostre terminal (-) inversor. La tensió de referència ha d’alimentar les 4 entrades inversores del comparador. Apagueu el sistema d'alarma abans de realitzar aquests passos.

  • Executeu un cable des del bloc de 12 V CC del sistema d’alarma fins al carril + de la vostra taula de treball *
  • Executeu un cable des del bloc GND del sistema d'alarma fins al carril - de la vostra placa de control **
  • Instal·leu el comparador LM339 al mig del tauler de control (la osca indica el més proper al pin 1)
  • Instal·leu les resistències de 2 x per crear un circuit divisor de tensió i un cable per a la sortida de tensió dividida
  • Executeu els cables des del Vout "dividit en tensió" a cada terminal d'inversió LM339

* SUGGERIMENT: utilitzeu un clip de cocodril per alimentar-lo, si és possible, ja que facilita el subministrament d'alimentació al vostre projecte ** IMPORTANT. És possible que calgui un MOSFET SI esteu alimentant els Wemos des del tauler d'alarma. En el meu cas, el LM339, Wemos i Alarm reben energia de la mateixa font (és a dir: el sistema d'alarma en si mateix). Això em permet encendre qualsevol cosa amb una única connexió d'alimentació. Tanmateix, per defecte, els pins GPIO dels Wemos es defineixen com a pins "INPUT", és a dir, prenen la tensió que els hi llancen i confien en aquesta font per proporcionar nivells de tensió correctes (nivells mínims / màxims) de manera que els Wemos guanyin " no caure o esgotar-se. En el meu cas, el sistema d'alarma aconsegueix la seva potència i comença a fer la seqüència d'arrencada molt ràpidament, de fet, tan ràpid que ho fa abans que els Wemos puguin arrencar i declarar els pins GPIO com a "INPUT_PULLUP" (tensió que s'incrementa internament a xip). Això no significa que les diferències de tensió causin que els Wemos es bloquegin quan tot el sistema va obtenir energia. L'única manera de solucionar-ho seria apagar i engegar manualment els Wemos. Per solucionar-ho, s'afegeix un MOSFET que actua com un "commutador lògic" per encendre l'LM339. Això permet a Wemos arrencar, configurar els seus pins GPIO comparadors de 4 x com a "INPUT_PULLUP", retardar uns segons i DESPRÉS (mitjançant un altre pin GPIO D5 definit com a OUTPUT) enviar el senyal "HIGH" mitjançant el pin GPIO D5 al MOSFET, que lògicament engega el LM339. Recomanaria connectar-se com abans, però si veieu que el Wemos es bloqueja com jo, hauríeu d'incloure el MOSFET amb una resistència d'1 k ohm. Per obtenir més informació sobre com fer-ho, consulteu el final d'aquesta instrucció.

Zones d’alarma a entrades no inversores LM339

Ara hem d’executar cables de cada zona del tauler de control d’alarma a les entrades del comparador LM339. Amb el sistema d'alarma encara apagat, alimenteu un cable per a cada zona a cada entrada no inversora (+) del comparador LM339. Per exemple, al meu sistema:

  • El cable de Z1 passa a l'entrada LM339 1+
  • El cable de Z2 passa a l’entrada LM339 2+
  • El cable de Z3 passa a l'entrada LM339 3+
  • El cable de Z4 passa a l'entrada LM339 4+

Consulteu el pin-out de l'LM339 al pas 3 si voleu recordar-lo (està codificat per colors amb la imatge del tauler). Un cop feta, la tauleta de revisió hauria d'aparèixer de manera similar a la imatge que es mostra en aquest pas.

Enceneu el sistema d'alarma i mesureu la tensió que surt del divisor de tensió per assegurar-vos que sigui igual a la vostra tensió de referència, tal com es va calcular anteriorment.

Pas 5: Connexió del Wemos D1 Mini

Cablatge del Wemos D1 mini

Ara tenim totes les entrades LM339 ateses, ara hem de connectar-nos al Wemos D1 mini. Cada pin de sortida LM339 es dirigeix a un pin WIO GPIO (entrada / sortida de propòsit general) que designarem mitjançant codi com a pin pullup d’entrada. El Wemos pren fins a 5 V com a màxim com a tensió Vcc (font d’entrada) (tot i que ho regula internament fins a 3,3 V) Utilitzarem un regulador de voltatge LM7805 molt comú (EDIT: vegeu més avall) per deixar caure el carril de 12 V a la placa 5V per alimentar els Wemos. La fitxa tècnica del LM7805 indica que necessitem un condensador connectat a cada costat del regulador per suavitzar la potència, tal com es mostra a la imatge de la placa. La pota més llarga del condensador és positiva (+), així que assegureu-vos que es connecti correctament.

El regulador de tensió pren tensió (pin lateral esquerre), terra (pin central) i sortida de tensió (pin lateral dret) Comproveu el pin-out si el regulador de tensió varia del LM7805.

(EDITAR: Vaig trobar que els amplificadors que provenien del tauler d'alarma eren massa alts per manejar el LM7805. Això provocava molta calor al petit dissipador de calor de l'LM7805 i provocava que fallés i, al seu torn, feia que Wemos s'aturés Vaig substituir el LM7805 i els condensadors per un convertidor de corrent continu DC-DC i no he tingut problemes des de llavors. Són molt fàcils de connectar. Simplement connecteu la tensió d'entrada de l'alarma, connecteu-vos primer a un multímetre i utilitzeu el cargol del potenciòmetre i ajusteu fins que el voltatge de sortida sigui ~ 5V)

Pins d'entrada GPIO

Per a aquest projecte, utilitzem els pins següents:

  • zona Z1 => pin D1
  • zona Z2 => pin D2
  • zona Z3 => pin D3
  • zona Z4 => pin D5

Connecteu les sortides des del LM339 als pins GPIO relacionats de la placa Wemos, tal com es mostra a la imatge de la taula de proves que es mostra en aquest pas. Una vegada més, tinc codificades per colors les entrades i les sortides coincidents, perquè sigui més fàcil veure què fa referència a què. Cada pin GPIO de l'Arduino es defineix com un "INPUT_PULLUP", és a dir, es tirarà fins a 3,3 V en ús normal (IDLE) i el LM339 els tirarà cap a terra en cas que es desencadeni el PIR. El codi detecta el canvi ALTA a BAIXA i envia un missatge sense fils al vostre programari domòtic. Si teniu problemes amb aquest funcionament, és possible que tingueu les entrades inversores vs no inversores de manera equivocada (si el voltatge del vostre PIR augmenta quan s’activa, com passa amb la majoria dels PIR d’afició, voldreu que les connexions al revés)

IDE Arduino

Elimineu els Wemos de la taula de treball, ara hem de penjar-hi codi (enllaç alternatiu aquí). No entraré en detalls sobre com fer-ho, ja que hi ha molts articles al web sobre la càrrega de codi a Wemos o a un altre ESP8266 taules tipus. Connecteu el cable USB a la placa Wemos i al vostre ordinador i engegueu l’IDE Arduino. Baixeu-vos el codi i obriu-lo al vostre projecte. Haureu d’assegurar-vos que la placa correcta està instal·lada i carregada per al vostre projecte, així com el port COM correcte seleccionat (Eines, Port). També necessitareu les biblioteques adequades instal·lades (PubSubClient, ESP8266Wifi) Per obtenir el tauler Wemos inclòs al vostre esbós, consulteu aquest article.

Haureu d’alterar les línies de codi següents i substituir-les pel vostre propi SSID i contrasenya per a la vostra connexió sense fils. A més, canvieu l'adreça IP per apuntar al vostre propi broker MQTT.

// Wifi

const char * ssid = "your_wifi_ssid_here"; const char * password = "your_wifi_password_here"; // MQTT Broker IPAddress MQTT_SERVER (172, 16, 223, 254)

Un cop canviat, verifiqueu el codi i pengeu-lo a la placa Wemos mitjançant un cable USB.

Notes:

  • Si feu servir diferents ports GPIO, haureu d’ajustar el codi. Si feu servir més o menys zones de les que jo tinc, també haureu d’ajustar el codi i el TOTAL_ZONES = 4; constant a la seva mida.
  • En iniciar el meu sistema d'alarma, el sistema d'alarma faria una prova de potència a tots els 4 x PIR que tiraven tots els GPIO connectats a terra, fent que els Wemos pensessin que s'estaven desencadenant les zones. El codi ignorarà l’enviament de missatges MQTT si veu activades les 4 zones x alhora, ja que suposa que el sistema d’alarma s’encén.

Enllaç de descàrrega alternatiu al codi AQUÍ

Pas 6: proves i configuració d'OpenHAB

Proves i configuració OpenHAB
Proves i configuració OpenHAB

Proves MQTT

MQTT és un sistema de missatgeria "subscripció / publicació". Un o més dispositius poden parlar amb un "broker MQTT" i "subscriure-se" a un tema determinat. Qualsevol missatge entrant des de qualsevol altre dispositiu que estigui "publicat" al mateix tema, serà transferit pel corredor a tots els dispositius que hi hagin subscrit. És un protocol extremadament lleuger i senzill d’utilitzar i perfecte com a simple sistema d’activació com ara el d’aquí. Per fer proves, podeu veure els missatges MQTT entrants des de Wemos al vostre corredor MQTT executant l'ordre següent al servidor Mosquitto (Mosquitto és un dels molts programes disponibles per MQTT Broker). Aquesta ordre subscriu els missatges entrants de manteniment en viu:

mosquitto_sub -v -t openhab / alarm / status

Hauríeu de veure els missatges entrants que provenen de Wemos cada 30 segons aproximadament amb el número "1" (que significa "Estic viu"). Si veieu constants "0" (o no hi ha resposta), no hi haurà comunicació. Un cop veieu el número 1, significa que Wemos es comunica amb l'agent de MQTT (cerqueu "Última voluntat i testament de MQTT" per obtenir més informació sobre com funciona això o bé vegeu aquesta bona entrada de bloc).

Un cop hàgiu demostrat que la comunicació és funcional, podem provar que s’informa d’un estat de zona mitjançant MQTT. Subscriviu-vos al tema següent (el # és un comodí)

mosquitto_sub -v -t openhab / alarm / #

Haurien d’entrar els missatges d’estat habituals, així com l’adreça IP del mateix Wemos. Camineu davant d’un PIR i també hauríeu de veure com entra la informació de la zona que indica que està OBERTA i, després, un segon més tard, que està TANCADA, similar al següent:

openhab / alarm / status 1

openhab / alarm / zone1 OPEN

openhab / alarm / zone1 TANCAT

Un cop això funcioni, podem configurar OpenHAB perquè tingui una bona representació a la GUI.

Configuració OpenHAB

Es requereixen els canvis següents a OpenHAB:

fitxer de transformació 'alarm.map': (opcional, per provar)

CLOSED = Inactiu OPEN = Activat NULL = Desconegut- = Desconegut

fitxer de transformació 'status.map':

0 = Error

1 = En línia - = BAIX! NUL = desconegut

fitxer 'elements':

String alarmMonitorState "Alarm Monitor [MAP (status.map):% s]" {mqtt = "<[mqttbroker: openhab / alarm / status: state: default]"} String alarmMonitorIPAddress "Alarm Monitor IP [% s]" {mqtt = "<[mqttbroker: openhab / alarm / ipaddress: state: default]"} Número zona1_Chart_Period "Diagrama de la zona 1" Contacte alarmZone1State "Estat de la zona 1 [MAP (alarm.map):% s]" {mqtt = "<[mqttbroker: openhab / alarm / zone1: state: default "} String alarmZone1Trigger" Lounge PIR [% 1 $ ta% 1 $ tr] "Number zone2_Chart_Period" Zone 2 Chart "Contact alarmarmZone2State" State 2 State [MAP (alarm.map):% s] "{mqtt =" <[mqttbroker: openhab / alarm / zone2: state: default "} String alarmZone2Trigger" First Hall PIR [% 1 $ ta% 1 $ tr] "Number zone3_Chart_Period" Zone 3 Chart "Contact alarmZone3State" Zone 3 Estat [MAP (alarm.map):% s] "{mqtt =" <[mqttbroker: openhab / alarm / zone3: state: default "} String alarmZone3Trigger" Dormitori PIR [% 1 $ ta% 1 $ tr] "Número zone4_Chart_Period "Diagrama de la zona 4" Contacte alarmZone4State "Estat de la zona 4 [MAP (alarm.map):% s]" {mqtt = "<[mqttbroker: openha b / alarm / zone4: state: default "} String alarmZone4Trigger" PIR de la sala principal [% 1 $ ta% 1 $ tr]"

fitxer 'mapa del lloc' (inclòs el gràfic rrd4j):

Element de text = alarmZone1Trigger valuecolor = [<= 60 = "# ff0000", <= 300 = "# ffa500", <= 600 = "# 008000", 3600 = "# 000000"] {Frame {Switch item = zone1_Chart_Period label = Assignacions de "període" = [0 = "Hora", 1 = "Dia", 2 = "Setmana"] Imatge url = "https:// localhost: 8080 / rrdchart.png" visible = [zone1_Chart_Period == 0, zone1_Chart_Period = = Uninitialized] URL de la imatge = "https:// localhost: 8080 / rrdchart.png" visible = [zone1_Chart_Period == 1] Image url = "https:// localhost: 8080 / rrdchart.png" visible = [zone1_Chart_Period == 2]}} Element de text = alarmZone2Trigger valuecolor = [<= 60 = "# ff0000", <= 300 = "# ffa500", <= 600 = "# 008000", 3600 = "# 000000"] {Frame {Switch item = zone2_Chart_Period label = "Assignatura de períodes" = [0 = "Hora", 1 = "Dia", 2 = "Setmana"] Imatge url = "https:// localhost: 8080 / rrdchart.png" visible = [zone2_Chart_Period == 0; == 2]}} Element de text = alarmZone3Trigger valuecolor = [<= 60 = "# ff0000", <= 300 = "# ffa500", <= 600 = "# 008000", 3600 = "# 000000"] {Frame {Switch item = zone3_Chart_Period label = "Període" assignacions = [0 = "Hora", 1 = "Dia", 2 = "Setmana"] Imatge url = "https:// localhost: 8080 / rrdchart.png" visible = [zone3_Chart_Period == 0, zone3_Chart_Period == Uninitialized] Image url = "https:// localhost: 8080 / rrdchart.png" visible = [zone3_Chart_Period == 1] Imatge url = "https:// localhost: 8080 / rrdchart.png" visible = [zone3_Chart_Period == 2]}} Text item = alarmZone4Trigger valuecolor = [<= 60 = "# ff0000", <= 300 = "# ffa500", <= 600 = "# 008000", 3600 = "# 000000"] {Frame {Switch item = zone4_Chart_Period label = " Període "assignacions = [0 =" Hora ", 1 =" Dia ", 2 =" Setmana "] Imatge url =" https:// localhost: 8080 / rrdchart.png "visible = [zone4_Chart_Period == 0, zone4_Chart_Period == Sense inicialitzar] Image url = "https:// localhost: 8080 / rrdchart.png" visible = [zone4_Chart_Period == 1] Image url = "https:// localhost: 8080 / rrdchart.png" visible = [zone4_Chart_Period == 2] }} // OPCIONAL però útil per diagnosticar l'estat i l'adreça IP ss Element de text = alarmMonitorState Element de text = alarmMonitorIPAddress

fitxer 'normes':

regla "Canvi d'estat de la zona 1 d'alarma"

quan l’element alarmZone1State ha canviat a OPEN i després postUpdate (alarmZone1Trigger, nou DateTimeType ()) alarmZone1State.state = CLOSED end

regla "Canvi d'estat de la zona d'alarma 2"

quan l’element alarmZone2State ha canviat a OPEN i després postUpdate (alarmZone2Trigger, nou DateTimeType ()) alarmZone2State.state = CLOSED end

regla "Canvi d'estat de la zona 3 d'alarma"

quan l'article alarmZone3State ha canviat a OPEN i després postUpdate (alarmZone3Trigger, nou DateTimeType ()) alarmZone3State.state = CLOSED end

regla "Canvi d'estat de la zona 4 d'alarma"

quan l’element alarmZone4State ha canviat a OPEN i després postUpdate (alarmZone4Trigger, nova DateTimeType ()) alarmZone4State.state = CLOSED end

És possible que hàgiu de canviar lleugerament la configuració OpenHAB anterior per adaptar-la a la vostra configuració.

Si teniu problemes amb l’activació dels PIR, comenceu des del principi i mesureu les tensions per a cada part del circuit. Un cop n’esteu satisfet, comproveu el cablejat, assegureu-vos que hi hagi un punt en comú, comproveu els missatges del Wemos mitjançant una consola de depuració en sèrie, comproveu la comunicació MQTT i comproveu la sintaxi dels fitxers de transformació, d’elements i de mapes del lloc.

Bona sort!

Recomanat: