¿Cómo controlar las tomas de corriente de rf baratas de openhab

enchufes inteligentes son la forma más sencilla de automatizar su casa, pero a alrededor de $ 40 cada uno para una toma en base Wi-Fi o Z-Wave, es poco probable que comprar más de unos pocos.

Es posible que ya tienen algunas tomas de Radiofrecuencia baratas sin embargo - el tipo que vienen con su propio mando a distancia personalizado y tener algunos selectores de canal y de identificación en la parte posterior. Desafortunadamente, no existen hubs inteligentes para el hogar en el mercado que el trabajo con ellos. ¿No sería estupendo si pudiera enlazar, aquellos en los que su sistema de casa inteligente bricolaje alguna manera? Bueno, se puede - con bastante facilidad, de hecho - con alrededor de 10 $ en partes.Batalla de las Smart Home Ejes: lo que hay y lo que viene?Batalla de las Smart Home Ejes: lo que hay y lo que viene?Lee mas

Con un poco más de trabajo, también es posible integrar algún otro hardware remoto basado en RF a medida, como esta pantalla de cine presupuesto.

Que necesitas:

  • ESP8266 NodeMCU v12E Dev Board (modelo exacto no importa, V1 y V3 debe estar bien también). La razón por la que estamos usando un tablero NodeMCU es porque queremos que la fácil conexión Wi-Fi más tarde. El enlace es para un paquete de 2, lo que da a $ 7 cada uno.
  • Paquete de transmisor y receptor de 433Mhz (alrededor de $ 3).
  • RCSwitch y bibliotecas MQTT, y nuestro código - todos disponibles para su descarga desde Github.
  • Un servidor MQTT, local o remoto.
  • Algunas tomas controlado por RF que funcionan en la banda de 433 MHz (se deben decir en el control remoto). El mío lo compré de Maplin como un paquete de 3 por alrededor de £ 20 ($ 25.89).

Si esta es la primera vez que la programación de la junta NodeMCU, tendrá que descargar los plugins de Arduino para ello: sigue con la primera parte de nuestra Arduino Killer guía introductoria para el chip NodeMCU / ESP8266. Usted también necesitará conductores CH430. Usted puede encontrar los controladores con la firma macOS CH430 aquí, o Windows aquí.Cumplir con el asesino de Arduino: ESP8266Cumplir con el asesino de Arduino: ESP8266Lo que si te dijera que hay una una junta dev compatible con Arduino con una función de Wi-Fi para menos de $ 10? Bueno, la hay.Lee mas

He usado v1.6.5 del Arduino, porque cualquier cosa más arriba presenta más problemas que los que resuelve. Rebajar si no lo ha hecho.

Antes de continuar, voy a asumir un nivel básico de conocimiento sobre la programación de Arduino, y que tiene su configuración NodeMCU en el gestor de tabla, y es capaz de enviar correctamente un código de demostración. También debería haber añadido las bibliotecas incluidas en nuestra descarga en su Arduino / bibliotecas carpeta.

Si usted tiene una ya existente PubSubClient biblioteca o MQTT, copia de seguridad y eliminarlo - el que he incluido en la descarga es el único en el que pudiera recibir de forma fiable mensajes en NodeMCU, y he intentado mucho!

RF oler (Opcional)

