
Gepubliceerd op
Milestone XProtect alarms via Telegram ontvangen
Waarom via Telegram?
- Eenvoudig uit te breiden naar nieuwe gebruikers
- Geen 'Smart Connect' nodig om pushmeldingen te ontvangen
- Pushmeldingen ook te ontvangen op smart watches
- Gebruikers hebben geen toegang nodig tot de Milestone omgeving
- Eenvoudig en overzichtelijk
- Gewoon omdat het kan!
Vereisten om Milestone alarms en events te kunnen versturen via een Telegram kanaal
Milestone XProtect versie 2024 R1 en hoger hebben lange tijd last gehad van een bug waardoor de 'Smart Connect' feature niet, of slecht werkte. Om toch alerts te kunnen blijven ontvangen hebben we een eenvoudige koppeling gemaakt om toch allerlei soorten events te kunnen ontvangen. We gaan je laten zien hoe je dit opzet.
Vereisten:
- Toegang tot je Milestone server.
- Milestone XProtect versie 2023 R1 of hoger.
- Milestone BatAction plugin.
- Python voor Windows (getest met 3.11.4).
- De volgende Python modules: ffmpegUrl, requests, pip.
- Telegram group en bot aanmaken. Hiervan het 'bot_token' en 'chat id' verzamelen.
- Camera met RTSP stream.
Onderaan het artikel vind je het volledige script om dit alles automatisch uit te voeren. Scheelt jou weer gedoe!

Het doel
Wanneer er een detectie van een persoon plaatsvindt op een specifieke camera, willen wij hiervan een melding ontvangen op een Telegram groupschat. Dit bereiken we door een aantal stappen aan elkaar te koppelen.
1: We installeren de Milestone BatAction Plugin via Powershell op onze server.
2: We installeren Python en aanvullende modules om te communiceren met de camera.
3: We maken een Telegram group aan en verzamelen de chat_id en bot_token.
4: We configureren ons python script
5: We stellen de Milestone BatAction Plugin correct in
6: We maken de Milestone rule en testen maar!
Stap 1 - Installeren Milestone Bataction
Execute dit script in Powershell.exe (of ISE) als administrator op de Milestone server om de BatAction plugin te installeren. Deze BatAction plugin wordt op het onderstaande pad door Powershell geïnstalleerd.
C:\Program Files\VideoOS\MIPPlugins\BatAction

Stap 2 - Python modules installeren
Om met de camera te communiceren gebruiken we Python. Hier hebben we de volgende modules voor nodig: ffmpegUrl, requests, pip.
Op het moment dat Milestone een person detect event aanmaakt, halen we via Python een screenshot op van de camera. Dit doen we door middel van de Milestone rule engine en de batchplugin welke we in stap 1 hebben geïnstalleerd. Zo houden we het zo simpel mogelijk. In het voorbeeld hanteren we een Dahua camera en bijbehorende stream URL.

