Boas Pessoal,
Crie este projeto devido não encontrar nenhuma campainha que fosse ao encontro do que eu pretendia (tanto comercial como DIY).
O código foi criado de forma a não ser muito pesado para terminal e deste modo todo tipo notificação é via mqtt (desde tenha mqtt esta bom hahah), desta forma podem notificar o que quiserem como quiserem (com photo,vídeo ou mesmo só texto), vossa imaginação é o limite (alexa,telegrama,mediaplayer…)
Link do projeto:
Hardware:
Overview do código:
Existem dois mains scripts: 1º Autohealing.py e 2ª Doorbell_pi_start.py
autohealing.py
Este script apenas garante que doorbell_pi_start.py se encontra em cima, e em adicional envia o estado RSSI e temperatura do raspberry via mqtt
doorbell_pi_start.py
Existem 3 Threats neste script:
-
Sequencia de açoes apos touch button
- Tira foto
- Guarda na folder http local
- Faz facerecongition (caso tiverem ativo)
- Manda notificação mqtt (com nome da pessoa caso facerecongition tiver ativo)
- Play sound de Boas vindas
- Caso voipcall tiver ativo liga para numero que indicarem, caso contrario faz Play Sound de espera
- Play sound “Não é possível o atender, volte mais tarde” (este ponto so acontece voipcall estiver inativo)
-
Play de sound
- Gerência som de forma não travar threat “Sequencia de açoes apos touch button”
-
Mqtt receiver
- Recebe ordens:
- Live: Tira filma 15 sec em realtime guarda mp4 na folder http local envia notificação mqtt
- Snapshot : Tira photo em realtime guarda mp4 na folder http local envia notificação mqtt
- Playsound: Faz play do tts enviado
- Add new person to Face Recognition : Adiciona nova pessoa Face Recognition com base na ultima foto tirada
- Recebe ordens:
Nota: Pode receber voipcall/videocall qualquer altura
Exemplos de notificação (homeassistant ou node-red):
Enviar notificação para telegrama com Photo:
{ "url": "http://192.168.1.120/last_ring.jpg", "caption": "Doorbell -{{payload}} esta a porta" }
Nota: {{payload}} é a uma variavel para passar nome caso faceregnotion esteja ativo.
Enviar notificação alexa:
{"message": "knock knock Knock. {{payload}} is knocking on the door. Knock Knock Knock."}
Nota: {{payload}} é a uma variavel para passar nome caso faceregnotion esteja ativo
Mais exemplo no github: https://github.com/Hurleyking/AI_Smart_PI_Doorbell/tree/master/doorbell_pi/Node-red_and_ha_examples
Video de exemplo (por agora so tenho este mas postarei mais assim que tiver mais tempo):