{"id":248,"date":"2026-04-01T19:53:49","date_gmt":"2026-04-01T19:53:49","guid":{"rendered":"https:\/\/www.myuremote.com\/website\/?page_id=248"},"modified":"2026-04-10T15:45:06","modified_gmt":"2026-04-10T15:45:06","slug":"secure-http-https-device-integrations-myuremote","status":"publish","type":"page","link":"https:\/\/www.myuremote.com\/website\/docs\/how-to\/device-database-commands\/secure-http-https-device-integrations-myuremote\/","title":{"rendered":"Secure HTTP \/ HTTPS (TLS) Controller \u2013 MyURemote"},"content":{"rendered":"\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"utf-8\" \/>\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" \/>\n  <title>Secure HTTP \/ HTTPS (TLS) Controller \u2013 MyURemote<\/title>\n  <meta name=\"description\" content=\"Learn how to use the Network HTTPS secure (TLS) Controller in MyURemote and how secure transport differs from plain TCP and HTTP.\" \/>\n  <style>\n    :root {\n      --max: 980px;\n      --bg: #ffffff;\n      --card: #fafafa;\n      --border: #e6e6e6;\n      --text: #111;\n      --muted: #555;\n      --accent: #0f62fe;\n    }\n\n    * { box-sizing: border-box; }\n\n    body {\n      font-family: system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;\n      margin: 0;\n      background: var(--bg);\n      color: var(--text);\n    }\n\n    .wrap {\n      max-width: var(--max);\n      margin: 0 auto;\n      padding: 28px 18px 48px;\n    }\n\n    .card {\n      border: 1px solid var(--border);\n      border-radius: 14px;\n      padding: 18px;\n      margin: 14px 0;\n      background: var(--card);\n    }\n\n    h1 { font-size: clamp(28px, 4vw, 38px); margin: 0 0 10px; }\n    h2 { font-size: 22px; margin: 18px 0 10px; }\n    h3 { font-size: 17px; margin: 16px 0 8px; }\n\n    p, li { line-height: 1.58; }\n    p { margin: 10px 0; }\n\n    ul { margin: 10px 0 0 18px; }\n\n    code {\n      background: #eee;\n      padding: 2px 6px;\n      border-radius: 6px;\n      white-space: pre-wrap;\n      word-break: break-word;\n    }\n\n    pre {\n      background: #f0f0f0;\n      border-radius: 10px;\n      padding: 14px;\n      overflow: auto;\n      margin: 10px 0;\n      font-size: 14px;\n    }\n\n    .note {\n      border-left: 4px solid var(--accent);\n      background: #f4f8ff;\n      padding: 10px 12px;\n      border-radius: 8px;\n      margin: 12px 0;\n    }\n\n    .warn {\n      border-left: 4px solid #111;\n      padding-left: 12px;\n    }\n\n    .footer {\n      margin-top: 26px;\n      font-size: 13px;\n      color: #666;\n    }\n  <\/style>\n<\/head>\n\n<body>\n  <main class=\"wrap\">\n\n    <header class=\"card\">\n      <h1>Secure HTTP \/ HTTPS (TLS) Controller<\/h1>\n\n      <p>\n        The Network HTTPS secure controller enables MyURemote to communicate with devices\n        that require <strong>HTTPS \/ TLS transport<\/strong>.\n      <\/p>\n\n      <p class=\"warn\">\n        This controller does <strong>not<\/strong> define commands or device logic.\n        It only defines a <strong>secure transport path<\/strong>.\n      <\/p>\n    <\/header>\n\n    <section class=\"card\">\n      <h2>1. Core principle<\/h2>\n\n      <p>\n        MyURemote does not infer transport from port numbers or URLs.\n        Transport must always be explicit.\n      <\/p>\n\n      <ul>\n        <li><code>secure=false<\/code> \u2192 raw TCP \/ plain HTTP path<\/li>\n        <li><code>secure=true<\/code> \u2192 HTTPS\/TLS path<\/li>\n      <\/ul>\n\n      <div class=\"note\">\n        Port 443 alone does not activate TLS.  \n        Only <code>secure=true<\/code> determines that the secure transport layer is used.\n      <\/div>\n    <\/section>\n\n    <section class=\"card\">\n      <h2>2. What securehttp.js does<\/h2>\n\n      <p>\n        The <code>securehttp.js<\/code> controller is a <strong>generic transport layer<\/strong>.\n      <\/p>\n\n      <p>\n        It:\n      <\/p>\n\n      <ul>\n        <li>builds a raw HTTP request<\/li>\n        <li>sends it through the local MyURemote proxy<\/li>\n        <li>sets <code>secure=true<\/code><\/li>\n        <li>delegates TLS handling to the backend<\/li>\n      <\/ul>\n\n      <p>\n        It does <strong>not<\/strong>:\n      <\/p>\n\n      <ul>\n        <li>map commands<\/li>\n        <li>understand device APIs<\/li>\n        <li>interpret responses<\/li>\n      <\/ul>\n    <\/section>\n\n    <section class=\"card\">\n      <h2>3. Execution flow<\/h2>\n\n      <ol>\n        <li>Frontend builds HTTP request<\/li>\n        <li>Request is sent to <code>localhost:9090<\/code><\/li>\n        <li><code>secure=true<\/code> is included<\/li>\n        <li>Gateway selects secure transport path<\/li>\n        <li>TLS connection is established<\/li>\n        <li>Raw HTTP request is sent<\/li>\n        <li>Response is returned via standard contract<\/li>\n      <\/ol>\n\n      <p>\n        The browser itself never performs the HTTPS request.\n      <\/p>\n    <\/section>\n\n    <section class=\"card\">\n      <h2>4. Request structure<\/h2>\n\n<pre>{\n  ip: \"192.168.0.50\",\n  port: 443,\n  command: encodeURIComponent(rawHttpRequest),\n  timeout: 1000,\n  keepOpen: false,\n  secure: true\n}<\/pre>\n\n      <p>\n        The only difference with non-secure controllers is:\n      <\/p>\n\n      <code>secure: true<\/code>\n    <\/section>\n\n    <section class=\"card\">\n      <h2>5. Raw HTTP request example<\/h2>\n\n<pre>GET \/api\/status HTTP\/1.1\nHost: 192.168.0.50\nConnection: close\nUser-Agent: MyURemote\nAccept: *\/*<\/pre>\n\n      <p>\n        This request is sent exactly as written, but over a TLS connection.\n      <\/p>\n    <\/section>\n\n    <section class=\"card\">\n      <h2>6. Important distinction: transport vs command<\/h2>\n\n      <p>\n        A command definition like:\n      <\/p>\n\n<pre>STATUS\n[\"getPlayerStatus\"]<\/pre>\n\n      <p>\n        is <strong>not<\/strong> an HTTP request.\n      <\/p>\n\n      <p>\n        It is a logical command value that must be transformed by:\n      <\/p>\n\n      <ul>\n        <li>a device-specific extender<\/li>\n        <li>or a mapping layer<\/li>\n      <\/ul>\n\n      <p>\n        into a full HTTP path:\n      <\/p>\n\n<pre>\/httpapi.asp?command=getPlayerStatus<\/pre>\n\n      <p>\n        Then <code>securehttp.js<\/code> wraps that into a full HTTP request.\n      <\/p>\n    <\/section>\n\n    <section class=\"card\">\n      <h2>7. Difference vs HTTP Post-Put-Get controller<\/h2>\n\n      <table style=\"width:100%; border-collapse:collapse;\">\n        <tr>\n          <td style=\"border:1px solid #ddd; padding:8px;\"><strong>post.js<\/strong><\/td>\n          <td style=\"border:1px solid #ddd; padding:8px;\">Plain HTTP over non-secure transport<\/td>\n        <\/tr>\n        <tr>\n          <td style=\"border:1px solid #ddd; padding:8px;\"><strong>securehttp.js<\/strong><\/td>\n          <td style=\"border:1px solid #ddd; padding:8px;\">Same concept, but over TLS<\/td>\n        <\/tr>\n      <\/table>\n\n      <p>\n        The payload may be identical. Only the transport layer differs.\n      <\/p>\n    <\/section>\n\n    <section class=\"card\">\n      <h2>8. When to use this controller<\/h2>\n\n      <ul>\n        <li>Device requires HTTPS\/TLS<\/li>\n        <li>Plain HTTP fails or is rejected<\/li>\n        <li>Device uses secure local API<\/li>\n      <\/ul>\n\n      <p>\n        Typical examples:\n      <\/p>\n\n      <ul>\n        <li>modern streamers<\/li>\n        <li>home automation hubs<\/li>\n        <li>devices with self-signed certificates<\/li>\n      <\/ul>\n    <\/section>\n\n    <section class=\"card\">\n      <h2>9. Common mistakes<\/h2>\n\n      <ul>\n        <li>Using port 443 without <code>secure=true<\/code><\/li>\n        <li>Sending plain HTTP over TLS devices<\/li>\n        <li>Expecting controller to understand command logic<\/li>\n        <li>Mixing transport logic with device logic<\/li>\n      <\/ul>\n\n      <div class=\"note\">\n        Always separate:\n        <br>\n        command meaning \u2192 device layer  \n        transport \u2192 controller layer\n      <\/div>\n    <\/section>\n\n    <section class=\"card\">\n      <h2>10. Summary<\/h2>\n\n      <p>\n        The HTTPS controller adds one critical capability:\n      <\/p>\n\n      <ul>\n        <li>secure transport via TLS<\/li>\n      <\/ul>\n\n      <p>\n        It does not change how commands are defined, only how they are transmitted.\n      <\/p>\n\n      <p>\n        In MyURemote:\n      <\/p>\n\n<pre>command + controller + transport flag = execution path<\/pre>\n\n    <\/section>\n\n    <div class=\"footer\">\n      MyURemote \u2014 Secure transport layer for HTTPS\/TLS integrations.\n    <\/div>\n\n  <\/main>\n<\/body>\n<\/html>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Secure HTTP \/ HTTPS (TLS) Controller \u2013 MyURemote Secure HTTP \/ HTTPS (TLS) Controller The Network HTTPS secure controller enables MyURemote to communicate with devices that require HTTPS \/ TLS transport. This controller does not define commands or device logic. It only defines a secure transport path. 1. Core principle MyURemote does not infer transport [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":218,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-248","page","type-page","status-publish","hentry"],"blocksy_meta":{"has_hero_section":"disabled","styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":6}},"_links":{"self":[{"href":"https:\/\/www.myuremote.com\/website\/wp-json\/wp\/v2\/pages\/248","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.myuremote.com\/website\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.myuremote.com\/website\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.myuremote.com\/website\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.myuremote.com\/website\/wp-json\/wp\/v2\/comments?post=248"}],"version-history":[{"count":5,"href":"https:\/\/www.myuremote.com\/website\/wp-json\/wp\/v2\/pages\/248\/revisions"}],"predecessor-version":[{"id":264,"href":"https:\/\/www.myuremote.com\/website\/wp-json\/wp\/v2\/pages\/248\/revisions\/264"}],"up":[{"embeddable":true,"href":"https:\/\/www.myuremote.com\/website\/wp-json\/wp\/v2\/pages\/218"}],"wp:attachment":[{"href":"https:\/\/www.myuremote.com\/website\/wp-json\/wp\/v2\/media?parent=248"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}