[Modul] Reolink

Ist schon drinnen, Variable ‘Sirene’ für alle Events, das dürfte reichen. Ich gehe davon aus, wenn du im Garten bist, darf auch deine Katze nicht Alarm auslösen.

Ok, also diese Variable deaktiviert die Alarmerkennung?

Nein, damit wird die Sirene deaktiviert…

Dann würde also noch die Alarmerkennung fehlen. Ich teste mal das SetMdAlarm

Was gibts denn, was noch fehlt? Du kannst Die Sirene deaktivieren, den ftp-Upload, die Emailfunktion, die Kameraaufzeichnung… Mir kommt soeben nichts andere mehr in den Sinn was nicht doppelspurig wäre.

Das Problem ist wie weiter oben beschrieben. Ich habe jetzt eine komplexe Logik aufgebaut. Beispiel bzw. Auschnitt der Logik:

Wenn ich zuhause bin und z.b. mich im Garten aufhalten möchte, dann drücke ich manuell eine Taste eines Zigbee Schalters. Dieser löst den Gartenmodus aus und aktiviert diesen. Das AutoTracking wird deaktiviert was auch bestens funktioniert, aber die Kamera reagiert weiterhin auf mich und löst einen Alarm aus und versendet fleißig Nachrichten.

Jetzt wäre halt mein Wunsch das zusätzlich zu dem AutoTracking deaktivieren auch keine Alarmauslösung mehr stattfindet. Somit wäre wirklich alles ruhig wenn ich den Gartenmodus aktiviere.

Die entsprechenden Möglichkeiten sind vorhanden, bitte verwende doch diese in deinem Script

Sind diese Funktionen nur als Befehl hinterlegt oder auch als Variable? Ich sehe die jetzt nicht wirklich. Habe eine Variable für den Email Alarm, aber keine Status Variable für die deaktivierung der Alarmerkennung oder Push.

Als Befehl nicht, aber du kannst jede Variable über einen Script oder Ablaufplan auch schalten…

Entweder verstehe ich dich nicht richtig oder wir reden einander vorbei. Ich kann ja die Variable die ich benötige nicht schalten, weil sie ja nicht vorhanden ist im Modul.

Du kannst alle Alarm- und Benachrichtigungskanäle deaktivieren. Was willst du noch auschalten?

Ich habe diese Variablen zur Verfügung:

Sage mir bitte mit welcher Variable das geht, das ich den Alarmmodus deaktivieren kann. Email ist soweit klar.

Mit dem Modul kannst du alles hier aufgeführten Benachrichtigungs Kanäle deaktivieren. Sag mir was du noch deaktivieren willst und zeig mir die Option in der originalen App.

Den Bewegungsalarm.

Habe es jetzt mal so gelöst:

<?php

################################################################################
# Script:   MdAlarmSchalten.ips.php
# Version:  1.0.20260508
#
# Schaltet den Motion-Detection-Alarm einer Reolink-Kamera per API ein oder aus.
#
# Aufgabe:
# Dieses Skript aktiviert oder deaktiviert den MdAlarm der Reolink-Kamera über
# den API-Befehl SetMdAlarm.
#
# Hintergrund:
# Das Reolink-Modul stellt nicht alle benötigten Alarmfunktionen direkt als
# passende Variable bereit. Deshalb wird der MdAlarm gezielt über die lokale
# Reolink-API geschaltet.
#
# Funktionen:
# - liest den Übergabeparameter ENABLE aus
# - wandelt ENABLE in einen numerischen API-Wert um
# - erstellt die MdAlarm-Konfiguration mit Tageszeitblöcken
# - setzt die Bewegungserkennungsfläche vollständig aktiv
# - sendet den SetMdAlarm-Befehl per HTTPS an die Kamera
# - protokolliert Ergebnis oder Fehler im Meldungslog
#
# Das Skript arbeitet mit:
# - $ip           -> IP-Adresse der Reolink-Kamera
# - $user         -> Benutzername der Kamera
# - $password     -> Passwort der Kamera
# - $channel      -> Kamerakanal
# - $_IPS['ENABLE'] -> Übergabeparameter zum Ein- oder Ausschalten
#
# Ablauf:
# 1. Konfiguration laden
# 2. ENABLE-Parameter auswerten
# 3. API-Ziel-URL erzeugen
# 4. MdAlarm-Payload erstellen
# 5. API-Aufruf per cURL senden
# 6. Ergebnis prüfen und protokollieren
#
# Besonderheiten:
# - ENABLE = 1 aktiviert den MdAlarm
# - ENABLE = 0 deaktiviert den MdAlarm
# - es werden vier Zeitblöcke für den gesamten Tag gesetzt
# - Scope-Maske ist vollständig aktiv
# - SSL-Prüfung ist deaktiviert, da lokale Kameras oft eigene Zertifikate nutzen
#
# Voraussetzungen:
# - Reolink-Kamera ist im Netzwerk erreichbar
# - lokale Reolink-API ist aktiv
# - Benutzername und Passwort sind korrekt
# - PHP cURL ist verfügbar
#
# Hinweis:
# Dieses Skript wird von anderen Skripten per IPS_RunScriptEx() aufgerufen.
#
# Beispiel:
# IPS_RunScriptEx(39993, ['ENABLE' => 1]); // MdAlarm AN
# IPS_RunScriptEx(39993, ['ENABLE' => 0]); // MdAlarm AUS
#
# Es erfolgt keine automatische Ausführung.
################################################################################

