{"id":231,"date":"2025-08-27T00:55:12","date_gmt":"2025-08-26T22:55:12","guid":{"rendered":"https:\/\/www.genexio.net\/blog\/?p=231"},"modified":"2025-08-27T10:45:03","modified_gmt":"2025-08-27T08:45:03","slug":"real-time-monitoring-of-tp-link-tapo-devices-with-node-red-and-filemaker-odata","status":"publish","type":"post","link":"https:\/\/www.genexio.net\/blog\/2025\/08\/27\/real-time-monitoring-of-tp-link-tapo-devices-with-node-red-and-filemaker-odata\/","title":{"rendered":"Real-time Monitoring of TP-Link Tapo Devices with Node-RED and FileMaker (OData)"},"content":{"rendered":"\n<p><\/p>\n\n\n\n<p>This post documents how we built a reliable pipeline to <strong>log the real ON\/OFF state<\/strong> of TP-Link Tapo lights into a FileMaker table using <strong>Node-RED<\/strong> and <strong>FileMaker Server OData<\/strong>. The solution polls device status every few seconds, deduplicates unchanged values, and writes changes to FileMaker with a locked-down account.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Why<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Single source of truth for device states (not just commands).<\/li>\n\n\n\n<li>Works even if state changes come from the Tapo app, voice assistants, or automations.<\/li>\n\n\n\n<li>Scales to dozens of devices with minimal overhead.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Prerequisites<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>FileMaker Server with <strong>OData<\/strong> enabled.<\/li>\n\n\n\n<li>Node-RED (we run it in Docker at home, connected to the office via VPN).<\/li>\n\n\n\n<li>TP-Link Tapo device (example: <strong>L520<\/strong>) reachable on the LAN.<\/li>\n\n\n\n<li>Node-RED palette: <code>node-red-contrib-tapo-new-api<\/code> (node name: <em>actions<\/em>).<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">FileMaker: table &amp; security<\/h4>\n\n\n\n<p>Create file <code>log_devices_home<\/code> and table <code>log<\/code> with:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Field<\/th><th>Type<\/th><th>Notes<\/th><\/tr><\/thead><tbody><tr><td>id<\/td><td>Number<\/td><td>Auto-increment (primary key)<\/td><\/tr><tr><td>device_id<\/td><td>Text<\/td><td>e.g. <code>tapo_LucePortaIngresso<\/code><\/td><\/tr><tr><td>state<\/td><td>Text<\/td><td><code>on<\/code> | <code>off<\/code> | <code>offline<\/code><\/td><\/tr><tr><td>ts_locat<\/td><td>Timestamp<\/td><td>Auto-enter creation timestamp (local time)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Security best practice: create an account <code>log_writer<\/code> with a privilege set that:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Enables extended privilege <strong><code>fmodata<\/code><\/strong> (OData).<\/li>\n\n\n\n<li>Allows <strong>Create<\/strong> on table <code>log<\/code> only (no read\/update\/delete).<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">OData quick test (cURL)<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>AUTH=$(printf 'log_writer:YOUR_PASSWORD' | base64)\n\ncurl -i -X POST \"https:\/\/192.168.1.27\/fmi\/odata\/v4\/log_devices_home\/log\" \\\n  -H \"Authorization: Basic $AUTH\" \\\n  -H \"Content-Type: application\/json\" \\\n  -d '{\"device_id\":\"test_node\",\"state\":\"on\"}' \\\n  -k\n<\/code><\/pre>\n\n\n\n<p><em>201 Created<\/em> confirms the pipeline from your machine to FileMaker OData works. The <code>-k<\/code> flag is only for self-signed certificates (testing).<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Node-RED flow: polling \u2192 normalize \u2192 deduplicate \u2192 OData<\/h4>\n\n\n\n<p>The flow structure:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">[Inject every 10s] \u2192 [Tapo actions STATUS] \u2192 [Extract ON\/OFF] \u2192 [RBE] \u2192 [Add headers Basic] \u2192 [HTTP request \u2192 FileMaker OData]<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Function \u2014 extract ON\/OFF and build minimal payload<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>let p = msg.payload;\nconst info = (p &amp;&amp; p.tapoDeviceInfo) ? p.tapoDeviceInfo : p;\n\nlet s = \"unknown\";\nif (typeof info === \"boolean\") s = info ? \"on\" : \"off\";\nelse if (typeof info === \"string\") {\n  const t = info.toLowerCase().trim();\n  if (t === \"on\" || t === \"off\") s = t;\n} else if (info &amp;&amp; typeof info === \"object\") {\n  if (info.device_on !== undefined) s = info.device_on ? \"on\" : \"off\";\n  else if (info.deviceOn !== undefined) s = info.deviceOn ? \"on\" : \"off\";\n  else if (info.light_on !== undefined) s = info.light_on ? \"on\" : \"off\";\n  else if (info.on !== undefined) s = info.on ? \"on\" : \"off\";\n  else if (info.power !== undefined) s = String(info.power).toLowerCase();\n  else if (info.state !== undefined) s = String(info.state).toLowerCase();\n  else if (info.data &amp;&amp; info.data.on !== undefined) s = info.data.on ? \"on\" : \"off\";\n}\nif (s !== \"on\" &amp;&amp; s !== \"off\") { return null; }\n\nmsg.payload = {\n  device_id: \"tapo_LucePortaIngresso\",\n  state: s\n};\nreturn msg;\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">RBE \u2014 pass only when state changes<\/h4>\n\n\n\n<p>Add an <strong>RBE<\/strong> node with property <code>payload.state<\/code>. This avoids duplicate inserts when the state is unchanged.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Function \u2014 OData Basic Auth headers<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>const user = \"log_writer\";           \nconst pass = \"YOUR_PASSWORD\";\nconst b64  = Buffer.from(user + \":\" + pass).toString(\"base64\");\n\nmsg.headers = {\n  \"Authorization\": \"Basic \" + b64,\n  \"Content-Type\": \"application\/json\"\n};\nreturn msg;\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">HTTP request \u2014 POST to FileMaker OData<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Method: POST<\/li>\n\n\n\n<li>URL: <code>https:\/\/192.168.1.27\/fmi\/odata\/v4\/log_devices_home\/log<\/code><\/li>\n\n\n\n<li>Return: a parsed JSON object<\/li>\n\n\n\n<li>Authentication: none (header already set)<\/li>\n\n\n\n<li>TLS: if using self-signed certs, create a TLS config with \u201cVerify = OFF, Self-signed = ON\u201d.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Offline detection (optional)<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>msg.payload = { device_id: \"tapo_LucePortaIngresso\", state: \"offline\" };\nreturn msg;\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Result<\/h4>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>id<\/th><th>device_id<\/th><th>state<\/th><th>ts_locat<\/th><\/tr><\/thead><tbody><tr><td>1<\/td><td>tapo_LucePortaIngresso<\/td><td>on<\/td><td>2025-08-26 23:15:01<\/td><\/tr><tr><td>2<\/td><td>tapo_LucePortaIngresso<\/td><td>off<\/td><td>2025-08-26 23:45:18<\/td><\/tr><tr><td>3<\/td><td>tapo_LucePortaIngresso<\/td><td>offline<\/td><td>2025-08-27 00:05:12<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Hardening &amp; production notes<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use a real TLS certificate on FileMaker Server.<\/li>\n\n\n\n<li>Keep <code>log_writer<\/code> restricted to <strong>Create-only<\/strong> on table <code>log<\/code>.<\/li>\n\n\n\n<li>Adjust polling interval for scalability (15\u201330s with many devices).<\/li>\n\n\n\n<li>Consider a <strong>Subflow<\/strong> to reuse configuration for multiple devices.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Appendix \u2014 OData readback (debug)<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>AUTH=$(printf 'admin:YOUR_ADMIN_PASSWORD' | base64)\n\ncurl -s \"https:\/\/192.168.1.27\/fmi\/odata\/v4\/log_devices_home\/log?\\$orderby=IndicatoreDataOraCreazione%20desc&amp;\\$top=5\" \\\n  -H \"Authorization: Basic $AUTH\" \\\n  -H \"Accept: application\/json\" \\\n  -k | jq .\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Reports: daily, weekly, and fully customized<\/h4>\n\n\n\n<p>Once the log table fills with events, FileMaker becomes a powerful reporting layer across heterogeneous devices (Tapo, Sonoff, Shelly). Typical out-of-the-box outputs include:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Daily reports<\/strong> per device: number of ON\u2192OFF transitions, total ON time, first\/last seen.<\/li>\n\n\n\n<li><strong>Weekly summaries<\/strong>: per-room or per-device-type rollups (e.g., all Tapo lights vs. Shelly relays).<\/li>\n\n\n\n<li><strong>Custom dashboards<\/strong> in FileMaker with charts and statistics (e.g., % uptime, average switch count per day).<\/li>\n\n\n\n<li><strong>Automations<\/strong>: send <em>email<\/em> reports or trigger <em>notifications<\/em> when a device remains ON for too long or goes OFFLINE.<\/li>\n<\/ul>\n\n\n\n<p>Because the pipeline normalizes states at the edge (Node-RED) and stores them uniformly, you can mix vendors in the same reports and still get consistent analytics.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Demo video<\/h4>\n\n\n\n<p>Alongside this article we posted a short demo video showing a Tapo lamp being switched ON and OFF and the corresponding record being created in FileMaker in real time via OData.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Takeaways<\/h4>\n\n\n\n<p>Node-RED acts as a lightweight middleware to normalize telemetry from Tapo, Sonoff, and Shelly devices, and push it into FileMaker via OData. Polling, state extraction, RBE and a create-only account produce a robust, auditable log that unlocks daily and weekly reporting, custom dashboards, and on-demand notifications.<\/p>\n\n\n\n<p>Thanks to FileMaker\u2019s reporting capabilities, you can easily build charts, statistics, or automated emails on top of the log table, transforming raw IoT data into actionable insights. And for those who want to see it in action, we posted a short demo video showing a Tapo lamp being switched ON and OFF, with the corresponding records instantly appearing in FileMaker.<\/p>\n\n\n\n<figure class=\"wp-block-video\"><video height=\"1080\" style=\"aspect-ratio: 1920 \/ 1080;\" width=\"1920\" controls src=\"https:\/\/www.genexio.net\/blog\/wp-content\/uploads\/2025\/08\/IMG_1257-1.mov\"><\/video><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>This post documents how we built a reliable pipeline to log the real ON\/OFF state of TP-Link Tapo lights into a FileMaker table using Node-RED [&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-231","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>Real-time Monitoring of TP-Link Tapo Devices with Node-RED and FileMaker (OData) - 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\/08\/27\/real-time-monitoring-of-tp-link-tapo-devices-with-node-red-and-filemaker-odata\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Real-time Monitoring of TP-Link Tapo Devices with Node-RED and FileMaker (OData) - My blog\" \/>\n<meta property=\"og:description\" content=\"This post documents how we built a reliable pipeline to log the real ON\/OFF state of TP-Link Tapo lights into a FileMaker table using Node-RED [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.genexio.net\/blog\/2025\/08\/27\/real-time-monitoring-of-tp-link-tapo-devices-with-node-red-and-filemaker-odata\/\" \/>\n<meta property=\"og:site_name\" content=\"My blog\" \/>\n<meta property=\"article:published_time\" content=\"2025-08-26T22:55:12+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-27T08:45:03+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=\"4 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\/08\/27\/real-time-monitoring-of-tp-link-tapo-devices-with-node-red-and-filemaker-odata\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.genexio.net\/blog\/2025\/08\/27\/real-time-monitoring-of-tp-link-tapo-devices-with-node-red-and-filemaker-odata\/\"},\"author\":{\"name\":\"genexio\",\"@id\":\"https:\/\/www.genexio.net\/blog\/#\/schema\/person\/e293425f2302a3a32a049864bf8cd02a\"},\"headline\":\"Real-time Monitoring of TP-Link Tapo Devices with Node-RED and FileMaker (OData)\",\"datePublished\":\"2025-08-26T22:55:12+00:00\",\"dateModified\":\"2025-08-27T08:45:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.genexio.net\/blog\/2025\/08\/27\/real-time-monitoring-of-tp-link-tapo-devices-with-node-red-and-filemaker-odata\/\"},\"wordCount\":607,\"commentCount\":0,\"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\/08\/27\/real-time-monitoring-of-tp-link-tapo-devices-with-node-red-and-filemaker-odata\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.genexio.net\/blog\/2025\/08\/27\/real-time-monitoring-of-tp-link-tapo-devices-with-node-red-and-filemaker-odata\/\",\"url\":\"https:\/\/www.genexio.net\/blog\/2025\/08\/27\/real-time-monitoring-of-tp-link-tapo-devices-with-node-red-and-filemaker-odata\/\",\"name\":\"Real-time Monitoring of TP-Link Tapo Devices with Node-RED and FileMaker (OData) - My blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.genexio.net\/blog\/#website\"},\"datePublished\":\"2025-08-26T22:55:12+00:00\",\"dateModified\":\"2025-08-27T08:45:03+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.genexio.net\/blog\/2025\/08\/27\/real-time-monitoring-of-tp-link-tapo-devices-with-node-red-and-filemaker-odata\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.genexio.net\/blog\/2025\/08\/27\/real-time-monitoring-of-tp-link-tapo-devices-with-node-red-and-filemaker-odata\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.genexio.net\/blog\/2025\/08\/27\/real-time-monitoring-of-tp-link-tapo-devices-with-node-red-and-filemaker-odata\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.genexio.net\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Real-time Monitoring of TP-Link Tapo Devices with Node-RED and FileMaker (OData)\"}]},{\"@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":"Real-time Monitoring of TP-Link Tapo Devices with Node-RED and FileMaker (OData) - 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\/08\/27\/real-time-monitoring-of-tp-link-tapo-devices-with-node-red-and-filemaker-odata\/","og_locale":"en_GB","og_type":"article","og_title":"Real-time Monitoring of TP-Link Tapo Devices with Node-RED and FileMaker (OData) - My blog","og_description":"This post documents how we built a reliable pipeline to log the real ON\/OFF state of TP-Link Tapo lights into a FileMaker table using Node-RED [&hellip;]","og_url":"https:\/\/www.genexio.net\/blog\/2025\/08\/27\/real-time-monitoring-of-tp-link-tapo-devices-with-node-red-and-filemaker-odata\/","og_site_name":"My blog","article_published_time":"2025-08-26T22:55:12+00:00","article_modified_time":"2025-08-27T08:45:03+00:00","author":"genexio","twitter_card":"summary_large_image","twitter_misc":{"Written by":"genexio","Estimated reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.genexio.net\/blog\/2025\/08\/27\/real-time-monitoring-of-tp-link-tapo-devices-with-node-red-and-filemaker-odata\/#article","isPartOf":{"@id":"https:\/\/www.genexio.net\/blog\/2025\/08\/27\/real-time-monitoring-of-tp-link-tapo-devices-with-node-red-and-filemaker-odata\/"},"author":{"name":"genexio","@id":"https:\/\/www.genexio.net\/blog\/#\/schema\/person\/e293425f2302a3a32a049864bf8cd02a"},"headline":"Real-time Monitoring of TP-Link Tapo Devices with Node-RED and FileMaker (OData)","datePublished":"2025-08-26T22:55:12+00:00","dateModified":"2025-08-27T08:45:03+00:00","mainEntityOfPage":{"@id":"https:\/\/www.genexio.net\/blog\/2025\/08\/27\/real-time-monitoring-of-tp-link-tapo-devices-with-node-red-and-filemaker-odata\/"},"wordCount":607,"commentCount":0,"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\/08\/27\/real-time-monitoring-of-tp-link-tapo-devices-with-node-red-and-filemaker-odata\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.genexio.net\/blog\/2025\/08\/27\/real-time-monitoring-of-tp-link-tapo-devices-with-node-red-and-filemaker-odata\/","url":"https:\/\/www.genexio.net\/blog\/2025\/08\/27\/real-time-monitoring-of-tp-link-tapo-devices-with-node-red-and-filemaker-odata\/","name":"Real-time Monitoring of TP-Link Tapo Devices with Node-RED and FileMaker (OData) - My blog","isPartOf":{"@id":"https:\/\/www.genexio.net\/blog\/#website"},"datePublished":"2025-08-26T22:55:12+00:00","dateModified":"2025-08-27T08:45:03+00:00","breadcrumb":{"@id":"https:\/\/www.genexio.net\/blog\/2025\/08\/27\/real-time-monitoring-of-tp-link-tapo-devices-with-node-red-and-filemaker-odata\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.genexio.net\/blog\/2025\/08\/27\/real-time-monitoring-of-tp-link-tapo-devices-with-node-red-and-filemaker-odata\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.genexio.net\/blog\/2025\/08\/27\/real-time-monitoring-of-tp-link-tapo-devices-with-node-red-and-filemaker-odata\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.genexio.net\/blog\/"},{"@type":"ListItem","position":2,"name":"Real-time Monitoring of TP-Link Tapo Devices with Node-RED and FileMaker (OData)"}]},{"@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\/231","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=231"}],"version-history":[{"count":4,"href":"https:\/\/www.genexio.net\/blog\/wp-json\/wp\/v2\/posts\/231\/revisions"}],"predecessor-version":[{"id":238,"href":"https:\/\/www.genexio.net\/blog\/wp-json\/wp\/v2\/posts\/231\/revisions\/238"}],"wp:attachment":[{"href":"https:\/\/www.genexio.net\/blog\/wp-json\/wp\/v2\/media?parent=231"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.genexio.net\/blog\/wp-json\/wp\/v2\/categories?post=231"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.genexio.net\/blog\/wp-json\/wp\/v2\/tags?post=231"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}