[Modul] OpenHomeAlarm – Flexibles Alarmsystem für Symcon

Neues Update:

über Main area werden jetzt alle Areas Scharf/Unscharf geschaltet. Wenn eine Area nicht scharf zu schalten geht, weil ein Sensor blockiert, wird keine Area scharf geschaltet und es wird angezeigt, welcher Sensor blockiert.

Sensoren die nur in der Main Area angelegt sind, werden auch nur bei der Aktivierung der Main Area beachtet. Andersrum wenn Sensoren nur in den anderen Areas angelegt sind und Main Area wird aktiviert, wird auch auf die Sensoren der anderen Areas ein Alarm ausgelöst. Sensoren müssen also nicht mehr in Main und anderen Areas angelegt werden.

LG

Burkhard

Moin Burkhard,

habe den neuen “Aktionsbereich” nun auch getestet. Entweder ich blicke es nicht, oder es funktioniert nicht so wie ich mir das vorgestellt habe.

Also das Blinklicht/Flurlicht geht an, aber nicht wieder aus. Habe mehrere Aktionen “Wert umschalten/Schalte auf Wert” für die Rückstellung ausprobiert. Das Licht bleibt an.

Gruß Michael

Moin @tissenm,

bei bool brauchst Du zum Zurücksetzen der Instanz (Leuchtmittel) nur Boolean automatisch umkehren wählen, dann sollte es klappen.

LG
Burkhard

Moin Burkhard,

klappt leider nicht… Die Bool vom Licht bleibt auf “true”. Ich muss doch “Deaktivieren” drücken oder. Nicht dass es Fehlbedienung ist. :sweat_smile:

Gruß Michael

Eigentlich musst Du auf:


„Alarmaktionen zurücksetzen“ klicken.

Probiere es mal bitte.

LG
Burkhard

Habe ich nun auch gemacht, aber funktioniert leider auch nicht.

Gruß Michael

Hey Burkhard, ich habe eben erst dieses neue Modul von dir entdeckt​:hugs:

Du hast das alles echt gut durchdacht und top umgesetzt! Da kann ich meine selbst gebaute Alarmierungslösung wohl bald ablösen.

Ich hab das Modul jetzt noch nicht installiert, aber beim Durchlesen des Threads konnte ich jetzt nicht erkennen, ob man über dein Modul auch Push-Nachrichten mit definierten Texten versenden kann? Das fände ich noch eine tolle Sache. Z.B.

Einbruchalarm Keller!

Der Sensor Fensterkontakt HAR hat ausgelöst.

Ich tue mich da nämlich immer schwer solche Benachrichtigungen mit variablen Texten zu erstellen. Aber vielleicht hast du ja auch einen Tipp, wie sich sowas leicht umsetzen lässt, oder es geht schon und ich hab es nur noch nicht gesehen?

Nur mal so als Idee.

Danke und Grüße André

Moin André,

Das ist Modulintern nicht umgesetzt. Du kannst es aber als Script in den Eskalationsstufen hinterlegen und aufrufen.

LG
Burkhard

Ich werde das Modul mal installieren und dann testen. Wenn du String-Variablen z.B. für die ausgelösten Sensoren hast, dann sollte ich es mit einem Skript auch hinbekommen.

Moin André,

mit dem nächsten Update wird das ohne Probleme möglich sein:

erstelle folgendes Script:

<?php

declare(strict_types=1);

// Diese drei IDs an die eigene Symcon-Installation anpassen.
const OHA_INSTANCE_ID = 12345;
const TILE_VISUALIZATION_ID = 23456;
const TARGET_OBJECT_ID = OHA_INSTANCE_ID;

try {
    $state = json_decode(
        OHA_GetControlState(OHA_INSTANCE_ID),
        true,
        512,
        JSON_THROW_ON_ERROR
    );
} catch (Throwable $exception) {
    IPS_LogMessage('OpenHomeAlarm Push', 'Alarmstatus konnte nicht gelesen werden: ' . $exception->getMessage());

    return;
}

$latestAlarmArea = null;
$latestAlarmTimestamp = -1;
foreach (($state['Partitions'] ?? []) as $partition) {
    if (!is_array($partition)
        || ($partition['State']['Name'] ?? '') !== 'alarm'
        || ($partition['Alarm']['OutputActive'] ?? false) !== true) {
        continue;
    }

    $alarmTime = DateTimeImmutable::createFromFormat(
        'd.m.Y H:i:s',
        (string) ($partition['Alarm']['LastTime'] ?? '')
    );
    $alarmTimestamp = $alarmTime === false ? 0 : $alarmTime->getTimestamp();
    if ($latestAlarmArea === null || $alarmTimestamp >= $latestAlarmTimestamp) {
        $latestAlarmArea = $partition;
        $latestAlarmTimestamp = $alarmTimestamp;
    }
}

