{"id":262,"date":"2025-10-21T22:02:45","date_gmt":"2025-10-21T20:02:45","guid":{"rendered":"https:\/\/www.genexio.net\/blog\/?p=262"},"modified":"2025-10-21T22:10:39","modified_gmt":"2025-10-21T20:10:39","slug":"automating-attendance-reports-from-rfid-time-clock-to-filemaker-node-red-ai-and-email","status":"publish","type":"post","link":"https:\/\/www.genexio.net\/blog\/2025\/10\/21\/automating-attendance-reports-from-rfid-time-clock-to-filemaker-node-red-ai-and-email\/","title":{"rendered":"Automating Attendance Reports: from RFID Time Clock to FileMaker, Node-RED, AI and Email"},"content":{"rendered":"\n<p><strong>This project builds on our in-house RFID time clock<\/strong>: we previously implemented a <strong>Raspberry Pi<\/strong> system that captures time stamps via <strong>RFID modules<\/strong> (badges) and pushes them to our back office. We have now completed the pipeline: starting from <strong>FileMaker<\/strong> data, we generate an <strong>HTML report<\/strong> with updated hours, highlight <em>exceptions<\/em> (late entries, early exits, missing stamps), ask the <strong>AI<\/strong> for a <em>short commentary<\/em>, and send the whole package via <strong>email<\/strong>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">TL;DR<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Attendance collection with <strong>Raspberry Pi + RFID<\/strong>, consolidation in <strong>FileMaker<\/strong>.<\/li>\n\n\n\n<li>Data extraction via <strong>OData<\/strong> from <em>FileMaker Server<\/em>.<\/li>\n\n\n\n<li>(Optional) Trigger a <strong>FileMaker Script<\/strong> from <strong>Node-RED<\/strong>.<\/li>\n\n\n\n<li>Generate <strong>HTML<\/strong> (daily + monthly) and <strong>highlights<\/strong>.<\/li>\n\n\n\n<li>Request an <strong>AI comment<\/strong> via API (ChatGPT) and <strong>email<\/strong> the final report.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">Architecture at a glance<\/h4>\n\n\n\n<pre class=\"wp-block-preformatted\">[Raspberry + RFID] \u2192 [FileMaker] \u2192 (OData) \u2192 [Node-RED] \u2192 [OpenAI API] \u2192 [Email HTML]\n          \u2191                               \u2198 (FileMaker Script on-demand)\n<\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">How it works<\/h4>\n\n\n\n<h4 class=\"wp-block-heading\">1) Data from FileMaker<\/h4>\n\n\n\n<p>Node-RED queries the <em>current month<\/em> hours and <em>today\u2019s stamps<\/em> via OData. We normalize dates\/times, compute per-user minutes and <strong>monthly totals<\/strong>.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">2) FileMaker Script from Node-RED (optional)<\/h4>\n\n\n\n<p>Before generating the report, we can ask FileMaker to run a <strong>script<\/strong> (e.g. consolidation or recalculation) through a simple HTTP call from the flow.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">3) HTML report with tables and highlights<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Hours worked today<\/strong> (user \u2192 HH:MM).<\/li>\n\n\n\n<li><strong>Highlights<\/strong>: morning late entries, exits before noon or between 15:00\u201317:30, missing check-ins (if a roster is provided).<\/li>\n\n\n\n<li><strong>Monthly recap<\/strong> (days \u00d7 users) with <strong>totals<\/strong>.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">4) AI comment (ChatGPT via API)<\/h4>\n\n\n\n<p>The flow sends either a compact <strong>JSON<\/strong> payload (date, hours, highlights, totals) or the report HTML. The AI returns a <strong>short Italian commentary<\/strong> in a neutral\/professional tone, summarizing the day and the monthly trend.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">5) Email delivery<\/h4>\n\n\n\n<p>We merge the report HTML with an <em>\u201cAI Comment\u201d<\/em> block and send it via SMTP (Gmail\/Workspace) with a <strong>dated subject line<\/strong>. A <em>fallback<\/em> guarantees the base report is sent even if the AI is unavailable.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">Why it matters<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Time saver<\/strong>: no manual end-of-day notes.<\/li>\n\n\n\n<li><strong>Clarity<\/strong>: exceptions are highlighted in a non-judgmental way.<\/li>\n\n\n\n<li><strong>Scalable<\/strong>: same pipeline for multiple teams\/sites.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">Security &amp; best practices<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>API keys stored in HTTP node credentials (not in code).<\/li>\n\n\n\n<li>Gmail via <strong>App Passwords<\/strong> and 2FA (or OAuth2).<\/li>\n\n\n\n<li>Certificates: self-signed OK on LAN; plan a valid cert later.<\/li>\n\n\n\n<li>Separate <strong>test branch<\/strong> for AI before wiring the official email.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">Outcome<\/h4>\n\n\n\n<p>Every evening we receive an <strong>HTML email<\/strong> with <em>daily hours<\/em>, <em>highlights<\/em>, a <em>monthly table<\/em>, and a concise <strong>AI comment<\/strong> summarizing the situation.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Next steps<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Selectable comment tone (formal\/friendly\/concise).<\/li>\n\n\n\n<li>Optional CSV\/Excel attachment.<\/li>\n\n\n\n<li>Real-time web dashboard with Node-RED.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">Example output (October 21, 2025)<\/h4>\n\n\n\n<h4 class=\"wp-block-heading\">Hours worked today (21\/10\/2025)<\/h4>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>User<\/th><th>Hours<\/th><\/tr><\/thead><tbody><tr><td>Alex Marino<\/td><td>08:00<\/td><\/tr><tr><td>Brian Reed<\/td><td>08:30<\/td><\/tr><tr><td>Michael Reed<\/td><td>08:30<\/td><\/tr><tr><td>Patrick Fumani<\/td><td>09:00<\/td><\/tr><tr><td>Peter Cole<\/td><td>00:00<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Highlights (today)<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Andrew Reed did not check in for the afternoon.<\/li>\n\n\n\n<li>Maurice Reed checked in at 13:45.<\/li>\n\n\n\n<li>Maurice Reed checked out at 09:13.<\/li>\n\n\n\n<li>Peter Cole did not check in for the morning.<\/li>\n\n\n\n<li>Peter Cole did not check in for the afternoon.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Monthly recap (10\/2025)<\/h4>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Day<\/th><th>Alex Marino<\/th><th>Brian Reed<\/th><th>Michael Reed<\/th><th>Patrick Fumani<\/th><th>Peter Cole<\/th><\/tr><\/thead><tbody><tr><td>01<\/td><td>08:00<\/td><td>08:30<\/td><td>08:30<\/td><td>09:00<\/td><td>09:00<\/td><\/tr><tr><td>02<\/td><td>08:00<\/td><td>08:30<\/td><td>08:30<\/td><td>09:00<\/td><td>09:00<\/td><\/tr><tr><td>03<\/td><td>08:00<\/td><td>08:30<\/td><td>08:30<\/td><td>09:00<\/td><td>09:00<\/td><\/tr><tr><td>04<\/td><td><\/td><td><\/td><td><\/td><td><\/td><td><\/td><\/tr><tr><td>05<\/td><td><\/td><td><\/td><td><\/td><td><\/td><td><\/td><\/tr><tr><td>06<\/td><td>08:00<\/td><td>08:30<\/td><td>08:30<\/td><td>09:00<\/td><td>09:00<\/td><\/tr><tr><td>07<\/td><td>08:00<\/td><td>08:30<\/td><td>08:30<\/td><td>09:00<\/td><td>05:00<\/td><\/tr><tr><td>08<\/td><td>08:00<\/td><td>08:30<\/td><td>08:30<\/td><td>09:00<\/td><td>09:00<\/td><\/tr><tr><td>09<\/td><td>08:00<\/td><td>08:30<\/td><td>08:30<\/td><td>09:00<\/td><td>09:00<\/td><\/tr><tr><td>10<\/td><td>08:00<\/td><td>08:30<\/td><td>08:30<\/td><td>09:00<\/td><td>09:00<\/td><\/tr><tr><td>11<\/td><td><\/td><td><\/td><td><\/td><td><\/td><td><\/td><\/tr><tr><td>12<\/td><td><\/td><td><\/td><td><\/td><td><\/td><td><\/td><\/tr><tr><td>13<\/td><td>08:00<\/td><td>08:30<\/td><td>08:30<\/td><td>09:00<\/td><td>09:00<\/td><\/tr><tr><td>14<\/td><td>08:00<\/td><td>08:30<\/td><td>08:30<\/td><td>09:30<\/td><td>09:00<\/td><\/tr><tr><td>15<\/td><td>08:00<\/td><td>08:30<\/td><td>08:30<\/td><td>08:30<\/td><td>09:00<\/td><\/tr><tr><td>16<\/td><td>08:00<\/td><td>08:30<\/td><td>08:30<\/td><td>09:00<\/td><td>09:00<\/td><\/tr><tr><td>17<\/td><td>08:00<\/td><td>06:30<\/td><td>08:30<\/td><td>09:00<\/td><td>09:00<\/td><\/tr><tr><td>18<\/td><td><\/td><td><\/td><td><\/td><td><\/td><td><\/td><\/tr><tr><td>19<\/td><td><\/td><td><\/td><td><\/td><td><\/td><td><\/td><\/tr><tr><td>20<\/td><td>08:00<\/td><td>08:30<\/td><td>08:30<\/td><td>09:00<\/td><td>09:00<\/td><\/tr><tr><td>21<\/td><td>08:00<\/td><td>08:30<\/td><td>08:30<\/td><td>09:00<\/td><td><\/td><\/tr><tr><td>22<\/td><td><\/td><td><\/td><td><\/td><td><\/td><td><\/td><\/tr><tr><td>23<\/td><td><\/td><td><\/td><td><\/td><td><\/td><td><\/td><\/tr><tr><td>24<\/td><td><\/td><td><\/td><td><\/td><td><\/td><td><\/td><\/tr><tr><td>25<\/td><td><\/td><td><\/td><td><\/td><td><\/td><td><\/td><\/tr><tr><td>26<\/td><td><\/td><td><\/td><td><\/td><td><\/td><td><\/td><\/tr><tr><td>27<\/td><td><\/td><td><\/td><td><\/td><td><\/td><td><\/td><\/tr><tr><td>28<\/td><td><\/td><td><\/td><td><\/td><td><\/td><td><\/td><\/tr><tr><td>29<\/td><td><\/td><td><\/td><td><\/td><td><\/td><td><\/td><\/tr><tr><td>30<\/td><td><\/td><td><\/td><td><\/td><td><\/td><td><\/td><\/tr><tr><td>31<\/td><td><\/td><td><\/td><td><\/td><td><\/td><td><\/td><\/tr><\/tbody><tfoot><tr><td>Monthly total<\/td><td>120:00<\/td><td>125:30<\/td><td>127:30<\/td><td>135:00<\/td><td>122:00<\/td><\/tr><\/tfoot><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">AI comment<\/h4>\n\n\n\n<p>The report for October 21, 2025 shows hours recorded by each team member\u2014Alex Marino at 8:00, Brian and Michael Reed at 8:30, and Patrick Fumani at 9:00. A few exceptions stand out: Andrew Reed did not check in for the afternoon, while Maurice Reed registered a late check-in at 13:45 and an early check-out at 09:13. Peter Cole missed both the morning and afternoon check-ins. These items should be reviewed to ensure accurate attendance tracking.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h4 class=\"wp-block-heading\">Why this matters<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Time saver:<\/strong> no manual notes at the end of the day.<\/li>\n\n\n\n<li><strong>Clarity:<\/strong> highlights are surfaced in a neutral, factual way.<\/li>\n\n\n\n<li><strong>Scalable:<\/strong> same pipeline for multiple teams\/sites.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">What\u2019s under the hood<\/h4>\n\n\n\n<p>FileMaker (OData) \u2192 Node-RED (HTML generation + AI prompt) \u2192 OpenAI API \u2192 SMTP (Gmail\/Workspace). We keep API keys in node credentials, use App Passwords for Gmail (2FA), and validate the AI branch in test before wiring the official email.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This project builds on our in-house RFID time clock: we previously implemented a Raspberry Pi system that captures time stamps via RFID modules (badges) and [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,15,11],"tags":[],"class_list":["post-262","post","type-post","status-publish","format-standard","hentry","category-filemaker","category-node-red","category-raspberry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Automating Attendance Reports: from RFID Time Clock to FileMaker, Node-RED, AI and Email - My blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.genexio.net\/blog\/2025\/10\/21\/automating-attendance-reports-from-rfid-time-clock-to-filemaker-node-red-ai-and-email\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Automating Attendance Reports: from RFID Time Clock to FileMaker, Node-RED, AI and Email - My blog\" \/>\n<meta property=\"og:description\" content=\"This project builds on our in-house RFID time clock: we previously implemented a Raspberry Pi system that captures time stamps via RFID modules (badges) and [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.genexio.net\/blog\/2025\/10\/21\/automating-attendance-reports-from-rfid-time-clock-to-filemaker-node-red-ai-and-email\/\" \/>\n<meta property=\"og:site_name\" content=\"My blog\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-21T20:02:45+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-21T20:10:39+00:00\" \/>\n<meta name=\"author\" content=\"genexio\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"genexio\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.genexio.net\/blog\/2025\/10\/21\/automating-attendance-reports-from-rfid-time-clock-to-filemaker-node-red-ai-and-email\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.genexio.net\/blog\/2025\/10\/21\/automating-attendance-reports-from-rfid-time-clock-to-filemaker-node-red-ai-and-email\/\"},\"author\":{\"name\":\"genexio\",\"@id\":\"https:\/\/www.genexio.net\/blog\/#\/schema\/person\/e293425f2302a3a32a049864bf8cd02a\"},\"headline\":\"Automating Attendance Reports: from RFID Time Clock to FileMaker, Node-RED, AI and Email\",\"datePublished\":\"2025-10-21T20:02:45+00:00\",\"dateModified\":\"2025-10-21T20:10:39+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.genexio.net\/blog\/2025\/10\/21\/automating-attendance-reports-from-rfid-time-clock-to-filemaker-node-red-ai-and-email\/\"},\"wordCount\":622,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\/\/www.genexio.net\/blog\/#\/schema\/person\/e293425f2302a3a32a049864bf8cd02a\"},\"articleSection\":[\"filemaker\",\"node-red\",\"raspberry\"],\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.genexio.net\/blog\/2025\/10\/21\/automating-attendance-reports-from-rfid-time-clock-to-filemaker-node-red-ai-and-email\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.genexio.net\/blog\/2025\/10\/21\/automating-attendance-reports-from-rfid-time-clock-to-filemaker-node-red-ai-and-email\/\",\"url\":\"https:\/\/www.genexio.net\/blog\/2025\/10\/21\/automating-attendance-reports-from-rfid-time-clock-to-filemaker-node-red-ai-and-email\/\",\"name\":\"Automating Attendance Reports: from RFID Time Clock to FileMaker, Node-RED, AI and Email - My blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.genexio.net\/blog\/#website\"},\"datePublished\":\"2025-10-21T20:02:45+00:00\",\"dateModified\":\"2025-10-21T20:10:39+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.genexio.net\/blog\/2025\/10\/21\/automating-attendance-reports-from-rfid-time-clock-to-filemaker-node-red-ai-and-email\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.genexio.net\/blog\/2025\/10\/21\/automating-attendance-reports-from-rfid-time-clock-to-filemaker-node-red-ai-and-email\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.genexio.net\/blog\/2025\/10\/21\/automating-attendance-reports-from-rfid-time-clock-to-filemaker-node-red-ai-and-email\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.genexio.net\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Automating Attendance Reports: from RFID Time Clock to FileMaker, Node-RED, AI and Email\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.genexio.net\/blog\/#website\",\"url\":\"https:\/\/www.genexio.net\/blog\/\",\"name\":\"My blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.genexio.net\/blog\/#\/schema\/person\/e293425f2302a3a32a049864bf8cd02a\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.genexio.net\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/www.genexio.net\/blog\/#\/schema\/person\/e293425f2302a3a32a049864bf8cd02a\",\"name\":\"genexio\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/7eda1948b0cb52048b0ce1e60c0e9be821f2ad85632d822bd60187a9793428a6?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/7eda1948b0cb52048b0ce1e60c0e9be821f2ad85632d822bd60187a9793428a6?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/7eda1948b0cb52048b0ce1e60c0e9be821f2ad85632d822bd60187a9793428a6?s=96&d=mm&r=g\",\"caption\":\"genexio\"},\"logo\":{\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/7eda1948b0cb52048b0ce1e60c0e9be821f2ad85632d822bd60187a9793428a6?s=96&d=mm&r=g\"},\"sameAs\":[\"http:\/\/www.genexio.net\/blog\"],\"url\":\"https:\/\/www.genexio.net\/blog\/author\/genexio\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Automating Attendance Reports: from RFID Time Clock to FileMaker, Node-RED, AI and Email - My blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.genexio.net\/blog\/2025\/10\/21\/automating-attendance-reports-from-rfid-time-clock-to-filemaker-node-red-ai-and-email\/","og_locale":"en_GB","og_type":"article","og_title":"Automating Attendance Reports: from RFID Time Clock to FileMaker, Node-RED, AI and Email - My blog","og_description":"This project builds on our in-house RFID time clock: we previously implemented a Raspberry Pi system that captures time stamps via RFID modules (badges) and [&hellip;]","og_url":"https:\/\/www.genexio.net\/blog\/2025\/10\/21\/automating-attendance-reports-from-rfid-time-clock-to-filemaker-node-red-ai-and-email\/","og_site_name":"My blog","article_published_time":"2025-10-21T20:02:45+00:00","article_modified_time":"2025-10-21T20:10:39+00:00","author":"genexio","twitter_card":"summary_large_image","twitter_misc":{"Written by":"genexio","Estimated reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.genexio.net\/blog\/2025\/10\/21\/automating-attendance-reports-from-rfid-time-clock-to-filemaker-node-red-ai-and-email\/#article","isPartOf":{"@id":"https:\/\/www.genexio.net\/blog\/2025\/10\/21\/automating-attendance-reports-from-rfid-time-clock-to-filemaker-node-red-ai-and-email\/"},"author":{"name":"genexio","@id":"https:\/\/www.genexio.net\/blog\/#\/schema\/person\/e293425f2302a3a32a049864bf8cd02a"},"headline":"Automating Attendance Reports: from RFID Time Clock to FileMaker, Node-RED, AI and Email","datePublished":"2025-10-21T20:02:45+00:00","dateModified":"2025-10-21T20:10:39+00:00","mainEntityOfPage":{"@id":"https:\/\/www.genexio.net\/blog\/2025\/10\/21\/automating-attendance-reports-from-rfid-time-clock-to-filemaker-node-red-ai-and-email\/"},"wordCount":622,"commentCount":1,"publisher":{"@id":"https:\/\/www.genexio.net\/blog\/#\/schema\/person\/e293425f2302a3a32a049864bf8cd02a"},"articleSection":["filemaker","node-red","raspberry"],"inLanguage":"en-GB","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.genexio.net\/blog\/2025\/10\/21\/automating-attendance-reports-from-rfid-time-clock-to-filemaker-node-red-ai-and-email\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.genexio.net\/blog\/2025\/10\/21\/automating-attendance-reports-from-rfid-time-clock-to-filemaker-node-red-ai-and-email\/","url":"https:\/\/www.genexio.net\/blog\/2025\/10\/21\/automating-attendance-reports-from-rfid-time-clock-to-filemaker-node-red-ai-and-email\/","name":"Automating Attendance Reports: from RFID Time Clock to FileMaker, Node-RED, AI and Email - My blog","isPartOf":{"@id":"https:\/\/www.genexio.net\/blog\/#website"},"datePublished":"2025-10-21T20:02:45+00:00","dateModified":"2025-10-21T20:10:39+00:00","breadcrumb":{"@id":"https:\/\/www.genexio.net\/blog\/2025\/10\/21\/automating-attendance-reports-from-rfid-time-clock-to-filemaker-node-red-ai-and-email\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.genexio.net\/blog\/2025\/10\/21\/automating-attendance-reports-from-rfid-time-clock-to-filemaker-node-red-ai-and-email\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.genexio.net\/blog\/2025\/10\/21\/automating-attendance-reports-from-rfid-time-clock-to-filemaker-node-red-ai-and-email\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.genexio.net\/blog\/"},{"@type":"ListItem","position":2,"name":"Automating Attendance Reports: from RFID Time Clock to FileMaker, Node-RED, AI and Email"}]},{"@type":"WebSite","@id":"https:\/\/www.genexio.net\/blog\/#website","url":"https:\/\/www.genexio.net\/blog\/","name":"My blog","description":"","publisher":{"@id":"https:\/\/www.genexio.net\/blog\/#\/schema\/person\/e293425f2302a3a32a049864bf8cd02a"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.genexio.net\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":["Person","Organization"],"@id":"https:\/\/www.genexio.net\/blog\/#\/schema\/person\/e293425f2302a3a32a049864bf8cd02a","name":"genexio","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/secure.gravatar.com\/avatar\/7eda1948b0cb52048b0ce1e60c0e9be821f2ad85632d822bd60187a9793428a6?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/7eda1948b0cb52048b0ce1e60c0e9be821f2ad85632d822bd60187a9793428a6?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/7eda1948b0cb52048b0ce1e60c0e9be821f2ad85632d822bd60187a9793428a6?s=96&d=mm&r=g","caption":"genexio"},"logo":{"@id":"https:\/\/secure.gravatar.com\/avatar\/7eda1948b0cb52048b0ce1e60c0e9be821f2ad85632d822bd60187a9793428a6?s=96&d=mm&r=g"},"sameAs":["http:\/\/www.genexio.net\/blog"],"url":"https:\/\/www.genexio.net\/blog\/author\/genexio\/"}]}},"_links":{"self":[{"href":"https:\/\/www.genexio.net\/blog\/wp-json\/wp\/v2\/posts\/262","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.genexio.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.genexio.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.genexio.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.genexio.net\/blog\/wp-json\/wp\/v2\/comments?post=262"}],"version-history":[{"count":3,"href":"https:\/\/www.genexio.net\/blog\/wp-json\/wp\/v2\/posts\/262\/revisions"}],"predecessor-version":[{"id":265,"href":"https:\/\/www.genexio.net\/blog\/wp-json\/wp\/v2\/posts\/262\/revisions\/265"}],"wp:attachment":[{"href":"https:\/\/www.genexio.net\/blog\/wp-json\/wp\/v2\/media?parent=262"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.genexio.net\/blog\/wp-json\/wp\/v2\/categories?post=262"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.genexio.net\/blog\/wp-json\/wp\/v2\/tags?post=262"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}