NEWS
Bei Störung E-Mail versenden ?
-
vlt. kann paul das beantworten…bei mir meldet sich allerdings immernoch in unregelmäsigen Abständen die Gutmeldung ohne ersichtlichen Grund..Im Log ist zu diesen Zeiten nichts zusehen....Noch ne Idee woran das liegen könnte?
-
createState('Adapterüberwachung.iobroker.Störung', {"name": "iobroker Servicemeldungen Störung" }); createState('Adapterüberwachung.iobroker.Text', {"name": "iobroker Servicemeldungen Text"}); function alarmMail(txt) { txt = 'System Adapter ' + txt; sendTo('telegram.0', 'iobroker - ' + txt); setState('javascript.0.Adapterüberwachung.iobroker.Text', txt); } var cnt = 0; on(/^system\.adapter\..+\.alive$/, function(dp) { var id = dp.id.split('.'); var common = getObject('system.adapter.' + id[2] + '.' + id[3]).common; if(common.mode == 'daemon' && common.enabled) { // Instanzen mit cronjob und gesperrte Instanzen ausblenden if(dp.state.val && dp.oldState.val === false) { cnt--; if(cnt <= 0) { alarmMail('laufen fehlerfrei'); setState('javascript.0.Adapterüberwachung.iobroker.Störung', false ); cnt = 0; // falls verzählt und cnt < 0 } } else if(dp.state.val === false && dp.oldState.val) { alarmMail('meldet Probleme ' + dp.common.name); setState('javascript.0.Adapterüberwachung.iobroker.Störung', true); cnt++; } } });
EDIT: Abfrage um Prüfung auf dp.state.val === false und common.mode == 'daemon' ergänzt
-
bei mir meldet sich allerdings immernoch in unregelmäsigen Abständen die Gutmeldung ohne ersichtlichen Grund. `
Dann nimm mal das cnt++ aus der enabled-Abfrage raus.if(instance.common.enabled) alarmMail(dp.common.name); cnt++;
-
bei mir meldet sich allerdings immernoch in unregelmäsigen Abständen die Gutmeldung ohne ersichtlichen Grund. `
Dann nimm mal das cnt++ aus der enabled-Abfrage raus.if(instance.common.enabled) alarmMail(dp.common.name); cnt++; ```` `
Hallo Paul,
das funktioniert auch nicht…Ich bekomme immer wieder Gutmeldungen...In der obigen Variante mit allen countern aktiv laufen sogar die Fehlermeldungen von jedem Adapter durch und bringen dann wieder die Gutmeldung. Der fährt quasi alle aktiven Adapter ab...
Ich möchte dich damit nicht noch weiter beschäftigen, wollte nur noch wenigstens eine Rückmeldung geben...
Ich verwende das Script jetzt in der letzten Variante ohne die Zähler und lasse mir auch keine Gutmeldungen mehr schicken. Also Fehlermedlungen werden zuverlässig verschickt und zum Zurücksetzen der Anzeige in Vis kann ich es auch so nehmen...
Danke für die Mühe...
Sollte ich dein Ergeiz geweckt haben, teste ich gerne weiter...aber ich habs aufgegeben an dem Script zu basteln...
-
Hallo Paul weißt du warum ich bei unterem Script folgenden Logmeldungen bekomme?
javascript.0 2018-09-05 21:03:42.861 error at Object. <anonymous>(script.js.common.Mail_Status_Adapter.Adapterüberwachung:31:22)
javascript.0 2018-09-05 21:03:42.860 error Error in callback: TypeError: Cannot read property 'common' of null
javascript.0 2018-09-05 21:03:42.857 warn Object "system,adapter,text2command,0,alive" does not exist
createState('Adapterüberwachung.iobroker.Störung', {"name": "iobroker Servicemeldungen Störung" }); createState('Adapterüberwachung.iobroker.Text', {"name": "iobroker Servicemeldungen Text"}); function alarmMail(txt) { txt = 'System Adapter ' + txt; sendTo('telegram.0', 'iobroker - ' + txt); setState('javascript.0.Adapterüberwachung.iobroker.Text', txt); log('iobroker - System Adapter '+(txt)); } var cnt = 0; on(/^system\.adapter\..+\.alive$/, function(dp) { if (dp.state.val===true) log('trigger für Adapterüberwachung aktiv'); var id = (dp.id.split('.')); if(id[2] != 'tvspielfilm' && id[2] != 'tankerkoenig') { if(dp.state.val) { cnt--; if(cnt <= 0) { // alarmMail('laufen fehlerfrei'); setState('javascript.0.Adapterüberwachung.iobroker.Störung', false ); setState('javascript.0.Adapterüberwachung.iobroker.Text', ' iobroker - Systemadapter laufen fehlerfrei'); log('iobroker - System Adapter laufen fehlerfrei' ); cnt = 0; // falls verzählt und cnt < 0 } } else { if (dp.state.val === false) id = ('system.adapter.' + id[2] + '.' + id[3]); var instance = getObject(id); if(instance.common.enabled) { alarmMail('meldet Probleme ' + dp.common.name); setState('javascript.0.Adapterüberwachung.iobroker.Störung', true); } cnt++; } } }); ````</anonymous>
-
Durch zufall diesen Beitrag gefunden.
Werde ich mal testen.
Danke dafür
-
Leider bekomme ich bei jedem Neustart von Adaptern oder neuverbinden der fritz.box auch eine Email was ja eigentlich klar ist weil dann der Adapter kurz auf gelb springt oder?
![](</s><URL url=)<link_text text="https://uploads.tapatalk-cdn.com/201811 ... 493a80.jpg">https://uploads.tapatalk-cdn.com/20181112/57b7130933b0df29462f2f489f493a80.jpg</link_text>" /> -
Hallo zusammen,
ich habe das Script zwar zum Laufen gebracht, aber habe das Problem, dass ich im Minutentakt Telegram-Nachrichten bekomme, wenn ein Adapter gelb oder rot ist.
Das reicht mir aber natürlich nur 1 mal...
Kann mir jemand sagen, wie ich die Meldungen nur bekomme, wenn sich der Status auch ändert?
Alternativ würde ich eine stündliche Abfrage einbauen wollen - geht das?
Ich bin leider völliger Noob dabei.Hier ist mein aktuell genutztes Script:
createState('Adapterüberwachung.iobroker.Störung', {"name": "iobroker Servicemeldungen Störung" }); createState('Adapterüberwachung.iobroker.Text', {"name": "iobroker Servicemeldungen Text"}); function alarmMail(txt) { sendTo('telegram.0', 'iobroker - System Adapter meldet Probleme '+(txt)); setState('javascript.0.Adapterüberwachung.iobroker.Störung', true ); setState('javascript.0.Adapterüberwachung.iobroker.Text', 'System Adapter meldet Probleme '+(txt)); } var cnt = 0; // Instanz wird inaktiv on({id: /^system\.adapter\..+\.alive$/, change: 'ne', val: false}, function(dp) { var id = dp.id.split('.'); id = 'system.adapter.' + id[2] + '.' + id[3]; var instance = getObject(id); if(instance.common.enabled) { alarmMail(dp.common.name); cnt++; } });
-
@deifel sagte:
mein aktuell genutztes Script:
Versuche es mal hiermit oder so:
createState('Adapterüberwachung.iobroker.Text', {"name": "iobroker Servicemeldungen Text"}); function alarmMail(txt) { sendTo('telegram.0', 'iobroker - System Adapter meldet Probleme ' + txt); setState('javascript.0.Adapterüberwachung.iobroker.Text', 'System Adapter meldet Probleme ' + txt); } // Instanz wird inaktiv on({id: /^system\.adapter\..+\.alive$/, change: 'lt'}, function(dp) { var id = dp.id.split('.'); var common = getObject('system.adapter.' + id[2] + '.' + id[3]).common; if(common.enabled && common.mode == 'daemon') { alarmMail(dp.common.name); } });
Damit werden Instanzen, die per Cronjob gestartet werden, ausgeblendet.
-
Danke für Deinen Hilfeversuch:)
Mit den von Dir verlinkten Script habe ich leider nach wie vor eine Dauerschleife bei Adaptern, die "hängen" - also keine Verbindung bekommen.
Bei manuell gestoppten funktioniert es aber wie gewünscht...
Und mit dem Code:// Instanz wird inaktiv on({id: /^system\.adapter\..+\.alive$/, change: 'ne', val: false, oldVal: true}, function(dp) { var id = dp.id.split('.'); var common = getObject('system.adapter.' + id[2] + '.' + id[3]).common; if(common.enabled && common.mode = 'daemon') { alarmMail(dp.common.name); } });
komme ich nicht klar. Wäre es für Dich ein großer Umstand, das komplette Script mit diesem Code zu posten?
Ich weiß leider nicht, wo ich den Teil hin packen muss...Vielen Dank nochmals
-
-
Danke Dir!
So hatte ich es auch versucht. Bekomme aber beim Start folgende Meldung:javascript.0 script.js.common.Test2 compile failed:
at script.js.common.Test2:12 -
-
Danke! Das Script funktioniert jetzt zwar, aber es hilft mir nicht weiter. Ich habe vereinzelt Instanzen, die (wenn diese den Server nicht erreichen) kurz grün werden und dann wieder rot oder gelb.
Dann bekomme ich im Minutentakt diese Meldungen...
Kann ich bei diesem Script irgendwie ein ganz einfaches Schedule einbauen?
Z.B. damit es nur alle 4 Stunden ausgeführt wird?
Das würde mir dann so schon ausreichen... -
@deifel sagte:
Instanzen, die (wenn diese den Server nicht erreichen) kurz grün werden und dann wieder rot oder gelb.
Verhält sich bei diesen Instanzen der Datenpunkt system.adapter.name.N.connected genauso, d.h. wird er zwischendurch mal kurz true ?
-
Ja, verhält sich leider genauso, wenn ich unter Objekte die Sache beobachte...
Das ist mit Sicherheit der Grund, dass das Script natürlich dann ständig reagiert. -
@deifel sagte:
verhält sich leider genauso
Dann sollten diese Adapter in diesem Skript ausgeblendet werden. Sie müssen getrennt behandelt werden.
Ausblenden in Zeile 12:
if(common.enabled && common.mode == 'daemon' && id[2] != 'adapter1' && id[2] != 'adapter2') {
adapter1, adapter2 sind durch die betreffenden Adapternamen zu ersetzen.
EDIT: Wenn Du mir verrätst, welche Instanzen betroffen sind, kann ich das Skript entsprechend ergänzen.
-
Ich danke Dir vielmals für Deine Hilfe!
Also bei mir sind das der Adapter netatmo und der cloud-Adapter.
Wobei ich mir nicht sicher bin, wie der cloud adapter reagiert bzw. ob auch dort der system.adapter.name.N.connected Eintrag sich verändert.
Bei Netatmo ist das definitiv der Fall. Sobald einer meiner Sensoren (Regen, Wind etc.) keinen Empfang hat, trennt sich gleich die ganze Verbindung des Adapters.
Wenn ich das davon nicht erfahre oder es nur zufällig in IOBroker sehe, dann merke es es gar nicht. Deshalb wäre das Script hier klasse...
Ich schaffe es jetzt zwar, dass Dein Script die Werte in ein Objekt schreibt und über ein Blockly-Script kann ich das 1 oder 2 mal am Tag abrufen und per Telegram etc. versenden - aber
besser wäre natürlich eine vernünftige Lösung über ein gutes Script (mit einer entsprechenden Prüfung etc.)...
Wenn ich den netatmo in Zeile 12 ausblende, dann berücksichtigt Dein Script diesen ja gar nicht mehr, richtig? -
@deifel sagte in Bei Störung E-Mail versenden ?:
dann berücksichtigt Dein Script diesen ja gar nicht mehr, richtig?
Richtig, deshalb benötigt er eine Sonderbehandlung.
createState('Adapterüberwachung.iobroker.Text', {"name": "iobroker Servicemeldungen Text"}); function alarmMail(txt) { sendTo('telegram.0', 'iobroker - System Adapter meldet Probleme ' + txt); setState('javascript.0.Adapterüberwachung.iobroker.Text', 'System Adapter meldet Probleme ' + txt); } // Instanz wird inaktiv on({id: /^system\.adapter\..+\.alive$/, val: false, oldVal: true}, function(dp) { var id = dp.id.split('.'); var common = getObject('system.adapter.' + id[2] + '.' + id[3]).common; if(common.enabled && common.mode == 'daemon' && id[2] != 'netatmo' && id[2] != 'cloud') { alarmMail(dp.common.name); } }); var timer1 = null; on({id: 'system.adapter.netatmo.0.alive', val: false, oldVal: true}, function(dp) { var common = getObject('system.adapter.netatmo.0').common; if(common.enabled) { if(!timer1) alarmMail(dp.common.name); else clearTimeout(timer1); timer1 = setTimeout(function() {timer1 = null;}, 300000); // 5 Minuten } }); var timer2 = null; on({id: 'system.adapter.cloud.0.alive', val: false, oldVal: true}, function(dp) { var common = getObject('system.adapter.cloud.0').common; if(common.enabled) { if(!timer2) alarmMail(dp.common.name); else clearTimeout(timer2); timer2 = setTimeout(function() {timer2 = null;}, 300000); // 5 Minuten } });
Die Instanz muss mind. 5 Minuten lang "alive" gewesen sein, bevor eine Meldung erzeugt wird.
-
Klasse! Vielen Dank! Das wäre ja klasse, wenn das so funktioniert.
Werde ich so testen.
Herzlichen Dank nochmals für Deine Hilfe - sehr nett!
LG
Frank