Stromausfall erkennen. Kommunikation bei mehreren Standorten

Begonnen von Tyraldur, 18 Dezember 2022, 22:32:31

Vorheriges Thema - Nächstes Thema

Tyraldur

Hallo Zusammen,

vor einiger Zeit habe ich mich schonmal mit der Erkennung eines Stromausfalls beschäftigt, war mir aber mit USV und USB Dongle mit PrePaid Card zu aufwendig.

Nun habe ich aber vor kurzem eine zweite FHEM Installation an einem anderen Standort aufgebaut und das Thema ist wieder auf dem Tisch gelandet. Aber auch neue Ideen dazu. Wichtige Information lasse ich mir z.B. per TelegramBot aufs Handy schicken. Nun war meine erste Idee, das BotA turnusmäßig eine Message an BotB sendet und darauf eine Antwort erwartet. Fällt diese aus, stimmt am Standort B etwas nicht. Meine erste Recherche ergab aber, dass sich Telegramm Bots keine Messages senden dürfen. Evtl. kann man die beiden Bots in eine Gruppe stellen, da sollten sie alle Nachrichten lesen können, aber dann habe ich diese "alive" Meldungen auf auf dem Handy. Könnte selbst bei silentMSG und stummschalten der Gruppe nervig werden.

Aber vielleicht habt Ihr ja eine elegantere Lösung?

P.S.: Beide Standort sind aus dem Internet nicht erreichbar und das ist auch gut so. Webhook o.ä kommt also nicht in Frage. Eine Kommunikation geht eigentlich nur via Telegramm Bot.

bartman121

#1
hallo,

du denkst schon richtig ....

Du brauchst einen Watchdog, man sendet einfach "alive" meldungen, wenn diese "ausbleiben", dann bewertet man das als "Ausfall" und leitet Aktionen ein. In deinem Fall übernimmst du als "Mensch" allerdings diese Funktion.

Du schreibst "nicht erreichbar, kein Internet", das kann ja eigentlich nicht sein, da die Dinger ja Telegram versenden können.

Ich zum Beispiel habe auch verschiedene Standorte, du wirst ja irgendwie eine Fernwertung der Standorte eingerichtet haben (SSH?.....)

Ich habe halt einen Hauptstandort (Zuhause) und verschiedene Nebenstandorte die örtlich getrennt sind, alle Standorte haben aber Internet.

Mein Hauptstandort stellt zum Beispiel einen OVPN-Server bereit, die externen Standorte bauen automatisch eine OVPN-Verbindung zu meinem Hauptstandort auf. Auf dem Hauptstandort überwache ich mittels PRESENCE (ping) die Nebenstandorte, ist ein Standort für x-Minuten nicht erreichbar, dann versendet ein Watchdog eine Nachricht an mich, die Ursache kann dann - wie in deinem Fall - alles sein (Internetausfall,Stromausfall,....)

Eine Überwachung des Hauptstandortes ist unnötig, das ist mein Zuhause, da erfolgt die Überwachung durch mich selbst (visuell)....

Vorausgesetzt ein System ist ein "Master" (das kann sogar ein externer Server bei einem Provider deiner Wahl sein), dann musst du deine verteilten Systeme nur dazu bringen, sich regelmäßig dort zu melden.

Möglichkeiten dafür wären:
rsync/scp einfach alle x-Minuten eine alive-Datei auf dem Master schreiben
Aufrufen eines WEBwook alle X-Minuten
Ping-Überwachung bei VPN-Einwahl
Ping-Überwachung, falls die Systeme per DynDNS erreichbar sind ...
....

Wenn du dich aber von vornherein auf Telegram festlegst, dann weiß ich nicht, ob man dort Automatismen bauen kann ... im Zweifelsfall halt TASKER, damit könnte man vermutlich auch etwas machen

Grüße

Andreas


MadMax-FHEM

Dann beschreibe ich mal meinen Setup 8)

Ich habe auch verschiedene Standorte:

A: Zuhause (DSL und LTE-Fallback)

B: Bei meiner Freundin (DSL)

C: Eine Werkstatt (nur LTE)

Jedes System läuft erst mal "autark".

A und B "ganz normal", C ist etwas "speziell".

