Script para detección de presencia BLUETOOTH

Obre del grupo «Domoticz a lo spain» de telegram nos explica cómo se consigue que cuando un ESP32 bluetooth detecte un dispositivo en concreto se envíe un mensaje a telegram y se abra la puerta del garaje. 

Para poner en funcionamiento el script necesitaremos crear una variable en domoticz:

En mi caso además, he creado un dummy selector para poder activar o desactivar el script sin entrar en DzVents:

En el propio script explico el porqué he utilizado cada cosa en cada momento.

La parte de telegram hay que poner los datos de cada uno, yo he puesto 123456789 y XXXXX:

  • El dispositivo ‘Bombilla 1’ es un shelly en seco que abre una puerta de un garaje.
  • ‘STRATOS 3’ un reloj con bluetooth.
return {
on = {
devices = {'STRATOS_3'}
},
execute = function(dz, device)
local luz = dz.devices('STRATOS_3')
if luz.state == 'On' then -- En este script utilizo una variable tipo string
dz.variables('dondeando_bt').set('EN CASA') -- Estoy asignado a la variable el valor 'FUERA DE CASA' cuando el dispositivo bluetooth STRATOS_3 se desconecta.
end
if luz.state == 'Off' then -- Defino local para no tener que escribir siempre dz.devices 'STRATOS_3'... más adelante.
dz.variables('dondeando_bt').set('FUERA DE CASA') -- Estoy asignado a la variable el valor 'FUERA DE CASA' cuando el dispositivo bluetooth STRATOS_3 se desconecta.
end
if ((dz.variables('dondeando_bt').value == 'EN CASA' and luz.state == 'Off') and (dz.devices('DUCATI_796').state == 'AUTO')) then
dz.devices('Bombilla 1').switchOn() -- Cuando estoy en casa, el dispositivo bluetooth se desconecta y el selector ducati está en auto quiero que actue el garaje. (se cierre la puerta)
dz.openURL({url = "https://api.telegram.org/bot1234567890:XXXXXXXXXXXXXXXXXXXXXXXX/sendMessage?chat_id=12345678&text=Ducati se va de ruta", method = 'GET'}) -- Poner los datos de tu bot
-- En estas condicionantes meto un selector porque solamente quiero que se ejecute este script cuando salgo con la moto.
end
if ((dz.variables('dondeando_bt').value == 'FUERA DE CASA' and luz.state == 'On') and (dz.devices('DUCATI_796').state == 'AUTO')) then
dz.devices('Bombilla 1').switchOff()
dz.openURL({url = "https://api.telegram.org/bot1234567890:XXXXXXXXXXXXXXXXXXXXXXXX/sendMessage?chat_id=12345678&text=Ducati vuelve", method = 'GET'})
end
end
}
-- En este script utilizo una variable para evitar que se dispare el script cada vez que por mqtt recibo una orden de que el dispositivo bluetooth esté conectado o desconectado.
-- De este modo, solamente se ejecuta cuando hay un cambio de on a off en el dispositivo bluetooth, es mi caso un Amazfit Stratos 3
Si solamente se necesita que nos llegue un mensaje pues se adapta. Lo mismo si no se necesita selector o abrir el garaje.

Para cualquier duda o consulta tienes disponible el grupo de telegram «Domoticz a lo Spain» para entrar, ponerte cómodo y participar cuanto quieras.

Clica aquí para entrar en él

Cualquier duda, sugerencia o comentario será bien recibida en la web!