NEWS
Bei Störung E-Mail versenden ?
-
Moin Moin,
gibt es eine einfache Lösung um Störungen per Mail zu versenden?
Ich denke so z.B. Wenn ein Host bei einem Multihost System ausfällt oder ein Adapter nicht gestartet ist ( auf gelb steht)
Oder sogar bei Updates per Mail informiert wird
Ich habe mir schon mal überlegt das über Blockly zu realisieren.
Bei jeder Änderung muss man dann aber die Programmierung anpassen. Man müsste ja zusätzlich auch alle Adapter erfassen
Hat da jemand eine Idee oder sogar schon eine Lösung?
-
um Störungen per Mail zu versenden? …ein Adapter nicht gestartet ist ( auf gelb steht) `
@Elektroman:Man müsste ja zusätzlich auch alle Adapter erfassen `
Das Erfassen aller Adapter sollte mit RegExp möglich sein.function alarmMail(txt) { // hier SendTo an email } // 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); });
-
Hallo Paul und Danke für die schnelle Antwort!
Ist das auch in Blockly realisierbar? Ich kann leider keine Skripte schreiben [emoji848][emoji15]
-
Ist das auch in Blockly realisierbar? `
Bei Blockly bin ich raus Vielleicht kann es Dir jemand nach Blockly übersetzen ? -
Ist das auch in Blockly realisierbar?
Bei Blockly bin ich raus :( Vielleicht kann es Dir jemand nach Blockly übersetzen ?
Regxp im blockly leider nein.
Man könnte aber das Script benutzen und dessen Ausgabe in blockly weiter verarbeiten
–-----------------------
Send from mobile device
-
Klingt gut [emoji108]
Aber wie[emoji4]
-
Man könnte aber das Script benutzen und dessen Ausgabe in blockly weiter verarbeiten `
Dann mit vereinfachtem Skript und Mailtext-Übergabe an Blockly über einen Datenpunkt.// Datenpnkt-ID für Mailtext-Übergabe const idMailtext = 'javascript.0.mailtext'; // oder so ähnlich // 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) setState(idMailtext, 'Störung: ' + dp.common.name, true); });
Einfach das Skript kopieren und die ID für den Mailtext-Datenpunkt anpassen.
-
? [emoji52] sorry aber das ist mir schon zu hoch
-
? [emoji52] sorry aber das ist mir schon zu hoch `
bin gerade back home vom "Sinterklaas Fest" hier in holland moment ich bau dir das ma in blockly um
-
Oh super danke
Ist bestimmt für Andere auch interessant
-
Oh super danke
Ist bestimmt für Andere auch interessant `
So das haette wir dan, im blockly habe ich eigentlich nur das verschiken der mail geloest, das script von Paul53 sorgt eigentlich fuer die logic.
Vorraussetzung ist das du den e-mail adapter installiert und konfiguriert hast !
Also paul sein script ueberwacht alle zustaender "Alive" und schreibt einen fehler aus sollte sich alive = false aender und der adapter den status enabled hat.
Dafuer gibts keine andere loesung, dies script musst du also anlegen (pass auf, nicht in global !)
// Datenpnkt-ID für Mailtext-Übergabe const idMailtext = 'javascript.0.mailtext'; // oder so ähnlich // 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) setState(idMailtext, 'Störung: ' + dp.common.name, true); });
Dan machen wir dieses blockly, welche das object ueberwacht was Paul sein script fuellt und dan eine mail schickt mit dem tekst der meldung.
In diesem blockly erstelle ich auch das object "javascript.0.mailtext" das ist der erste block :
Das ergebnis:
Und hier das blockly zum importieren:
! ````
<xml xmlns="http://www.w3.org/1999/xhtml"><block type="comment" id="ZqI#6E2{oZZs:=pGFB+q" x="38" y="-137"><field name="COMMENT">Object mailtext erstellen</field>
<next><block type="create" id=")H=3W%nvyGQ.4C{SP0T("><field name="NAME">mailtext</field>
<next><block type="comment" id="}:mK[r~GVP/.UGSk9=[h"><field name="COMMENT">Triggeren wen eine meldung vorliegt</field>
<next><block type="on_ext" id="KYD(k!5})eo}(-?77a(("><mutation items="1"></mutation>
<field name="CONDITION">ne</field><value name="OID0"><shadow type="field_oid" id="rJYJwbQ1{f]a{Yj*x8?*"><field name="oid">javascript.0.mailtext</field></shadow></value> <statement name="STATEMENT"><block type="comment" id="Ps|GT%z~M5(;1sK2HK7W"><field name="COMMENT">E-Mail schicken mit wert aus dem object + zusaetlichen tekst</field> <next><block type="email" id="s,f352j%6ynj]CgL[9}m"><field name="IS_HTML">FALSE</field> <value name="TO"><shadow type="text" id="|lM%B_T2xd1W)89K1=(9"><field name="TEXT">deinemailadresse@gmail.com</field></shadow></value> <value name="TEXT"><shadow type="text" id="dlEg%]]f6zh|[HN_;lSJ"></shadow> <block type="variables_get" id="3ZHp92{6WYFpp9eYkUBM"><field name="VAR">value</field></block></value> <value name="SUBJECT"><shadow type="text" id="T0XVW~DiIGOj2%Hu{da="><field name="TEXT">iObroker Fehlermeldungen</field></shadow></value></block></next></block></statement></block></next></block></next></block></next></block></xml>
! ````
-
und der adapter den status enabled hat. `
Dasif(instance.common.enabled) ...
hast Du weggelassen. Hat das einen Grund ?
-
-
@Dutchman: Du triggerst auf "was changed", was voraussetzt, dass sich der Text ändert. Allerdings kann es sein, dass immer wieder die gleiche Instanz mal läuft und dann irgendwann nicht mehr läuft. In diesem Fall würde nur einmal getriggert.
-
@Dutchman: Du triggerst auf "was changed", was voraussetzt, dass sich der Text ändert. Allerdings kann es sein, dass immer wieder die gleiche Instanz mal läuft und dann irgendwann nicht mehr läuft. In diesem Fall würde nur einmal getriggert. `
Stimmt, zur Erklärung: Ich wollte damit eine mail Wiederholung vermeiden wen man aber den effect haben möchte wie du beschreibst muss man de Trigger auf "wurde aktualisiert" ändern.
–-----------------------
Send from mobile device
-
Erst mal vielen Dank
Funktioniert auch
-
Habe es jetzt getestet, funktioniert gut [emoji4] Habe mir eine neue E-Mail Adresse dafür angelegt
Geht das auch mit anstehenden Updates? Oder sogar mit neuen verfügbaren Adaptern ?
-
Geht das auch mit anstehenden Updates? `
Dafür gibt es den(die) Datenpunkt(e) mit der ID "admin.N.info.updatesList" (N = 0,1, …). -
Danke [emoji106][emoji106][emoji106] das kann ich ja sofort weiterverarbeiten
-
Danke [emoji106][emoji106][emoji106] das kann ich ja sofort weiterverarbeiten `
Beachte aber das Updates erst nach einem Befehl
iobroker update
Sichtbar sind
Dafür könntest du das Kommando auch mit blockly ausführen
–-----------------------
Send from mobile device