Dort habe ich eine LTE-FB (nur wegen einfacher Verbindung zwischen den Standorten, siehe hier: https://forum.fhem.de/index.php/topic,131017.msg1252316.html#msg1252316), eine kleine USV (ja willst/wolltest du nicht aber ist nicht schwer und auch nicht teuer: ca. 40/50EUR https://www.amazon.de/Tecnoware-Mini-PLUS-12VDC-Betriebsautonomie/dp/B09VCJF97Q/ ich habe diese hier https://www.amazon.de/gp/product/B07PHQNLFY/).
An der USV hängt der fhem-PI und die FB.

Also solange Internet geht, kann sich C melden.
Für Stromüberwachung habe ich einfach eine WLAN bzw. Zigbee "Steckdose".
Meldet sich diese nicht mehr -> Stromausfall -> Telegram (sofern Internet noch geht).

Ansonsten (deswegen wurde das eingerichtet) noch ein paar Wassermelder -> Telegram

Zuhause Presence auf C, wenn das ausbleibt, dann ist (nur) Internet gestört, ansonsten hätte es ja eine andere Meldung geben sollen/müssen (Wasser: "Überflutung" oder Strom-weg-Meldung).

Standort B wird "persönlich überwacht" ;)
Ebenso A (durch mich).

Wenn ich in B was tun muss, dann bin ich entweder dort oder eben vpn... ;)

Wenn ich in C was tun muss, dann eben FB - FB - Verbindung oder auch hin...



Weitere Idee für dich, weil TelegramBot -> TelegramBot nicht geht und du auch keine Ports aufmachen willst (Webhook) usw.:

mqtt

mqtt-Server im Internet (kann man ja auch in der Cloud hosten oder einen verfügbaren freien nutzen) und daürber dann "pingen"...
Also beide Seiten sind "nur" Clients und "treffen" sich auf dem Server...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Tyraldur

Der Thread hat sich schon gelohnt, danke für den Input  :)

Mit USV ist es ja nicht getan. Wenn der Router Stromlos ist, also Internet weg, dann gibt es auch keine Meldung. Deshalb müsste da noch ein LTE Dongle dran. Ist der Stromausfall großflächiger, könnten aber auch die LTE Antennen betroffen sein. Deshalb finde ich das "messen" über Standorte sehr sympathisch.

Beide Standorte haben grundsätzlich auch nichts miteinander zu tun, deshalb möchte ich auch keine VPN Verbindung einrichten. FHEM kann ins Internet, aber man kann nicht vom Internet zum FHEM.

Was ich jetzt erstmal versuchen werde, ist auf beiden FHEMs den gleichen Cloudspeicher anzubinden. StandortA schreibt/aktualisiert dann alle 15 Minuten eine Datei und StandortB wertet aus, ob und wann die Datei zuletzt geändert wurde und meldet wenn sie zu alt ist und vice versa natürlich.

Sind beide Standorte nicht erreichbar, erhalte ich die Nachricht aus den Medien  8)

MadMax-FHEM

Zitat von: Tyraldur am 19 Dezember 2022, 13:00:59
Mit USV ist es ja nicht getan. Wenn der Router Stromlos ist, also Internet weg, dann gibt es auch keine Meldung. Deshalb müsste da noch ein LTE Dongle dran. Ist der Stromausfall großflächiger, könnten aber auch die LTE Antennen betroffen sein. Deshalb finde ich das "messen" über Standorte sehr sympathisch.

Naja, ich hab die LTE-FB und fhem an der USV (hab ich ja geschrieben).
Daher erkenne ich einen lokalen Stromausfall und kann den per Telegram melden...
...klar sofern nicht LTE in der ganzen Gegend tot ist... ;)


Zitat von: Tyraldur am 19 Dezember 2022, 13:00:59
Beide Standorte haben grundsätzlich auch nichts miteinander zu tun, deshalb möchte ich auch keine VPN Verbindung einrichten. FHEM kann ins Internet, aber man kann nicht vom Internet zum FHEM.

Was ich jetzt erstmal versuchen werde, ist auf beiden FHEMs den gleichen Cloudspeicher anzubinden. StandortA schreibt/aktualisiert dann alle 15 Minuten eine Datei und StandortB wertet aus, ob und wann die Datei zuletzt geändert wurde und meldet wenn sie zu alt ist und vice versa natürlich.

Sind beide Standorte nicht erreichbar, erhalte ich die Nachricht aus den Medien  8)

Cloudspeicher kann/könnte auch (ohne Speicher ;)  ) ein mqtt-Server im Internet sein 8)

Die fhem melden sich per mqtt2-client und publishen zyklisch...
...wer überwachen will subscribed auf die zu überwachenden fhem (bzw. deren mqtt-publish), wenn da dann nichts mehr kommt, dann Reaktion... ;)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

frank

was soll eigentlich erreicht werden?