$areaName = trim((string) ($latestAlarmArea['Name'] ?? 'Alarmbereich'));
$sensorName = trim((string) (
    $latestAlarmArea['Alarm']['LastSource']
    ?? $state['Alarm']['LastSource']
    ?? 'Unbekannter Sensor'
));
$areaName = $areaName !== '' ? $areaName : 'Alarmbereich';
$sensorName = $sensorName !== '' ? $sensorName : 'Unbekannter Sensor';

$shorten = static function (string $text, int $maximumLength): string {
    if (function_exists('mb_strimwidth')) {
        return mb_strimwidth($text, 0, $maximumLength, '…', 'UTF-8');
    }

    return strlen($text) <= $maximumLength
        ? $text
        : substr($text, 0, max(0, $maximumLength - 3)) . '...';
};

$title = $shorten(sprintf('Einbruchalarm %s!', $areaName), 32);
$message = $shorten(sprintf('Der Sensor %s hat ausgelöst.', $sensorName), 256);
$notificationID = VISU_PostNotificationEx(
    TILE_VISUALIZATION_ID,
    $title,
    $message,
    'Alert',
    'siren',
    TARGET_OBJECT_ID
);

if ($notificationID === false) {
    IPS_LogMessage('OpenHomeAlarm Push', 'Die Push-Nachricht konnte nicht versendet werden.');
}

Oben ersetzt Du die IDs mit Deinen. Also der ID der OpenHomeAlarm-Instanz und der ID der Kachelvisualisation.

Danach legst Du in OpenHomeAlarm eine neue Eskalation an:

Aktion: Führe Automation aus, Keine Rückmeldung und Signalgeber aus.

Dann erhältst Du bei Auslösung eines Alarms folgende Push-Meldung:

Ich denke mal, so hast Du es Dir vorgestellt, Richtig?

LG
Burkhard

Neues Update:

Erweiterungen

  • Automatische Wiederbereitschaft: Nach Ablauf der Alarmdauer kann der betroffene Bereich automatisch wieder im vorherigen Modus scharfgeschaltet werden, sofern alle Sensoren und Störungen bereit sind.
  • Alarm verlängern: Ausgewählte Sensoren können einen laufenden Alarm erneut auslösen und dadurch Alarmdauer und Eskalationsaktionen neu starten.
  • Fehlalarm zurücksetzen: Eine eigene Schaltfläche beendet alle Alarmaktionen, löscht das Alarmgedächtnis und stellt bei vorhandener Bereitschaft den vorherigen Scharfmodus wieder her.
  • Geschützte Konfiguration: Alarmeinstellungen sind gesperrt, solange mindestens ein Alarmbereich aktiv ist. Bereits geöffnete Formulare werden beim Scharf- oder Unscharfschalten aktualisiert. Gleichzeitig gespeicherte Änderungen werden kontrolliert verworfen, ohne einen PHP-Fatalfehler auszulösen.
  • Push-Beispiel: Eine dokumentierte Beispielautomation versendet Alarmmeldungen mit Alarmbereich und auslösendem Sensor über die Symcon-Kachelvisualisierung.

Bedienung und Darstellung

  • main ist dauerhaft als Gesamtanlage und Standardbereich festgelegt. Eine separate Auswahl des Standardbereichs ist nicht mehr erforderlich.
  • Die Einstellungen für Kachel-Ansicht und IPSView befinden sich gemeinsam in der Gruppe Ansicht, bleiben dort aber getrennt ein- und ausklappbar.
  • Unter Sensoren wird in der Visualisierung der vom Anwender vergebene Bereichsname anstelle der technischen Bereichs-ID angezeigt.
  • Die Anleitung wurde um einfachere Einrichtungsbeispiele, verständlichere Aktionsbeschreibungen und eine ausführlichere Erklärung der Alarmbereiche ergänzt.

Korrekturen

  • Leere oder gelöschte Countdown-, Störungs- und Entwarnungsaktionen lassen sich wieder als Keine Aktion speichern.
  • Optionale Aktionen blockieren Änderungen an Eskalationsstufen nicht mehr mit Keine Aktion ausgewählt.
  • Gespeicherte PHP-Skripte werden korrekt über Führe Automation aus eingebunden.

