HowTo: Node Red – E-Mail bei Ereignissen senden

E-Mails sind (glaube ich) mit eines der ältesten Kommunikationsmittel im Internet. Im Smart-Home-Bereich spielen sie dagegen keine große Rolle. Zum schnellen und direkten Datenaustausch werden oft lieber Push-Services – wie zum Beispiel Pushbullet – oder direkt MQTT genutzt.

In manchen Fällen kann es aber doch praktisch sein auch aus NodeRed eine E-Mail zu versenden. Zum Beispiel könnte man auf diesem Weg einen monatlichen Statusbericht als monatliche Zusammenfassung ans eigene E-Mail-Postfach senden.
Oder man sendet sich selbst täglich den aktuellen Wetterbericht. Die Möglichkeiten sind fast unbegrenzt. Falls Ihr noch weitere nützliche Verwendungszwecke habt, könnt Ihr gerne einen Kommentar mit Eurer Idee schreiben. 🙂

In dem folgenden Artikel ist erklärt, wie Ihr auf ein Ereignis hin den aktuellen Wetterbericht per E-Mail versenden könnt.


Sicherheitshinweise

Ich weiß die folgenden Hinweise sind immer irgendwie lästig und wirken unnötig. Aber leider haben schon viele Menschen die es "besser" wussten aus Leichtsinnigkeit Augen, Finger oder anderes verloren bzw. sich verletzt. Im Vergleich dazu ist ein Datenverlust fast nicht der Rede Wert, aber auch diese können echt ärgerlich sein. Deswegen nehmt Euch bitte fünf Minuten Zeit um die Sicherheitshinweise zu lesen. Denn auch das coolste Projekt ist keine Verletzung oder anderen Ärger wert.
https://www.nerdiy.de/sicherheitshinweise/

Affiliatelinks/Werbelinks

Die hier in aufgeführten Links zu Online-Shops sind sogenannte Affiliate-Links. Wenn Du auf so einen Affiliate-Link klickst und über diesen Link einkaufst, bekommt Nerdiy.de von dem betreffenden Online-Shop oder Anbieter eine Provision. Für Dich verändert sich der Preis nicht. Falls Du Deine Einkäufe über diese Links tätigst unterstützt Du Nerdiy.de dabei auch in Zukunft weitere nützliche Projekte anbieten zu können. 🙂 


Voraussetzungen

Hilfreiche Artikel:
Damit Ihr diese Konfiguration übernehmen  könnt sollte NodeRed natürlich schon installiert sein.
Wie ihr einen RaspberryPi dazu vorbereitet und dann NodeRed darauf installiert ist in den folgenden Artikeln beschrieben.

Die folgenden Artikel beschreiben was zu tun ist um den RaspberryPi soweit vorzubereiten:
RaspberryPi – Einrichten für Nerdiys!
RaspberryPi – Die Erste Konfiguration!
RaspberryPi – Den RaspberryPi über SSH steuern
NodeRed – Installation von NodeRed auf dem RaspberryPi
NodeRed – Neue Nodes installieren

NodeRed – Aktuelle Wetterdaten von OpenWeatherMap beziehen

Benötigtes Werkzeug:
-keins-

Benötigtes Material:

In der folgenden Liste findet Ihr alle Teile die Ihr zur Umsetzung dieses Artikels benötigt.


In die NodeRed Konfigurationsoberfläche einloggen

Bevor Ihr eure NodeRed Konfiguration bearbeiten könnt müsst Ihr Euch - falls aktiviert - zunächst in die NodeRed Konfigurationsoberfläche einloggen.

Ansicht des Login Dialogs. Hier müsst Ihr die Login Daten eingeben die Ihr während der Konfiguration des Logins angegeben habt. Infos dazu findet Ihr im Artikel NodeRed - Benutzerlogin einrichten.

openWeatherMap-Node startklar machen

Damit Ihr die per E-Mail zu versendenden Daten auch vorher sammeln könnt müsst Ihr die openWeatherMap-Node lauffähig in Eurer NodeRed-Konfiguration installiert haben. Die Schritt dazu sind in dem Artikel NodeRed – Aktuelle Wetterdaten von OpenWeatherMap beziehen beschrieben.