eine info über einen stromausfall von einem entfernten standort, ändert ja zunächst einmal nichts am stromausfall.
und je mehr gräte und dienste in der infokette enthalten sind, desto grösser ist die störanfälligkeit der info.

eventuell sollte man den aufwand eher in das entfernte system investieren, damit es einen stromausfall besser "überlebt"?
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Tyraldur

Zitat von: frank am 19 Dezember 2022, 15:02:03
was soll eigentlich erreicht werden?

Nun, ich möchte gern eine Info, wenn mich mein System nicht mehr informieren kann. Stromausfall ist da nur ein offensichtliches Beispiel. Andere wären, wenn jemand den Netzstecker zieht oder die Sicherung rausfliegt. Hardwaredefekt ist nicht auszuschließen oder das Internet geht beim Provider nicht. Gibt bestimmt noch mehr. Mir ist es wichtig bei bestimmten Ereignissen informiert zu werden und wenn ich die Info habe, dass ich die Ereignisse grad nicht zugesandt bekommen kann, dann ist mir das auch wichtig :)

dieda

Ich möchte ja auch, dass mein System bei einem längeren Ausfall von x-Minuten runter fährt und keinen Schaden nimmt.
Komponenten:
Sensoren und Aktoren: FS20, Max!, Zigbee, Zwave
IODev:  Cul1101, MaxLan, ZWAVE, Deconz
Router: KD-Fritte (6360)
Sonstiges: Raspberries,  1x LMS,1 FHEM, 1 x zum Testen,  Logitech-Clients,  Onkyo, SamsungTV, Squeezebox, TabletUIs

Damian

Mal als Idee. Ich habe mir für´s Fahrrad einen GPS-Tracker für 30 Euro geholt, dem habe ich einen größeren Akku verpass. Das Ding hält einen Monat ohne Stromzufuhr. Beim Fahren, wird der Tracker natürlich automatisch geladen. Mit einer günstigen SIM-Karte ist es billiges Sorglospaket um jederzeit das Rad zu orten.

Nun zur Anwendung. Der Tracker hat auch eine SOS-Taste, die ich selbst nicht nutze. Beim betätigen wird eine SMS gesendet. Die könnte man über ein Relais schalten, wenn Strom ausfällt - dann weiß man Bescheid ;)

Zum Runterfahren gibt es natürlich Lösungen über eine USV.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Tyraldur

Das war vor Jahren meine erste Idee. Wenn die USV meldet, dass sie vom Strom ist, sendet FHEM per LTE Dongle eine SMS und fährt dann ordentlich runter. Hatte mir auch den Dongle und ne PrePaid Karte geholt, aber irgendwie ging es dann vergessen. Irgendwann bekam ich dann die Nachricht, dass ich die PrePaid Karte mehr nutzen muss, ansonsten wird sie gesperrt. Was soll ich sagen :D

Jetzt mit einem zusätzlichen Standort, ergeben sich halt auch mehr Möglichkeiten. Nachdem ich die bisherigen Antworten gelesen habe, auch vielen Dank dafür, würde ich wahrscheinlich auch den Titel des Threads anders wählen. Tatsächlich ist es mir egal, welchen Grund es hat dass mir der FHEM Server keine Nachrichten mehr schicken kann. Ich möchte es einfach nur wissen. MQTT hört sich auch gut an, da lese ich mich grade ein.

Wernieman

Wenn Du eine SMS Flat hast, kannst Du auch ein "ping" per SMS machen. Innerhalb der 160 Zeichen SMS kann man so ein einige Infos verpacken ....
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Tyraldur

Nu hab ich das Thema aufgemacht, da will ich auch mal einen Status abgeben. Es sei denn es ist nicht gewünscht, dann kann man das Thema auch schliessen?

Erstmal hab ich noch etwas Zeit mit den TelegramBots verschwendet, aber die können sich tatsächlich nicht gegenseitig lesen.
MQTT hat sich gut angehört, hab aber keinen Server im Internet. Aber ich hab Cloudspeicher vom Provider denn ich eh nicht genutzt habe.

Also hab ich mir eine subroutine in myUtils geschrieben, die über ein at alle 5 min aufgerufen wird.

Die Kurzform
StandortA:
Erst wird eine Datei in die Cloud geschoben. Ist das nicht möglich, mach ich einen Ping ins Internet. Wenn dieser funktioniert schick ich eine Nachricht an Besitzer von StandortA, dass der Upload nicht funktioniert hat, aber das Internet noch erreichbar ist.
StandortB:
Ich lese den Header der Datei von StandortA und schaue wie alt die Last-Modificationtime ist. Ist sie älter als 15 Minuten, schicke ich eine Nachricht an Besitzer von StandortA dass sein FHEM Server offline ist.