EDIT:

Kleines Update nachgelegt: Auch der einzelne Signalgeber (Zum Beispiel Sirene) lässt sich jetzt deaktivieren.

Dank geht an @ruan für die Ideen und Tipps.

LG
Burkhard

1 „Gefällt mir“

Genau so​:blush:

Ganz lieben Dank für die schnelle Integration und die Skript Vorlage!

Ich denke, das auch von anderen Usern gerne genutzt wird und überlege, wie man das am besten dokumentiert, damit man das hier im Thread nicht immer suchen muss. Eine Einbindung des Skriptes in das Modul, bei dem man dann nur die VisuID(s) angeben muss, wäre wohl zu aufwändig?

Aber mir reicht das mit dem Skript auf jeden Fall. Sollte der Wunsch häufiger auftauchen, könntest du ja immer noch über eine Integration nachdenken. Ich bin aktuell jedenfalls sehr happy damit​:hugs: Merci

1 „Gefällt mir“

Wer das Script sucht, findet es in der Anleitung:

OpenHomeAlarm/OpenHomeAlarm/README.md at dev · Burki24/OpenHomeAlarm

LG
Burkhard

1 „Gefällt mir“

Hi Burki, vielen Dank für das starke Modul. Beim Deaktivieren des Alarms auf dem iPhone ist es nach der Eingabe der PIN nicht möglich, nach unten zu scrollen, um die Eingabe zu bestätigen. Das Fenster ist zudem abgeschnitten.

anbei mal ein Video

Korrektur kommt mit dem nächsten Update heute Nachmittag.

Danke

LG
Burkhard

1 „Gefällt mir“

Neues Update ist oben.

Mehrere Fehlerkorrekturen (Danke @ruan & @sirkentucky ): Probleme sollten behoben sein.

LG
Burkhard

Danke dir auch für deine Mühe — leider gibt es noch ein generelles Problem, wenn man scrollen will.

Im Video siehst du, wie man praktisch die ganze Kachel hochschieben kann. Ist sie einmal oben kriegst du sie nicht mehr runter, du kannst dann nur noch innerhalb der Kachel scrollen.

Welche APP-Version nutzt Du?

LG
Burkhard

9.0.3 15.6.2026 iOS 403 iPhone

Auch ein cooles Modul und auch wieder IPS-View tauglich.
Damit könnte ich ja meine vielen Scripts zur Alarmsteuerung meiner Objekte in der Zukunft mal ablösen.
Auf unserem Gelände habe ich bisher 2 getrennte Alarmbereiche, die auch zu unterschiedlichen Zeiten automatisch in verschiedene Zustände analog deiner (Zuhause=Anwesend, Abwesend=Abwesend, Nacht=intern) aufgebaut sind.
Könnte mir vorstellen meine Alarmbereiche über verschiedene „area“ zu steuern.
Ich habe unter der Einrichtung zur „Automatische Scharfschaltung“ keine Bereiche wie „main“ und „area“ gefunden.
Gibt es so etwas noch in Zukunft?

Unter den Punkt Automatische Scharfschaltung steht auch „Die automatische Scharfschaltung umgeht weder Sensoren noch blockierende Störungen und schaltet eine bereits aktive Anlage weder unscharf noch in einen anderen Modus.“
Heißt dass, ich kann eine Anlage nicht per Zeitplan „unscharf“ oder in einen anderen Modus schalten?
Bei meiner Alarmanlage schalte ich einen Alarmbereich an Arbeitstagen zum 20 Uhr scharf und um 9 Uhr unscharf.
Einen anderen Bereich schalte ich immer täglich um 8 Uhr unscharf und um 22 Uhr auf Nacht (intern). Wenn dieser Bereich aber scharf ist (Abwesend) kann er von der Zeitsteuerung nicht auf Nacht (intern) bzw. auch nicht unscharf geschaltet werden.
Könnte man so etwas auch mit deinem Modul realisieren?
Habe gerade in der Beschreibung gefunden, dass man area auch per Script schalten kann.
Bei einem kleinen Test mit dem Modul ist mir aufgefallen, dass für die area keine Statusvariablen angelegt, ist das richtig?
Wenn das so ist kann ich oben beschriebene Abhängigkeiten nicht per Script schalten?

Viele Grüße Hainer