Stromausfall erkennen / Power-on-behavior

Hallo zusammen,

in meinem Ferienhaus kommt es leider regelmäßig zu kurzen Stromausfällen. Eigentlich nicht schlimm - wenn Strom wieder da - verbindet bzw. startet alles wieder neu und gut ist. Komme also wieder auf das System usw.

Leider passiert es trotz eingestellten „Power-on behavior“ auf OFF das Lampen dann doch brennen. Derzeit schaltet mein dortiger Nachbar dann alles am nächsten Tag (hat ein Auge auf mein Häuschen) aus.

Jetzt meine 2 Fragen:

1.) hat jemand schon ein Script oder irgendwas gebaut um einen Stromausfall und somit „unkontrollierten“ Neustart von Symcon zu erkennen

2.) hat jemand für zigbee eine Script das dann alle Lampen checkt bzw. geht das überhaupt?

Wenn ich die erste Frage gelöst bekomme, dann könnte ich schon was basteln um für mich eine Lösung zu bauen.

Gruß HEiko

Bei 1 würde ich einfach das Start Skript vom Event Control nutzen.
Und, für den geplanten Neustart, noch eine Variable im Skript prüfen, welche man dann vorher z.B. auf Wartung setzt (also eine Art Abschaltung des Start Skript).

1 „Gefällt mir“

Ich habe mir dafür die Anwesenheitssimulation installiert und alle möglichen Lampen oder Schalter die Lampen schalten reingegeben. Können also ZigBee Zwischenstecker, oder Shelly sein. Egal.

Mit einem einfachen Skript kann ich sämtlich hier befindlichen Lampen ein oder ausschalten.

function licht_ein_aus($ein_aus)
{
	$simulationID=35532;
	$lichter=json_decode(json_decode(IPS_GetConfiguration($simulationID),true)["Targets"],true);
	foreach ($lichter as $licht)
	{
        RequestAction($licht["VariableID"],$ein_aus);
	}
}

licht_ein_aus($_IPS["STATUS"]);

Dieses Skript wird aus einem Ablaufplan aufgerufen, daher die Funktion.

Wenn du die Simulation nicht haben magst, dann kannst du dir eine String Variable anlegen und dort alle ID’s in einem JSON String ablegen. Funktioniert dann eigentlich gleich.

Zu Punkt eins würde mich noch was einfallen

USV (eine kleine) installieren. Irgend ein Gerät in regelmäßigen Abständen anpingen. Wenn das weg ist, ist der Strom weg (als Annahme). Dann tun, was immer du tun willst. Wenn du dort Internet hast, dann würd ich auch den Router an die USV hängen, dann kannst sogar Mail oder Benachrichtigung senden. Die kleinen USVs kosten nicht die Welt und können deinen IPS Rechner und Router wahrscheinlich über Stunden versorgen.

1 „Gefällt mir“

Ja, soweit hatte ich auch schon gedacht. Aber wenn man nicht aufpasst und die Variable nicht setzt wird es als Stromausfall gewertet :frowning:
Darum meine Frage ob es was „tod-sicheres“ gibt … was ich im Moment noch nicht sehe :heart_eyes:

An USV bin ich gerade am googlen … brauche was kleines … muss auch keine Stunden überstehen :slight_smile:
Habe gerade das hier gefunden => MuPiHAT+ – MuPiHAT Shop

Hat jemand sowas chon mal genutzt?

Geekworm Raspberry Pi 4 UPS X703, Ultra-compact 18650 UPS Shield with Auto Power On for Raspberry Pi 4 8GB/4GB/2GB Only

Wie gesagt, würde eher eine USV nehmen und da dann noch das Internet dranhängen :wink:

Eigentlich gerne, aber Router ist im Keller, PI im Obergeschoss :slight_smile:

Dann zwei kleine USVs oder Kabel legen :smiley:

1 „Gefällt mir“

PoE-Hat und PoE-Switch. Was auch den Vorteil hätte den Pi Remote aus- und anschalten zu können. Oder den Pi in den Keller umziehen. Wieso muss der oben sein? Ist da noch etwas angeschlossen?

1 „Gefällt mir“

