Domótica Alarma de puertas de bajo costo

Pinochet

Webmaster
ODUM
Desde
24 Jul 2019
Mensajes
855
Hace tiempo realice un proyecto y tenia ganas de compartirlo, pero no había tenido tiempo. Como punto de partida debo aclarar que soy informático/industrial, por lo que si hay cosas electrónicas nombradas de mala manera o que no sigan el estandar me avisan y lo corrijo.
Objetivo: Crear un sistema que informe mediante un bot de Telegram cada vez que alguien abra una puerta.
Materiales:
ESP8266 $1.6 Link
Interruptor Magnetico $0.94 Link
Adaptador ESP8266 $0.87 (Puede ser cambiado por un level converter) Link
Cables dupont (Opcional) $1.77 Link
Descargas
Para el modulo ESP8266
ESP8266 Flasher Link
ESPlorer Link
Para el bot de Telegram (Opcional)
Notepad++ Link
Netbeans 8.2 Link
Java Jdk 1.8 Link
MySql 5.7 Link
Wildfly 10 Link
Paso 0: Instalación de herramientas necesarias
0.1: Instalación de Python, Pip, adafruit y esptool
Bajar e instalar Python desde https://www.python.org/downloads/
Luego ejecutar el siguiente comando para instalar pip
Código:
python get-pip.py
pip -v
Una vez instalado pip se instala Adafruit
Código:
pip3 install adafruit-io
Finalmente esptool
Código:
pip install esptool
Paso 1: Si se elige el Adaptador de ESP8266, entonces se deben soldar los pines tal como se muestra en la foto con los GPIO0 y GPIO2 hacia arriba, para que no se energicen con el adaptador.
https://imgur.com/DRQ5oxL
[img=800x600]https://i.imgur.com/DRQ5oxL.jpg[/img]
https://i0.wp.com/henrysbench.capnfatz.com/wp-content/uploads/2016/12/ESP8266-PINOUT.png
ESP8266-PINOUT.png

Paso 2: Flashear el modulo ESP8266
En este paso se actualizará el modulo para que sea capaz de interpretar el lenguaje MicroPython y así dejar de depender de los comandos AT.
Lo primero que se debe hacer es conectar de la siguiente manera para que la placa este en modo flash
https://i.imgur.com/vKusDPx.png
[size=medium]
vKusDPx.png
[/size]

Anteriormente había flasheado la unidad utilizando el programa 'ESP8266 Flasher.exe', pero de alguna forma no me funciono ahora, por lo que decidí utilizar otra herramienta, esptool de python (Paso 0).
Mediante el siguiente comando desde la consola de windows (el puerto y nombre del archivo dependerá de cada uno)
Código:
esptool.py --chip esp8266 --port COM5 write_flash --flash_mode dio --flash_size detect 0x0 esp8266-20190529-v1.11.bin
Si todo va bien deberían ver algo así
https://imgur.com/5bLD4k8
Para validar que todo vaya bien podemos hacer un list de los archivos del modulo con el siguiente comando
Código:
ampy --port COM5 --baud 74880 ls
En donde debería retornar algo como /boot.py
Ahora para probar que realmente este interpretando Micropython se ejecutará un pequeño programa el cual será llamado al iniciar el modulo. Para esto se crean 2 archivos test.py y boot.py, el primer se encargara de mostrar en pantalla un mensaje cada 1 segundo, mientras que el segundo invoca al primero al partir el sistema.
test.py
Código:
import time
while True: 
print('DTX Revende') 
time.sleep(1)
boot.py
Código:
# This file is executed on every boot (including wake-boot from deepsleep)
import gc
import test
gc.collect()
Una vez creado es necesario transferirlos al modulo ESP
Código:
ampy --port COM5 --baud 115200 put test.py
ampy --port COM5 --baud 115200 put boot.py
Con esto se reinicia el modulo y se debería ver lo siguiente
https://imgur.com/xyoU350
Con esto ya tenemos funcionando Micropython en el ESP, ahora viene la parte entretenida, la programación
Necesitaremos de 3 archivos dentro del modulo, boot.py, ConnectWifi.py y test.py
boot.py
Código:
# This file is executed on every boot (including wake-boot from deepsleep)
import gc
import ConnectWiFi
ConnectWiFi.connect()
gc.collect()
ConnectWifi.py|
Código:
def connect():
    import network 
    ssid = 'Nombre SSID'
    password =  'Password SSID' 
    station = network.WLAN(network.STA_IF)
    if station.isconnected() == True:
        print('Already connected')
        return
 
    station.active(True)
    station.connect(ssid, password)
 
    while station.isconnected() == False:
        pass
 
    print('Connection successful')
    import test
    print(station.ifconfig())
test.py
Código:
import machine
import time
import urequests
import gc
pin0 = machine.Pin(2, machine.Pin.IN, machine.Pin.PULL_UP)
while True:
    pin_val = pin0.value()
    if pin_val is 1:
        print('pin alto')
    else:        
        print('pin bajo')
    response = urequests.get('http://192.168.1.24:8080/esp/lectura?value='+str(pin_val)) #aca va la ip del servidor donde montaron el wildfly
    response.close()
    gc.collect()    
    time.sleep(5.0)