################################################################################
# ID-DOKUMENTATION
#
# Dieses Skript arbeitet ohne IP-Symcon Variablen-IDs.
#
# Übergabeparameter:
#
# $_IPS['ENABLE']
# -> true / 1  = MdAlarm aktivieren
# -> false / 0 = MdAlarm deaktivieren
#
# Aufrufende Skripte:
# - Kameraautomatik
# - SonoffBedienung
################################################################################

################################################################################
# FUNKTIONSWEISE MDALARM-SKRIPT
#
# Dieses Skript:
# - schaltet die kamerainterne Bewegungserkennung per Reolink-API
# - wird als Hilfsskript von anderen Kamera-Skripten verwendet
#
# Verhalten:
# - ohne ENABLE-Parameter wird MdAlarm deaktiviert
# - API-Fehler werden im Meldungslog protokolliert
# - Antwort der Kamera wird im Meldungslog ausgegeben
#
# Zweck:
# - direkte Kontrolle der kamerainternen Alarmfunktion
# - sichere Deaktivierung im Gartenmodus
# - Aktivierung bei Überwachungsbetrieb
################################################################################

################################################################################
# AUFRUF
#
# Dieses Skript wird:
# -> durch andere Skripte per IPS_RunScriptEx() ausgeführt
#
# Verwendung:
# - Gartenmodus aktiv  -> ENABLE = 0
# - Überwachung aktiv  -> ENABLE = 1
################################################################################

################################################################################
# KONFIGURATION
#
# Zentrale Parameter:
#
# - $ip       -> IP-Adresse der Kamera
# - $user     -> Benutzername der Kamera
# - $password -> Passwort der Kamera
# - $channel  -> Kamerakanal
#
# Hinweis:
# Zugangsdaten sollten möglichst nicht unnötig in Dokumentationen kopiert werden.
################################################################################


// -----------------------------------------------------------------------------
// KONFIGURATION: REOLINK-KAMERA
// -----------------------------------------------------------------------------

$ip       = '192.168.60.64';      // IP-Adresse der Reolink-Kamera
$user     = 'xxxxxx';              // Benutzername der Kamera
$password = 'xxxxxx'; // Passwort der Kamera

$channel = 0;                     // Kamerakanal


// -----------------------------------------------------------------------------
// PARAMETER AUSWERTEN
// -----------------------------------------------------------------------------

$enable = false;

if (isset($_IPS['ENABLE'])) {
    $enable = filter_var($_IPS['ENABLE'], FILTER_VALIDATE_BOOLEAN);
}

$enableInt = $enable ? 1 : 0;

IPS_LogMessage(
    'MdAlarmSchalten',
    'Skript gestartet | ENABLE=' . ($_IPS['ENABLE'] ?? 'nicht gesetzt') . ' | Ergebnis=' . ($enable ? 'AN' : 'AUS')
);


// -----------------------------------------------------------------------------
// API-URL ERSTELLEN
// -----------------------------------------------------------------------------

$url = 'https://' . $ip . '/api.cgi?cmd=SetMdAlarm'
     . '&user=' . urlencode($user)
     . '&password=' . urlencode($password);


// -----------------------------------------------------------------------------
// PAYLOAD ERSTELLEN
// -----------------------------------------------------------------------------

$scopeTable = str_repeat('1', 60 * 33);

$payload = [
    [
        'cmd' => 'SetMdAlarm',
        'action' => 0,
        'param' => [
            'MdAlarm' => [
                'channel' => $channel,
                'useNewSens' => 1,
                'newSens' => [
                    'sens' => [
                        [
                            'id'          => 0,
                            'beginHour'   => 0,
                            'beginMin'    => 0,
                            'endHour'     => 6,
                            'endMin'      => 0,
                            'enable'      => $enableInt,
                            'priority'    => 0,
                            'sensitivity' => 12
                        ],
                        [
                            'id'          => 1,
                            'beginHour'   => 6,
                            'beginMin'    => 0,
                            'endHour'     => 12,
                            'endMin'      => 0,
                            'enable'      => $enableInt,
                            'priority'    => 0,
                            'sensitivity' => 12
                        ],
                        [
                            'id'          => 2,
                            'beginHour'   => 12,
                            'beginMin'    => 0,
                            'endHour'     => 18,
                            'endMin'      => 0,
                            'enable'      => $enableInt,
                            'priority'    => 0,
                            'sensitivity' => 12
                        ],
                        [
                            'id'          => 3,
                            'beginHour'   => 18,
                            'beginMin'    => 0,
                            'endHour'     => 23,
                            'endMin'      => 59,
                            'enable'      => $enableInt,
                            'priority'    => 0,
                            'sensitivity' => 12
                        ]
                    ],
                    'sensDef' => 12
                ],
                'scope' => [
                    'cols'  => 60,
                    'rows'  => 33,
                    'table' => $scopeTable
                ]
            ]
        ]
    ]
];