Für 1. habe ich jetzt noch etwas besseres gefunden - einen shutdown-service, d.h. ein reboot, shutdown und halt wird abgefangen und erzeugt einen Marker, welchen das Symcon Event Start Script dann auslesen kann :slight_smile:

sudo nano /etc/systemd/system/shutdown2flag.service

Inhalt:

[Unit]
Description=Set Symcon Shutdown Flag
DefaultDependencies=no
Before=shutdown.target reboot.target halt.target

[Service]
Type=oneshot
ExecStart=/bin/sh -c 'date +%s > /home/pi/.symcon_reboot_flag'

[Install]
WantedBy=halt.target reboot.target shutdown.target

und aktivieren

sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl enable shutdown2flag.service

Das Start-Script sieht erstmal so aus …

<?php

$flagFile = '/home/pi/.symcon_reboot_flag';
$flagVar = 15196;

if (file_exists($flagFile)) {

    $timestamp = (int)file_get_contents($flagFile);
    $now = time();

    if (($now - $timestamp) < 300) {
        IPS_LogMessage("System", "Geplanter Shutdown erkannt");
    } else {
        IPS_LogMessage("System", "Alter Flag → unklarer Zustand");
    }

    unlink($flagFile);

} else {
    IPS_LogMessage("System", "Stromausfall oder Crash erkannt!");
    SetValue($flagVar, true);
}

Kurze Nachfrage zum Event-Script? Kann man da schon alles nutzen was IPS zu bieten hat oder gibt es da Einschränkungen?

Ich würde dann nämlich durch alle Zigbee-Geräte und -Gruppen itterieren und den Status setzen!?

Gruß Heiko

Ich habe im Event Control ein Shutdown und ein Startup Skript. Wenn ersteres aufgerufen wird, erstellt es eine Datei im System, letzteres guckt ob diese existiert. Wenn nicht, bekomme ich eine Nachricht über den unerwarteten Neustart.

Alle Busmodule aktiv abfragen sowie auch Teile der HomeMatic(IP) Infrastruktur mache ich auch einmal nach Neustart, egal ob geplant oder ungeplant. Alles wo der Status veraltet sein könnte und was sich aktiv abfragen lässt.

1 „Gefällt mir“

Ich hätte jetzt auch gesagt, dass man den ungeplanten Neustart gut erkennen können sollte, wenn man beim normalen herunterfahren eine bestimmte Variable setzen kann. Diese kann man dann beim Neustart prüfen, bei Bedarf eine bestimmte Aktion ausführen, und dann die Variable wieder zurücksetzen.

Beispiel:

Variable:
LetzterBetriebsmodus = NormalerBetrieb;

ShutdownFunction()
LetzterBetriebsmodus = KorrektHeruntergefahren;

StartFunktion()
if (LetzterBetriebsmodus == KorrektHeruntergefahren)
{ // alles OK }
else
{ // Fehlerfall, weitere Dinge prüfen / zurücksetzen und Meldung verschicken }

Ob man wirklich eine USV braucht muss man selbst entscheiden. Die meisten kleinen Server für Smart Home Zentralen stecken das gut weg, wenn sie einfach im laufenden Betrieb abgeschaltet werden. Ein Risiko, dass man gerade mitten in einer schreibenden Funktion ist besteht natürlich, und dann kann es einem einen inkonsistenten Zustand bescheren.

Sollte man sich für eine USV entscheiden wird manches einfacher, anderes schwieriger. Um den Stromausfall dann überhaupt noch zu detektieren muss man sich schon etwas mehr anstrengen.

Möglichkeiten:

  • Man kann die USV direkt abfragen (wenn sie das unterstützt)
  • Man kann die Präsenz anderer Geräte regelmäßig abfragen. Dann verpasst man aber vielleicht einen Stromausfall, der nur 1 Sekunde geht (Netzwischer), weil man den Status nicht jede Sekunde aktiv prüft.
  • Man kann ein Relais dauerhaft am Netz betreiben und dessen Schaltkontakt als digitaler Eingang am System prüfen.

Es hängt also immer davon ab, was man überhaupt erreichen will :slight_smile: