iobroker überwachen

Einrichtung, Nutzung und Hilfe zu RaspberryMatic (OCCU auf Raspberry Pi)

Moderatoren: jmaus, Co-Administratoren

Antworten
mafa
Beiträge: 52
Registriert: 23.04.2018, 19:27

iobroker überwachen

Beitrag von mafa » 26.10.2018, 11:14

Da mir mein iobroker hin und wieder abschmiert, würde ich gerne die Adminseite mit der URL http://iobroker-raspi:8082 monitoren. Hat das schon jmd gemacht?
Den Netzwerkanschluss überwache ich bereits mit cuxd und nem ping.

Benutzeravatar
Black
Beiträge: 856
Registriert: 12.09.2015, 22:31
Wohnort: Wegberg
Kontaktdaten:

Re: iobroker überwachen

Beitrag von Black » 26.10.2018, 11:33

lass über javascript im 60 sekunden takt eine systemvariable der CCU togglen oder über RPC eine der virtuellen Tasten.

dann ein programm in der CCU, wo nach 2 minuten eine aktion ausgeführt wird. haken bei retrigger nicht vergessen.

(aber sinniger ist grund fürs abschmieren zu suchen, als was drumherum zu fuschen)
Die Wahrheit ist ein Chor aus Wind
Meine Seite, ok noch bisschen im Aufbau

RaspberryMatic 2.35.16.20180826 mit Groundplane Antennenmod (Mein Grundstück ist halt etwas gross)
jede Menge Sensoren und Aktoren, Logamatic 2107 Gateway zum Buderus Kessel
ioBroker als Hauptsteuersystem und Visualisierung
Script Time Scheduler V1.2
Script Developer V2.27.1

mafa
Beiträge: 52
Registriert: 23.04.2018, 19:27

Re: iobroker überwachen

Beitrag von mafa » 26.10.2018, 13:00

wow, jetzt hast mich schon im 1. satz rechts überholt ;-). rpc, togglen, javascript...hatte eigentlich gehofft, dass das mit standardmitteln möglich ist (will ja nur ne url überwachen).
Falls nicht bräuchte ich bisschen mehr konkretes futter, damit ich darauf aufbauen kann. Hab keine/kaum Erfahrung mit java-script.
Ich suche parallel natürlich nach der ursache. ein reboot oder ein update vom npm hat bis dato geholfen. Derzeit ist alles ok. Trotzdem hätte ich gerne eine nachricht wenn er abgeschmiert ist.
Könnte mir auch nen cronjob vorstellen, der den iobroker prozess überwacht. weiß nicht was die beste lösung ist.

trevyn
Beiträge: 10
Registriert: 25.04.2017, 17:19

Re: iobroker überwachen

Beitrag von trevyn » 26.10.2018, 17:34

Aaaaalso - was Black meint, ist folgendes:

- CCU: Systemvariable anlegen (z.B. "IOBroker Heartbeat")
- CCU: Programm erstellen, das aktiviert wird bei Aktualisierung von "IOBroker Heartbeat" und mit einer Verzögerung von 2 Minuten dann irgendwas tut (z.B. eine Nachricht verschickt via Mail, PushOver, ...)
Dieses Programm hat aber das Häkchen gesetzt bei "Vor dem Ausführen alle laufenden Verzögerungen für diese Aktivitäten beenden (z.B. Retriggern)."
Das führt dazu, dass - wenn die Systemvariable innerhalb dieser 2 Minuten aktualisiert wird - eben nichts gemacht wird, da das Programm einfach neu gestartet wird.

- IOBroker: Hier ein JavaScript erstellen, das eben diese Systemvariable aktualisiert (denkbar wäre z.b. einfach die Uhrzeit oder noch einfacher immer "true" zu setzen als Wahrheitswert).

Probleme könntest du jetzt z.B. haben bei JavaScript - da kann Dir aber geholfen werden :-)
Am schnellsten und ohne große Programmierkenntnisse kannst du das mit "Blockly" erstellen. Dazu einfach links auf "Scripte" klicken.
Unter "common" meinethalben eine Gruppe "Verwaltungsscripte" erzeugen (geht aber auch ohne).
Dort drin dann ein neues Script "Heartbeat-to-CCU" (oder wie auch immer) erstellen. Dabei kannst du z.B. "Blockly" auswählen.

Als erstes Objekt mal "Trigger" auswählen und dort als Typ "Zeitplan" (der mit den * Sternen und OHNE "Cron irgendwas") - das ist dann schon "jede Minute", ohne dass du was ändern musst.

Dort fügst du aus "System" ein Steuerungs-Element ein (das ist für Homematic nicht ganz intuitiv leider) "Steuere <Objekt ID> mit <Platzhalter> mit Verzögerung". (Das wird einfach an die passende "Puzzle-Stelle" gezogen.)

Klick auf "Objekt ID" und vermutlich unter "hm-rega.0" deine Systemvariable auswählen. (evtl. die Adapterinstanz einmal durchstarten, damit sie angezeigt wird)

Wieder ein Element aus "System" in die leere Stelle einfügen und zwar "Wert vom Objekt ID <ID auswählen>".
Da kannst du dann wieder genauso deine Systemvariable auswählen - sprich der Wert wird auf seinen eigenen Wert aktualisiert.

Speichern, Starten und freuen :-)

So könnte das dann in IOBroker aussehen:
Bild

Benutzeravatar
Black
Beiträge: 856
Registriert: 12.09.2015, 22:31
Wohnort: Wegberg
Kontaktdaten:

Re: iobroker überwachen

Beitrag von Black » 26.10.2018, 20:13

blockly ist jetzt nicht so meine welt...

ich bin da mehr mit dem texteditor zuhause... aber lezttlich gesehen ist weg egal, blockly erzeugt auch javascript, wird nur schöner dargestellt... xD

aber in etwa genauso hab ichs mir gedacht, si ^^

Black
Die Wahrheit ist ein Chor aus Wind
Meine Seite, ok noch bisschen im Aufbau

RaspberryMatic 2.35.16.20180826 mit Groundplane Antennenmod (Mein Grundstück ist halt etwas gross)
jede Menge Sensoren und Aktoren, Logamatic 2107 Gateway zum Buderus Kessel
ioBroker als Hauptsteuersystem und Visualisierung
Script Time Scheduler V1.2
Script Developer V2.27.1

mafa
Beiträge: 52
Registriert: 23.04.2018, 19:27

Re: iobroker überwachen

Beitrag von mafa » 26.10.2018, 20:37

wow, danke! jetzt hab ich es verstanden!
Hab in der Zwischenzeit noch ne 2. Möglichkeit gefunden.

Code: Alles auswählen

string stdout;
string stderr;
system.Exec("ping -c 1 iobroker-raspi:8082", &stdout, &stderr);
integer Resulter = stdout.Find("time"); 
!resulter=-1=offline, resulter=100=online 