Und das ganze natürlich vice versa.

In der routine setzte ich natürlich nur verschieden stati als readings in einem dummy. darauf reagiere ich dann mit DOIF um die Meldungen zu verschicken.

Wie stabil das ist, wird sich mit der Zeit zeigen, aber gefällt mir bisher ganz gut.

Danke nochmal für Euren Input.

Nobbynews

#12
Zitat von: Tyraldur am 26 Dezember 2022, 00:45:38
MQTT hat sich gut angehört, hab aber keinen Server im Internet. Aber ich hab Cloudspeicher vom Provider denn ich eh nicht genutzt habe.
Schon mal hier geschaut?
https://www.hivemq.com/mqtt-cloud-broker/
100 Geräte und 10 Gb Traffic for free im Monat.

schic

#13
Hallo Tyraldur,

für die Kommunikation zwischen den FHEM-Installationen käme evtl. auch das Jabber-Modul in Frage. Habe ich allerdings nicht getestet.
Für das Registrieren eines Stromausfalls benutze ich ein notify auf global:INITIALIZED:
   DEF        global:INITIALIZED.*
{
  chk4PowerFailure();
}
   NAME       ntfy_FHEMStart


[/code]
und in 99_myUtils.pm die Funktion:


############################################################
# stellt fest, ob den letzten Neustart (vor < 10 Minuten)
# ein shutdown-Kommando begleitet hat. Wenn nicht, dann
# ist ein Neustart wegen Stromausfall zu vermuten.
# Entsprechender Status wird in ein Dummy-Gerät Namens
# 'Neustart' geschrieben.
# Einige Zigbee-Lampen wurden nach dem Stromausfall 
# mutmaßlich eingeschaltet, und sollen nun (wieder)
# ausgeschaltet werden. 
sub chk4PowerFailure()
{

    use Encode;


    my $now = strftime('%A, %d %B %Y %T',localtime);
    $now = Encode::encode("UTF-8", $now);
   
    my $tenMINUTESago = strftime('%H:%M:%S',localtime(time()-(10*60)));
    my $BootMessage = qx(/usr/bin/last -x --since=$tenMINUTESago);
   
    #Log 3, "99_myUtils, chk4PowerFailure $BootMessage";
   
    if (index($BootMessage, "shutdown") != -1 && index($BootMessage, "reboot") != -1)
    {
      Log 3, "99_myUtils, chk4PowerFailure: got reboot with shutdown";
      fhem "set Neustart shutdown + reboot: $now";
    }
    elsif ( index($BootMessage, "shutdown") == -1 && index($BootMessage, "reboot") != -1 )
    {
      Log 1, "99_myUtils, chk4PowerFailure: got reboot without shutdown! -> power failure?";
      fhem "set Neustart Stromausfall: $now";
     
      fhem "define at_powerfail at +00:03:00 set SBTouch off;; set MQTT2_zigbee_WZDeckenlicht off;; set MQTT2_zigbee_TVLicht off;; set MQTT2_zigbee_SZLicht off";
    }
    else
    {
      Log 3, "99_myUtils, chk4PowerFailure: no reboot and no shutdown last ten minutes";
      fhem "set Neustart fhem-Neustart: $now";
    }
}


Das funktioniert für mich auf meinem Debian-System sehr zuverlässig und schaltet nach einem Stromausfall diverse Zigbee-Lampen etc. aus.
Debian Bullseye x86_64 headless
parallell laufende Serversoftware:
AdGuard Home, LMS + MusicIP, baical carddav, Debmatic mit HmIP-RFUSB, zigbee2mqtt mit Mosquitto,
FHEM mit den Grundmodulen: HMCCU, Velux Gateway KLF200, TCM mit USB 300, HUEBridge, harmony, SB_SERVER, LGTV_WebOS, PIONEERAVR

DL8EI Ralph

Mein FHEM läuft auf einem Raspberry.
Der hat eine aufgetopfte MiniUSV. Die hält ca. 1,5 Std durch.
In dem steckt ein Stick mit einer SIM.

Wenn Event (z. B. Strom weg), dann wird Mail versandt, die bimmelt sofort.
Wenn auch Internet weg, dann wird statt Mail über den Stick SMS versandt, die bimmelt sofort.

Ich rufe dann wen an, der guckt.
Fernmelde-Opa übernahm FHEM-Installation und kämpft sich so durch.
Installation hat FS20, Homematic und einge exotische Teile.