{"id":9259,"date":"2026-03-01T19:19:05","date_gmt":"2026-03-01T19:19:05","guid":{"rendered":"https:\/\/sensor-online.se\/?page_id=9259"},"modified":"2026-03-01T19:53:34","modified_gmt":"2026-03-01T19:53:34","slug":"iot-plattform-on-premise-arkitektur","status":"publish","type":"page","link":"https:\/\/sensor-online.se\/sv\/iot-platform-on-premise-architecture\/","title":{"rendered":"iot-plattform-p\u00e5-premise-arkitektur"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"9259\" class=\"elementor elementor-9259\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-35c9b0f e-ecs-flex e-flex e-con-boxed e-con e-parent\" data-id=\"35c9b0f\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;ecs_container_type&quot;:&quot;flex&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1663155 elementor-widget elementor-widget-heading\" data-id=\"1663155\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Sensor-Online\u00ae \u2014 The IoT Platform\nBuilt for On-Premise Deployment<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-61069b1 elementor-widget elementor-widget-text-editor\" data-id=\"61069b1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"text-align: center;\">Collect, visualize, and act on sensor data from thousands of devices \u2014 without cloud dependency. Sensor-Online is an enterprise IoT data platform installed on your own infrastructure, on-premise, anywhere in the world.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b3c02d7 elementor-widget elementor-widget-text-editor\" data-id=\"b3c02d7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<section><p><strong>Sensor-Online.se<\/strong>\u00a0is a complete\u00a0<strong>IoT platform for on-premise installation<\/strong>, developed by Nodeledge AB. The platform is deployed directly on your servers \u2014 on-site at your facility, in your data center, or in any environment where you need full control over your data. Thousands of sensors and gateways around the world are already connected to Sensor-Online, sending real-time data for monitoring, alarming, reporting, and automation.<\/p><p>Whether your devices speak LoRaWAN, MQTT, Modbus TCP, OPC UA, M-Bus, BACnet, or KNX \u2014 Sensor-Online speaks every protocol. The platform receives data in one format and can deliver it in another, acting as the central hub for your entire IoT ecosystem.<\/p><\/section><section id=\"architecture\"><\/section>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-343e3c49 elementor-widget elementor-widget-text-editor\" data-id=\"343e3c49\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\n\n\n<div class=\"so-arch-wrap\" style=\"width:100%;max-width:1400px;margin:0 auto;padding:16px;box-sizing:border-box;\">\n<style>\n.so-arch-wrap svg{width:100%;height:auto;display:block}\n@keyframes soaDash{to{stroke-dashoffset:-20}}\n@keyframes soaDashRev{to{stroke-dashoffset:20}}\n@keyframes soaFade{0%,100%{opacity:.35}50%{opacity:1}}\n.so-fl{stroke-dasharray:6 4;animation:soaDash .8s linear infinite}\n.so-flr{stroke-dasharray:6 4;animation:soaDashRev .8s linear infinite}\n.so-sd{animation:soaFade 2s ease-in-out infinite}\n<\/style>\n<svg viewBox=\"0 0 1400 1050\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n  <defs>\n    <filter id=\"so-shadow\" x=\"-5%\" y=\"-5%\" width=\"115%\" height=\"115%\">\n      <feDropShadow dx=\"0\" dy=\"2\" stdDeviation=\"5\" flood-color=\"#000\" flood-opacity=\"0.07\"\/>\n    <\/filter>\n    <filter id=\"so-glow\" x=\"-20%\" y=\"-20%\" width=\"140%\" height=\"140%\">\n      <feGaussianBlur stdDeviation=\"3\" result=\"blur\"\/>\n      <feMerge><feMergeNode in=\"blur\"\/><feMergeNode in=\"SourceGraphic\"\/><\/feMerge>\n    <\/filter>\n  <\/defs>\n\n  \n  <rect width=\"1400\" height=\"1050\" fill=\"#ffffff\"\/>\n  <pattern id=\"so-grid\" width=\"40\" height=\"40\" patternUnits=\"userSpaceOnUse\">\n    <path d=\"M 40 0 L 0 0 0 40\" fill=\"none\" stroke=\"#f1f5f9\" stroke-width=\"0.5\"\/>\n  <\/pattern>\n  <rect width=\"1400\" height=\"1050\" fill=\"url(#so-grid)\"\/>\n\n  \n  <text x=\"700\" y=\"38\" text-anchor=\"middle\" fill=\"#0f172a\" font-size=\"26\" font-weight=\"700\" font-family=\"'Segoe UI',system-ui,sans-serif\">Sensor-Online.se \u2014 Platform Architecture<\/text>\n  <text x=\"700\" y=\"60\" text-anchor=\"middle\" fill=\"#64748b\" font-size=\"12\" font-family=\"'Segoe UI',system-ui,sans-serif\">Enterprise IoT platform \u00b7 Thousands of sensors and gateways deployed on-premise worldwide<\/text>\n\n  \n  <g transform=\"translate(28, 95)\">\n    <rect x=\"0\" y=\"0\" width=\"18\" height=\"18\" rx=\"9\" fill=\"#8b5cf6\" opacity=\"0.12\"\/>\n    <text x=\"9\" y=\"13\" text-anchor=\"middle\" fill=\"#7c3aed\" font-size=\"11\" font-weight=\"700\" font-family=\"'Segoe UI',system-ui,sans-serif\">1<\/text>\n    <text x=\"24\" y=\"13\" fill=\"#6d28d9\" font-size=\"11\" font-weight=\"600\" font-family=\"'Segoe UI',system-ui,sans-serif\">LoRaWAN Path<\/text>\n  <\/g>\n\n  \n  <g transform=\"translate(115, 170)\" filter=\"url(#so-shadow)\">\n    <rect x=\"-80\" y=\"-40\" width=\"160\" height=\"80\" rx=\"12\" fill=\"#faf5ff\" stroke=\"#8b5cf6\" stroke-width=\"1.5\"\/>\n    <g opacity=\"0.2\"><rect x=\"-50\" y=\"-26\" width=\"22\" height=\"28\" rx=\"4\" fill=\"#7c3aed\"\/><\/g>\n    <g opacity=\"0.35\"><rect x=\"-38\" y=\"-30\" width=\"22\" height=\"28\" rx=\"4\" fill=\"#7c3aed\"\/><\/g>\n    <g opacity=\"0.55\"><rect x=\"-26\" y=\"-34\" width=\"22\" height=\"28\" rx=\"4\" fill=\"#7c3aed\"\/><\/g>\n    <g transform=\"translate(25, -20)\">\n      <path d=\"M 0 0 L 8 -12 L 16 0\" fill=\"none\" stroke=\"#7c3aed\" stroke-width=\"2.5\" stroke-linejoin=\"round\"\/>\n      <path d=\"M -5 0 L 8 -18 L 21 0\" fill=\"none\" stroke=\"#7c3aed\" stroke-width=\"1.5\" stroke-linejoin=\"round\" opacity=\"0.4\"\/>\n      <circle cx=\"8\" cy=\"2\" r=\"2.5\" fill=\"#7c3aed\"\/>\n    <\/g>\n    <text x=\"0\" y=\"14\" text-anchor=\"middle\" fill=\"#5b21b6\" font-size=\"12\" font-weight=\"600\" font-family=\"'Segoe UI',system-ui,sans-serif\">LoRaWAN Sensors<\/text>\n    <text x=\"0\" y=\"28\" text-anchor=\"middle\" fill=\"#8b5cf6\" font-size=\"9\" font-family=\"'Segoe UI',system-ui,sans-serif\">1000s of devices \u00b7 868 MHz<\/text>\n    <circle cx=\"68\" cy=\"-30\" r=\"3\" fill=\"#22c55e\" class=\"so-sd\"\/>\n  <\/g>\n\n  <line x1=\"195\" y1=\"170\" x2=\"255\" y2=\"170\" stroke=\"#8b5cf6\" stroke-width=\"1.8\" class=\"so-fl\" opacity=\"0.35\"\/>\n\n  \n  <g transform=\"translate(335, 170)\" filter=\"url(#so-shadow)\">\n    <rect x=\"-70\" y=\"-38\" width=\"140\" height=\"76\" rx=\"12\" fill=\"#faf5ff\" stroke=\"#8b5cf6\" stroke-width=\"1.5\"\/>\n    <g transform=\"translate(-30, -22)\">\n      <rect x=\"0\" y=\"4\" width=\"24\" height=\"14\" rx=\"2\" fill=\"#7c3aed\" opacity=\"0.3\"\/>\n      <line x1=\"6\" y1=\"0\" x2=\"6\" y2=\"4\" stroke=\"#7c3aed\" stroke-width=\"1.5\"\/>\n      <line x1=\"12\" y1=\"-3\" x2=\"12\" y2=\"4\" stroke=\"#7c3aed\" stroke-width=\"1.5\"\/>\n      <line x1=\"18\" y1=\"0\" x2=\"18\" y2=\"4\" stroke=\"#7c3aed\" stroke-width=\"1.5\"\/>\n    <\/g>\n    <g transform=\"translate(8, -26)\" opacity=\"0.55\">\n      <rect x=\"0\" y=\"4\" width=\"24\" height=\"14\" rx=\"2\" fill=\"#7c3aed\" opacity=\"0.3\"\/>\n      <line x1=\"6\" y1=\"0\" x2=\"6\" y2=\"4\" stroke=\"#7c3aed\" stroke-width=\"1.5\"\/>\n      <line x1=\"12\" y1=\"-3\" x2=\"12\" y2=\"4\" stroke=\"#7c3aed\" stroke-width=\"1.5\"\/>\n      <line x1=\"18\" y1=\"0\" x2=\"18\" y2=\"4\" stroke=\"#7c3aed\" stroke-width=\"1.5\"\/>\n    <\/g>\n    <text x=\"0\" y=\"14\" text-anchor=\"middle\" fill=\"#5b21b6\" font-size=\"11\" font-weight=\"600\" font-family=\"'Segoe UI',system-ui,sans-serif\">LoRa Gateways<\/text>\n    <text x=\"0\" y=\"28\" text-anchor=\"middle\" fill=\"#8b5cf6\" font-size=\"9\" font-family=\"'Segoe UI',system-ui,sans-serif\">Multiple sites<\/text>\n  <\/g>\n\n  <line x1=\"405\" y1=\"170\" x2=\"465\" y2=\"170\" stroke=\"#8b5cf6\" stroke-width=\"1.8\" class=\"so-fl\" opacity=\"0.35\"\/>\n  <text x=\"435\" y=\"160\" text-anchor=\"middle\" fill=\"#a78bfa\" font-size=\"8\" font-style=\"italic\" font-family=\"'Segoe UI',system-ui,sans-serif\">HTTPS<\/text>\n\n  \n  <g transform=\"translate(535, 170)\" filter=\"url(#so-shadow)\">\n    <rect x=\"-60\" y=\"-35\" width=\"120\" height=\"70\" rx=\"12\" fill=\"#faf5ff\" stroke=\"#8b5cf6\" stroke-width=\"1.5\"\/>\n    <text x=\"0\" y=\"-8\" text-anchor=\"middle\" fill=\"#5b21b6\" font-size=\"14\" font-weight=\"700\" font-family=\"'Segoe UI',system-ui,sans-serif\">LNS<\/text>\n    <text x=\"0\" y=\"8\" text-anchor=\"middle\" fill=\"#7c3aed\" font-size=\"10\" font-family=\"'Segoe UI',system-ui,sans-serif\">Network Server<\/text>\n    <text x=\"0\" y=\"22\" text-anchor=\"middle\" fill=\"#a78bfa\" font-size=\"8\" font-family=\"'Segoe UI',system-ui,sans-serif\">Decode \u00b7 Route \u00b7 Join<\/text>\n  <\/g>\n\n  \n  <g transform=\"translate(28, 265)\">\n    <rect x=\"0\" y=\"0\" width=\"18\" height=\"18\" rx=\"9\" fill=\"#10b981\" opacity=\"0.12\"\/>\n    <text x=\"9\" y=\"13\" text-anchor=\"middle\" fill=\"#059669\" font-size=\"11\" font-weight=\"700\" font-family=\"'Segoe UI',system-ui,sans-serif\">2<\/text>\n    <text x=\"24\" y=\"13\" fill=\"#047857\" font-size=\"11\" font-weight=\"600\" font-family=\"'Segoe UI',system-ui,sans-serif\">MQTT Path<\/text>\n  <\/g>\n\n  \n  <g transform=\"translate(115, 340)\" filter=\"url(#so-shadow)\">\n    <rect x=\"-80\" y=\"-40\" width=\"160\" height=\"80\" rx=\"12\" fill=\"#ecfdf5\" stroke=\"#10b981\" stroke-width=\"1.5\"\/>\n    <g opacity=\"0.2\"><rect x=\"-48\" y=\"-22\" width=\"24\" height=\"18\" rx=\"3\" fill=\"#059669\"\/><circle cx=\"-36\" cy=\"0\" r=\"2\" fill=\"#059669\"\/><\/g>\n    <g opacity=\"0.4\"><rect x=\"-34\" y=\"-26\" width=\"24\" height=\"18\" rx=\"3\" fill=\"#059669\"\/><circle cx=\"-22\" cy=\"-4\" r=\"2\" fill=\"#059669\"\/><\/g>\n    <g opacity=\"0.6\"><rect x=\"-20\" y=\"-30\" width=\"24\" height=\"18\" rx=\"3\" fill=\"#059669\"\/><circle cx=\"-8\" cy=\"-8\" r=\"2\" fill=\"#059669\"\/><\/g>\n    <g transform=\"translate(22, -24)\">\n      <circle cx=\"0\" cy=\"0\" r=\"6\" fill=\"#059669\" opacity=\"0.2\"\/>\n      <circle cx=\"14\" cy=\"0\" r=\"6\" fill=\"#059669\" opacity=\"0.2\"\/>\n      <circle cx=\"7\" cy=\"-10\" r=\"6\" fill=\"#059669\" opacity=\"0.2\"\/>\n      <line x1=\"0\" y1=\"0\" x2=\"7\" y2=\"-10\" stroke=\"#059669\" stroke-width=\"1.5\"\/>\n      <line x1=\"14\" y1=\"0\" x2=\"7\" y2=\"-10\" stroke=\"#059669\" stroke-width=\"1.5\"\/>\n      <circle cx=\"0\" cy=\"0\" r=\"2.5\" fill=\"#059669\"\/>\n      <circle cx=\"14\" cy=\"0\" r=\"2.5\" fill=\"#059669\"\/>\n      <circle cx=\"7\" cy=\"-10\" r=\"2.5\" fill=\"#059669\"\/>\n    <\/g>\n    <text x=\"0\" y=\"14\" text-anchor=\"middle\" fill=\"#047857\" font-size=\"12\" font-weight=\"600\" font-family=\"'Segoe UI',system-ui,sans-serif\">Dataloggers<\/text>\n    <text x=\"0\" y=\"28\" text-anchor=\"middle\" fill=\"#10b981\" font-size=\"9\" font-family=\"'Segoe UI',system-ui,sans-serif\">1000s of devices<\/text>\n    <circle cx=\"68\" cy=\"-30\" r=\"3\" fill=\"#22c55e\" class=\"so-sd\" style=\"animation-delay:0.5s\"\/>\n  <\/g>\n\n  \n  <g transform=\"translate(115, 250)\">\n    <rect x=\"-68\" y=\"-11\" width=\"136\" height=\"22\" rx=\"11\" fill=\"#f8fafc\" stroke=\"#cbd5e1\" stroke-width=\"1\"\/>\n    <text x=\"0\" y=\"3\" text-anchor=\"middle\" fill=\"#64748b\" font-size=\"8\" font-weight=\"600\" font-family=\"'Segoe UI',system-ui,sans-serif\">4G \u00b7 5G \u00b7 NB-IoT \u00b7 WiFi \u00b7 LoRa<\/text>\n  <\/g>\n\n  \n  <path d=\"M 155 305 Q 220 260 270 210\" fill=\"none\" stroke=\"#8b5cf6\" stroke-width=\"1\" class=\"so-fl\" opacity=\"0.2\" stroke-dasharray=\"3 3\"\/>\n  <text x=\"190\" y=\"270\" fill=\"#a78bfa\" font-size=\"7\" font-style=\"italic\" font-family=\"'Segoe UI',system-ui,sans-serif\" transform=\"rotate(-42,190,270)\">LoRa mode<\/text>\n\n  <line x1=\"195\" y1=\"340\" x2=\"400\" y2=\"340\" stroke=\"#10b981\" stroke-width=\"1.8\" class=\"so-fl\" opacity=\"0.35\"\/>\n  <text x=\"298\" y=\"330\" text-anchor=\"middle\" fill=\"#10b981\" font-size=\"8\" font-style=\"italic\" font-family=\"'Segoe UI',system-ui,sans-serif\">MQTT Publish<\/text>\n\n  \n  <g transform=\"translate(480, 340)\" filter=\"url(#so-shadow)\">\n    <rect x=\"-70\" y=\"-38\" width=\"140\" height=\"76\" rx=\"12\" fill=\"#ecfdf5\" stroke=\"#10b981\" stroke-width=\"2\"\/>\n    <text x=\"0\" y=\"-22\" text-anchor=\"middle\" fill=\"#059669\" font-size=\"16\" font-weight=\"800\" font-family=\"monospace\">MQTT<\/text>\n    <text x=\"0\" y=\"6\" text-anchor=\"middle\" fill=\"#047857\" font-size=\"11\" font-weight=\"600\" font-family=\"'Segoe UI',system-ui,sans-serif\">Broker<\/text>\n    <text x=\"0\" y=\"22\" text-anchor=\"middle\" fill=\"#10b981\" font-size=\"9\" font-family=\"'Segoe UI',system-ui,sans-serif\">Built-in \u00b7 Subscribe Topics<\/text>\n    <circle cx=\"0\" cy=\"-5\" r=\"8\" fill=\"none\" stroke=\"#10b981\" stroke-width=\"1\">\n      <animate attributeName=\"r\" values=\"8;25;8\" dur=\"2.5s\" repeatCount=\"indefinite\"\/>\n      <animate attributeName=\"opacity\" values=\"0.3;0;0.3\" dur=\"2.5s\" repeatCount=\"indefinite\"\/>\n    <\/circle>\n  <\/g>\n\n  \n  <g transform=\"translate(28, 430)\">\n    <rect x=\"0\" y=\"0\" width=\"18\" height=\"18\" rx=\"9\" fill=\"#f59e0b\" opacity=\"0.12\"\/>\n    <text x=\"9\" y=\"13\" text-anchor=\"middle\" fill=\"#d97706\" font-size=\"11\" font-weight=\"700\" font-family=\"'Segoe UI',system-ui,sans-serif\">3<\/text>\n    <text x=\"24\" y=\"13\" fill=\"#92400e\" font-size=\"11\" font-weight=\"600\" font-family=\"'Segoe UI',system-ui,sans-serif\">M-Bus Metering<\/text>\n  <\/g>\n\n  <g transform=\"translate(115, 505)\" filter=\"url(#so-shadow)\">\n    <rect x=\"-80\" y=\"-40\" width=\"160\" height=\"80\" rx=\"12\" fill=\"#fffbeb\" stroke=\"#f59e0b\" stroke-width=\"1.5\"\/>\n    <circle cx=\"-25\" cy=\"-10\" r=\"15\" fill=\"none\" stroke=\"#d97706\" stroke-width=\"1.8\"\/>\n    <line x1=\"-25\" y1=\"-10\" x2=\"-18\" y2=\"-20\" stroke=\"#d97706\" stroke-width=\"2.5\" stroke-linecap=\"round\"\/>\n    <line x1=\"-25\" y1=\"-10\" x2=\"-25\" y2=\"-22\" stroke=\"#d97706\" stroke-width=\"1.2\"\/>\n    <line x1=\"-25\" y1=\"-25\" x2=\"-25\" y2=\"-23\" stroke=\"#d97706\" stroke-width=\"1\"\/>\n    <line x1=\"-14\" y1=\"-10\" x2=\"-12\" y2=\"-10\" stroke=\"#d97706\" stroke-width=\"1\"\/>\n    <line x1=\"-36\" y1=\"-10\" x2=\"-38\" y2=\"-10\" stroke=\"#d97706\" stroke-width=\"1\"\/>\n    <text x=\"18\" y=\"-8\" fill=\"#92400e\" font-size=\"11\" font-weight=\"600\" font-family=\"'Segoe UI',system-ui,sans-serif\">Meters<\/text>\n    <text x=\"0\" y=\"14\" text-anchor=\"middle\" fill=\"#b45309\" font-size=\"10\" font-family=\"'Segoe UI',system-ui,sans-serif\">Energy \u00b7 Water \u00b7 Gas<\/text>\n    <text x=\"0\" y=\"28\" text-anchor=\"middle\" fill=\"#d97706\" font-size=\"9\" font-family=\"'Segoe UI',system-ui,sans-serif\">M-Bus protocol<\/text>\n  <\/g>\n\n  <line x1=\"195\" y1=\"505\" x2=\"300\" y2=\"505\" stroke=\"#f59e0b\" stroke-width=\"1.8\" class=\"so-fl\" opacity=\"0.35\"\/>\n\n  \n  <g transform=\"translate(380, 470)\" filter=\"url(#so-shadow)\">\n    <rect x=\"-68\" y=\"-18\" width=\"136\" height=\"30\" rx=\"8\" fill=\"#fffbeb\" stroke=\"#f59e0b\" stroke-width=\"1.2\"\/>\n    <text x=\"0\" y=\"-1\" text-anchor=\"middle\" fill=\"#92400e\" font-size=\"10\" font-weight=\"600\" font-family=\"monospace\">\/api\/elvaco<\/text>\n  <\/g>\n  <g transform=\"translate(380, 507)\" filter=\"url(#so-shadow)\">\n    <rect x=\"-68\" y=\"-18\" width=\"136\" height=\"30\" rx=\"8\" fill=\"#fffbeb\" stroke=\"#f59e0b\" stroke-width=\"1.2\"\/>\n    <text x=\"0\" y=\"-1\" text-anchor=\"middle\" fill=\"#92400e\" font-size=\"10\" font-weight=\"600\" font-family=\"monospace\">\/api\/piigab<\/text>\n  <\/g>\n  <g transform=\"translate(380, 544)\" filter=\"url(#so-shadow)\">\n    <rect x=\"-68\" y=\"-18\" width=\"136\" height=\"30\" rx=\"8\" fill=\"#fffbeb\" stroke=\"#f59e0b\" stroke-width=\"1.2\"\/>\n    <text x=\"0\" y=\"-1\" text-anchor=\"middle\" fill=\"#92400e\" font-size=\"10\" font-weight=\"600\" font-family=\"monospace\">\/api\/mivo<\/text>\n  <\/g>\n\n  <line x1=\"285\" y1=\"495\" x2=\"312\" y2=\"470\" stroke=\"#f59e0b\" stroke-width=\"1\" class=\"so-fl\" opacity=\"0.3\"\/>\n  <line x1=\"285\" y1=\"505\" x2=\"312\" y2=\"507\" stroke=\"#f59e0b\" stroke-width=\"1\" class=\"so-fl\" opacity=\"0.3\"\/>\n  <line x1=\"285\" y1=\"515\" x2=\"312\" y2=\"544\" stroke=\"#f59e0b\" stroke-width=\"1\" class=\"so-fl\" opacity=\"0.3\"\/>\n\n  \n  <path d=\"M 595 170 L 680 170 Q 700 170 700 190 L 700 215\" fill=\"none\" stroke=\"#8b5cf6\" stroke-width=\"1.8\" class=\"so-fl\" opacity=\"0.35\"\/>\n  <text x=\"650\" y=\"160\" text-anchor=\"middle\" fill=\"#a78bfa\" font-size=\"8\" font-style=\"italic\" font-family=\"'Segoe UI',system-ui,sans-serif\">Webhook \/ HTTP<\/text>\n\n  <path d=\"M 550 340 L 660 340 Q 670 340 670 330 L 670 305\" fill=\"none\" stroke=\"#10b981\" stroke-width=\"1.8\" class=\"so-fl\" opacity=\"0.35\"\/>\n\n  <path d=\"M 448 470 Q 560 430 660 380 L 670 370\" fill=\"none\" stroke=\"#f59e0b\" stroke-width=\"1.5\" class=\"so-fl\" opacity=\"0.35\"\/>\n  <path d=\"M 448 507 Q 570 460 665 395\" fill=\"none\" stroke=\"#f59e0b\" stroke-width=\"1.2\" class=\"so-fl\" opacity=\"0.25\"\/>\n  <path d=\"M 448 544 Q 580 500 665 420\" fill=\"none\" stroke=\"#f59e0b\" stroke-width=\"1\" class=\"so-fl\" opacity=\"0.2\"\/>\n\n  \n  <g transform=\"translate(770, 310)\" filter=\"url(#so-shadow)\">\n    <rect x=\"-110\" y=\"-100\" width=\"220\" height=\"300\" rx=\"16\" fill=\"#f0f9ff\" stroke=\"#0284c7\" stroke-width=\"2.5\"\/>\n\n    <clipPath id=\"so-hClip\">\n      <rect x=\"-110\" y=\"-100\" width=\"220\" height=\"58\" rx=\"16\"\/>\n    <\/clipPath>\n    <rect x=\"-110\" y=\"-100\" width=\"220\" height=\"58\" fill=\"#0284c7\" clip-path=\"url(#so-hClip)\"\/>\n\n    <text x=\"0\" y=\"-72\" text-anchor=\"middle\" fill=\"#ffffff\" font-size=\"19\" font-weight=\"700\" font-family=\"'Segoe UI',system-ui,sans-serif\">Sensor-Online<\/text>\n\n    <rect x=\"-90\" y=\"-62\" width=\"180\" height=\"16\" rx=\"8\" fill=\"#0369a1\" opacity=\"0.5\"\/>\n    <text x=\"0\" y=\"-51\" text-anchor=\"middle\" fill=\"#bae6fd\" font-size=\"8.5\" font-family=\"monospace\">sensor-online.se<\/text>\n\n    <line x1=\"-95\" y1=\"-36\" x2=\"95\" y2=\"-36\" stroke=\"#0284c7\" stroke-width=\"0.5\" opacity=\"0.25\"\/>\n\n    <text x=\"-88\" y=\"-22\" fill=\"#0369a1\" font-size=\"8\" font-weight=\"700\" font-family=\"'Segoe UI',system-ui,sans-serif\" letter-spacing=\"0.8\">CORE FEATURES<\/text>\n\n    <g transform=\"translate(-85, -8)\">\n      <rect width=\"7\" height=\"7\" rx=\"1.5\" fill=\"#0ea5e9\"\/><text x=\"12\" y=\"7\" fill=\"#0c4a6e\" font-size=\"10.5\" font-family=\"'Segoe UI',system-ui,sans-serif\">Data Storage<\/text>\n    <\/g>\n    <g transform=\"translate(-85, 12)\">\n      <rect width=\"7\" height=\"7\" rx=\"1.5\" fill=\"#0ea5e9\"\/><text x=\"12\" y=\"7\" fill=\"#0c4a6e\" font-size=\"10.5\" font-family=\"'Segoe UI',system-ui,sans-serif\">Visualization &amp; Dashboards<\/text>\n    <\/g>\n    <g transform=\"translate(-85, 32)\">\n      <rect width=\"7\" height=\"7\" rx=\"1.5\" fill=\"#0ea5e9\"\/><text x=\"12\" y=\"7\" fill=\"#0c4a6e\" font-size=\"10.5\" font-family=\"'Segoe UI',system-ui,sans-serif\">Alarm Management<\/text>\n    <\/g>\n    <g transform=\"translate(-85, 52)\">\n      <rect width=\"7\" height=\"7\" rx=\"1.5\" fill=\"#0ea5e9\"\/><text x=\"12\" y=\"7\" fill=\"#0c4a6e\" font-size=\"10.5\" font-family=\"'Segoe UI',system-ui,sans-serif\">Reporting<\/text>\n    <\/g>\n    <g transform=\"translate(-85, 72)\">\n      <rect width=\"7\" height=\"7\" rx=\"1.5\" fill=\"#0ea5e9\"\/><text x=\"12\" y=\"7\" fill=\"#0c4a6e\" font-size=\"10.5\" font-family=\"'Segoe UI',system-ui,sans-serif\">REST API<\/text>\n    <\/g>\n    <g transform=\"translate(-85, 92)\">\n      <rect width=\"7\" height=\"7\" rx=\"1.5\" fill=\"#0ea5e9\"\/><text x=\"12\" y=\"7\" fill=\"#0c4a6e\" font-size=\"10.5\" font-family=\"'Segoe UI',system-ui,sans-serif\">Script Engine<\/text>\n    <\/g>\n    <g transform=\"translate(-85, 112)\">\n      <rect width=\"7\" height=\"7\" rx=\"1.5\" fill=\"#0ea5e9\"\/><text x=\"12\" y=\"7\" fill=\"#0c4a6e\" font-size=\"10.5\" font-family=\"'Segoe UI',system-ui,sans-serif\">Realtime Formulas<\/text>\n    <\/g>\n\n    <line x1=\"-95\" y1=\"132\" x2=\"95\" y2=\"132\" stroke=\"#0284c7\" stroke-width=\"0.5\" opacity=\"0.25\"\/>\n\n    <rect x=\"-95\" y=\"140\" width=\"90\" height=\"24\" rx=\"12\" fill=\"#e0f2fe\" stroke=\"#7dd3fc\" stroke-width=\"1\"\/>\n    <text x=\"-50\" y=\"156\" text-anchor=\"middle\" fill=\"#0369a1\" font-size=\"8.5\" font-weight=\"600\" font-family=\"'Segoe UI',system-ui,sans-serif\">Multi-tenant<\/text>\n    <rect x=\"5\" y=\"140\" width=\"90\" height=\"24\" rx=\"12\" fill=\"#e0f2fe\" stroke=\"#7dd3fc\" stroke-width=\"1\"\/>\n    <text x=\"50\" y=\"156\" text-anchor=\"middle\" fill=\"#0369a1\" font-size=\"8.5\" font-weight=\"600\" font-family=\"'Segoe UI',system-ui,sans-serif\">On-premise<\/text>\n\n    <text x=\"0\" y=\"183\" text-anchor=\"middle\" fill=\"#0369a1\" font-size=\"8\" font-family=\"monospace\" opacity=\"0.6\">Deployed worldwide<\/text>\n\n    <rect x=\"-115\" y=\"-105\" width=\"230\" height=\"310\" rx=\"20\" fill=\"none\" stroke=\"#0ea5e9\" stroke-width=\"1.5\" opacity=\"0.08\">\n      <animate attributeName=\"opacity\" values=\"0.08;0.02;0.08\" dur=\"3s\" repeatCount=\"indefinite\"\/>\n    <\/rect>\n  <\/g>\n\n  \n  <g transform=\"translate(770, 655)\" filter=\"url(#so-shadow)\">\n    <rect x=\"-200\" y=\"-48\" width=\"400\" height=\"96\" rx=\"14\" fill=\"#fefce8\" stroke=\"#ca8a04\" stroke-width=\"1.5\"\/>\n\n    <g transform=\"translate(-168, 0)\">\n      <circle cx=\"0\" cy=\"0\" r=\"14\" fill=\"none\" stroke=\"#ca8a04\" stroke-width=\"1.5\"\/>\n      <circle cx=\"0\" cy=\"0\" r=\"5\" fill=\"#ca8a04\" opacity=\"0.3\"\/>\n      <line x1=\"0\" y1=\"-14\" x2=\"0\" y2=\"-18\" stroke=\"#ca8a04\" stroke-width=\"3\" stroke-linecap=\"round\"\/>\n      <line x1=\"12\" y1=\"-7\" x2=\"15\" y2=\"-9\" stroke=\"#ca8a04\" stroke-width=\"3\" stroke-linecap=\"round\"\/>\n      <line x1=\"12\" y1=\"7\" x2=\"15\" y2=\"9\" stroke=\"#ca8a04\" stroke-width=\"3\" stroke-linecap=\"round\"\/>\n      <line x1=\"0\" y1=\"14\" x2=\"0\" y2=\"18\" stroke=\"#ca8a04\" stroke-width=\"3\" stroke-linecap=\"round\"\/>\n      <line x1=\"-12\" y1=\"7\" x2=\"-15\" y2=\"9\" stroke=\"#ca8a04\" stroke-width=\"3\" stroke-linecap=\"round\"\/>\n      <line x1=\"-12\" y1=\"-7\" x2=\"-15\" y2=\"-9\" stroke=\"#ca8a04\" stroke-width=\"3\" stroke-linecap=\"round\"\/>\n    <\/g>\n\n    <text x=\"15\" y=\"-26\" text-anchor=\"middle\" fill=\"#854d0e\" font-size=\"14\" font-weight=\"700\" font-family=\"'Segoe UI',system-ui,sans-serif\">Protocol Transformation<\/text>\n    <text x=\"15\" y=\"-10\" text-anchor=\"middle\" fill=\"#92400e\" font-size=\"9\" font-family=\"'Segoe UI',system-ui,sans-serif\">Receive on one protocol \u2014 deliver on another<\/text>\n\n    <g transform=\"translate(-140, 10)\">\n      <rect x=\"0\" y=\"0\" width=\"68\" height=\"26\" rx=\"6\" fill=\"#faf5ff\" stroke=\"#8b5cf6\" stroke-width=\"1\"\/>\n      <path d=\"M 8 17 L 13 9 L 18 17\" fill=\"none\" stroke=\"#7c3aed\" stroke-width=\"1.5\" stroke-linejoin=\"round\"\/>\n      <text x=\"42\" y=\"17\" text-anchor=\"middle\" fill=\"#6d28d9\" font-size=\"8.5\" font-weight=\"600\" font-family=\"'Segoe UI',system-ui,sans-serif\">LoRaWAN<\/text>\n    <\/g>\n    <g transform=\"translate(-64, 10)\">\n      <rect x=\"0\" y=\"0\" width=\"60\" height=\"26\" rx=\"6\" fill=\"#eff6ff\" stroke=\"#3b82f6\" stroke-width=\"1\"\/>\n      <text x=\"30\" y=\"17\" text-anchor=\"middle\" fill=\"#1d4ed8\" font-size=\"8.5\" font-weight=\"700\" font-family=\"'Segoe UI',system-ui,sans-serif\">BACnet<\/text>\n    <\/g>\n    <g transform=\"translate(4, 10)\">\n      <rect x=\"0\" y=\"0\" width=\"48\" height=\"26\" rx=\"6\" fill=\"#fef2f2\" stroke=\"#ef4444\" stroke-width=\"1\"\/>\n      <text x=\"24\" y=\"17\" text-anchor=\"middle\" fill=\"#b91c1c\" font-size=\"8.5\" font-weight=\"700\" font-family=\"'Segoe UI',system-ui,sans-serif\">KNX<\/text>\n    <\/g>\n    <g transform=\"translate(60, 10)\">\n      <rect x=\"0\" y=\"0\" width=\"62\" height=\"26\" rx=\"6\" fill=\"#ecfdf5\" stroke=\"#10b981\" stroke-width=\"1\"\/>\n      <text x=\"31\" y=\"17\" text-anchor=\"middle\" fill=\"#047857\" font-size=\"8.5\" font-weight=\"700\" font-family=\"'Segoe UI',system-ui,sans-serif\">Modbus<\/text>\n    <\/g>\n    <g transform=\"translate(130, 10)\">\n      <rect x=\"0\" y=\"0\" width=\"62\" height=\"26\" rx=\"6\" fill=\"#fff7ed\" stroke=\"#f97316\" stroke-width=\"1\"\/>\n      <text x=\"31\" y=\"17\" text-anchor=\"middle\" fill=\"#c2410c\" font-size=\"8.5\" font-weight=\"700\" font-family=\"'Segoe UI',system-ui,sans-serif\">OPC UA<\/text>\n    <\/g>\n  <\/g>\n\n  \n  <line x1=\"770\" y1=\"510\" x2=\"770\" y2=\"607\" stroke=\"#ca8a04\" stroke-width=\"1.5\" class=\"so-fl\" opacity=\"0.3\"\/>\n  <line x1=\"774\" y1=\"607\" x2=\"774\" y2=\"510\" stroke=\"#ca8a04\" stroke-width=\"1\" class=\"so-flr\" opacity=\"0.2\"\/>\n  <circle r=\"4\" fill=\"#ca8a04\" filter=\"url(#so-glow)\">\n    <animateMotion dur=\"2s\" repeatCount=\"indefinite\" path=\"M 770 510 L 770 607\"\/>\n    <animate attributeName=\"opacity\" values=\"0;1;1;0\" dur=\"2s\" repeatCount=\"indefinite\"\/>\n  <\/circle>\n  <circle r=\"3\" fill=\"#eab308\" filter=\"url(#so-glow)\">\n    <animateMotion dur=\"2s\" repeatCount=\"indefinite\" path=\"M 774 607 L 774 510\" begin=\"1s\"\/>\n    <animate attributeName=\"opacity\" values=\"0;1;1;0\" dur=\"2s\" repeatCount=\"indefinite\" begin=\"1s\"\/>\n  <\/circle>\n  <text x=\"790\" y=\"560\" fill=\"#a16207\" font-size=\"8\" font-style=\"italic\" font-family=\"'Segoe UI',system-ui,sans-serif\">Bidirectional<\/text>\n\n  \n  <g transform=\"translate(1050, 95)\">\n    <rect x=\"0\" y=\"0\" width=\"18\" height=\"18\" rx=\"9\" fill=\"#3b82f6\" opacity=\"0.12\"\/>\n    <text x=\"9\" y=\"13\" text-anchor=\"middle\" fill=\"#2563eb\" font-size=\"11\" font-weight=\"700\" font-family=\"'Segoe UI',system-ui,sans-serif\">4<\/text>\n    <text x=\"24\" y=\"13\" fill=\"#1d4ed8\" font-size=\"11\" font-weight=\"600\" font-family=\"'Segoe UI',system-ui,sans-serif\">Enterprise API<\/text>\n  <\/g>\n\n  <g transform=\"translate(1170, 175)\" filter=\"url(#so-shadow)\">\n    <rect x=\"-85\" y=\"-50\" width=\"170\" height=\"100\" rx=\"14\" fill=\"#eff6ff\" stroke=\"#3b82f6\" stroke-width=\"1.5\"\/>\n    <text x=\"0\" y=\"-22\" text-anchor=\"middle\" fill=\"#1d4ed8\" font-size=\"13\" font-weight=\"700\" font-family=\"'Segoe UI',system-ui,sans-serif\">Enterprise Systems<\/text>\n    <line x1=\"-65\" y1=\"-12\" x2=\"65\" y2=\"-12\" stroke=\"#3b82f6\" stroke-width=\"0.5\" opacity=\"0.3\"\/>\n    <text x=\"0\" y=\"6\" text-anchor=\"middle\" fill=\"#2563eb\" font-size=\"11\" font-family=\"'Segoe UI',system-ui,sans-serif\">Aweeva<\/text>\n    <text x=\"0\" y=\"22\" text-anchor=\"middle\" fill=\"#2563eb\" font-size=\"11\" font-family=\"'Segoe UI',system-ui,sans-serif\">OSIsoft PI<\/text>\n    <text x=\"0\" y=\"40\" text-anchor=\"middle\" fill=\"#93c5fd\" font-size=\"8\" font-family=\"'Segoe UI',system-ui,sans-serif\">Read &amp; Write via REST API<\/text>\n    <text x=\"74\" y=\"-36\" fill=\"#3b82f6\" font-size=\"14\" font-weight=\"bold\">\u2194<\/text>\n  <\/g>\n\n  <path d=\"M 1085 195 L 870 280\" fill=\"none\" stroke=\"#3b82f6\" stroke-width=\"1.8\" class=\"so-fl\" opacity=\"0.35\"\/>\n  <path d=\"M 870 290 L 1085 205\" fill=\"none\" stroke=\"#3b82f6\" stroke-width=\"1\" class=\"so-flr\" opacity=\"0.2\"\/>\n  <text x=\"985\" y=\"230\" text-anchor=\"middle\" fill=\"#3b82f6\" font-size=\"8\" font-style=\"italic\" font-family=\"'Segoe UI',system-ui,sans-serif\" transform=\"rotate(-24, 985, 230)\">REST API<\/text>\n\n  \n  <g transform=\"translate(1050, 290)\">\n    <rect x=\"0\" y=\"0\" width=\"18\" height=\"18\" rx=\"9\" fill=\"#ef4444\" opacity=\"0.12\"\/>\n    <text x=\"9\" y=\"13\" text-anchor=\"middle\" fill=\"#dc2626\" font-size=\"11\" font-weight=\"700\" font-family=\"'Segoe UI',system-ui,sans-serif\">5<\/text>\n    <text x=\"24\" y=\"13\" fill=\"#b91c1c\" font-size=\"11\" font-weight=\"600\" font-family=\"'Segoe UI',system-ui,sans-serif\">SCADA \/ PLC<\/text>\n  <\/g>\n\n  <g transform=\"translate(1170, 380)\" filter=\"url(#so-shadow)\">\n    <rect x=\"-85\" y=\"-50\" width=\"170\" height=\"100\" rx=\"14\" fill=\"#fef2f2\" stroke=\"#ef4444\" stroke-width=\"1.5\"\/>\n    <circle cx=\"-55\" cy=\"-34\" r=\"4\" fill=\"#22c55e\" class=\"so-sd\"\/>\n    <circle cx=\"-42\" cy=\"-34\" r=\"4\" fill=\"#22c55e\" class=\"so-sd\" style=\"animation-delay:0.3s\"\/>\n    <circle cx=\"-29\" cy=\"-34\" r=\"4\" fill=\"#f59e0b\" class=\"so-sd\" style=\"animation-delay:0.6s\"\/>\n    <text x=\"0\" y=\"-14\" text-anchor=\"middle\" fill=\"#b91c1c\" font-size=\"13\" font-weight=\"700\" font-family=\"'Segoe UI',system-ui,sans-serif\">SCADA \/ PLC<\/text>\n    <line x1=\"-65\" y1=\"-4\" x2=\"65\" y2=\"-4\" stroke=\"#ef4444\" stroke-width=\"0.5\" opacity=\"0.3\"\/>\n    <text x=\"0\" y=\"14\" text-anchor=\"middle\" fill=\"#dc2626\" font-size=\"11\" font-family=\"'Segoe UI',system-ui,sans-serif\">Modbus TCP<\/text>\n    <text x=\"0\" y=\"30\" text-anchor=\"middle\" fill=\"#dc2626\" font-size=\"11\" font-family=\"'Segoe UI',system-ui,sans-serif\">OPC UA<\/text>\n    <text x=\"0\" y=\"44\" text-anchor=\"middle\" fill=\"#fca5a5\" font-size=\"8\" font-family=\"'Segoe UI',system-ui,sans-serif\">Read &amp; Write<\/text>\n    <text x=\"74\" y=\"-36\" fill=\"#ef4444\" font-size=\"14\" font-weight=\"bold\">\u2194<\/text>\n  <\/g>\n\n  <path d=\"M 1085 380 L 870 370\" fill=\"none\" stroke=\"#ef4444\" stroke-width=\"1.8\" class=\"so-fl\" opacity=\"0.35\"\/>\n  <path d=\"M 870 360 L 1085 370\" fill=\"none\" stroke=\"#ef4444\" stroke-width=\"1\" class=\"so-flr\" opacity=\"0.2\"\/>\n  <text x=\"985\" y=\"362\" text-anchor=\"middle\" fill=\"#ef4444\" font-size=\"8\" font-style=\"italic\" font-family=\"'Segoe UI',system-ui,sans-serif\">Modbus \/ OPC UA<\/text>\n\n  \n  <g transform=\"translate(1050, 478)\">\n    <rect x=\"0\" y=\"0\" width=\"18\" height=\"18\" rx=\"9\" fill=\"#f97316\" opacity=\"0.12\"\/>\n    <text x=\"9\" y=\"13\" text-anchor=\"middle\" fill=\"#ea580c\" font-size=\"11\" font-weight=\"700\" font-family=\"'Segoe UI',system-ui,sans-serif\">6<\/text>\n    <text x=\"24\" y=\"13\" fill=\"#c2410c\" font-size=\"11\" font-weight=\"600\" font-family=\"'Segoe UI',system-ui,sans-serif\">Automation<\/text>\n  <\/g>\n\n  \n  <g transform=\"translate(1110, 560)\" filter=\"url(#so-shadow)\">\n    <rect x=\"-65\" y=\"-40\" width=\"130\" height=\"80\" rx=\"14\" fill=\"#fef2f2\" stroke=\"#ef4444\" stroke-width=\"1.5\"\/>\n    <g transform=\"translate(-32, -22)\">\n      <rect x=\"0\" y=\"0\" width=\"20\" height=\"12\" rx=\"6\" fill=\"#d32f2f\" opacity=\"0.9\"\/>\n      <rect x=\"26\" y=\"-4\" width=\"20\" height=\"12\" rx=\"6\" fill=\"#8e1318\" opacity=\"0.9\"\/>\n      <rect x=\"26\" y=\"12\" width=\"20\" height=\"12\" rx=\"6\" fill=\"#d32f2f\" opacity=\"0.7\"\/>\n      <line x1=\"20\" y1=\"6\" x2=\"26\" y2=\"2\" stroke=\"#d32f2f\" stroke-width=\"1.5\"\/>\n      <line x1=\"20\" y1=\"6\" x2=\"26\" y2=\"18\" stroke=\"#d32f2f\" stroke-width=\"1.5\"\/>\n      <circle cx=\"0\" cy=\"6\" r=\"2\" fill=\"#fff\" stroke=\"#d32f2f\" stroke-width=\"1\"\/>\n      <circle cx=\"46\" cy=\"2\" r=\"2\" fill=\"#fff\" stroke=\"#8e1318\" stroke-width=\"1\"\/>\n      <circle cx=\"46\" cy=\"18\" r=\"2\" fill=\"#fff\" stroke=\"#d32f2f\" stroke-width=\"1\"\/>\n    <\/g>\n    <text x=\"0\" y=\"14\" text-anchor=\"middle\" fill=\"#b91c1c\" font-size=\"13\" font-weight=\"700\" font-family=\"'Segoe UI',system-ui,sans-serif\">Node-RED<\/text>\n    <text x=\"0\" y=\"28\" text-anchor=\"middle\" fill=\"#ef4444\" font-size=\"8\" font-family=\"'Segoe UI',system-ui,sans-serif\">Flow-based automation<\/text>\n  <\/g>\n\n  \n  <g transform=\"translate(1110, 690)\" filter=\"url(#so-shadow)\">\n    <rect x=\"-65\" y=\"-40\" width=\"130\" height=\"80\" rx=\"14\" fill=\"#fff7ed\" stroke=\"#f97316\" stroke-width=\"1.5\"\/>\n    <g transform=\"translate(-28, -24)\">\n      <rect x=\"0\" y=\"0\" width=\"14\" height=\"14\" rx=\"4\" fill=\"#ff6d5a\" stroke=\"#ea580c\" stroke-width=\"1\"\/>\n      <rect x=\"22\" y=\"-4\" width=\"14\" height=\"14\" rx=\"4\" fill=\"#ff6d5a\" stroke=\"#ea580c\" stroke-width=\"1\"\/>\n      <rect x=\"22\" y=\"14\" width=\"14\" height=\"14\" rx=\"4\" fill=\"#ff6d5a\" stroke=\"#ea580c\" stroke-width=\"1\"\/>\n      <rect x=\"44\" y=\"4\" width=\"14\" height=\"14\" rx=\"4\" fill=\"#ff6d5a\" stroke=\"#ea580c\" stroke-width=\"1\"\/>\n      <line x1=\"14\" y1=\"7\" x2=\"22\" y2=\"3\" stroke=\"#ea580c\" stroke-width=\"1.5\"\/>\n      <line x1=\"14\" y1=\"7\" x2=\"22\" y2=\"21\" stroke=\"#ea580c\" stroke-width=\"1.5\"\/>\n      <line x1=\"36\" y1=\"3\" x2=\"44\" y2=\"11\" stroke=\"#ea580c\" stroke-width=\"1.5\"\/>\n      <line x1=\"36\" y1=\"21\" x2=\"44\" y2=\"11\" stroke=\"#ea580c\" stroke-width=\"1.5\"\/>\n    <\/g>\n    <text x=\"0\" y=\"14\" text-anchor=\"middle\" fill=\"#c2410c\" font-size=\"13\" font-weight=\"700\" font-family=\"'Segoe UI',system-ui,sans-serif\">n8n<\/text>\n    <text x=\"0\" y=\"28\" text-anchor=\"middle\" fill=\"#f97316\" font-size=\"8\" font-family=\"'Segoe UI',system-ui,sans-serif\">Workflow automation<\/text>\n  <\/g>\n\n  <g transform=\"translate(1110, 625)\">\n    <rect x=\"-50\" y=\"-8\" width=\"100\" height=\"16\" rx=\"8\" fill=\"#f8fafc\" stroke=\"#e2e8f0\" stroke-width=\"1\"\/>\n    <text x=\"0\" y=\"3\" text-anchor=\"middle\" fill=\"#64748b\" font-size=\"7\" font-weight=\"600\" font-family=\"'Segoe UI',system-ui,sans-serif\">Uses API &amp; MQTT<\/text>\n  <\/g>\n\n  \n  <path d=\"M 1045 555 Q 960 510 870 430\" fill=\"none\" stroke=\"#ef4444\" stroke-width=\"1.2\" class=\"so-fl\" opacity=\"0.3\"\/>\n  <path d=\"M 870 440 Q 960 520 1045 565\" fill=\"none\" stroke=\"#ef4444\" stroke-width=\"0.8\" class=\"so-flr\" opacity=\"0.15\"\/>\n  <path d=\"M 1045 685 Q 930 620 870 470\" fill=\"none\" stroke=\"#f97316\" stroke-width=\"1.2\" class=\"so-fl\" opacity=\"0.3\"\/>\n  <path d=\"M 870 480 Q 930 630 1045 695\" fill=\"none\" stroke=\"#f97316\" stroke-width=\"0.8\" class=\"so-flr\" opacity=\"0.15\"\/>\n  <path d=\"M 1045 570 Q 800 530 550 370\" fill=\"none\" stroke=\"#10b981\" stroke-width=\"0.8\" class=\"so-fl\" opacity=\"0.15\" stroke-dasharray=\"3 3\"\/>\n  <path d=\"M 1045 700 Q 800 600 550 380\" fill=\"none\" stroke=\"#10b981\" stroke-width=\"0.8\" class=\"so-fl\" opacity=\"0.12\" stroke-dasharray=\"3 3\"\/>\n\n  <text x=\"960\" y=\"478\" fill=\"#b91c1c\" font-size=\"7\" font-style=\"italic\" font-family=\"'Segoe UI',system-ui,sans-serif\" transform=\"rotate(-30, 960, 478)\">REST API<\/text>\n  <text x=\"940\" y=\"580\" fill=\"#ea580c\" font-size=\"7\" font-style=\"italic\" font-family=\"'Segoe UI',system-ui,sans-serif\" transform=\"rotate(-40, 940, 580)\">REST API<\/text>\n\n  \n  \n  <circle r=\"4.5\" fill=\"#8b5cf6\" filter=\"url(#so-glow)\"><animateMotion dur=\"1.5s\" repeatCount=\"indefinite\" path=\"M 195 170 L 255 170\"\/><animate attributeName=\"opacity\" values=\"0;1;1;0\" dur=\"1.5s\" repeatCount=\"indefinite\"\/><\/circle>\n  <circle r=\"3.5\" fill=\"#a78bfa\" filter=\"url(#so-glow)\"><animateMotion dur=\"1.5s\" repeatCount=\"indefinite\" path=\"M 195 170 L 255 170\" begin=\"0.75s\"\/><animate attributeName=\"opacity\" values=\"0;1;1;0\" dur=\"1.5s\" repeatCount=\"indefinite\" begin=\"0.75s\"\/><\/circle>\n  <circle r=\"4.5\" fill=\"#8b5cf6\" filter=\"url(#so-glow)\"><animateMotion dur=\"1.5s\" repeatCount=\"indefinite\" path=\"M 405 170 L 465 170\" begin=\"0.3s\"\/><animate attributeName=\"opacity\" values=\"0;1;1;0\" dur=\"1.5s\" repeatCount=\"indefinite\" begin=\"0.3s\"\/><\/circle>\n  <circle r=\"3.5\" fill=\"#a78bfa\" filter=\"url(#so-glow)\"><animateMotion dur=\"1.5s\" repeatCount=\"indefinite\" path=\"M 405 170 L 465 170\" begin=\"1.05s\"\/><animate attributeName=\"opacity\" values=\"0;1;1;0\" dur=\"1.5s\" repeatCount=\"indefinite\" begin=\"1.05s\"\/><\/circle>\n  <circle r=\"4.5\" fill=\"#8b5cf6\" filter=\"url(#so-glow)\"><animateMotion dur=\"2s\" repeatCount=\"indefinite\" path=\"M 595 170 L 680 170 Q 700 170 700 190 L 700 215\" begin=\"0.5s\"\/><animate attributeName=\"opacity\" values=\"0;1;1;0\" dur=\"2s\" repeatCount=\"indefinite\" begin=\"0.5s\"\/><\/circle>\n  <circle r=\"3.5\" fill=\"#a78bfa\" filter=\"url(#so-glow)\"><animateMotion dur=\"2s\" repeatCount=\"indefinite\" path=\"M 595 170 L 680 170 Q 700 170 700 190 L 700 215\" begin=\"1.5s\"\/><animate attributeName=\"opacity\" values=\"0;1;1;0\" dur=\"2s\" repeatCount=\"indefinite\" begin=\"1.5s\"\/><\/circle>\n\n  \n  <circle r=\"4.5\" fill=\"#10b981\" filter=\"url(#so-glow)\"><animateMotion dur=\"2.2s\" repeatCount=\"indefinite\" path=\"M 195 340 L 400 340\"\/><animate attributeName=\"opacity\" values=\"0;1;1;0\" dur=\"2.2s\" repeatCount=\"indefinite\"\/><\/circle>\n  <circle r=\"3.5\" fill=\"#34d399\" filter=\"url(#so-glow)\"><animateMotion dur=\"2.2s\" repeatCount=\"indefinite\" path=\"M 195 340 L 400 340\" begin=\"1.1s\"\/><animate attributeName=\"opacity\" values=\"0;1;1;0\" dur=\"2.2s\" repeatCount=\"indefinite\" begin=\"1.1s\"\/><\/circle>\n  <circle r=\"4.5\" fill=\"#10b981\" filter=\"url(#so-glow)\"><animateMotion dur=\"2s\" repeatCount=\"indefinite\" path=\"M 550 340 L 660 340 Q 670 340 670 330 L 670 305\" begin=\"0.4s\"\/><animate attributeName=\"opacity\" values=\"0;1;1;0\" dur=\"2s\" repeatCount=\"indefinite\" begin=\"0.4s\"\/><\/circle>\n  <circle r=\"3.5\" fill=\"#34d399\" filter=\"url(#so-glow)\"><animateMotion dur=\"2s\" repeatCount=\"indefinite\" path=\"M 550 340 L 660 340 Q 670 340 670 330 L 670 305\" begin=\"1.4s\"\/><animate attributeName=\"opacity\" values=\"0;1;1;0\" dur=\"2s\" repeatCount=\"indefinite\" begin=\"1.4s\"\/><\/circle>\n\n  \n  <circle r=\"4\" fill=\"#f59e0b\" filter=\"url(#so-glow)\"><animateMotion dur=\"2.5s\" repeatCount=\"indefinite\" path=\"M 448 470 Q 560 430 660 380 L 670 370\" begin=\"0.3s\"\/><animate attributeName=\"opacity\" values=\"0;1;1;0\" dur=\"2.5s\" repeatCount=\"indefinite\" begin=\"0.3s\"\/><\/circle>\n  <circle r=\"3.5\" fill=\"#fbbf24\" filter=\"url(#so-glow)\"><animateMotion dur=\"2.8s\" repeatCount=\"indefinite\" path=\"M 448 507 Q 570 460 665 395\" begin=\"0.8s\"\/><animate attributeName=\"opacity\" values=\"0;1;1;0\" dur=\"2.8s\" repeatCount=\"indefinite\" begin=\"0.8s\"\/><\/circle>\n  <circle r=\"3\" fill=\"#fbbf24\" filter=\"url(#so-glow)\"><animateMotion dur=\"3s\" repeatCount=\"indefinite\" path=\"M 448 544 Q 580 500 665 420\" begin=\"1.4s\"\/><animate attributeName=\"opacity\" values=\"0;1;1;0\" dur=\"3s\" repeatCount=\"indefinite\" begin=\"1.4s\"\/><\/circle>\n  <circle r=\"4\" fill=\"#f59e0b\" filter=\"url(#so-glow)\"><animateMotion dur=\"1.8s\" repeatCount=\"indefinite\" path=\"M 195 505 L 300 505\"\/><animate attributeName=\"opacity\" values=\"0;1;1;0\" dur=\"1.8s\" repeatCount=\"indefinite\"\/><\/circle>\n\n  \n  <circle r=\"4.5\" fill=\"#3b82f6\" filter=\"url(#so-glow)\"><animateMotion dur=\"2.2s\" repeatCount=\"indefinite\" path=\"M 1085 195 L 870 280\"\/><animate attributeName=\"opacity\" values=\"0;1;1;0\" dur=\"2.2s\" repeatCount=\"indefinite\"\/><\/circle>\n  <circle r=\"3.5\" fill=\"#93c5fd\" filter=\"url(#so-glow)\"><animateMotion dur=\"2.2s\" repeatCount=\"indefinite\" path=\"M 870 290 L 1085 205\" begin=\"1.1s\"\/><animate attributeName=\"opacity\" values=\"0;1;1;0\" dur=\"2.2s\" repeatCount=\"indefinite\" begin=\"1.1s\"\/><\/circle>\n\n  \n  <circle r=\"4.5\" fill=\"#ef4444\" filter=\"url(#so-glow)\"><animateMotion dur=\"2s\" repeatCount=\"indefinite\" path=\"M 1085 380 L 870 370\"\/><animate attributeName=\"opacity\" values=\"0;1;1;0\" dur=\"2s\" repeatCount=\"indefinite\"\/><\/circle>\n  <circle r=\"3.5\" fill=\"#fca5a5\" filter=\"url(#so-glow)\"><animateMotion dur=\"2s\" repeatCount=\"indefinite\" path=\"M 870 360 L 1085 370\" begin=\"1s\"\/><animate attributeName=\"opacity\" values=\"0;1;1;0\" dur=\"2s\" repeatCount=\"indefinite\" begin=\"1s\"\/><\/circle>\n\n  \n  <circle r=\"4\" fill=\"#d32f2f\" filter=\"url(#so-glow)\"><animateMotion dur=\"2.5s\" repeatCount=\"indefinite\" path=\"M 1045 555 Q 960 510 870 430\"\/><animate attributeName=\"opacity\" values=\"0;1;1;0\" dur=\"2.5s\" repeatCount=\"indefinite\"\/><\/circle>\n  <circle r=\"3\" fill=\"#ef9a9a\" filter=\"url(#so-glow)\"><animateMotion dur=\"2.5s\" repeatCount=\"indefinite\" path=\"M 870 440 Q 960 520 1045 565\" begin=\"1.2s\"\/><animate attributeName=\"opacity\" values=\"0;1;1;0\" dur=\"2.5s\" repeatCount=\"indefinite\" begin=\"1.2s\"\/><\/circle>\n\n  \n  <circle r=\"4\" fill=\"#f97316\" filter=\"url(#so-glow)\"><animateMotion dur=\"2.8s\" repeatCount=\"indefinite\" path=\"M 1045 685 Q 930 620 870 470\" begin=\"0.5s\"\/><animate attributeName=\"opacity\" values=\"0;1;1;0\" dur=\"2.8s\" repeatCount=\"indefinite\" begin=\"0.5s\"\/><\/circle>\n  <circle r=\"3\" fill=\"#fdba74\" filter=\"url(#so-glow)\"><animateMotion dur=\"2.8s\" repeatCount=\"indefinite\" path=\"M 870 480 Q 930 630 1045 695\" begin=\"1.8s\"\/><animate attributeName=\"opacity\" values=\"0;1;1;0\" dur=\"2.8s\" repeatCount=\"indefinite\" begin=\"1.8s\"\/><\/circle>\n\n  \n  <g transform=\"translate(50, 790)\">\n    <rect x=\"-15\" y=\"-16\" width=\"1320\" height=\"70\" rx=\"12\" fill=\"#f8fafc\" stroke=\"#e2e8f0\" stroke-width=\"1\"\/>\n    <circle cx=\"15\" cy=\"0\" r=\"5\" fill=\"#8b5cf6\"\/><text x=\"28\" y=\"4\" fill=\"#475569\" font-size=\"10\" font-family=\"'Segoe UI',system-ui,sans-serif\">LoRaWAN<\/text>\n    <circle cx=\"130\" cy=\"0\" r=\"5\" fill=\"#10b981\"\/><text x=\"143\" y=\"4\" fill=\"#475569\" font-size=\"10\" font-family=\"'Segoe UI',system-ui,sans-serif\">MQTT<\/text>\n    <circle cx=\"220\" cy=\"0\" r=\"5\" fill=\"#f59e0b\"\/><text x=\"233\" y=\"4\" fill=\"#475569\" font-size=\"10\" font-family=\"'Segoe UI',system-ui,sans-serif\">M-Bus \/ API<\/text>\n    <circle cx=\"360\" cy=\"0\" r=\"5\" fill=\"#3b82f6\"\/><text x=\"373\" y=\"4\" fill=\"#475569\" font-size=\"10\" font-family=\"'Segoe UI',system-ui,sans-serif\">Enterprise Systems<\/text>\n    <circle cx=\"540\" cy=\"0\" r=\"5\" fill=\"#ef4444\"\/><text x=\"553\" y=\"4\" fill=\"#475569\" font-size=\"10\" font-family=\"'Segoe UI',system-ui,sans-serif\">SCADA \/ PLC<\/text>\n    <circle cx=\"690\" cy=\"0\" r=\"5\" fill=\"#d32f2f\"\/><text x=\"703\" y=\"4\" fill=\"#475569\" font-size=\"10\" font-family=\"'Segoe UI',system-ui,sans-serif\">Node-RED<\/text>\n    <circle cx=\"800\" cy=\"0\" r=\"5\" fill=\"#f97316\"\/><text x=\"813\" y=\"4\" fill=\"#475569\" font-size=\"10\" font-family=\"'Segoe UI',system-ui,sans-serif\">n8n<\/text>\n    <circle cx=\"870\" cy=\"0\" r=\"5\" fill=\"#ca8a04\"\/><text x=\"883\" y=\"4\" fill=\"#475569\" font-size=\"10\" font-family=\"'Segoe UI',system-ui,sans-serif\">Protocol Transform<\/text>\n    <line x1=\"15\" y1=\"22\" x2=\"40\" y2=\"22\" stroke=\"#64748b\" stroke-width=\"1.5\" stroke-dasharray=\"6 4\"\/>\n    <text x=\"48\" y=\"26\" fill=\"#94a3b8\" font-size=\"9\" font-family=\"'Segoe UI',system-ui,sans-serif\">\u2192 Unidirectional data flow<\/text>\n    <line x1=\"250\" y1=\"22\" x2=\"275\" y2=\"22\" stroke=\"#64748b\" stroke-width=\"1.5\"\/>\n    <line x1=\"280\" y1=\"22\" x2=\"305\" y2=\"22\" stroke=\"#64748b\" stroke-width=\"1\" stroke-dasharray=\"6 4\"\/>\n    <text x=\"313\" y=\"26\" fill=\"#94a3b8\" font-size=\"9\" font-family=\"'Segoe UI',system-ui,sans-serif\">\u2194 Bidirectional data flow<\/text>\n    <text x=\"1100\" y=\"4\" fill=\"#94a3b8\" font-size=\"9\" text-anchor=\"end\" font-family=\"'Segoe UI',system-ui,sans-serif\">\u00a9 Nodeledge AB<\/text>\n    <text x=\"1100\" y=\"18\" fill=\"#b0b8c4\" font-size=\"8\" text-anchor=\"end\" font-family=\"'Segoe UI',system-ui,sans-serif\">sensor-online.se<\/text>\n  <\/g>\n\n<\/svg>\n<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e38adf1 elementor-widget elementor-widget-html\" data-id=\"e38adf1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\r\n\r\n<!-- \u2500\u2500 INTRO PARAGRAPH (Focus keyword in first 100 words) \u2500\u2500\u2500\u2500\u2500 -->\r\n<section style=\"max-width:860px;margin:0 auto 56px;\">\r\n  <p style=\"font-size:1.1em;line-height:1.8;color:#334155;\">\r\n    <strong>Sensor-Online\u00ae,<\/strong> is a complete <strong>IoT platform for on-premise installation<\/strong>,\r\n    developed by Nodeledge AB. The platform is deployed directly on your servers \u2014 on-site at your facility,\r\n    in your data center, or in any environment where you need full control over your data.\r\n    Thousands of sensors and gateways around the world are already connected to Sensor-Online,\r\n    sending real-time data for monitoring, alarming, reporting, and automation.\r\n  <\/p>\r\n  <p style=\"font-size:1.1em;line-height:1.8;color:#334155;margin-top:16px;\">\r\n    Whether your devices speak LoRaWAN, MQTT, Modbus TCP, OPC UA, M-Bus, BACnet, or KNX \u2014\r\n    Sensor-Online speaks every protocol. The platform receives data in one format and can\r\n    deliver it in another, acting as the central hub for your entire IoT ecosystem.\r\n  <\/p>\r\n<\/section>\r\n\r\n\r\n<!-- \u2500\u2500 ARCHITECTURE DIAGRAM (embed the animation here) \u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\r\n<section id=\"architecture\" style=\"margin-bottom:64px;\">\r\n  <h2 style=\"font-size:1.8em;font-weight:700;color:#0f172a;text-align:center;margin-bottom:8px;\">Platform Architecture<\/h2>\r\n  <p style=\"text-align:center;color:#64748b;margin-bottom:32px;font-size:1em;\">\r\n    An overview of how Sensor-Online connects to sensors, gateways, and enterprise systems\r\n  <\/p>\r\n\r\n  <!-- PASTE YOUR ANIMATION EMBED (sensor-online-wordpress-embed.html) HERE -->\r\n  <!-- [ARCHITECTURE ANIMATION BLOCK] -->\r\n\r\n<\/section>\r\n\r\n\r\n<!-- \u2500\u2500 HOW DATA FLOWS: THE 5 PATHS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\r\n<section style=\"max-width:960px;margin:0 auto 64px;\">\r\n  <h2 style=\"font-size:1.8em;font-weight:700;color:#0f172a;margin-bottom:8px;\">How Sensor-Online Collects Data<\/h2>\r\n  <p style=\"color:#64748b;font-size:1em;margin-bottom:36px;line-height:1.7;\">\r\n    The platform supports five distinct data paths, covering virtually every industrial\r\n    and commercial IoT protocol in use today.\r\n  <\/p>\r\n\r\n  <!-- Path 1: LoRaWAN -->\r\n  <div style=\"display:flex;gap:24px;align-items:flex-start;margin-bottom:36px;padding:28px;background:#faf5ff;border-left:4px solid #8b5cf6;border-radius:10px;\">\r\n    <div style=\"flex-shrink:0;width:48px;height:48px;background:#8b5cf6;border-radius:12px;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:800;font-size:1.1em;\">1<\/div>\r\n    <div>\r\n      <h3 style=\"margin:0 0 8px;color:#5b21b6;font-size:1.2em;font-weight:700;\">LoRaWAN \u2014 Long-Range Wireless Sensors<\/h3>\r\n      <p style=\"margin:0;color:#374151;line-height:1.7;\">\r\n        LoRaWAN sensors transmit data over the 868 MHz radio band to one or more LoRaWAN gateways.\r\n        The gateway forwards the data to a <strong>LoRa Network Server (LNS)<\/strong>, which decodes the packets\r\n        and routes them to Sensor-Online via a secure webhook. This path is ideal for battery-powered\r\n        sensors deployed across large areas \u2014 industrial facilities, agriculture, smart cities,\r\n        and building automation \u2014 where running cables is impractical.\r\n      <\/p>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- Path 2: MQTT -->\r\n  <div style=\"display:flex;gap:24px;align-items:flex-start;margin-bottom:36px;padding:28px;background:#ecfdf5;border-left:4px solid #10b981;border-radius:10px;\">\r\n    <div style=\"flex-shrink:0;width:48px;height:48px;background:#10b981;border-radius:12px;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:800;font-size:1.1em;\">2<\/div>\r\n    <div>\r\n      <h3 style=\"margin:0 0 8px;color:#047857;font-size:1.2em;font-weight:700;\">MQTT \u2014 Dataloggers &amp; Connected Devices<\/h3>\r\n      <p style=\"margin:0;color:#374151;line-height:1.7;\">\r\n        Dataloggers and smart devices connect via 4G, 5G, NB-IoT, or Wi-Fi and publish sensor\r\n        readings directly to Sensor-Online's <strong>built-in MQTT broker<\/strong>. The platform subscribes to\r\n        relevant topics and stores incoming data in real time. MQTT is a lightweight protocol\r\n        optimized for unreliable networks and low-bandwidth devices, making it the protocol of\r\n        choice for thousands of remote dataloggers in the field.\r\n      <\/p>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- Path 3: M-Bus -->\r\n  <div style=\"display:flex;gap:24px;align-items:flex-start;margin-bottom:36px;padding:28px;background:#fffbeb;border-left:4px solid #f59e0b;border-radius:10px;\">\r\n    <div style=\"flex-shrink:0;width:48px;height:48px;background:#f59e0b;border-radius:12px;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:800;font-size:1.1em;\">3<\/div>\r\n    <div>\r\n      <h3 style=\"margin:0 0 8px;color:#92400e;font-size:1.2em;font-weight:700;\">M-Bus Metering \u2014 Energy, Water &amp; Gas<\/h3>\r\n      <p style=\"margin:0;color:#374151;line-height:1.7;\">\r\n        Consumption meters using the M-Bus protocol send data directly to Sensor-Online through\r\n        dedicated API endpoints \u2014 with manufacturer-specific integrations for\r\n        <strong>Elvaco<\/strong>, <strong>Piigab<\/strong>, and <strong>Mivo<\/strong>. This enables seamless collection of\r\n        energy, water, and gas consumption data from existing metering infrastructure,\r\n        without replacing hardware.\r\n      <\/p>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- Path 4: Enterprise API -->\r\n  <div style=\"display:flex;gap:24px;align-items:flex-start;margin-bottom:36px;padding:28px;background:#eff6ff;border-left:4px solid #3b82f6;border-radius:10px;\">\r\n    <div style=\"flex-shrink:0;width:48px;height:48px;background:#3b82f6;border-radius:12px;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:800;font-size:1.1em;\">4<\/div>\r\n    <div>\r\n      <h3 style=\"margin:0 0 8px;color:#1d4ed8;font-size:1.2em;font-weight:700;\">REST API \u2014 Enterprise System Integration<\/h3>\r\n      <p style=\"margin:0;color:#374151;line-height:1.7;\">\r\n        Enterprise platforms such as <strong>Aweeva<\/strong> and <strong>OSIsoft PI<\/strong> can read and write\r\n        data bidirectionally through Sensor-Online's REST API. This allows existing enterprise\r\n        systems to consume real-time sensor data without architectural changes, and enables\r\n        Sensor-Online to act as a data hub feeding business intelligence and analytics tools.\r\n      <\/p>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- Path 5: SCADA \/ PLC -->\r\n  <div style=\"display:flex;gap:24px;align-items:flex-start;margin-bottom:0;padding:28px;background:#fef2f2;border-left:4px solid #ef4444;border-radius:10px;\">\r\n    <div style=\"flex-shrink:0;width:48px;height:48px;background:#ef4444;border-radius:12px;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:800;font-size:1.1em;\">5<\/div>\r\n    <div>\r\n      <h3 style=\"margin:0 0 8px;color:#b91c1c;font-size:1.2em;font-weight:700;\">SCADA, PLC &amp; Industrial Systems<\/h3>\r\n      <p style=\"margin:0;color:#374151;line-height:1.7;\">\r\n        Industrial control systems \u2014 including SCADA platforms and PLCs \u2014 connect to Sensor-Online\r\n        via <strong>Modbus TCP<\/strong> and <strong>OPC UA<\/strong>. Both protocols support bidirectional communication:\r\n        the platform can read process values from existing control systems and write setpoints\r\n        or commands back, bridging OT and IT in a unified data layer.\r\n      <\/p>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n\r\n<!-- \u2500\u2500 PROTOCOL TRANSFORMATION \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\r\n<section style=\"max-width:960px;margin:0 auto 64px;background:#fefce8;border:1px solid #fde68a;border-radius:12px;padding:36px 40px;\">\r\n  <h2 style=\"font-size:1.6em;font-weight:700;color:#854d0e;margin:0 0 12px;\">Protocol Transformation<\/h2>\r\n  <p style=\"color:#78350f;line-height:1.7;font-size:1em;margin:0 0 20px;\">\r\n    One of Sensor-Online's most powerful capabilities is <strong>protocol transformation<\/strong> \u2014\r\n    the ability to receive data on one protocol and deliver it on a completely different one.\r\n    A LoRaWAN sensor reading can be published as an OPC UA node. A Modbus register value\r\n    can be forwarded over MQTT. A KNX building automation event can trigger a REST API call.\r\n  <\/p>\r\n  <p style=\"color:#78350f;line-height:1.7;font-size:1em;margin:0 0 24px;\">\r\n    This makes Sensor-Online a true <strong>protocol gateway<\/strong> for mixed-protocol environments \u2014\r\n    essential in industries where legacy systems, modern IoT devices, and enterprise software\r\n    must coexist.\r\n  <\/p>\r\n  <div style=\"display:flex;flex-wrap:wrap;gap:10px;\">\r\n    <span style=\"background:#faf5ff;border:1px solid #8b5cf6;color:#6d28d9;padding:6px 16px;border-radius:20px;font-size:0.9em;font-weight:600;\">LoRaWAN<\/span>\r\n    <span style=\"background:#eff6ff;border:1px solid #3b82f6;color:#1d4ed8;padding:6px 16px;border-radius:20px;font-size:0.9em;font-weight:600;\">BACnet<\/span>\r\n    <span style=\"background:#fef2f2;border:1px solid #ef4444;color:#b91c1c;padding:6px 16px;border-radius:20px;font-size:0.9em;font-weight:600;\">KNX<\/span>\r\n    <span style=\"background:#ecfdf5;border:1px solid #10b981;color:#047857;padding:6px 16px;border-radius:20px;font-size:0.9em;font-weight:600;\">Modbus TCP<\/span>\r\n    <span style=\"background:#fff7ed;border:1px solid #f97316;color:#c2410c;padding:6px 16px;border-radius:20px;font-size:0.9em;font-weight:600;\">OPC UA<\/span>\r\n    <span style=\"background:#ecfdf5;border:1px solid #10b981;color:#047857;padding:6px 16px;border-radius:20px;font-size:0.9em;font-weight:600;\">MQTT<\/span>\r\n  <\/div>\r\n<\/section>\r\n\r\n\r\n<!-- \u2500\u2500 AUTOMATION: NODE-RED & n8n \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\r\n<section style=\"max-width:960px;margin:0 auto 64px;\">\r\n  <h2 style=\"font-size:1.8em;font-weight:700;color:#0f172a;margin-bottom:12px;\">Automation with Node-RED and n8n<\/h2>\r\n  <p style=\"color:#475569;line-height:1.7;font-size:1em;margin-bottom:28px;\">\r\n    Sensor-Online integrates natively with <strong>Node-RED<\/strong> and <strong>n8n<\/strong> \u2014 two leading\r\n    open-source workflow automation platforms. Both tools connect to Sensor-Online's\r\n    REST API and built-in MQTT broker, enabling complex automation flows without custom code.\r\n  <\/p>\r\n  <div style=\"display:grid;grid-template-columns:1fr 1fr;gap:24px;\">\r\n    <div style=\"padding:28px;background:#fff5f5;border:1px solid #fca5a5;border-radius:12px;\">\r\n      <div style=\"display:flex;align-items:center;gap:12px;margin-bottom:12px;\">\r\n        <!-- Node-RED icon approximation -->\r\n        <div style=\"width:40px;height:40px;background:#d32f2f;border-radius:10px;display:flex;align-items:center;justify-content:center;\">\r\n          <svg width=\"24\" height=\"18\" viewBox=\"0 0 46 24\"><rect x=\"0\" y=\"6\" width=\"20\" height=\"12\" rx=\"6\" fill=\"#fff\" opacity=\"0.9\"\/><rect x=\"26\" y=\"2\" width=\"20\" height=\"12\" rx=\"6\" fill=\"#fff\" opacity=\"0.7\"\/><rect x=\"26\" y=\"16\" width=\"20\" height=\"12\" rx=\"6\" fill=\"#fff\" opacity=\"0.7\"\/><line x1=\"20\" y1=\"12\" x2=\"26\" y2=\"8\" stroke=\"#fff\" stroke-width=\"2\"\/><line x1=\"20\" y1=\"12\" x2=\"26\" y2=\"22\" stroke=\"#fff\" stroke-width=\"2\"\/><\/svg>\r\n        <\/div>\r\n        <h3 style=\"margin:0;font-size:1.15em;font-weight:700;color:#b91c1c;\">Node-RED<\/h3>\r\n      <\/div>\r\n      <p style=\"margin:0;color:#374151;line-height:1.7;font-size:0.95em;\">\r\n        Build visual flow-based automations: subscribe to MQTT topics, transform payloads,\r\n        trigger alarms, and push data to third-party systems \u2014 all with a drag-and-drop editor.\r\n        Node-RED runs alongside Sensor-Online and reads sensor data in real time.\r\n      <\/p>\r\n    <\/div>\r\n    <div style=\"padding:28px;background:#fff7ed;border:1px solid #fed7aa;border-radius:12px;\">\r\n      <div style=\"display:flex;align-items:center;gap:12px;margin-bottom:12px;\">\r\n        <!-- n8n icon approximation -->\r\n        <div style=\"width:40px;height:40px;background:#f97316;border-radius:10px;display:flex;align-items:center;justify-content:center;\">\r\n          <svg width=\"24\" height=\"20\" viewBox=\"0 0 58 28\"><rect x=\"0\" y=\"7\" width=\"14\" height=\"14\" rx=\"4\" fill=\"#fff\" opacity=\"0.9\"\/><rect x=\"22\" y=\"0\" width=\"14\" height=\"14\" rx=\"4\" fill=\"#fff\" opacity=\"0.7\"\/><rect x=\"22\" y=\"14\" width=\"14\" height=\"14\" rx=\"4\" fill=\"#fff\" opacity=\"0.7\"\/><rect x=\"44\" y=\"7\" width=\"14\" height=\"14\" rx=\"4\" fill=\"#fff\" opacity=\"0.9\"\/><line x1=\"14\" y1=\"14\" x2=\"22\" y2=\"7\" stroke=\"#fff\" stroke-width=\"2\"\/><line x1=\"14\" y1=\"14\" x2=\"22\" y2=\"21\" stroke=\"#fff\" stroke-width=\"2\"\/><line x1=\"36\" y1=\"7\" x2=\"44\" y2=\"14\" stroke=\"#fff\" stroke-width=\"2\"\/><line x1=\"36\" y1=\"21\" x2=\"44\" y2=\"14\" stroke=\"#fff\" stroke-width=\"2\"\/><\/svg>\r\n        <\/div>\r\n        <h3 style=\"margin:0;font-size:1.15em;font-weight:700;color:#c2410c;\">n8n<\/h3>\r\n      <\/div>\r\n      <p style=\"margin:0;color:#374151;line-height:1.7;font-size:0.95em;\">\r\n        Connect Sensor-Online data to 400+ external services using n8n's workflow engine.\r\n        Trigger Slack notifications when alarms fire, create tickets in your helpdesk system,\r\n        or push hourly reports to a database \u2014 all orchestrated from sensor readings.\r\n      <\/p>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n\r\n<!-- \u2500\u2500 PLATFORM FEATURES \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\r\n<section style=\"max-width:960px;margin:0 auto 64px;\">\r\n  <h2 style=\"font-size:1.8em;font-weight:700;color:#0f172a;margin-bottom:8px;\">Core Platform Features<\/h2>\r\n  <p style=\"color:#64748b;font-size:1em;margin-bottom:36px;\">Everything you need to run a complete IoT operation \u2014 built in.<\/p>\r\n\r\n  <div style=\"display:grid;grid-template-columns:1fr 1fr 1fr;gap:20px;\">\r\n\r\n    <div style=\"padding:24px;background:#f0f9ff;border:1px solid #bae6fd;border-radius:10px;\">\r\n      <div style=\"font-size:1.8em;margin-bottom:10px;\">\ud83d\udcca<\/div>\r\n      <h3 style=\"margin:0 0 8px;font-size:1.05em;font-weight:700;color:#0c4a6e;\">Data Storage<\/h3>\r\n      <p style=\"margin:0;font-size:0.9em;color:#334155;line-height:1.6;\">Time-series storage optimized for high-frequency sensor data. Retain years of historical measurements and query them instantly.<\/p>\r\n    <\/div>\r\n\r\n    <div style=\"padding:24px;background:#f0f9ff;border:1px solid #bae6fd;border-radius:10px;\">\r\n      <div style=\"font-size:1.8em;margin-bottom:10px;\">\ud83d\udcc8<\/div>\r\n      <h3 style=\"margin:0 0 8px;font-size:1.05em;font-weight:700;color:#0c4a6e;\">Visualization &amp; Dashboards<\/h3>\r\n      <p style=\"margin:0;font-size:0.9em;color:#334155;line-height:1.6;\">Configurable dashboards with real-time charts, gauges, maps, and tables. Share views with operators, managers, or customers.<\/p>\r\n    <\/div>\r\n\r\n    <div style=\"padding:24px;background:#f0f9ff;border:1px solid #bae6fd;border-radius:10px;\">\r\n      <div style=\"font-size:1.8em;margin-bottom:10px;\">\ud83d\udd14<\/div>\r\n      <h3 style=\"margin:0 0 8px;font-size:1.05em;font-weight:700;color:#0c4a6e;\">Alarm Management<\/h3>\r\n      <p style=\"margin:0;font-size:0.9em;color:#334155;line-height:1.6;\">Rule-based alarms with multi-channel notifications \u2014 email, SMS, webhook, and MQTT. Escalation rules and acknowledgment workflows included.<\/p>\r\n    <\/div>\r\n\r\n    <div style=\"padding:24px;background:#f0f9ff;border:1px solid #bae6fd;border-radius:10px;\">\r\n      <div style=\"font-size:1.8em;margin-bottom:10px;\">\ud83d\udccb<\/div>\r\n      <h3 style=\"margin:0 0 8px;font-size:1.05em;font-weight:700;color:#0c4a6e;\">Reporting<\/h3>\r\n      <p style=\"margin:0;font-size:0.9em;color:#334155;line-height:1.6;\">Scheduled reports delivered automatically to stakeholders. Export in PDF, Excel, or CSV. Ideal for energy reporting and compliance.<\/p>\r\n    <\/div>\r\n\r\n    <div style=\"padding:24px;background:#f0f9ff;border:1px solid #bae6fd;border-radius:10px;\">\r\n      <div style=\"font-size:1.8em;margin-bottom:10px;\">\u26a1<\/div>\r\n      <h3 style=\"margin:0 0 8px;font-size:1.05em;font-weight:700;color:#0c4a6e;\">Realtime Formulas<\/h3>\r\n      <p style=\"margin:0;font-size:0.9em;color:#334155;line-height:1.6;\">Calculate virtual sensors, derived metrics, and KPIs in real time \u2014 across multiple physical sensors and channels. No scripting required.<\/p>\r\n    <\/div>\r\n\r\n    <div style=\"padding:24px;background:#f0f9ff;border:1px solid #bae6fd;border-radius:10px;\">\r\n      <div style=\"font-size:1.8em;margin-bottom:10px;\">\ud83e\udd16<\/div>\r\n      <h3 style=\"margin:0 0 8px;font-size:1.05em;font-weight:700;color:#0c4a6e;\">Script Engine<\/h3>\r\n      <p style=\"margin:0;font-size:0.9em;color:#334155;line-height:1.6;\">Write custom logic in a built-in scripting environment. Automate complex decisions, data transformations, and integrations beyond standard rules.<\/p>\r\n    <\/div>\r\n\r\n    <div style=\"padding:24px;background:#f0f9ff;border:1px solid #bae6fd;border-radius:10px;\">\r\n      <div style=\"font-size:1.8em;margin-bottom:10px;\">\ud83d\udd0c<\/div>\r\n      <h3 style=\"margin:0 0 8px;font-size:1.05em;font-weight:700;color:#0c4a6e;\">REST API<\/h3>\r\n      <p style=\"margin:0;font-size:0.9em;color:#334155;line-height:1.6;\">Full REST API for read and write access to all platform data. Integrate Sensor-Online with ERP, BI, CMMS, and any other enterprise system.<\/p>\r\n    <\/div>\r\n\r\n    <div style=\"padding:24px;background:#f0f9ff;border:1px solid #bae6fd;border-radius:10px;\">\r\n      <div style=\"font-size:1.8em;margin-bottom:10px;\">\ud83c\udfe2<\/div>\r\n      <h3 style=\"margin:0 0 8px;font-size:1.05em;font-weight:700;color:#0c4a6e;\">Multi-Tenant Architecture<\/h3>\r\n      <p style=\"margin:0;font-size:0.9em;color:#334155;line-height:1.6;\">Serve multiple customers or departments from a single installation. Each tenant has isolated data, users, dashboards, and permissions.<\/p>\r\n    <\/div>\r\n\r\n    <div style=\"padding:24px;background:#f0f9ff;border:1px solid #bae6fd;border-radius:10px;\">\r\n      <div style=\"font-size:1.8em;margin-bottom:10px;\">\ud83d\udd04<\/div>\r\n      <h3 style=\"margin:0 0 8px;font-size:1.05em;font-weight:700;color:#0c4a6e;\">Protocol Transformation<\/h3>\r\n      <p style=\"margin:0;font-size:0.9em;color:#334155;line-height:1.6;\">Receive data on LoRaWAN, translate to OPC UA. Read Modbus, publish via MQTT. Bridge any protocol combination in your environment.<\/p>\r\n    <\/div>\r\n\r\n  <\/div>\r\n<\/section>\r\n\r\n\r\n<!-- \u2500\u2500 ON-PREMISE BENEFITS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\r\n<section style=\"max-width:960px;margin:0 auto 64px;\">\r\n  <h2 style=\"font-size:1.8em;font-weight:700;color:#0f172a;margin-bottom:8px;\">Why Choose an On-Premise IoT Platform?<\/h2>\r\n  <p style=\"color:#64748b;font-size:1em;line-height:1.7;margin-bottom:36px;\">\r\n    While cloud-based IoT platforms offer convenience, <strong>on-premise installation<\/strong> is the\r\n    preferred choice for organizations with strict requirements around data sovereignty,\r\n    security, latency, and long-term cost control. Here is why Sensor-Online's on-premise\r\n    model is the right choice for enterprise and industrial environments.\r\n  <\/p>\r\n\r\n  <!-- Benefit 1: Data Sovereignty -->\r\n  <div style=\"display:flex;gap:24px;padding:28px 0;border-bottom:1px solid #e2e8f0;\">\r\n    <div style=\"flex-shrink:0;font-size:2em;\">\ud83d\udd12<\/div>\r\n    <div>\r\n      <h3 style=\"margin:0 0 8px;font-size:1.2em;font-weight:700;color:#0f172a;\">Full Data Sovereignty &amp; Ownership<\/h3>\r\n      <p style=\"margin:0;color:#374151;line-height:1.7;\">\r\n        When Sensor-Online is installed on-premise, <strong>your data never leaves your infrastructure<\/strong>.\r\n        There is no cloud provider with access to your sensor readings, production data,\r\n        or energy consumption figures. This is essential for industries operating under\r\n        GDPR, NIS2, ISO 27001, or sector-specific regulations such as energy, healthcare,\r\n        and critical infrastructure. You own your data \u2014 completely.\r\n      <\/p>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- Benefit 2: No Internet Dependency -->\r\n  <div style=\"display:flex;gap:24px;padding:28px 0;border-bottom:1px solid #e2e8f0;\">\r\n    <div style=\"flex-shrink:0;font-size:2em;\">\ud83c\udf10<\/div>\r\n    <div>\r\n      <h3 style=\"margin:0 0 8px;font-size:1.2em;font-weight:700;color:#0f172a;\">Zero Internet Dependency \u2014 100% Local Operation<\/h3>\r\n      <p style=\"margin:0;color:#374151;line-height:1.7;\">\r\n        Cloud platforms fail when the internet fails. An on-premise IoT platform continues\r\n        to collect, store, alarm, and visualize data even if your internet connection is\r\n        down for hours or days. For manufacturing plants, energy facilities, and remote\r\n        installations, <strong>local operation is not optional \u2014 it is a requirement<\/strong>.\r\n        Sensor-Online is built around this principle.\r\n      <\/p>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- Benefit 3: Security -->\r\n  <div style=\"display:flex;gap:24px;padding:28px 0;border-bottom:1px solid #e2e8f0;\">\r\n    <div style=\"flex-shrink:0;font-size:2em;\">\ud83d\udee1\ufe0f<\/div>\r\n    <div>\r\n      <h3 style=\"margin:0 0 8px;font-size:1.2em;font-weight:700;color:#0f172a;\">Enterprise-Grade Security on Your Terms<\/h3>\r\n      <p style=\"margin:0;color:#374151;line-height:1.7;\">\r\n        With on-premise deployment, your security team controls every layer: network access,\r\n        firewall rules, user authentication, TLS certificates, and audit logs.\r\n        You are not sharing a cloud tenant with other customers. You are not exposed\r\n        to the attack surface of a public SaaS platform. <strong>Sensor-Online can operate\r\n        in fully air-gapped networks<\/strong>, meeting the strictest OT security requirements.\r\n      <\/p>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- Benefit 4: Low Latency -->\r\n  <div style=\"display:flex;gap:24px;padding:28px 0;border-bottom:1px solid #e2e8f0;\">\r\n    <div style=\"flex-shrink:0;font-size:2em;\">\u26a1<\/div>\r\n    <div>\r\n      <h3 style=\"margin:0 0 8px;font-size:1.2em;font-weight:700;color:#0f172a;\">Ultra-Low Latency for Real-Time Control<\/h3>\r\n      <p style=\"margin:0;color:#374151;line-height:1.7;\">\r\n        Cloud round-trips add latency \u2014 typically 50\u2013200 ms or more. When sensor data\r\n        must drive real-time decisions \u2014 safety shutdowns, process adjustments, alarm\r\n        escalations \u2014 every millisecond counts. On-premise processing keeps latency\r\n        in the single-digit millisecond range, enabling <strong>true real-time monitoring\r\n        and closed-loop control<\/strong> that cloud platforms simply cannot match.\r\n      <\/p>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- Benefit 5: Cost Predictability -->\r\n  <div style=\"display:flex;gap:24px;padding:28px 0;border-bottom:1px solid #e2e8f0;\">\r\n    <div style=\"flex-shrink:0;font-size:2em;\">\ud83d\udcb0<\/div>\r\n    <div>\r\n      <h3 style=\"margin:0 0 8px;font-size:1.2em;font-weight:700;color:#0f172a;\">Predictable Total Cost of Ownership<\/h3>\r\n      <p style=\"margin:0;color:#374151;line-height:1.7;\">\r\n        Cloud IoT platforms charge per device, per message, or per GB \u2014 costs that scale\r\n        unpredictably as your sensor estate grows. With Sensor-Online on-premise,\r\n        you pay a <strong>fixed license cost<\/strong>, regardless of how many sensors, datapoints,\r\n        or messages flow through the system. For organizations with hundreds or thousands\r\n        of sensors, the TCO advantage of on-premise is substantial over a 3\u20135 year horizon.\r\n      <\/p>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- Benefit 6: Customization -->\r\n  <div style=\"display:flex;gap:24px;padding:28px 0;border-bottom:1px solid #e2e8f0;\">\r\n    <div style=\"flex-shrink:0;font-size:2em;\">\u2699\ufe0f<\/div>\r\n    <div>\r\n      <h3 style=\"margin:0 0 8px;font-size:1.2em;font-weight:700;color:#0f172a;\">Full Customization &amp; Integration Freedom<\/h3>\r\n      <p style=\"margin:0;color:#374151;line-height:1.7;\">\r\n        On-premise deployment gives your team direct access to integrate Sensor-Online\r\n        with your existing IT landscape \u2014 Active Directory, SAP, custom databases,\r\n        OPC UA servers, and legacy SCADA systems \u2014 without going through a cloud\r\n        vendor's API rate limits or data egress fees.\r\n        <strong>Your integration, your rules.<\/strong>\r\n      <\/p>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- Benefit 7: Multi-tenant for resellers -->\r\n  <div style=\"display:flex;gap:24px;padding:28px 0;\">\r\n    <div style=\"flex-shrink:0;font-size:2em;\">\ud83c\udfd7\ufe0f<\/div>\r\n    <div>\r\n      <h3 style=\"margin:0 0 8px;font-size:1.2em;font-weight:700;color:#0f172a;\">Multi-Tenant \u2014 Perfect for Managed Service Providers<\/h3>\r\n      <p style=\"margin:0;color:#374151;line-height:1.7;\">\r\n        Sensor-Online's multi-tenant architecture allows system integrators and managed\r\n        service providers to run a <strong>single on-premise installation<\/strong> and serve\r\n        multiple end customers from it \u2014 each with their own isolated environment,\r\n        dashboards, alarms, and user accounts. This dramatically reduces the cost of\r\n        delivering IoT-as-a-service from your own infrastructure.\r\n      <\/p>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n\r\n<!-- \u2500\u2500 USE CASES \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\r\n<section style=\"max-width:960px;margin:0 auto 64px;background:#f8fafc;border-radius:12px;padding:40px;\">\r\n  <h2 style=\"font-size:1.6em;font-weight:700;color:#0f172a;margin:0 0 8px;\">Industries &amp; Use Cases<\/h2>\r\n  <p style=\"color:#64748b;margin:0 0 28px;line-height:1.7;\">\r\n    Sensor-Online is deployed across a broad range of industries where data ownership,\r\n    reliability, and protocol flexibility are non-negotiable.\r\n  <\/p>\r\n  <div style=\"display:grid;grid-template-columns:1fr 1fr;gap:16px;\">\r\n    <div style=\"background:#fff;padding:18px 20px;border-radius:8px;border:1px solid #e2e8f0;\">\r\n      <strong style=\"color:#0369a1;\">\ud83c\udfed Manufacturing &amp; Industry<\/strong>\r\n      <p style=\"margin:8px 0 0;font-size:0.9em;color:#475569;\">OEE monitoring, energy management, predictive maintenance, production KPIs via Modbus and OPC UA.<\/p>\r\n    <\/div>\r\n    <div style=\"background:#fff;padding:18px 20px;border-radius:8px;border:1px solid #e2e8f0;\">\r\n      <strong style=\"color:#0369a1;\">\ud83c\udfe2 Smart Buildings &amp; Real Estate<\/strong>\r\n      <p style=\"margin:8px 0 0;font-size:0.9em;color:#475569;\">HVAC, lighting, energy metering, and indoor climate monitoring via KNX, BACnet, and M-Bus.<\/p>\r\n    <\/div>\r\n    <div style=\"background:#fff;padding:18px 20px;border-radius:8px;border:1px solid #e2e8f0;\">\r\n      <strong style=\"color:#0369a1;\">\u26a1 Energy &amp; Utilities<\/strong>\r\n      <p style=\"margin:8px 0 0;font-size:0.9em;color:#475569;\">Grid monitoring, substation telemetry, renewable energy production, and consumption reporting.<\/p>\r\n    <\/div>\r\n    <div style=\"background:#fff;padding:18px 20px;border-radius:8px;border:1px solid #e2e8f0;\">\r\n      <strong style=\"color:#0369a1;\">\ud83c\udf3f Agriculture &amp; Environment<\/strong>\r\n      <p style=\"margin:8px 0 0;font-size:0.9em;color:#475569;\">Soil sensors, weather stations, irrigation control, and air quality monitoring via LoRaWAN.<\/p>\r\n    <\/div>\r\n    <div style=\"background:#fff;padding:18px 20px;border-radius:8px;border:1px solid #e2e8f0;\">\r\n      <strong style=\"color:#0369a1;\">\ud83c\udfe5 Healthcare &amp; Pharma<\/strong>\r\n      <p style=\"margin:8px 0 0;font-size:0.9em;color:#475569;\">Temperature monitoring for cold chains, cleanroom conditions, and equipment status \u2014 with full audit trails.<\/p>\r\n    <\/div>\r\n    <div style=\"background:#fff;padding:18px 20px;border-radius:8px;border:1px solid #e2e8f0;\">\r\n      <strong style=\"color:#0369a1;\">\ud83d\udeb0 Water &amp; Wastewater<\/strong>\r\n      <p style=\"margin:8px 0 0;font-size:0.9em;color:#475569;\">Pump stations, flow meters, level sensors, and water quality monitoring with SCADA integration.<\/p>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n\r\n<!-- \u2500\u2500 COMPARISON TABLE \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\r\n<section style=\"max-width:960px;margin:0 auto 64px;\">\r\n  <h2 style=\"font-size:1.8em;font-weight:700;color:#0f172a;margin-bottom:8px;\">On-Premise vs. Cloud IoT Platforms<\/h2>\r\n  <p style=\"color:#64748b;margin-bottom:28px;\">A direct comparison of the key factors that matter for enterprise IoT deployments.<\/p>\r\n  <div style=\"overflow-x:auto;\">\r\n  <table style=\"width:100%;border-collapse:collapse;font-size:0.95em;\">\r\n    <thead>\r\n      <tr style=\"background:#0284c7;color:#fff;\">\r\n        <th style=\"padding:14px 18px;text-align:left;border-radius:8px 0 0 0;\">Factor<\/th>\r\n        <th style=\"padding:14px 18px;text-align:center;\">Sensor-Online On-Premise<\/th>\r\n        <th style=\"padding:14px 18px;text-align:center;border-radius:0 8px 0 0;\">Typical Cloud Platform<\/th>\r\n      <\/tr>\r\n    <\/thead>\r\n    <tbody>\r\n      <tr style=\"background:#f0f9ff;\">\r\n        <td style=\"padding:12px 18px;font-weight:600;color:#0f172a;border-bottom:1px solid #e2e8f0;\">Data Ownership<\/td>\r\n        <td style=\"padding:12px 18px;text-align:center;color:#059669;border-bottom:1px solid #e2e8f0;\">\u2705 100% \u2014 your infrastructure<\/td>\r\n        <td style=\"padding:12px 18px;text-align:center;color:#dc2626;border-bottom:1px solid #e2e8f0;\">\u26a0\ufe0f Vendor-hosted, shared environment<\/td>\r\n      <\/tr>\r\n      <tr>\r\n        <td style=\"padding:12px 18px;font-weight:600;color:#0f172a;border-bottom:1px solid #e2e8f0;\">Internet Dependency<\/td>\r\n        <td style=\"padding:12px 18px;text-align:center;color:#059669;border-bottom:1px solid #e2e8f0;\">\u2705 None \u2014 fully local<\/td>\r\n        <td style=\"padding:12px 18px;text-align:center;color:#dc2626;border-bottom:1px solid #e2e8f0;\">\u274c Required at all times<\/td>\r\n      <\/tr>\r\n      <tr style=\"background:#f0f9ff;\">\r\n        <td style=\"padding:12px 18px;font-weight:600;color:#0f172a;border-bottom:1px solid #e2e8f0;\">Latency<\/td>\r\n        <td style=\"padding:12px 18px;text-align:center;color:#059669;border-bottom:1px solid #e2e8f0;\">\u2705 &lt;10 ms (local network)<\/td>\r\n        <td style=\"padding:12px 18px;text-align:center;color:#dc2626;border-bottom:1px solid #e2e8f0;\">\u26a0\ufe0f 50\u2013300 ms (internet round-trip)<\/td>\r\n      <\/tr>\r\n      <tr>\r\n        <td style=\"padding:12px 18px;font-weight:600;color:#0f172a;border-bottom:1px solid #e2e8f0;\">Cost Model<\/td>\r\n        <td style=\"padding:12px 18px;text-align:center;color:#059669;border-bottom:1px solid #e2e8f0;\">\u2705 Fixed license \u2014 unlimited sensors<\/td>\r\n        <td style=\"padding:12px 18px;text-align:center;color:#dc2626;border-bottom:1px solid #e2e8f0;\">\u26a0\ufe0f Per device \/ per message \/ per GB<\/td>\r\n      <\/tr>\r\n      <tr style=\"background:#f0f9ff;\">\r\n        <td style=\"padding:12px 18px;font-weight:600;color:#0f172a;border-bottom:1px solid #e2e8f0;\">Security Perimeter<\/td>\r\n        <td style=\"padding:12px 18px;text-align:center;color:#059669;border-bottom:1px solid #e2e8f0;\">\u2705 Your firewall, air-gap capable<\/td>\r\n        <td style=\"padding:12px 18px;text-align:center;color:#dc2626;border-bottom:1px solid #e2e8f0;\">\u26a0\ufe0f Shared cloud, public endpoints<\/td>\r\n      <\/tr>\r\n      <tr>\r\n        <td style=\"padding:12px 18px;font-weight:600;color:#0f172a;border-bottom:1px solid #e2e8f0;\">Protocol Support<\/td>\r\n        <td style=\"padding:12px 18px;text-align:center;color:#059669;border-bottom:1px solid #e2e8f0;\">\u2705 LoRaWAN, MQTT, Modbus, OPC UA, M-Bus, KNX, BACnet<\/td>\r\n        <td style=\"padding:12px 18px;text-align:center;color:#dc2626;border-bottom:1px solid #e2e8f0;\">\u26a0\ufe0f Usually MQTT &amp; HTTP only<\/td>\r\n      <\/tr>\r\n      <tr style=\"background:#f0f9ff;\">\r\n        <td style=\"padding:12px 18px;font-weight:600;color:#0f172a;\">Multi-Tenant<\/td>\r\n        <td style=\"padding:12px 18px;text-align:center;color:#059669;\">\u2705 Built-in \u2014 serve multiple customers<\/td>\r\n        <td style=\"padding:12px 18px;text-align:center;color:#475569;\">\u26a0\ufe0f Varies by vendor<\/td>\r\n      <\/tr>\r\n    <\/tbody>\r\n  <\/table>\r\n  <\/div>\r\n<\/section>\r\n\r\n\r\n<!-- \u2500\u2500 CTA \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\r\n<section style=\"max-width:860px;margin:0 auto 48px;text-align:center;background:linear-gradient(135deg,#0369a1,#0284c7);border-radius:16px;padding:56px 40px;color:#fff;\">\r\n  <h2 style=\"font-size:2em;font-weight:800;margin:0 0 16px;\">Ready to Take Control of Your IoT Data?<\/h2>\r\n  <p style=\"font-size:1.1em;color:#bae6fd;margin:0 0 32px;line-height:1.7;max-width:580px;margin-left:auto;margin-right:auto;\">\r\n    Talk to us about deploying Sensor-Online.se on your infrastructure.\r\n    We have installations running worldwide \u2014 from single facilities to\r\n    large multi-site enterprise deployments.\r\n  <\/p>\r\n  <a href=\"\/contact\" style=\"display:inline-block;background:#fff;color:#0284c7;padding:16px 36px;border-radius:10px;font-weight:700;font-size:1.05em;text-decoration:none;margin-right:12px;\">Contact Us<\/a>\r\n  <a href=\"\/about\" style=\"display:inline-block;background:transparent;color:#bae6fd;padding:16px 36px;border-radius:10px;font-weight:600;font-size:1.05em;text-decoration:none;border:1px solid rgba(255,255,255,0.3);\">About Nodeledge AB<\/a>\r\n<\/section>\r\n\r\n\r\n<!-- \u2500\u2500 FAQ (for rich snippets \/ schema) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 -->\r\n<section style=\"max-width:860px;margin:0 auto 64px;\" itemscope itemtype=\"https:\/\/schema.org\/FAQPage\">\r\n  <h2 style=\"font-size:1.6em;font-weight:700;color:#0f172a;margin-bottom:28px;\">Frequently Asked Questions<\/h2>\r\n\r\n  <div itemscope itemprop=\"mainEntity\" itemtype=\"https:\/\/schema.org\/Question\" style=\"border-bottom:1px solid #e2e8f0;padding:20px 0;\">\r\n    <h3 itemprop=\"name\" style=\"margin:0 0 10px;font-size:1.05em;font-weight:700;color:#0f172a;\">What is an on-premise IoT platform?<\/h3>\r\n    <div itemscope itemprop=\"acceptedAnswer\" itemtype=\"https:\/\/schema.org\/Answer\">\r\n      <p itemprop=\"text\" style=\"margin:0;color:#374151;line-height:1.7;\">An on-premise IoT platform is software installed and running on your own servers \u2014 inside your facility, data center, or private network \u2014 rather than on a cloud provider's infrastructure. Sensor-Online.se is an on-premise IoT platform that gives organizations full control over their sensor data, without cloud dependency.<\/p>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div itemscope itemprop=\"mainEntity\" itemtype=\"https:\/\/schema.org\/Question\" style=\"border-bottom:1px solid #e2e8f0;padding:20px 0;\">\r\n    <h3 itemprop=\"name\" style=\"margin:0 0 10px;font-size:1.05em;font-weight:700;color:#0f172a;\">Which protocols does Sensor-Online support?<\/h3>\r\n    <div itemscope itemprop=\"acceptedAnswer\" itemtype=\"https:\/\/schema.org\/Answer\">\r\n      <p itemprop=\"text\" style=\"margin:0;color:#374151;line-height:1.7;\">Sensor-Online supports LoRaWAN, MQTT, Modbus TCP, OPC UA, M-Bus, BACnet, and KNX \u2014 both for data ingestion and for protocol transformation. The platform can receive data on one protocol and forward it on another, acting as a universal IoT protocol gateway.<\/p>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div itemscope itemprop=\"mainEntity\" itemtype=\"https:\/\/schema.org\/Question\" style=\"border-bottom:1px solid #e2e8f0;padding:20px 0;\">\r\n    <h3 itemprop=\"name\" style=\"margin:0 0 10px;font-size:1.05em;font-weight:700;color:#0f172a;\">How many sensors can Sensor-Online handle?<\/h3>\r\n    <div itemscope itemprop=\"acceptedAnswer\" itemtype=\"https:\/\/schema.org\/Answer\">\r\n      <p itemprop=\"text\" style=\"margin:0;color:#374151;line-height:1.7;\">Sensor-Online is designed for enterprise scale. Installations with thousands of sensors and gateways are operational worldwide. The platform uses a fixed licensing model \u2014 there is no per-device or per-message charge, so cost does not grow with your sensor estate.<\/p>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div itemscope itemprop=\"mainEntity\" itemtype=\"https:\/\/schema.org\/Question\" style=\"border-bottom:1px solid #e2e8f0;padding:20px 0;\">\r\n    <h3 itemprop=\"name\" style=\"margin:0 0 10px;font-size:1.05em;font-weight:700;color:#0f172a;\">Can Sensor-Online run without an internet connection?<\/h3>\r\n    <div itemscope itemprop=\"acceptedAnswer\" itemtype=\"https:\/\/schema.org\/Answer\">\r\n      <p itemprop=\"text\" style=\"margin:0;color:#374151;line-height:1.7;\">Yes. Because Sensor-Online is installed on-premise, it operates entirely on your local network. Data collection, storage, alarming, visualization, and reporting all continue to function even if your internet connection is unavailable. This makes it suitable for critical infrastructure and remote locations.<\/p>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div itemscope itemprop=\"mainEntity\" itemtype=\"https:\/\/schema.org\/Question\" style=\"padding:20px 0;\">\r\n    <h3 itemprop=\"name\" style=\"margin:0 0 10px;font-size:1.05em;font-weight:700;color:#0f172a;\">Who develops and supports Sensor-Online.se?<\/h3>\r\n    <div itemscope itemprop=\"acceptedAnswer\" itemtype=\"https:\/\/schema.org\/Answer\">\r\n      <p itemprop=\"text\" style=\"margin:0;color:#374151;line-height:1.7;\">Sensor-Online.se is developed and supported by Nodeledge AB, a Swedish IoT software company. The platform is actively developed, with installations deployed on-premise at customer sites across Europe and globally.<\/p>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- \u2500\u2500 Schema.org SoftwareApplication markup \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\r\n<script type=\"application\/ld+json\">\r\n{\r\n  \"@context\": \"https:\/\/schema.org\",\r\n  \"@type\": \"SoftwareApplication\",\r\n  \"name\": \"Sensor-Online.se\",\r\n  \"applicationCategory\": \"BusinessApplication\",\r\n  \"operatingSystem\": \"Linux, Windows Server\",\r\n  \"description\": \"Enterprise IoT platform for on-premise installation. Supports LoRaWAN, MQTT, Modbus TCP, OPC UA, M-Bus, BACnet and KNX. Features data storage, visualization, alarm management, reporting, REST API, script engine, realtime formulas, multi-tenant architecture, and protocol transformation.\",\r\n  \"offers\": { \"@type\": \"Offer\", \"seller\": { \"@type\": \"Organization\", \"name\": \"Nodeledge AB\", \"url\": \"https:\/\/sensor-online.se\" } },\r\n  \"url\": \"https:\/\/sensor-online.se\"\r\n}\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Sensor-Online\u00ae \u2014 The IoT Platform Built for On-Premise Deployment Collect, visualize, and act on sensor data from thousands of devices \u2014 without cloud dependency. Sensor-Online is an enterprise IoT data platform installed on your own infrastructure, on-premise, anywhere in the world. Sensor-Online.se\u00a0is a complete\u00a0IoT platform for on-premise installation, developed by Nodeledge AB. The platform is&hellip;<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-9259","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>IoT Platform On-Premise | Sensor-Online.se<\/title>\n<meta name=\"description\" content=\"Sensor-Online.se is an enterprise IoT platform installed on-premise worldwide. LoRaWAN, MQTT, M-Bus, SCADA &amp; OPC UA \u2014 with full data ownership.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/sensor-online.se\/sv\/iot-plattform-on-premise-arkitektur\/\" \/>\n<meta property=\"og:locale\" content=\"sv_SE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"IoT Platform On-Premise | Sensor-Online.se\" \/>\n<meta property=\"og:description\" content=\"Sensor-Online.se is an enterprise IoT platform installed on-premise worldwide. LoRaWAN, MQTT, M-Bus, SCADA &amp; OPC UA \u2014 with full data ownership.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/sensor-online.se\/sv\/iot-plattform-on-premise-arkitektur\/\" \/>\n<meta property=\"og:site_name\" content=\"Sensor-Online\u2122 - Versatile IOT-Platform, for all applications\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/profile.php?id=100064148077079\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-01T19:53:34+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Ber\u00e4knad l\u00e4stid\" \/>\n\t<meta name=\"twitter:data1\" content=\"10 minuter\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/sensor-online.se\\\/iot-platform-on-premise-architecture\\\/\",\"url\":\"https:\\\/\\\/sensor-online.se\\\/iot-platform-on-premise-architecture\\\/\",\"name\":\"IoT Platform On-Premise | Sensor-Online.se\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/sensor-online.se\\\/#website\"},\"datePublished\":\"2026-03-01T19:19:05+00:00\",\"dateModified\":\"2026-03-01T19:53:34+00:00\",\"description\":\"Sensor-Online.se is an enterprise IoT platform installed on-premise worldwide. LoRaWAN, MQTT, M-Bus, SCADA & OPC UA \u2014 with full data ownership.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/sensor-online.se\\\/iot-platform-on-premise-architecture\\\/#breadcrumb\"},\"inLanguage\":\"sv-SE\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/sensor-online.se\\\/iot-platform-on-premise-architecture\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/sensor-online.se\\\/iot-platform-on-premise-architecture\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/sensor-online.se\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"iot-platform-on-premise-architecture\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/sensor-online.se\\\/#website\",\"url\":\"https:\\\/\\\/sensor-online.se\\\/\",\"name\":\"Sensor-Online a versatile low code IOT-Platform, for all applications\",\"description\":\"Hardware and network agnostic IOT platform\",\"publisher\":{\"@id\":\"https:\\\/\\\/sensor-online.se\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/sensor-online.se\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"sv-SE\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/sensor-online.se\\\/#organization\",\"name\":\"Sensor-Online\",\"url\":\"https:\\\/\\\/sensor-online.se\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"sv-SE\",\"@id\":\"https:\\\/\\\/sensor-online.se\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/sensor-online.se\\\/wp-content\\\/uploads\\\/2023\\\/03\\\/SO_loggo.jpg\",\"contentUrl\":\"https:\\\/\\\/sensor-online.se\\\/wp-content\\\/uploads\\\/2023\\\/03\\\/SO_loggo.jpg\",\"width\":753,\"height\":258,\"caption\":\"Sensor-Online\"},\"image\":{\"@id\":\"https:\\\/\\\/sensor-online.se\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/profile.php?id=100064148077079\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/sensor-online\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"IoT-plattform On-Premise | Sensor-Online.se","description":"Sensor-Online.se \u00e4r en IoT-plattform f\u00f6r f\u00f6retag som installeras lokalt \u00f6ver hela v\u00e4rlden. LoRaWAN, MQTT, M-Bus, SCADA &amp; OPC UA - med full \u00e4gander\u00e4tt till data.","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:\/\/sensor-online.se\/sv\/iot-plattform-on-premise-arkitektur\/","og_locale":"sv_SE","og_type":"article","og_title":"IoT Platform On-Premise | Sensor-Online.se","og_description":"Sensor-Online.se is an enterprise IoT platform installed on-premise worldwide. LoRaWAN, MQTT, M-Bus, SCADA & OPC UA \u2014 with full data ownership.","og_url":"https:\/\/sensor-online.se\/sv\/iot-plattform-on-premise-arkitektur\/","og_site_name":"Sensor-Online\u2122 - Versatile IOT-Platform, for all applications","article_publisher":"https:\/\/www.facebook.com\/profile.php?id=100064148077079","article_modified_time":"2026-03-01T19:53:34+00:00","twitter_card":"summary_large_image","twitter_misc":{"Ber\u00e4knad l\u00e4stid":"10 minuter"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/sensor-online.se\/iot-platform-on-premise-architecture\/","url":"https:\/\/sensor-online.se\/iot-platform-on-premise-architecture\/","name":"IoT-plattform On-Premise | Sensor-Online.se","isPartOf":{"@id":"https:\/\/sensor-online.se\/#website"},"datePublished":"2026-03-01T19:19:05+00:00","dateModified":"2026-03-01T19:53:34+00:00","description":"Sensor-Online.se \u00e4r en IoT-plattform f\u00f6r f\u00f6retag som installeras lokalt \u00f6ver hela v\u00e4rlden. LoRaWAN, MQTT, M-Bus, SCADA &amp; OPC UA - med full \u00e4gander\u00e4tt till data.","breadcrumb":{"@id":"https:\/\/sensor-online.se\/iot-platform-on-premise-architecture\/#breadcrumb"},"inLanguage":"sv-SE","potentialAction":[{"@type":"ReadAction","target":["https:\/\/sensor-online.se\/iot-platform-on-premise-architecture\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/sensor-online.se\/iot-platform-on-premise-architecture\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/sensor-online.se\/"},{"@type":"ListItem","position":2,"name":"iot-platform-on-premise-architecture"}]},{"@type":"WebSite","@id":"https:\/\/sensor-online.se\/#website","url":"https:\/\/sensor-online.se\/","name":"Sensor-Online - en m\u00e5ngsidig IOT-plattform med l\u00e5g kod f\u00f6r alla till\u00e4mpningar","description":"H\u00e5rdvaru- och n\u00e4tverksagnostisk IOT-plattform","publisher":{"@id":"https:\/\/sensor-online.se\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/sensor-online.se\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"sv-SE"},{"@type":"Organization","@id":"https:\/\/sensor-online.se\/#organization","name":"Sensor-Online","url":"https:\/\/sensor-online.se\/","logo":{"@type":"ImageObject","inLanguage":"sv-SE","@id":"https:\/\/sensor-online.se\/#\/schema\/logo\/image\/","url":"https:\/\/sensor-online.se\/wp-content\/uploads\/2023\/03\/SO_loggo.jpg","contentUrl":"https:\/\/sensor-online.se\/wp-content\/uploads\/2023\/03\/SO_loggo.jpg","width":753,"height":258,"caption":"Sensor-Online"},"image":{"@id":"https:\/\/sensor-online.se\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/profile.php?id=100064148077079","https:\/\/www.linkedin.com\/company\/sensor-online\/"]}]}},"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/sensor-online.se\/sv\/wp-json\/wp\/v2\/pages\/9259","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sensor-online.se\/sv\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/sensor-online.se\/sv\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/sensor-online.se\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sensor-online.se\/sv\/wp-json\/wp\/v2\/comments?post=9259"}],"version-history":[{"count":25,"href":"https:\/\/sensor-online.se\/sv\/wp-json\/wp\/v2\/pages\/9259\/revisions"}],"predecessor-version":[{"id":9285,"href":"https:\/\/sensor-online.se\/sv\/wp-json\/wp\/v2\/pages\/9259\/revisions\/9285"}],"wp:attachment":[{"href":"https:\/\/sensor-online.se\/sv\/wp-json\/wp\/v2\/media?parent=9259"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}