NEWS
Usertreffen - Wetter E-Mail
-
Hallo zusammen,
beim Ufertreffen wurde heute erklärt, dass man morgens eine E-Mail mit den Wetterdaten versenden kann.
Kann mir einer erklären wie?
-
Das war ein Beispiel, dass mit ioBroker kaum Grenzen gesetzt sind. Das Beispiel kannst Du mit Javascript realisieren.
Du benötigst funktionsfähig eingerichtet:
-
javascript-Adapter
-
einen Wetter Adapter (DWD, yr, …)
-
den Email-Adapter (oder Telegram, Pushover, usw.)
Die Schritte dafür:
Um 7:00 Uhr morgens ausführen:
// wird um 07:00 ausgeführt schedule({hour: 7, minute: 0}, function (){ // was soll passieren });
DIe Werte für die Vorhersage, z.B. aus yr:
var tempMax = getState("yr.0.forecast.day0.temperature_max").val;
Und die Anweisung eine Email zu versenden:
(Funktionsfähig eingerichteter Email Adapter)
sendTo("email", { from: "mein.iobroker@gmail.com", to: "meine.frau@web.de", subject: "So wird das Wetter heute", text: "Es wird heute bis zu " + tempMax + "°C warm" });
(das ist die lange Version für eine Email. Bei den Standard-Empfaänger/ Sender, kann man es auch kürzer schreiben).
In der Email kannst Du noch alles mögliche an anderen Informationen reinschreiben (Werte eigener Sensoren, Unwetterwarnung, …).
Der ganze Code sieht dann so aus (ungetestet):
// wird um 07:00 ausgeführt schedule({hour: 7, minute: 0}, function (){ var tempMax = getState("yr.0.forecast.day0.temperature_max").val; sendTo("email", { from: "mein.iobroker@gmail.com", to: "meine.frau@web.de", subject: "So wird das Wetter heute", text: "Es wird heute bis zu " + tempMax + "°C warm" }); });
Wenn man z.B. auch zu Telegram (oder nur zu Telegram) was senden möchte, verwendet man statt sentTo("email" … :
sendTo('telegram.1' ,"mein Text: " + tempMax);
-
-
Hallo ruhr70,
ich habe den E-Mail Adapter installiert. Testmail geht auch raus
Wetter Adapter waren installiert.
Ich habe sicherheitshalber die ID über ID einfügen auch einmal ersetzt.
Cronjob habe ich auf minütlich gesetzt, aber es geht nix raus.
Die Frage ist, muss ich beim Java Script Adapter noch ein NPM Modul mit bei der Instanz angeben?
Gruss Dirk
! "* * * * *";
! schedule({hour: 22, minute: 10}, function (){
! var tempMax = getState("yr.0.forecast.day0.temperature_max").val;
! sendTo("email", {
! from: "wohnung@jaeschke-online.net",
! to: "Dirk@Dirk-Jaeschke.com",
! subject: "So wird das Wetter heute",
! text: "Es wird heute bis zu " + tempMax + "°C warm"
! });
! }); -
Hallo Dirk,
@DiJaexxl:"* * * * *"; schedule({hour: 22, minute: 10}, function (){ var tempMax = getState("yr.0.forecast.day0.temperature_max").val; sendTo("email", { from: "wohnung@jaeschke-online.net", to: "Dirk@Dirk-Jaeschke.com", subject: "So wird das Wetter heute", text: "Es wird heute bis zu " + tempMax + "°C warm" }); }); ```` `
Die erste Zeile brauchst du nicht.
"* * * * *"; ````Minütlich ginge so:
schedule("* * * * *", function (){
var tempMax = getState("yr.0.forecast.day0.temperature_max").val;sendTo("email", {
from: "wohnung@jaeschke-online.net",
to: "Dirk@Dirk-Jaeschke.com",
subject: "So wird das Wetter heute",
text: "Es wird heute bis zu " + tempMax + "°C warm"
});
});Ist der Email Adapter aktiviert (Reiter Instanzen auf das rote Dreieck geklickt)? Gruß Pix
-
Hallo und guten Morgen Pix,
ja der E-Mail Adapter läuft.
Ich hatte via dem Cron Job Button die Sterne erzeugt. Gedankengang war, dass das Script minütlich aufgerufen wird, und im Script dann steht, du sendest um 22:10 die Mail.
Ich habe die Zeit nun noch einmal auf 7:15 gestellt, aber es geht noch keine Mail raus.
Das ist mein erstes Script, kann es sich um prinzipelle Probleme handeln?
-
lass zum testen das schedule weg. Dann geht beim Skriptstart direkt die Email raus
Gesendet von iPhone mit Tapatalk
-
Man man, das muss doch zu schaffen sein.
Das ist das aktuelle Script:
// wird um 07:30 ausgeführt var tempMax = getState("yr.0.forecast.day0.temperature_max").val; sendTo("email", { from: "wohnung@jaeschke-online.net", to: "Dirk@Dirk-Jaeschke.com", subject: "So wird das Wetter heute", text: "Es wird heute bis zu " + tempMax + "°C warm" });
Das zeigt das Log Script bei ausführen an:
jjavascript.0 26 09:16:21.585 info javascript.0 received all objects javascript-0 26 09:16:20.315 info received all states javascript-0 26 09:16:18.595 info requesting all objects javascript-0 26 09:16:18.592 info requesting all states javascript-0 26 09:16:18.572 info starting. Version 2.1.3 in /opt/iobroker/node_modules/iobroker.javascript host-ioBroker 26 09:16:16.371 info instance system.adapter.javascript.0 started with pid 16296 host-ioBroker 26 09:16:13.913 info instance system.adapter.javascript.0 terminated with code 0 (OK) host-ioBroker 26 09:16:13.840 info stopInstance system.adapter.javascript.0 killing pid 14721 host-ioBroker 26 09:16:13.838 info stopInstance system.adapter.javascript.0
Die E-Mail-Adresse habe ich aus dem Adapter kopiert, da kann nix falsch sein.
Der Datapunkt ist auch richtig. Der Scripteditor zeigt keinen Fehler an.
Das einzige was ich haben könnte, dass hab ich aber schon einmal gefragt.
Bei der Java Script Instanz ist das Feld "Zusätzliche NPM-Module" leer. Benötige ich nicht doch etwas?
-
ist das Skript aktiv?
grün?
[EDIT}
Das Skript sollte jedes Mal, wenn Du es startest eine Email versenden.
Erweitere das Skript bitte mal um ein log() in der zweiten Zeile:
var tempMax = getState("yr.0.forecast.day0.temperature_max").val; log("max. Temperatur heute: " + tempMax);
Wurde das Skript gestartet, wird der Logeintrag geschrieben und Du weisst, dass
a) dass yr funktioniert und einen Wert liefert
b) das Skript auch wirklich aktiv ist
Ich vermute fast, dass Du es nicht auf grün geschaltet hast.
Jedes mal, wenn Du nun zwischen "rot" und "grün" wechselst, sollte ein Log geschrieben werden und eine Email rausgehen.
Und die beiden Email Adressen in "from" und "to" sind nicht vertauscht?
Hinter "from" gehört die Email-Adresse rein, von der Du senden willst und die im Adapter in der Instanz konfiguriert ist.
Das Log sollte dann so aussehen:
email-0 26 13:16:48.325 info sent to Dirk@Dirk-Jaeschke.com email-0 26 13:16:46.950 info Send email: {"from":"wohnung@jaeschke-online.net","to":"Dirk@Dirk-Jaeschke.com","subject":"So wird das Wetter heute","text":"Es wird heute bis zu 22°C warm"} javascript-2 26 13:16:46.945 info script.js.Test.Test_temp: registered 0 subscriptions and 0 schedules javascript-2 26 13:16:46.944 info script.js.Test.Test_temp: max. Temperatur heute: 22 javascript-2 26 13:16:46.942 info Start javascript script.js.Test.Test_temp
Das "Start javascript script.js. …" vermisse ich bei Dir.
Daher wirklich die Vermutung, dass Du das Skript nicht aktiviert hast.
Da ich mit Deinen Email-Adressen getestet habe, hätte ich eigentlich eine Fehlermeldung erwartet, da die Absender-Adresse eine ungültige ist. Du dürftest jetzt 2-3 Testemails von mir erhalten haben
Aus meiner Sicht ist das ein Fehler im Email-Adapter, wenn ich mit einem ungültigen Absender eine Email verschicken kann. In der verschickten Email steht wieder die Email-Adresse aus dem Email-Adapter drin.
-
Hallo,
deine Hardkopie hat geholfen!!!
Mein Fehler war, es war mein erstes Script und ich habe es unter global einsortiert.
Habe die Logzeile einkopiert und einen Test Zweig aufgemacht.
Nun geht es
DANKE, DANKE, DANKE
-
Mein Fehler war, es war mein erstes Script und ich habe es unter global einsortiert.
Habe die Logzeile einkopiert und einen Test Zweig aufgemacht. `
Da wäre ich jetzt nicht drauf gekommen…
Du kannst Dein Skript einordnen, wo Du möchtest, nur nicht unter global
Alle Skripte im Ordner global werden vor allen anderen Skripten kopiert.
@Bluefox: vielleicht kann man den Order in der Ansicht speziell markieren (abgesetzt, farbig, …) oder anderweitig auf die besondere Funktion hinweisen (PopUp beim Speichern eines Skripts, Infotext, ...).
Viel Spaß beim experimentieren. mit sendTo() kannst Du noch einiges mehr machen (Pushover, Telegram, ...).
-
Hallo zusammen,
ich habe nun dieses Script am laufen:
// wird um 06:30 ausgeführt schedule("30 6 * * *", function (){ var tempDay0Max = getState("yr.0.forecast.day0.temperature_max").val; var tempDay0Text = getState("yr.0.forecast.day0.text").val; log("max. Temperatur heute: " + tempDay0Max); sendTo("email", { from: "wohnung@jaeschke-online.net", to: "Dirk@Dirk-Jaeschke.com", subject: "So wird das Wetter heute - " + tempDay0Text, text: "Hallo und guten Morgen Dirk, es wird heute in Bensberg bis zu " + tempDay0Max + "°C warm." }); });
Wie binde ich diesen HTML Link
http://www.yr.no/place/Germany/Nordrhein-Westfalen/Bensberg/avansert_meteogram.png
In den Text ein, so dass das Bild dargestellt wird in der E-Email?
-
Steht in der Doku von iobroker.email
https://github.com/ioBroker/ioBroker.em … /README.md
Email im HTML Format
Gruß
Pix
Gesendet mit Tapatalk