Node-Code Beispiel: Die aktuellen Wetterdaten per E-Mail erhalten

Für dieses Beispiel benötigt Ihr keine andere – außer den standardmäßig installierten – Nodes. Um die Konfiguration zu übernehmen müsst ihr nur unten stehenden Node-Code in Euere Konfiguration importieren. Wie das geht ist im Artikel NodeRed – Neue Nodes installieren erklärt.

Nachdem Ihr den Node-Code importiert habt müsst ihr noch ein paar Konfigurationen der einzelnen Nodes ergänzen.

Ansicht der Node-Konfiguration im Editor.

 Node-Code:

[{"id":"3aab8493.0bc2fc","type":"e-mail","z":"550c7bf5.5c03e4","server":"mail.gmx.net","port":"465","secure":true,"name":"info@test.de","dname":"sendEmail","x":1050,"y":380,"wires":[]},{"id":"51ae2d16.38b7a4","type":"change","z":"550c7bf5.5c03e4","name":"tempConvert","rules":[{"t":"set","p":"data.main.temp","pt":"msg","to":"data.main.temp-273.15","tot":"jsonata"},{"t":"set","p":"data.main.temp_min","pt":"msg","to":"data.main.temp_min-273.15","tot":"jsonata"},{"t":"set","p":"data.main.temp_max","pt":"msg","to":"data.main.temp_max-273.15","tot":"jsonata"},{"t":"set","p":"title","pt":"msg","to":"Aktueller Wetterbericht","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":670,"y":380,"wires":[["41a940d8.99eb7"]]},{"id":"ca0b22a9.c0272","type":"json","z":"550c7bf5.5c03e4","name":"","property":"payload","action":"","pretty":false,"x":510,"y":380,"wires":[["51ae2d16.38b7a4"]]},{"id":"a7dc889e.b097a8","type":"inject","z":"550c7bf5.5c03e4","name":"request data","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":150,"y":440,"wires":[["9e4b2651.4217b8"]]},{"id":"9e4b2651.4217b8","type":"openweathermap","z":"550c7bf5.5c03e4","name":"","wtype":"current","lon":"","lat":"","city":"Bochum","country":"Germany","language":"de","x":350,"y":440,"wires":[["ca0b22a9.c0272"]]},{"id":"314b9fd1.5d28e","type":"openweathermap in","z":"550c7bf5.5c03e4","name":"","wtype":"current","lon":"","lat":"","city":"Bochum","country":"Germany","language":"de","x":160,"y":380,"wires":[["ca0b22a9.c0272"]]},{"id":"41a940d8.99eb7","type":"template","z":"550c7bf5.5c03e4","name":"mailTemplate","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"Hallo lieber E-Mail-Empfänger, \nhier kommen die aktuellen Wetterdaten vom {{time}} für {{data.name}}. \nTemperatur: {{data.main.temp}}°C,\nMinimale Temperatur {{data.main.temp_min}}°C,\nMaximale Temperatur {{data.main.temp_max}}°C,\nLuftfeuchtigkeit {{data.main.humidity}}%,\nLuftdruck: {{data.main.pressure}}mmHg,\nWindstärke: {{data.wind.speed}},\nWindrichtung: {{data.wind.deg}}°\n\nLiebe Grüße\nDein NodeRed\n\n","output":"str","x":850,"y":380,"wires":[["d81ba695.75a538","3aab8493.0bc2fc"]]},{"id":"d81ba695.75a538","type":"debug","z":"550c7bf5.5c03e4","name":"rawData","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","x":1040,"y":320,"wires":[]}]
Damit dieses Beispiel funktioniert müsst Ihr die E-Mail-Node bearbeiten. Dort müssen noch die Serverdaten eures E-Mail-Servers eingetragen werden. Tragt dazu die URL eures SMTP-Servers unter „Server“, den dazugehörigen Benutzernamen unter „UserId“ und das passende Passwort unter „Password“ ein. Zu guter letzt müsst Ihr in der ersten Zeile unter „To“ die Empfänger-Email eintragen, an welche die E-Mail gesendet werden soll.
In der Template-Node könnt Ihr den per E-Mail versendeten Text bearbeiten und nach Euren Wünschen anpassen.
In der Change-Node könnt Ihr dazu noch den Betreff der E-Mail bearbeiten. In der letzten Zeile wird die Variable „Msg.title“ gesetzt, deren Inhalt in der E-Mail-Node dann als Betreff verwendet wird.

Ich hoffe bei euch hat alles wie beschrieben funktioniert. Falls nicht oder ihr Fragen oder Anregungen habt lasst es mich in den Kommentaren bitte wissen. Ich trage dies dann ggf. in den Artikel nach.
Auch Ideen für neue Projekte sind immer gerne willkommen. 🙂

Fab

P.S. Viele dieser Projekte - besonders die Hardwareprojekte - kosten viel Zeit und Geld. Natürlich mache ich das weil ich Spaß daran habe, aber wenn Du es cool findest, dass ich die Infos dazu mit Euch teile, würde ich mich über eine kleine Spende an die Kaffeekasse freuen. 🙂

Buy Me a Coffee at ko-fi.com

6 Kommentare

  1. Hallo 🙂

    Wie ist das, wenn ich zum Beispiel eine Mail bekommen möchte, wenn ein Schalter aktiv ist? Bei mir kommen dann unendlich viel mails, ich glaube das kommt vom timestamp oder so.

    Bin absoluter Neuling

    Lg fabian

    1. Hey Fabian,
      lass mich raten, du hast eine inject node genutzt, welche jede Sekunde prüft ob der Schalter aktiviert ist und falls ja wird eine Mail losgesendet? 🙂
      Poste doch am besten mal den Code von der betreffenden Stelle hier rein, dann kann ich das besser nachvollziehen. 🙂
      Falls du aber schon etwas experimentieren willst: Du kannst dir mithilfe von zwei „trigger“-blöcken eine „Zustandsverriegelung“ bauen.
      Ein Beispiel wo ich das auch schon verwendet habe findest du in dem Code zur Anwesenheitserkennung mithilfe der FritzBox: https://nerdiy.de/nodered-fritzbox-anwesenheitserkennung-mit-der-fritzbox/
      Diese Verrieglung hat zur Folge, dass die eingehende Nachricht nur dann weitergeleitet wird, wenn der Status sich ändert. Letztlich willst du ja auch nur in dem Moment eine E-Mail senden wenn du den Schalter von „Aus“ auf „Ein“ stellst. 🙂
      Ich hoffe das hilft dir. Falls nicht, poste gerne Mal deinen Code hier rein und ich „bastle da so eine Lösung rein“. 🙂

      Beste Grüße
      Fabian

  2. Hallo Fabian
    Danke für deine Rückmeldung.

    Anbei mal der Code 😀

    LG Fabian

    [
    {
    „id“: „1c51458d.3afefa“,
    „type“: „ds18b20“,
    „z“: „57ba4cc7.5cb3f4“,
    „name“: „“,
    „sensorid“: „28-03139779ce96“,
    „timer“: „0.1“,
    „x“: 170,
    „y“: 760,
    „wires“: [
    [
    „54a48697.1af1a8“
    ]
    ]
    },
    {
    „id“: „54a48697.1af1a8“,
    „type“: „calculator“,
    „z“: „57ba4cc7.5cb3f4“,
    „name“: „“,
    „inputMsgField“: „payload“,
    „outputMsgField“: „payload“,
    „operation“: „sum“,
    „constant“: „2.4“,
    „round“: false,
    „decimals“: 0,
    „x“: 370,
    „y“: 760,
    „wires“: [
    [
    „b8f5c9e0.476758“,
    „14be39f2.c942c6“,
    „5e74354.53e37cc“,
    „3a997c58.458334“,
    „9015895f.473e48“,
    „b31c2c33.6dfc8“,
    „e667a58a.f5bae8“
    ]
    ]
    },
    {
    „id“: „b8f5c9e0.476758“,
    „type“: „template“,
    „z“: „57ba4cc7.5cb3f4“,
    „name“: „options“,
    „field“: „payload“,
    „fieldType“: „msg“,
    „format“: „handlebars“,
    „syntax“: „mustache“,
    „template“: „{\“foo\“:\“bar\“}“,
    „output“: „str“,
    „x“: 600,
    „y“: 700,
    „wires“: [
    [
    „ae2f45f6.fb9e48“
    ]
    ]
    },
    {
    „id“: „14be39f2.c942c6“,
    „type“: „function“,
    „z“: „57ba4cc7.5cb3f4“,
    „name“: „“,
    „func“: „if(msg.payload> 26.2) {msg.payload = false;}\nelse if (msg.payload< 24) {msg.payload = true;}\nreturn msg;",
    "outputs": 1,
    "noerr": 0,
    "initialize": "",
    "finalize": "",
    "x": 600,
    "y": 460,
    "wires": [
    [
    "9f7947ae.c38e68",
    "29f32232.207e9e"
    ]
    ]
    },
    {
    "id": "5e74354.53e37cc",
    "type": "ui_gauge",
    "z": "57ba4cc7.5cb3f4",
    "name": "",
    "group": "a22f56de.8c6458",
    "order": 6,
    "width": 0,
    "height": 0,
    "gtype": "gage",
    "title": "Wassertemp.",
    "label": "",
    "format": "{{value| number:1}}°C",
    "min": 0,
    "max": "50",
    "colors": [
    "#ff0000",
    "#00ffe1",
    "#ff0000"
    ],
    "seg1": "23",
    "seg2": "25",
    "x": 610,
    "y": 520,
    "wires": []
    },
    {
    "id": "3a997c58.458334",
    "type": "ui_gauge",
    "z": "57ba4cc7.5cb3f4",
    "name": "",
    "group": "8bdfeaf5.0afa18",
    "order": 1,
    "width": "5",
    "height": "5",
    "gtype": "gage",
    "title": "Wassertemp.",
    "label": "",
    "format": "{{value| number:1}}°C",
    "min": 0,
    "max": "50",
    "colors": [
    "#ff0000",
    "#00ffe1",
    "#ff0000"
    ],
    "seg1": "23",
    "seg2": "25",
    "x": 610,
    "y": 560,
    "wires": []
    },
    {
    "id": "9015895f.473e48",
    "type": "ui_chart",
    "z": "57ba4cc7.5cb3f4",
    "name": "",
    "group": "8bdfeaf5.0afa18",
    "order": 2,
    "width": "7.8",
    "height": "5",
    "label": "Temperaturverlauf",
    "chartType": "line",
    "legend": "false",
    "xformat": "HH:mm:ss",
    "interpolate": "linear",
    "nodata": "",
    "dot": true,
    "ymin": "23",
    "ymax": "25",
    "removeOlder": "1",
    "removeOlderPoints": "",
    "removeOlderUnit": "60",
    "cutout": 0,
    "useOneColor": false,
    "useUTC": false,
    "colors": [
    "#00d9ff",
    "#aec7e8",
    "#ff7f0e",
    "#00ff00",
    "#98df8a",
    "#d62728",
    "#ff9896",
    "#9467bd",
    "#c5b0d5"
    ],
    "useOldStyle": false,
    "outputs": 1,
    "x": 630,
    "y": 600,
    "wires": [
    []
    ]
    },
    {
    "id": "b31c2c33.6dfc8",
    "type": "template",
    "z": "57ba4cc7.5cb3f4",
    "name": "",
    "field": "payload",
    "fieldType": "msg",
    "format": "handlebars",
    "syntax": "mustache",
    "template": "{\"CurrentTemperature\":\"{{payload}}\"}",
    "output": "str",
    "x": 600,
    "y": 760,
    "wires": [
    [
    "8241846e.2d9298"
    ]
    ]
    },
    {
    "id": "e667a58a.f5bae8",
    "type": "ui_chart",
    "z": "57ba4cc7.5cb3f4",
    "name": "",
    "group": "be6d8af4.0031d8",
    "order": 2,
    "width": "4",
    "height": "4",
    "label": "Temperaturverlauf",
    "chartType": "line",
    "legend": "false",
    "xformat": "dd HH:mm",
    "interpolate": "linear",
    "nodata": "",
    "dot": false,
    "ymin": "23.",
    "ymax": "25",
    "removeOlder": "1",
    "removeOlderPoints": "",
    "removeOlderUnit": "604800",
    "cutout": 0,
    "useOneColor": true,
    "useUTC": false,
    "colors": [
    "#f702e3",
    "#aec7e8",
    "#ff7f0e",
    "#00ff00",
    "#98df8a",
    "#d62728",
    "#ff9896",
    "#9467bd",
    "#c5b0d5"
    ],
    "useOldStyle": false,
    "outputs": 1,
    "x": 630,
    "y": 640,
    "wires": [
    []
    ]
    },
    {
    "id": "ae2f45f6.fb9e48",
    "type": "json",
    "z": "57ba4cc7.5cb3f4",
    "name": "",
    "property": "payload",
    "action": "",
    "pretty": false,
    "x": 750,
    "y": 700,
    "wires": [
    []
    ]
    },
    {
    "id": "9f7947ae.c38e68",
    "type": "ui_switch",
    "z": "57ba4cc7.5cb3f4",
    "name": "",
    "label": "Lüftung",
    "tooltip": "",
    "group": "84c4d91b.9ddaa8",
    "order": 4,
    "width": 0,
    "height": 0,
    "passthru": true,
    "decouple": "false",
    "topic": "",
    "style": "",
    "onvalue": "false",
    "onvalueType": "bool",
    "onicon": "",
    "oncolor": "",
    "offvalue": "true",
    "offvalueType": "bool",
    "officon": "",
    "offcolor": "",
    "x": 740,
    "y": 320,
    "wires": [
    [
    "97a8ff1f.f0019",
    "8194db18.ab6cb8",
    "c17fafae.c5817"
    ]
    ]
    },
    {
    "id": "29f32232.207e9e",
    "type": "delay",
    "z": "57ba4cc7.5cb3f4",
    "name": "",
    "pauseType": "delay",
    "timeout": "10",
    "timeoutUnits": "seconds",
    "rate": "1",
    "nbRateUnits": "1",
    "rateUnits": "second",
    "randomFirst": "1",
    "randomLast": "5",
    "randomUnits": "seconds",
    "drop": false,
    "x": 750,
    "y": 280,
    "wires": [
    [
    "97a8ff1f.f0019"
    ]
    ]
    },
    {
    "id": "8241846e.2d9298",
    "type": "json",
    "z": "57ba4cc7.5cb3f4",
    "name": "",
    "property": "payload",
    "action": "",
    "pretty": false,
    "x": 750,
    "y": 760,
    "wires": [
    []
    ]
    },
    {
    "id": "97a8ff1f.f0019",
    "type": "rpi-gpio out",
    "z": "57ba4cc7.5cb3f4",
    "name": "Lüftung",
    "pin": "37",
    "set": "",
    "level": "0",
    "freq": "",
    "out": "out",
    "x": 1180,
    "y": 320,
    "wires": []
    },
    {
    "id": "8194db18.ab6cb8",
    "type": "template",
    "z": "57ba4cc7.5cb3f4",
    "name": "options",
    "field": "payload",
    "fieldType": "msg",
    "format": "handlebars",
    "syntax": "mustache",
    "template": "{\"foo\":\"bar\"}",
    "output": "str",
    "x": 1040,
    "y": 400,
    "wires": [
    [
    "84dd1d88.e7b5d"
    ]
    ]
    },
    {
    "id": "c17fafae.c5817",
    "type": "change",
    "z": "57ba4cc7.5cb3f4",
    "name": "",
    "rules": [
    {
    "t": "change",
    "p": "payload",
    "pt": "msg",
    "from": "false",
    "fromt": "bool",
    "to": "true",
    "tot": "bool"
    }
    ],
    "action": "",
    "property": "",
    "from": "",
    "to": "",
    "reg": false,
    "x": 920,
    "y": 460,
    "wires": [
    [
    "d2cfcf2f.07f02"
    ]
    ]
    },
    {
    "id": "84dd1d88.e7b5d",
    "type": "json",
    "z": "57ba4cc7.5cb3f4",
    "name": "",
    "property": "payload",
    "action": "",
    "pretty": false,
    "x": 1190,
    "y": 400,
    "wires": [
    []
    ]
    },
    {
    "id": "d2cfcf2f.07f02",
    "type": "trigger",
    "z": "57ba4cc7.5cb3f4",
    "name": "",
    "op1": "",
    "op2": "",
    "op1type": "pay",
    "op2type": "payl",
    "duration": "24",
    "extend": false,
    "overrideDelay": false,
    "units": "hr",
    "reset": "",
    "bytopic": "all",
    "topic": "topic",
    "outputs": 1,
    "x": 1140,
    "y": 460,
    "wires": [
    [
    "e08c20eb.589ed"
    ]
    ]
    },
    {
    "id": "e08c20eb.589ed",
    "type": "template",
    "z": "57ba4cc7.5cb3f4",
    "name": "mail",
    "field": "payload",
    "fieldType": "msg",
    "format": "handlebars",
    "syntax": "mustache",
    "template": "Warnmeldung\n\nAquarium ist zu warm.\n\nDie Lüftung wurde aktiviert!\n\nLiebe Grüße\nDein Server",
    "output": "str",
    "x": 1310,
    "y": 460,
    "wires": [
    []
    ]
    },
    {
    "id": "d80536f4.eb90a8",
    "type": "comment",
    "z": "57ba4cc7.5cb3f4",
    "name": "Homekit",
    "info": "Homekit",
    "x": 1300,
    "y": 400,
    "wires": []
    },
    {
    "id": "68db86f2.b08c58",
    "type": "comment",
    "z": "57ba4cc7.5cb3f4",
    "name": "Mailserver",
    "info": "",
    "x": 1420,
    "y": 460,
    "wires": []
    },
    {
    "id": "a22f56de.8c6458",
    "type": "ui_group",
    "name": "Aquarium",
    "tab": "2495f749.c25f58",
    "order": 4,
    "disp": true,
    "width": "4",
    "collapse": false
    },
    {
    "id": "8bdfeaf5.0afa18",
    "type": "ui_group",
    "name": "Temperatur",
    "tab": "99bb712a.2b3ca",
    "order": 3,
    "disp": true,
    "width": "12",
    "collapse": false
    },
    {
    "id": "be6d8af4.0031d8",
    "type": "ui_group",
    "name": "Wasserwerte",
    "tab": "99bb712a.2b3ca",
    "order": 4,
    "disp": true,
    "width": "20",
    "collapse": false
    },
    {
    "id": "84c4d91b.9ddaa8",
    "type": "ui_group",
    "name": "Schaltung",
    "tab": "99bb712a.2b3ca",
    "order": 2,
    "disp": true,
    "width": "4",
    "collapse": false
    },
    {
    "id": "2495f749.c25f58",
    "type": "ui_tab",
    "name": "Bedienfeld",
    "icon": "dashboard",
    "order": 1,
    "disabled": false,
    "hidden": false
    },
    {
    "id": "99bb712a.2b3ca",
    "type": "ui_tab",
    "name": "Aquarium",
    "icon": "dashboard",
    "order": 4,
    "disabled": false,
    "hidden": false
    }
    ]

    1. Hey Fabian,
      habe deinen Code importieren können. Ich habe nichts gelöscht und nur den Teil hinzugefügt, der die Funktion bringen sollte. 🙂
      Sag mal bescheid ob es geklappt hat. 🙂
      [{„id“:“ab28b311.e87e5″,“type“:“ds18b20″,“z“:“ba705cfb.7ee0a“,“name“:““,“sensorid“:“28-03139779ce96″,“timer“:“0.1″,“x“:130,“y“:2520,“wires“:[[„b044b02a.74e65“]]},{„id“:“b044b02a.74e65″,“type“:“calculator“,“z“:“ba705cfb.7ee0a“,“name“:““,“inputMsgField“:“payload“,“outputMsgField“:“payload“,“operation“:“sum“,“constant“:“2.4″,“round“:false,“decimals“:0,“x“:330,“y“:2520,“wires“:[[„7f3d76c9.23b358″,“c6a9f213.d9fcb“,“dd6c569.7663ca8″,“c3eb58f.778fda8″,“770f98ee.58c258″,“9cdd55d0.3bacf8″,“a40e44a0.15ea98″]]},{„id“:“7f3d76c9.23b358″,“type“:“template“,“z“:“ba705cfb.7ee0a“,“name“:“options“,“field“:“payload“,“fieldType“:“msg“,“format“:“handlebars“,“syntax“:“mustache“,“template“:“{\“foo\“:\“bar\“}“,“output“:“str“,“x“:560,“y“:2460,“wires“:[[„48dab8e0.ca9128“]]},{„id“:“c6a9f213.d9fcb“,“type“:“function“,“z“:“ba705cfb.7ee0a“,“name“:““,“func“:“if(msg.payload> 26.2) \n{\n msg.payload = false;\n}\nelse if (msg.payload< 24) \n{\n msg.payload = true;\n}\nreturn msg;","outputs":1,"noerr":0,"x":560,"y":2220,"wires":[["5b87956f.4ab73c","cac571b3.65e59","165cfc4f.46f004"]]},{"id":"dd6c569.7663ca8","type":"ui_gauge","z":"ba705cfb.7ee0a","name":"","group":"2e9e95aa.f1c83a","order":6,"width":0,"height":0,"gtype":"gage","title":"Wassertemp.","label":"","format":"{{value| number:1}}°C","min":0,"max":"50","colors":["#ff0000","#00ffe1","#ff0000"],"seg1":"23","seg2":"25","x":570,"y":2280,"wires":[]},{"id":"c3eb58f.778fda8","type":"ui_gauge","z":"ba705cfb.7ee0a","name":"","group":"92f6590a.a3d328","order":1,"width":"5","height":"5","gtype":"gage","title":"Wassertemp.","label":"","format":"{{value| number:1}}°C","min":0,"max":"50","colors":["#ff0000","#00ffe1","#ff0000"],"seg1":"23","seg2":"25","x":570,"y":2320,"wires":[]},{"id":"770f98ee.58c258","type":"ui_chart","z":"ba705cfb.7ee0a","name":"","group":"92f6590a.a3d328","order":2,"width":"7.8","height":"5","label":"Temperaturverlauf","chartType":"line","legend":"false","xformat":"HH:mm:ss","interpolate":"linear","nodata":"","dot":true,"ymin":"23","ymax":"25","removeOlder":"1","removeOlderPoints":"","removeOlderUnit":"60","cutout":0,"useOneColor":false,"useUTC":false,"colors":["#00d9ff","#aec7e8","#ff7f0e","#00ff00","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"useOldStyle":false,"outputs":1,"x":590,"y":2360,"wires":[[]]},{"id":"9cdd55d0.3bacf8","type":"template","z":"ba705cfb.7ee0a","name":"","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{\"CurrentTemperature\":\"{{payload}}\"}","output":"str","x":560,"y":2520,"wires":[["15301b09.d03e65"]]},{"id":"a40e44a0.15ea98","type":"ui_chart","z":"ba705cfb.7ee0a","name":"","group":"bf0e6207.0ed3","order":2,"width":"4","height":"4","label":"Temperaturverlauf","chartType":"line","legend":"false","xformat":"dd HH:mm","interpolate":"linear","nodata":"","dot":false,"ymin":"23.","ymax":"25","removeOlder":"1","removeOlderPoints":"","removeOlderUnit":"604800","cutout":0,"useOneColor":true,"useUTC":false,"colors":["#f702e3","#aec7e8","#ff7f0e","#00ff00","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"useOldStyle":false,"outputs":1,"x":590,"y":2400,"wires":[[]]},{"id":"48dab8e0.ca9128","type":"json","z":"ba705cfb.7ee0a","name":"","property":"payload","action":"","pretty":false,"x":710,"y":2460,"wires":[[]]},{"id":"5b87956f.4ab73c","type":"ui_switch","z":"ba705cfb.7ee0a","name":"","label":"Lüftung","tooltip":"","group":"3cc5c223.3f1a2e","order":4,"width":0,"height":0,"passthru":true,"decouple":"false","topic":"","style":"","onvalue":"false","onvalueType":"bool","onicon":"","oncolor":"","offvalue":"true","offvalueType":"bool","officon":"","offcolor":"","x":700,"y":2080,"wires":[["2fabb5e1.8db58a","8fda296a.f35b58","6bbb4798.295ab8"]]},{"id":"cac571b3.65e59","type":"delay","z":"ba705cfb.7ee0a","name":"","pauseType":"delay","timeout":"10","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":730,"y":2040,"wires":[["2fabb5e1.8db58a"]]},{"id":"15301b09.d03e65","type":"json","z":"ba705cfb.7ee0a","name":"","property":"payload","action":"","pretty":false,"x":710,"y":2520,"wires":[[]]},{"id":"2fabb5e1.8db58a","type":"rpi-gpio out","z":"ba705cfb.7ee0a","name":"Lüftung","pin":"37","set":"","level":"0","freq":"","out":"out","x":1140,"y":2080,"wires":[]},{"id":"8fda296a.f35b58","type":"template","z":"ba705cfb.7ee0a","name":"options","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{\"foo\":\"bar\"}","output":"str","x":1000,"y":2160,"wires":[["f959d03a.784"]]},{"id":"6bbb4798.295ab8","type":"change","z":"ba705cfb.7ee0a","name":"","rules":[{"t":"change","p":"payload","pt":"msg","from":"false","fromt":"bool","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":880,"y":2220,"wires":[["4e441bb9.ff4694"]]},{"id":"f959d03a.784","type":"json","z":"ba705cfb.7ee0a","name":"","property":"payload","action":"","pretty":false,"x":1150,"y":2160,"wires":[[]]},{"id":"4e441bb9.ff4694","type":"trigger","z":"ba705cfb.7ee0a","op1":"","op2":"","op1type":"pay","op2type":"payl","duration":"24","extend":false,"units":"hr","reset":"","bytopic":"all","name":"","x":1100,"y":2220,"wires":[["14531d47.88c793"]]},{"id":"14531d47.88c793","type":"template","z":"ba705cfb.7ee0a","name":"mail","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"Warnmeldung\n\nAquarium ist zu warm.\n\nDie Lüftung wurde aktiviert!\n\nLiebe Grüße\nDein Server","output":"str","x":1270,"y":2220,"wires":[[]]},{"id":"5d57fc0f.2457f4","type":"comment","z":"ba705cfb.7ee0a","name":"Homekit","info":"Homekit","x":1300,"y":2160,"wires":[]},{"id":"9db436ad.9af6b8","type":"comment","z":"ba705cfb.7ee0a","name":"Mailserver","info":"","x":1420,"y":2220,"wires":[]},{"id":"165cfc4f.46f004","type":"trigger","z":"ba705cfb.7ee0a","op1":"false","op2":"0","op1type":"str","op2type":"str","duration":"0","extend":false,"units":"ms","reset":"true","bytopic":"all","name":"false","x":1070,"y":2280,"wires":[["14531d47.88c793"]]},{"id":"2e9e95aa.f1c83a","type":"ui_group","name":"Aquarium","tab":"2d9fb55d.7b096a","order":4,"disp":true,"width":"4","collapse":false},{"id":"92f6590a.a3d328","type":"ui_group","name":"Temperatur","tab":"e7ec43f.3af8fc","order":3,"disp":true,"width":"12","collapse":false},{"id":"bf0e6207.0ed3","type":"ui_group","name":"Wasserwerte","tab":"e7ec43f.3af8fc","order":4,"disp":true,"width":"20","collapse":false},{"id":"3cc5c223.3f1a2e","type":"ui_group","name":"Schaltung","tab":"e7ec43f.3af8fc","order":2,"disp":true,"width":"4","collapse":false},{"id":"2d9fb55d.7b096a","type":"ui_tab","name":"Bedienfeld","icon":"dashboard","order":1,"disabled":false,"hidden":false},{"id":"e7ec43f.3af8fc","type":"ui_tab","name":"Aquarium","icon":"dashboard","order":4,"disabled":false,"hidden":false}] Beste Grüße Fabian

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.