if(Resulter==-1)
{
...pushover Nachricht schicken...
Deine Variante ist natürlich genauer! Aber frisst vermutlich auch bissl mehr Ressourcen?! Mir würde ein Abfrage 2 Mal am tag voll ausreichen.

Welche Variante findet ihr besser und warum?

trevyn
Beiträge: 10
Registriert: 25.04.2017, 17:19

Re: iobroker überwachen

Beitrag von trevyn » 26.10.2018, 21:56

ohne jetzt zu tief in die netzwerktechnik einzusteigen:
Auf einen (dazu noch einmaligen) PING gibt es keine Garantie, dass Du auch einen Reply bekommst.

Allerdings würde ich grundsätzlich nicht system.exec nutzen, sondern CuXD.

Was Du mit ping übrigens auch nicht abfangen kannst ist der Fall, dass sich die Adapter aufhängen (was bei mir öfters vorkommt, als dass IOBroker komplett vom Netz geht). Sprich ping bringt wirklich nur dann was, wenn der rechner mit iob komplett nicht mehr reagiert.
(sprich stürzt zwar iob ab aber der rechner läuft weiter, funktioniert dann auch normalerweise der ping noch).

Polling find ich eh nicht so schick - da ist das Pushing von iob ausgehend zur ccu irgendwie eleganter, da es hier egal ist, was gerade schiefläuft. Wenn der iob die ccu nicht mehr erreicht, dann kriegt die ccu das mit, ohne aktiv ständig ein exec-script auszuführen.

Zumal: iob hat mit der von Black vorgeschlagenen Variante auch den Vorteil, dass selbst dann, wenn sich mal irgendwas verzögert, der heartbeat auch etwas länger Zeit hat, zu reagieren. Beim Ping klappts entweder oder es klappt nicht.

Wegen der Zeitspanne: Du kannst z.b. iob auch einfach stündlich den heartbeat senden lassen und stellst das auf der ccu so ein, dass die z.b. nach 2 Stunden ohne Aktualisierung dann Alarm schlägt.
Damit könntest du theoretisch sogar einen Neustart des iob machen, ohne dass du gleich eine Alarmmeldung bekommst (bzw. du hast dann mind. 61 Minuten dafür Zeit - wenn du quasi 1 Minute vor nächstem Hearbeat die Netzwerkverbindung trennst :) ).

Oder halt Heartbeat alle 12 Stunden und Script, wenn nach 24h nichts gekommen ist, ... da gibts ja viele Möglichkeiten.

mafa
Beiträge: 52
Registriert: 23.04.2018, 19:27

Re: iobroker überwachen

Beitrag von mafa » 27.10.2018, 11:48

ok, überredet. hab es so wie du gesagt hast umgesetzt. danke!

Den iob-Neustart kann ich aber nicht per hm Skript ausführen?

trevyn
Beiträge: 10
Registriert: 25.04.2017, 17:19

Re: iobroker überwachen

Beitrag von trevyn » 28.10.2018, 15:49

Naja - kommt drauf an, WAS abgestürzt ist :-)
Solange der Rechner mit iob noch erreichbar ist, könnte man übers Netzwerk sicher einen Request senden, der einen Neustart vom iob auslöst.

Hängt sich dagegen der Rechner auf, wirds schwer. Dann könnte man aber z.B. mit einer Steckdose arbeiten, die man ab- und wieder anschalten kann und wie es der Zufall so will, hätten wir dafür sogar das passende Werkzeug sogar schon an der Hand *grins*.

Vom Prinzip könntest du das direkt ins HM Programm mit einbauen, dass neben z.B. einer Meldung auch gleich noch die Steckdose angesteuert wird.

mafa
Beiträge: 52
Registriert: 23.04.2018, 19:27

Re: iobroker überwachen

Beitrag von mafa » 10.11.2018, 11:14

Falls es jmd interessiert, hab zusätzlich auf dem iobroker jetzt noch ein Linux Skript laufen. Wenn nicht schon vorhanden, muss dazu nur ssmtp im Linux installiert werden und das untere Skript per cronjob auf dem iobroker ausführen. Als Versender sollte ein dediziertes gmail-Konto erstellt werden, da im Mailkonto "allow access to unsecure apps" aktiviert werden muss. Könnte man für Homematic vermutlich auch hernehmen, da hatte ich aber nie das Problem wie ich es beim iobroker hab. Muss ich mir trotzdem nochmal ansehn. Hier jedenfalls das Skript:

Code: Alles auswählen

#!/bin/bash
#mail_process.sh

##Check Process##
process=iobroker.js-con

##Start Process##
RESTART="sudo iobroker start"

if ps ax | grep -v grep | grep $process > /dev/null
 then
     exit
 else
     echo "iobroker down. process restarted." | mail -s "IOBROKER DOWN" empfaenger@mail.com &
$RESTART > /dev/null
 fi

exit


Antworten

Zurück zu „RaspberryMatic“