Wat doet dit script?
- Controleert of Python geïnstalleerd is. Als dat niet zo is, wordt het automatisch gedownload en geïnstalleerd.
- Zorgt ervoor dat pip aanwezig is en up to date wordt gehouden.
- Installeert het Python pakket
requestsdat nodig is voor API communicatie. - Maakt de map
C:\Scriptsaan als deze nog niet bestaat. - Controleert of 7Zip geïnstalleerd is. Als dit niet het geval is, wordt eerst Chocolatey geïnstalleerd (indien nodig) en vervolgens 7Zip via Chocolatey.
- Downloadt FFmpeg als een
.7zarchiefbestand naar de tijdelijke map. - Pakt het archief uit in de
C:\map met behulp van 7Zip. - Hernoemt de uitgepakte map naar
C:\ffmpeg. - Verwijdert het gedownloade archiefbestand na installatie.
- Slaat de installatie van FFmpeg over als deze al aanwezig is op het systeem.
Stap 3 - Telegram bot en group
We moeten een Telegram bot en group maken. Hiervan moeten we het chat_id en bot_token verzamelen.
Dit gaan we nodig hebben in ons Python script. In deze video wordt uitgelegd welke stappen je moet doorlopen om deze te bemachtigen.
Stap 4 - Python script voor de communicatie met de camera
Ons python script! Dit script gaan we opslaan in 'c:\Scripts' onder de naam telegram.py
Wat doet dit script nou precies?
- Importeert de benodigde Python modules (
requests,subprocess,os,sys). - Stelt variabelen in voor je Telegram bot:
BOT_TOKENenCHAT_ID. - Stelt variabelen in voor je RTSP cameragegevens: gebruikersnaam, wachtwoord, IPadres en poort.
- Bouwt daaruit de volledige RTSP URL (
RTSP_URL) voor de camerastroom. - Definieert het pad naar
ffmpeg.exe(FFMPEG_PATH) en naar het tijdelijke snapshotbestand (SNAPSHOT_PATH). - Functie
capture_rtsp_snapshot(rtsp_url, output_path):- Roept
ffmpegaan om één enkel frame uit de RTSP stream te halen. - Slaat dat frame op als JPEG in
output_path. - Geeft
Trueterug bij succes, ofFalseen een foutmelding bij mislukking.
- Roept
- Functie
send_to_telegram(message, photo_path=None):- Als
photo_pathis opgegeven: verstuurt een foto met bijschrift naar de opgegeven Telegram chat via de Bot API (sendPhoto). - Anders stuurt hij alleen een tekstbericht (
sendMessage). - Vangt eventuele netwerk of API errors af en toont een foutmelding in de console.
- Als
- In de
if __name__ == "__main__":sectie:- Probeert eerst een snapshot van de camera te maken met
capture_rtsp_snapshot(RTSP_URL, SNAPSHOT_PATH). - Bij een geslaagde snapshot: roept
send_to_telegram("Objectdetectie Oprit", SNAPSHOT_PATH)op om de foto met bijschrift te versturen. - Bij een mislukte snapshot: stuurt hij alleen de tekst “Objectdetectie Oprit (snapshot failed)” naar Telegram.
- Controleert vervolgens of het tijdelijke bestand
snapshot.jpgbestaat en verwijdert dit bestand weer.
- Probeert eerst een snapshot van de camera te maken met
Pas de velden in de foto aan naar jouw eigen waardes
- BOT_TOKEN - (Zie video in stap 3)
- CHAT_ID - (Zie video in stap 3)
- RTSP_USERNAME - Username van jou camera
- RTSP_PASSWORD - Password van jou camera
- RTSP_IP - Het IP adres van jou camera
Dit script sla je op in 'c:\Scripts' onder de naam telegram.py

Stap 5 - Configureren van de Milestone BatAction plugin
We hebben nu inmiddels de volgende stappen doorlopen:
- BatAction Plugin geïnstalleerd.
- Python en vereiste Python modules geïnstalleerd.
- Telegram bot token en chat id verzameld.
- Python script ingesteld voor de communicatie met de camera.
De volgende stap is het instellen van de BatAction Plugin. Hier gaan we de volgende stappen voor doorlopen:
1: Navigeer op de Milestone server naar: C:\Program Files\VideoOS\MIPPlugins\BatAction\BatFiles\

2: Open de folder Batfiles. Hier zie je een batch file genaamd CameraReport.bat. Dit is een standaard bestand. Maak hier een copy van in dezelfde map en noem deze "Telegram.bat".

3: Bekijk de inhoud van het Telegram.bat file

4: Bekijk de inhoud van het Telegram.bat file. Wat doet dit bestand nou eigenlijk?
- Start PowerShell zonder profiel of gebruikersinteractie.
- Negeert het PowerShell executiebeleid
- Zoekt een .ps1-script met dezelfde naam als de .bat file, in de map
..\Ps1Files\. - Voorbeeld:
install.batvoert..\Ps1Files\install.ps1uit. - Geeft alle meegegeven parameters aan de .bat file door aan het .ps1 script.

5: Navigeer nu één map terug en open de Ps1Files folder

6: Copy nu weer het CameraReport.ps1 bestand in dezelfde map en hernoem deze naar Telegram.ps1.

7: Pas het script aan naar deze tekst:
Python C:\Scripts\Telegram.py
En sla dit script op.

8: Als je deze hebt opgeslagen, herstart je de Event Server zodat de scripts opnieuw worden geladen en we deze in de rule engine kunnen zien.

