Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Node-Red
  5. Ausgabe von einer Datenbank für E-Mail formatieren

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.8k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    891

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

Ausgabe von einer Datenbank für E-Mail formatieren

Geplant Angeheftet Gesperrt Verschoben Node-Red
4 Beiträge 3 Kommentatoren 177 Aufrufe 3 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • H Offline
    H Offline
    helios03
    schrieb am zuletzt editiert von
    #1

    Hallo!

    Folgendes Problem, ich bekomme nach einer Abfrage aus der Datenbank (DB-Maria) einen String geliefert der wie folgt aussieht ( [{"Scann-Zeit":"2021-01-07 07:18:15.7038","Ort":"Drucker-Convere"},{"Scann-Zeit":"2021-01-07 07:18:51.2020","Ort": ..................... ,"Ort":"Umsetzer"}] ).
    Diese Meldung wird dann über E-Mail verschickt. Dieser Bandwurm ist aber nicht praktikabel. Wie kann man so eine Meldung so verschicken das diese so aussieht ( Scann-Zeit Drucker-Convere; Scann-Zeit Drucker Drucker1_Drucker2 ... usw.) Eventuell auch als Tabelle:

    Scann-Zeit Drucker-Convere
    Scann-Zeit Drucker-1_Drucker-2
    .
    .
    .
    .
    .

    Bitte um ein paar Tips zum Lösungsansatz!

    F mickymM 3 Antworten Letzte Antwort
    0
    • H helios03

      Hallo!

      Folgendes Problem, ich bekomme nach einer Abfrage aus der Datenbank (DB-Maria) einen String geliefert der wie folgt aussieht ( [{"Scann-Zeit":"2021-01-07 07:18:15.7038","Ort":"Drucker-Convere"},{"Scann-Zeit":"2021-01-07 07:18:51.2020","Ort": ..................... ,"Ort":"Umsetzer"}] ).
      Diese Meldung wird dann über E-Mail verschickt. Dieser Bandwurm ist aber nicht praktikabel. Wie kann man so eine Meldung so verschicken das diese so aussieht ( Scann-Zeit Drucker-Convere; Scann-Zeit Drucker Drucker1_Drucker2 ... usw.) Eventuell auch als Tabelle:

      Scann-Zeit Drucker-Convere
      Scann-Zeit Drucker-1_Drucker-2
      .
      .
      .
      .
      .

      Bitte um ein paar Tips zum Lösungsansatz!

      F Offline
      F Offline
      frankyboy73
      schrieb am zuletzt editiert von
      #2

      @helios03 Hi, vielleicht hilft dir das hier weiter.
      https://forum.iobroker.net/topic/40242/msg-payload-werte-auslesen
      3.Post umwandeln von Json String in Java Objekt
      und danach als Nachricht so zusammensetzen wie du sie brauchst.

      Schöne Grüße Frank

      1 Antwort Letzte Antwort
      0
      • H helios03

        Hallo!

        Folgendes Problem, ich bekomme nach einer Abfrage aus der Datenbank (DB-Maria) einen String geliefert der wie folgt aussieht ( [{"Scann-Zeit":"2021-01-07 07:18:15.7038","Ort":"Drucker-Convere"},{"Scann-Zeit":"2021-01-07 07:18:51.2020","Ort": ..................... ,"Ort":"Umsetzer"}] ).
        Diese Meldung wird dann über E-Mail verschickt. Dieser Bandwurm ist aber nicht praktikabel. Wie kann man so eine Meldung so verschicken das diese so aussieht ( Scann-Zeit Drucker-Convere; Scann-Zeit Drucker Drucker1_Drucker2 ... usw.) Eventuell auch als Tabelle:

        Scann-Zeit Drucker-Convere
        Scann-Zeit Drucker-1_Drucker-2
        .
        .
        .
        .
        .

        Bitte um ein paar Tips zum Lösungsansatz!

        mickymM Online
        mickymM Online
        mickym
        Most Active
        schrieb am zuletzt editiert von mickym
        #3

        @helios03 said in Ausgabe von einer Datenbank für E-Mail formatieren:

        [{"Scann-Zeit":"2021-01-07 07:18:15.7038","Ort":"Drucker-Convere"},{"Scann-Zeit":"2021-01-07 07:18:51.2020","Ort": ..................... ,"Ort":"Umsetzer"}]

        In Anlehnung an das was @frankyboy73 geschrieben hat - hier mal ein paar Möglichkeiten.

        Deinen String habe ich mal bis auf den unspezifischen Ort in eine Inject Node gepackt da kannst dann selbst experimentieren:

        [	   {	       "Scann-Zeit":"2021-01-07 07:18:15.7038",	       "Ort":"Drucker-Convere"	   },	   {	       "Scann-Zeit":"2021-01-07 07:18:51.2020",	       "Ort":"Umsetzer"	   }	]
        
        1. Mit dem JSON-Parser Node - machst daraus ein Array - das kannst dann über Javascript ggf. schon in eine Tabelle umsetzen
        2. Über eine Split Node kannst Du das Array in einzelne Nachrichten aufteilen
        3. Bei Bedarf kannst Du dann die Nachricht auf einzelne Werte mit dem Druckernamen als Topic verwenden, wenn Du willst.

        Ich habe lediglich bei der HTML-Dastellung mit dem "-" zur Tabellengenerierung ein Problem - deshalb hab ich in dem JAVA Objekt über eine Change-Node Scann-Zeit in Zeit gewandelt. So sieht man gleich, wie man die Change-Node auch zur Stringmanipulation verwendet. ;)

        Zur Ausgabe als Tabelle habe ich dann das Array genommen und eine Template Node verwendet. Wie man das vom Array über den HTML Code in VIS überträgt weiss ich nicht - wobei das Auslesen von Arrays in HTML wahrscheinlich genauso funktioniert und Du das Array nur in einem Datenpunkt zwischenspeichern musst.

        Hier mal der Flow:

        [
            {
                "id": "206e939b.a2f55c",
                "type": "inject",
                "z": "dce8fa20.2e93c8",
                "name": "",
                "props": [
                    {
                        "p": "payload"
                    },
                    {
                        "p": "topic",
                        "vt": "str"
                    }
                ],
                "repeat": "",
                "crontab": "",
                "once": false,
                "onceDelay": 0.1,
                "topic": "",
                "payload": "[\t   {\t       \"Scann-Zeit\":\"2021-01-07 07:18:15.7038\",\t       \"Ort\":\"Drucker-Convere\"\t   },\t   {\t       \"Scann-Zeit\":\"2021-01-07 07:18:51.2020\",\t       \"Ort\":\"Umsetzer\"\t   }\t]",
                "payloadType": "str",
                "x": 1240,
                "y": 540,
                "wires": [
                    [
                        "c5a9d3e1.3ab8d"
                    ]
                ]
            },
            {
                "id": "d401859a.680918",
                "type": "debug",
                "z": "dce8fa20.2e93c8",
                "name": "Einzel-Objekt",
                "active": true,
                "tosidebar": true,
                "console": false,
                "tostatus": false,
                "complete": "payload",
                "targetType": "msg",
                "statusVal": "",
                "statusType": "auto",
                "x": 1970,
                "y": 540,
                "wires": []
            },
            {
                "id": "2d09eb38.da9974",
                "type": "json",
                "z": "dce8fa20.2e93c8",
                "name": "",
                "property": "payload",
                "action": "",
                "pretty": false,
                "x": 1590,
                "y": 540,
                "wires": [
                    [
                        "28510500.b392cc",
                        "c40cab5d.785dc8"
                    ]
                ]
            },
            {
                "id": "28510500.b392cc",
                "type": "split",
                "z": "dce8fa20.2e93c8",
                "name": "",
                "splt": "\\n",
                "spltType": "str",
                "arraySplt": 1,
                "arraySpltType": "len",
                "stream": false,
                "addname": "",
                "x": 1760,
                "y": 540,
                "wires": [
                    [
                        "d401859a.680918",
                        "887a951c.d97dc8"
                    ]
                ]
            },
            {
                "id": "887a951c.d97dc8",
                "type": "change",
                "z": "dce8fa20.2e93c8",
                "name": "",
                "rules": [
                    {
                        "t": "set",
                        "p": "topic",
                        "pt": "msg",
                        "to": "payload.Ort",
                        "tot": "msg"
                    },
                    {
                        "t": "set",
                        "p": "payload",
                        "pt": "msg",
                        "to": "payload.Zeit",
                        "tot": "msg"
                    }
                ],
                "action": "",
                "property": "",
                "from": "",
                "to": "",
                "reg": false,
                "x": 1950,
                "y": 600,
                "wires": [
                    [
                        "f890995a.3a2e58"
                    ]
                ]
            },
            {
                "id": "f890995a.3a2e58",
                "type": "debug",
                "z": "dce8fa20.2e93c8",
                "name": "Einzelnachrichten",
                "active": true,
                "tosidebar": true,
                "console": false,
                "tostatus": false,
                "complete": "payload",
                "targetType": "msg",
                "statusVal": "",
                "statusType": "auto",
                "x": 2160,
                "y": 600,
                "wires": []
            },
            {
                "id": "c40cab5d.785dc8",
                "type": "ui_template",
                "z": "dce8fa20.2e93c8",
                "group": "921e7aba.1e8358",
                "name": "HTML Tabelle",
                "order": 0,
                "width": "6",
                "height": "9",
                "format": "<style>\n.main\n{\n    height:100%;\n    width:100%;\n    /* background:lightblue; */\n        \n}\n\n\n#t01 th {\n     \n  padding: 5px;\n  font-size:120%;\n  color: var(--nr-dashboard-groupTextColor);\n   /* color:#0eb8c0;  */\n}\n#t01 td {\n     \n  padding: 5px;\n\n}\n    \n</style>\n\n<div class=\"main\">\n\n    <table id=\"t01\">\n\n   \n    <tr><th width=150>Scann-Zeit</th><th  width=150>Drucker</th></tr>\n     <tr ng-repeat=\"(key, y) in msg.payload\">\n    <td  align=left>{{y.Zeit}}</td><td align=right>{{y.Ort}}</td>\n    </tr>\n    \n    </table>\n\n\n</div>",
                "storeOutMessages": false,
                "fwdInMessages": false,
                "resendOnRefresh": false,
                "templateScope": "local",
                "x": 1950,
                "y": 700,
                "wires": [
                    []
                ]
            },
            {
                "id": "c5a9d3e1.3ab8d",
                "type": "change",
                "z": "dce8fa20.2e93c8",
                "name": "Scann-Zeit ==> Zeit",
                "rules": [
                    {
                        "t": "change",
                        "p": "payload",
                        "pt": "msg",
                        "from": "Scann-Zeit",
                        "fromt": "str",
                        "to": "Zeit",
                        "tot": "str"
                    }
                ],
                "action": "",
                "property": "",
                "from": "",
                "to": "",
                "reg": false,
                "x": 1430,
                "y": 540,
                "wires": [
                    [
                        "2d09eb38.da9974"
                    ]
                ]
            },
            {
                "id": "921e7aba.1e8358",
                "type": "ui_group",
                "name": "Tabelle Test",
                "tab": "dc25fe35.866f",
                "order": 2,
                "disp": true,
                "width": "6",
                "collapse": false
            },
            {
                "id": "dc25fe35.866f",
                "type": "ui_tab",
                "name": "Test",
                "icon": "dashboard",
                "order": 13,
                "disabled": false,
                "hidden": false
            }
        ]
        

        Hier die grafische Darstellung:

        screen.png

        Und hier die Darstellung als HTML Tabelle - hier im NodeRed Dashboard:

        screen.png

        Und zum Schluss noch der Code in der Template Node um zu sehen, wie man aus einem Java-Array so eine Tabelle generiert:

        <div class="main">
        
            <table id="t01">
        
           
            <tr><th width=150>Scann-Zeit</th><th  width=150>Drucker</th></tr>
             <tr ng-repeat="(key, y) in msg.payload">
            <td  align=left>{{y.Zeit}}</td><td align=right>{{y.Ort}}</td>
            </tr>
            
            </table>
        
        
        </div>
        

        Mit dem Bindestrich im Feldnamen Scann-Zeit also "y.Scann-Zeit" bin ich nicht klargekommen - das muss ggf. ein HTML Spezialist sagen, wie man das Sonderzeichen im Feldnamen maskiert.

        Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

        1 Antwort Letzte Antwort
        0
        • H helios03

          Hallo!

          Folgendes Problem, ich bekomme nach einer Abfrage aus der Datenbank (DB-Maria) einen String geliefert der wie folgt aussieht ( [{"Scann-Zeit":"2021-01-07 07:18:15.7038","Ort":"Drucker-Convere"},{"Scann-Zeit":"2021-01-07 07:18:51.2020","Ort": ..................... ,"Ort":"Umsetzer"}] ).
          Diese Meldung wird dann über E-Mail verschickt. Dieser Bandwurm ist aber nicht praktikabel. Wie kann man so eine Meldung so verschicken das diese so aussieht ( Scann-Zeit Drucker-Convere; Scann-Zeit Drucker Drucker1_Drucker2 ... usw.) Eventuell auch als Tabelle:

          Scann-Zeit Drucker-Convere
          Scann-Zeit Drucker-1_Drucker-2
          .
          .
          .
          .
          .

          Bitte um ein paar Tips zum Lösungsansatz!

          mickymM Online
          mickymM Online
          mickym
          Most Active
          schrieb am zuletzt editiert von mickym
          #4

          @helios03
          Ich habe Deine Anforderung ja nochmal gelesen und Du wolltest das ja als E-Mail haben.
          Ich hab mal bisschen rumgespielt - und bin leider guter bzw. gar kein HTML Programmieren, aber ich hab was hinbekommen. ;)

          Leider hat es - analog zum UI Dashboard die Template Node zu nehmen NICHT funktioniert:

          screen.png

          Deshalb hab ich eine function Node gemacht - die den HTML Code erzeugt - aber das können HTML Programmierer sicher viel besser. Die übergibt dann den kompletten HTML Code an eine Mail-Node.

          Der Code in der function Node schaut wie folgt aus:

          var start= ' <!DOCTYPE html> \
          <html xmlns="http://www.w3.org/1999/xhtml"> \
           <head> \
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> \
            <meta name="viewport" content="width=device-width, initial-scale=1.0"/> \
          </head> \
          <body style="margin: 0; padding: 0;"> \
           <table border="1" cellpadding="0" cellspacing="0" width="100%"> \
              <tr><th width=150>Scann-Zeit</th><th  width=150>Drucker</th></tr>';
              
          var end= ' </table> \
          </body> \
          </html>';
          
          var output="";
          
          for (var w of msg.payload) {
                  var zeile = "<tr>" + "\n";
                  zeile = zeile + "<td>" + w.Zeit + "</td><td>" + w.Ort +"</td>" + "\n";
                  zeile = zeile + "</tr>"+ "\n";
              output=output+zeile;
          
          }
          msg.payload= start + output + end;
          return msg;
          

          screen.png

          oder im Windows 10 Mail

          screen.png

          Den Betreff kannst Du natürlich ändern in dem Du vorher noch eine entsprechende msg.topic setzt.

          Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

          1 Antwort Letzte Antwort
          0
          Antworten
          • In einem neuen Thema antworten
          Anmelden zum Antworten
          • Älteste zuerst
          • Neuste zuerst
          • Meiste Stimmen


          Support us

          ioBroker
          Community Adapters
          Donate

          675

          Online

          32.6k

          Benutzer

          82.1k

          Themen

          1.3m

          Beiträge
          Community
          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
          ioBroker Community 2014-2025
          logo
          • Anmelden

          • Du hast noch kein Konto? Registrieren

          • Anmelden oder registrieren, um zu suchen
          • Erster Beitrag
            Letzter Beitrag
          0
          • Home
          • Aktuell
          • Tags
          • Ungelesen 0
          • Kategorien
          • Unreplied
          • Beliebt
          • GitHub
          • Docu
          • Hilfe