Básicamente estas 3 clases funcionan de la siguiente manera, python siempre llama a boot.py, por lo que este se encargara de invocar la clase ConnectWifi.py la cual se encarga de conectarse a la red, una vez conectada llama a la clase test.py la cual se encarga de realizar toda la lógicafuncional, que no es nada más que sensar el pin 0 e informar a una URL su estado cada 5 segundos, lo que nos lleva a la siguiente parte, la creación de un servlet en Java, este servlet se encarga de recibir el pin sensado y a su vez informar mediante Telegram.
Paso 3: Instalación y configuración mysql
Paso 4: Creación del bot de telegram
Se debe buscar entre los contactos a BotFather y escribir los siguientes comandos
/start
/newbot
/nombreDelBot
/usernameDelBot (terminado en bot)
LSNhxRa.jpg

Una vez realizado esto tendremos las credenciales que se usaran en la configuración del bot de java y del servlet
Paso 4: Instalación y Configuración del entorno para Java.
Para paso se necesitan algunas nociones de programación, dejare las fuentes, pero probablemente cada uno deberá adaptarlo a sus necesidades.
El primer paso es descargar e instalar Wildfly 10 y java jdk 8. Para instalar wildfly solo se necesita descomprimir el archivo descargado. En mi caso C:
 

Dragonel

ODUM
Desde
24 Jul 2019
Mensajes
2.381
Suscrito para ver el avance y haber si me motivo nuevamente con mis proyectos
Tengo a medio avanzar un proyecto de automatización para regadío de un pequeño invernadero con utilización de energía solar y recolección de aguas lluvias para obtención de agua (alarma en caso de que no tenga agua)
Y lo otro que tengo es esto mismo pero para una casa completa con contraseña y botón de pánico, encendido de luces perimetrales, bocina y todo pero ese lo hice en la U
Ambas con arduino y varios módulos
 

Pinochet

Webmaster
ODUM
Desde
24 Jul 2019
Mensajes
855
victorgerardo' pid='26154' dateline='1574427934 dijo:
Servirá con el nodemcu v3, y como lo energizarás ? Buen proyecto
Debería funcionar en nodemcu v3, es el mismo modulo y lo que se flashea es el ESP8266.
En su momento lo energice con una batería externa (la tipica de celular) y también con un porta pilas, necesitas ~3V (lo que usa un puerto usb)
https://imgur.com/IflDeM0
 

DeSNuD0

Super Mod
ODUM
Desde
24 Jul 2019
Mensajes
7.259
Buen proyecto, no lo haré porque vivo en depa y se ve más útil para casas, pero me suscribiré para aprender.
Saludos y gracias por el aporte.
 

Akito

Donador
ODUM
Desde
8 Jul 2019
Mensajes
3.625
Buen Tema, te actualice las fotos para que se vean directo aca
 
Desde
24 Jul 2019
Mensajes
541
La raja la implementación, que tal andará contra soluciones listas que no son caras? por ejemplo Xiaomi en su ecosistema tiene un sensor de puerta, que puedes en teoría programarlo para que tenga un determinado comportamiento, por ejemplo una notificación, son como 8 USD cada uno https://es.aliexpress.com/item/32714904459.html?spm=a2g0o.productlist.0.0.4c4357fapCG9Hu&algo_pvid=69deb1f2-f91a-47f0-9a61-7eec4d04556e&algo_expid=69deb1f2-f91a-47f0-9a61-7eec4d04556e-0&btsid=bdd002ab-2e17-432a-8435-5a88c2ee69fa&ws_ab_test=searchweb0_0,searchweb201602_2,searchweb201603_55
algo que tengo pendiente por falta de tiempo, es terminar de probar el tema con Hass.io, de esta forma podría darle comportamientos personalizados a los sensores, estaba siguiendo un tutorial para integrar hass.io con google assistant, pero no lo he terminado, hay unos pasos medios truculentos que no me funcionaron, pero volveré a probar
 

Pinochet

Webmaster
ODUM
Desde
24 Jul 2019
Mensajes
855
gordoanorexico' pid='26806' dateline='1574771722 dijo:
La raja la implementación, que tal andará contra soluciones listas que no son caras? por ejemplo Xiaomi en su ecosistema tiene un sensor de puerta, que puedes en teoría programarlo para que tenga un determinado comportamiento, por ejemplo una notificación, son como 8 USD cada uno https://es.aliexpress.com/item/32714904459.html?spm=a2g0o.productlist.0.0.4c4357fapCG9Hu&algo_pvid=69deb1f2-f91a-47f0-9a61-7eec4d04556e&algo_expid=69deb1f2-f91a-47f0-9a61-7eec4d04556e-0&btsid=bdd002ab-2e17-432a-8435-5a88c2ee69fa&ws_ab_test=searchweb0_0,searchweb201602_2,searchweb201603_55
algo que tengo pendiente por falta de tiempo, es terminar de probar el tema con Hass.io, de esta forma podría darle comportamientos personalizados a los sensores, estaba siguiendo un tutorial para integrar hass.io con google assistant, pero no lo he terminado, hay unos pasos medios truculentos que no me funcionaron, pero volveré a probar
Yo creo que el de xiaomi funciona mejor, ademas te brinda muchas mas herramientas, como el hecho de abrir la ventana. Lo destacable es que puedes cambiar cualquiera parte de este proyecto y tomar lo necesario, la parte del telegram te abre mucho las posibilidades sin tener que depender de un sistema externo como el de xiaomi.
 
Volver
Arriba