Este paso no es necesario si sólo desea controlar DIP-switch o marque enchufes selectores - los que son compatibles fuera de la caja, y se necesitará la modificación del código mínimo (esto sigue siendo interesante para hacer en primer lugar, sin embargo, por lo que` ll entender lo que está pasando detrás de las escenas).

Si usted tiene otros controles remotos de RF que le gustaría probar la adición, usted necesitará primero “oler” los códigos de radiofrecuencia que se transmiten. Para ello, cargar el ReceiveDemo_Advanced esbozar desde el Menú -gt; Ejemplos -gt; RCSwitch carpeta, y cambiar la siguiente línea desde 0

myswitch.enableReceive(0)- // receptor en interrupción 0 = gt; que es el pin # 2

a 2.

myswitch.enableReceive(2)- // receptor en GPIO 2 / D4.

Cablear el módulo receptor de la siguiente manera. En cuanto a la parte frontal de la placa del receptor (que es el más largo de los dos, el transmisor es cuadrada) - el lado de los componentes en:

  • Más a la derecha es GND. Conectar a GND en el tablero NodeMCU.
  • Más a la izquierda es VCC. Conectarse a VIN en el tablero NodeMCU.
  • dos patillas centrales son la señal. Conecte cualquiera a D4 en la NodeMCU (que están conectados entre sí, por lo que no importa cuál).

433 cableado-1

Ahora subir el modificado ReceiveDemo_Advanced, y cuando se hace, abrir el monitor serie y empezar a presionar los botones de sus mandos a distancia. Copiar el decimal (incluyendo la longitud de bits), longitud del pulso, y el protocolo cuando se pulsa un botón.

RF pantalla olfateando

Vídeo: Cómo hacer una radio casera (sin pilas) (Experimentos Caseros)

Después de hacer esto, me encontré con mi pantalla de proyector utilizaba

  • SCREEN UP: Recibido 8694273 / 24bit- Duración del impulso: 355 o 356- Protocolo: 1
  • Pantalla hacia abajo: Recibido 8694276 / 24bit-Tiempo de pulso: 355 o 356- Protocolo: 1

Continuar durante tantos botones como sea necesario.

Probando el transmisor

A continuación, vamos a intentar el envío de códigos usando el transmisor. Cablear el módulo transmisor (el cuadrado uno) como sigue. Tenga cuidado: el etiquetado de estos pines es atroz.

El pin VCC es realmente en el medio, no en el lado izquierdo. Destruí un módulo en el proceso de calcular esto. Eso que dice “ATAD” es en realidad “DATA”, escrito al revés. Una vez más, los datos va a D4, VCC a VIN, y GND a GND (quitar el módulo receptor, que ya no lo necesita).

433 cableado-2

Capacidad de carga hasta la Ejemplos -gt; -gt RCSwitch; TypeB_WithRotaryOrSlidingSwitches, y de nuevo, cambiar el pin de datos:

myswitch.enableTransmit(10)-

a

myswitch.enableTransmit(2)-

Tenga en cuenta, una variedad de ejemplos están en incluido en la biblioteca, y cuál funciona para usted dependerá del tipo exacto de interruptor que usted tiene. Tipo A (interruptores DIP) y B (diales o deslizadores) son los más comunes - se refiere a los cuadros en la página RCSwitch. Para el tipo B, encender y apagar un socket es tan simple como:

myswitch.encender(1, 4)-myswitch.apagar(1, 4)-

donde 1 es el ID del canal (el dial de la parte superior), y 4 es el identificador de socket (el dial inferior). Estos fueron escritos en números romanos en mis tomas. Por tanto, un máximo de 16 tomas individuales se pueden abordar, aunque enchufes múltiples pueden usar la misma dirección si tiene varios dispositivos para activar a la vez.

Sin embargo, mi pantalla de proyector era un poco diferente - se utiliza una longitud de impulso diferente. Por lo tanto, para operar los, la siguiente trabajó. Nota También puede definir un protocolo diferente si el mando lo necesita, pero asegúrese de que define el Protocolo antes de la duración del pulso. La longitud del impulso se sobrescribe cuando se cambia de protocolo.

// Tenga en cuenta que la pantalla de mi realidad requiere dos pulsaciones de botón (no una pulsación larga, pero dos prensas físicas), así que estoy retrasando un poco, entonces enviar la misma señal de nuevovacío screenUp(){myswitch.setPulseLength(358)-myswitch.enviar(8694273,24)- // (código decimal, el número de bits)retrasar(2000)-myswitch.enviar(8694273,24)-}vacío screenDown(){myswitch.setPulseLength(358)-myswitch.enviar(8694276,24)-retrasar(2000)-myswitch.enviar(8694276,24)-}

Pruebe todos los códigos están trabajando primero antes de pasar al siguiente paso.

Vídeo: Pi-Home a Raspberry pi Home Automation add on board IR + RF + Zwave + Zigbee

Controlar a través de MQTT

Abre el boceto que ha descargado de Github llamado mqtt_rcswitch.ino, y empezar por modificar el SSID de la red y la contraseña para su hogar. A continuación, cambiar el nombre del canal si lo desea, y configurar el servidor MQTT. Si aún no dispone de un servidor que se ejecuta en su MQTT OpenHAB instalar, leer la parte 2 de nuestra guía para principiantes de OpenHAB. Tenga en cuenta que el código está diseñado para sockets de tipo B (interruptor giratorio), aunque se puede modificar fácilmente para los interruptores DIP también.Guía del Principiante OpenHAB Parte 2: Z-Wave, MQTT, Reglas y la CartografíaGuía del Principiante OpenHAB Parte 2: Z-Wave, MQTT, Reglas y la CartografíaOpenHAB, el software de automatización del hogar de código abierto, es muy superior a las capacidades de otros sistemas de automatización del hogar en el mercado - pero no es fácil para ponerse en marcha. De hecho, puede ser francamente frustrante.Lee mas

La parte más importante del código es la mensaje recibido() función, que responde a los comandos MQTT entrantes. En esta función, estamos primera comprobación de la palabra clave importante - Elegí “interruptor” y “pantalla”. En el caso de “interruptor”, que a continuación, analizar fuera de la canal y módulo ID- a continuación, comprobar el cuerpo de carga útil para el comando.

vacío mensaje recibido(cadena tema, string payload, carbonizarse * bytes, no firmado int longitud) {Si (tema.índice de("cambiar") gt; =0){// cambiar el control, analizar fuera de la canal y módulo ID int canal = getValue(tema,`/`,3).Toint()-int enchufe = getValue(tema,`/`,4).Toint()-Si(carga útil == "en"){myswitch.encender(canal, enchufe)-}más{myswitch.apagar(canal, enchufe)-}}más Si (tema.índice de("pantalla") gt; =0){// control de pantallaSi(carga útil == "arriba"){screenUp()-}más Si(carga útil == "abajo"){screenDown()-}}/ * Añadir otra persona si aquí para escuchar a más comandos (o simplemente modificar la anterior si no quieren pantalla) * /}

De manera predeterminada a continuación, la siguiente MQTT comandos de trabajo:

salón / control / conmutador / X / Y (donde X es el canal, e Y es enchufe ID- con el cuerpo de mensaje de encendido o apagado)
salón / control / pantalla (con cuerpo de mensaje hacia arriba o hacia abajo)

Utilice la línea de comandos o un cliente GUI MQTT para poner a prueba los dispositivos antes de añadir a OpenHAB.

Agregando a OpenHAB

Como último paso, sólo tenemos que crear algunos artículos para estos interruptores en OpenHAB. He definido los siguientes elementos por ahora, pero debería ser capaz de encontrar la manera de añadir más:

Vídeo: Kaku controlled by raspberry pi

/ * * Dispositivos RF433mHz / Switch CinemaScreen "Pantalla" (Cine) {MQTT ="gt; [broker: salón / control / pantalla: comando: ON: abajo], gt; [broker: salón / control / pantalla: comando: OFF: up]"} Cambie Switch41 "Switch41" (Cine) {MQTT ="gt; [broker: salón / control / interruptor de encendido / 4/1: comando: ON: ON], gt; [broker: salón / control / cambiar / 4/1: comando: OFF: OFF]"} Cambie Switch42 "Switch42" (Cine) {MQTT ="gt; [broker: salón / control / interruptor de encendido / 4/2: comando: ON: ON], gt; [broker: salón / control / cambiar / 4/2: comando: OFF: OFF]"}

Ahora debería ser capaz de controlar sus dispositivos de RF de OpenHAB! Una cosa que me sorprendió gratamente fue la gama - un solo nodo era capaz de cubrir la mayor parte de mi casa. Se pueden añadir, por supuesto, otro nodo, escuchando el mismo canal, que se limita a repetir los mismos comandos, si necesita más cobertura.

La única limitación a tener en cuenta es que las tomas mismos no pueden informar de su estado, por lo que si se utiliza el mando a distancia original, controlar el estado del conector no se puede reflejar con precisión dentro OpenHAB. Se adhieren a simplemente usando la interfaz OpenHAB y que debe estar bien.

Preguntas o problemas? Pido a distancia en los comentarios, y voy a hacer mi mejor esfuerzo para ayudar. Si desea mejorar en mi código, no dude en presentar una solicitud de extracción.

Artículos Relacionados