// -----------------------------------------------------------------------------
// API-AUFRUF SENDEN
// -----------------------------------------------------------------------------

$ch = curl_init($url);

curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

$response = curl_exec($ch);
$error    = curl_error($ch);

curl_close($ch);


// -----------------------------------------------------------------------------
// FEHLERBEHANDLUNG
// -----------------------------------------------------------------------------

if ($error != '') {
    IPS_LogMessage('MdAlarmSchalten', 'Fehler beim API-Aufruf: ' . $error);
    return;
}


// -----------------------------------------------------------------------------
// ABSCHLUSS / LOGGING
// -----------------------------------------------------------------------------

IPS_LogMessage(
    'MdAlarmSchalten',
    'MdAlarm ' . ($enable ? 'AN' : 'AUS') . ': ' . $response
);

Push Nachrichten ist das gekoppelt mit deiner Variable E-Mail Alarm? Ich denke eher nein und das ist eine eigene Funktion?

Das wird ja wohl höchstens mit der normalen Bewegungserkennung funktionieren, aber nicht mit der AI-Erkennung. Ausserdem ist diese Funktion in der App oder Im Webinterface nicht vorgesehen, daher kann sie auch nicht vernünftig im Modul abgebildet werden.

Nein, ich habe mich noch ein wenig mit der Push Funktion beschäftigt, aber da kommt von er API keine Vernünftige Antwort, so dass der Status überhaupt gelesen werden kann. Grundsätzlich hast du ja die Variablen in Symcon, dann kannst du daraus die Push-Benachrichtigung in Symcon machen.

Bei mir funktioniert das wunderbar. Drücke am Sonoff 4fach Taster - Taste 1 → Gartenmodus wird eingeschaltet → Alle Funktionen der Kamera was den Alarm betrifft wird ausgeschaltet, also keine Verfolgung und Alarm/Push/Email Benachrichtigung. Aufnahme am NVR läuft weiter mit. Dann wenn ich Taste 2 drücke wird der Gartenmodus beendet und alles ist wieder normal. Das ganze habe ich dann noch gekoppelt mit der Anwesenheit der Smartphones und weil ein Smartphone ewig zu Hause liegt und die Kamera denkt es ist ja jemand zu Hause habe ich noch im Flur einen HUE Dial Tap montiert, mit dem kann ich dann wenn wir das Haus verlassen alles andere auschalten und die Kamera ist scharf geschaltet. Wie gesagt funktioniert echt super das Ganze.

Problem ist das ich ewig vergesse den Taster zu drücken wenn ich in den Garten gehe, muss mich da noch dran gewöhnen. Das ganze würde auch gehen mit einem BWM.

Die neue beta 3.0 ist nun verfügbar mit vielen Erweiterungen.

Version 3.0 (16.05.2026)

- Massiver interner Umbau mit Zentralisierung der API-Konfiguration.

- Änderung der API-Abfrage. Es wird nun alle Endpunkt der Reihe nach im Sekunden-Abstand abgefragt, um eine Überlastung der API zu verhindern.

- Verbesserung der V20-Erkennung (neuere Bereiche in der API).

- Sensitivität nun für MD (Motion Detection) und AI (Artificial Intelligence) einstellbar.

- Bewegungserkennung für MD (Motion Detection) lässt sich aktivieren und deaktivieren, die voreingestellten Bereiche werden beibehalten.

- Push-Benachrichtigung lässt sich aktivieren und deaktivieren. Vorsicht, diese Funktion deaktiviert auch die komplette Bewegungserkennung von der Kamera über Webhook, nicht nur die Benachrichtigung in der Reolink-App.

Das bezieht sich nur auf den MD Alarm, dies ist nun ebenfalls im Modul integriert. Der AI-Alarm wird nicht über diese Funktion deaktiviert, aber mit den neuen Funktionen im Modul kann die Empfindlichkeit auf Null gesetzt werden.

Das deaktivieren der Push-Nachrichten ist nun ebenfalls integriert. Aber Vorsicht, diese Funktion deaktiviert auch die komplette Bewegungserkennung von der Kamera über Webhook, nicht nur die Benachrichtigung in der Reolink-App.

1 „Gefällt mir“

Super, danke dir für die Erweiterungen und deine Mühe.