9: Open de management client, navigeer naar de rules sectie en selecteer de camera waarop je een event wil ontvangen. In dit voorbeeld gebruiken we de people detection van een camera als de action. Maar, dit kan in principe iedere andere trigger zijn. Enkele relevante voorbeelden zouden kunnen zijn:
- Motion detection
- I/O trigger (bijvoorbeeld aanbellen bij een intercom)
- People/car detection
Wil je eenvoudig testen of je automation werkt? Gebruik dan bijvoorbeeld een user defined event als actie trigger zodat je deze eenvoudig kan testen!

Het resultaat!

Done!
Als je alle stappen succesvol hebt doorlopen kan jij nu via Telegram meldingen vanuit Milestone ontvangen. Om het makkelijker te maken vind je hieronder het script om zowel de BatAction Plugin en de Python modules automatisch te installeren.
Vragen? Neem gerust contact op!
Artikelen, referenties en nieuws
Meer artikelen


Zelf ‘AI video analyse’ oplossingen bouwen zonder coding met Visionplatform.ai

Milestone XProtect implementatie Spijkenisse Medisch Centrum

Slagboom ANPR oplossing Navicogroup

Cameratoezicht appartementencomplex Zoetermeer

Voorraadbeheer en toezicht in vriescellen

Environmental monitoring met Milestone

Milestone XProtect troubleshooting

Deltares kiest voor VMS oplossing

Meerdere appartementencomplexen voorzien van camerabewaking

Kosten besparen met draadloze straalzenders

AJAX Keypad TouchScreen uitgebracht

Ruïne van Brederode beveiliging met verschillende disciplines

De voordelen van video management software

RRB Security gecertificeerd voor AJAX Fibra

Milestone Rapid Review

Bezoek aanmelden met een video intercom

RRB Security gecertificeerd voor Genetec

VvE Helena aan Zee voorzien van cameratoezicht

Alarmsysteem voor sportvereniging

Buitenterrein alarmbeveiliging vitale infrastructuur

Camerabewaking en de AVG

Milestone 2021 R1 release

Camerabeveiliging voor VvE in Barendrecht

Lokale opslag vs cloudopslag voor video

Slimme camera’s en mensenrechten

Waarom heeft een camerasysteem onderhoud nodig?

Bewakingscamera’s met verschillende resoluties

Hoe camerabewaking geld kan besparen/opleveren voor een bedrijf

Waarom camerabewaking combineren met alarm? – Optioneel aansluiten op meldkamer

Hoe wordt publiek cameratoezicht in Amsterdam en Rotterdam gebruikt?

Diverse soorten camera’s: wat zijn de verschillen?

Camera’s om koorts op te sporen: wat mag?

Voordelen van een draadloos alarm voor uw zaak?

Waarom een alarmsysteem voor je bedrijf of kantoor?

Hoe zet de politie ANPR in?

Groepen in de gaten houden met slimme camera’s

Waarop moet je op letten bij aanschaf van een camerasysteem?

Onveilige camera’s: dit kan je ertegen doen!

Waarom een camera installateur voor uw camerabewaking?

Moet je een camera registreren bij de politie?

Cameratoezicht en privacy (AVG) – Wat zijn de gevolgen?

Cybersecurity en camera’s: hoe kwetsbaar zijn camera’s?
Hoe de Nederlandse politie camera’s gebruikt voor opsporing

Floating traffic control camera toezicht voor PKWaterbouw

Indu-Tools voorzien van 4K Milestone XProtect camerasysteem

Gezichtsherkenning – Een gevaar voor onze privacy?

Milestone XProtect ANPR voor Rhenus Logistics

Camerasysteem voor VvE Pietersberg

Milestone XProtect voor gemeente de Fryske Marren

Milestone XProtect voor Paard

Milestone XProtect voor GGZ De Hoop

Camerasysteem installatie bij verzorgingstehuis Salem

Camerasysteem voor Carwash Melis

Stichting Distinto kiest voor Mirasys

RRB Security: Milestone XProtect integrator & specialist

50+ bewakingscamera advies en tips!

Camerabeveiliging voor bibliotheek de Boekenberg Spijkenisse

Camerabewaking Museum Rotterdam

Onbeveiligde camera’s gemakkelijk via internet te bekijken

Regelgeving inzet verborgen camera’s?

Analoog vs IP vs HD-CVI

Van full HD naar 4K als norm?



