{"id":218,"date":"2026-03-21T11:21:26","date_gmt":"2026-03-21T11:21:26","guid":{"rendered":"https:\/\/www.myuremote.com\/website\/?page_id=218"},"modified":"2026-04-11T07:48:41","modified_gmt":"2026-04-11T07:48:41","slug":"device-database-commands","status":"publish","type":"page","link":"https:\/\/www.myuremote.com\/website\/docs\/how-to\/device-database-commands\/","title":{"rendered":"Add \/ Edit Your Own Devices &amp; Commands"},"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>Create Your Own Devices \u2013 MyURemote<\/title>\n  <meta name=\"description\" content=\"Learn how to create your own devices and command sets in MyURemote, including IR, Serial and IP-based integrations.\" \/>\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 {\n      font-size: clamp(28px, 4vw, 38px);\n      line-height: 1.15;\n      margin: 0 0 10px;\n    }\n\n    h2 {\n      font-size: 22px;\n      margin: 0 0 10px;\n    }\n\n    h3 {\n      font-size: 17px;\n      margin: 16px 0 8px;\n    }\n\n    p, li {\n      line-height: 1.58;\n    }\n\n    p {\n      margin: 10px 0;\n    }\n\n    ul {\n      margin: 10px 0 0 18px;\n    }\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    .block {\n      display: block;\n      padding: 10px 12px;\n      line-height: 1.5;\n      margin-top: 8px;\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    .muted {\n      color: var(--muted);\n    }\n\n    .grid {\n      display: grid;\n      grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));\n      gap: 12px;\n      margin-top: 12px;\n    }\n\n    .mini-card {\n      border: 1px solid var(--border);\n      border-radius: 12px;\n      padding: 14px;\n      background: #fff;\n    }\n\n    .footer {\n      margin-top: 26px;\n      font-size: 13px;\n      color: #666;\n    }\n\n    a {\n      color: var(--accent);\n      text-decoration: none;\n    }\n\n    a:hover {\n      text-decoration: underline;\n    }\n  <\/style>\n<\/head>\n<body>\n  <main class=\"wrap\">\n\n    <header class=\"card\">\n      <h1>Create Your Own Devices<\/h1>\n      <p>\n        MyURemote allows advanced users to define their own devices, command sets and transport strategies.\n        This is the configuration layer behind custom integrations for IR, Serial and IP-based devices.\n      <\/p>\n      <p class=\"warn\">\n        <strong>Important:<\/strong> MyURemote is not a generic cloud API client.\n        It is a local execution engine. The database stores configuration, but runtime execution happens locally through the MyURemote transport and gateway layers.\n      <\/p>\n    <\/header>\n\n    <section class=\"card\">\n      <h2>1. What this section is for<\/h2>\n      <p>\n        The Device Database and Command Database let you build or extend your own integrations.\n        You can use this to:\n      <\/p>\n      <ul>\n        <li>create a new device type<\/li>\n        <li>assign it to a category and brand<\/li>\n        <li>define whether it supports direct IP control<\/li>\n        <li>create commands for IR, Serial or IP technologies<\/li>\n        <li>reuse public network controllers for custom LAN integrations<\/li>\n      <\/ul>\n\n\t\t<div class=\"note\">\n\t\t  This section is intended for power users, integrators and developers who want more than the built-in device library.\n\t\t  Before creating your own device, first check the\n\t\t  <a href=\"https:\/\/www.myuremote.com\/website\/compatibility\/\" style=\"text-decoration:underline;\">\n\t\t\tMyURemote compatibility list\n\t\t  <\/a>\n\t\t  to see whether your device is already available in the standard database.\n\t\t  In many cases, the device already exists and no custom definition is needed.\n\t\t<\/div>\n    <\/section>\n\n    <section class=\"card\">\n      <h2>2. Core concept: device + commands + controller<\/h2>\n      <p>\n        In MyURemote, a working integration is usually built from three parts:\n      <\/p>\n\n      <div class=\"grid\">\n        <div class=\"mini-card\">\n          <h3>Device<\/h3>\n          <p>\n            The logical device type, such as a TV, amplifier, streamer, projector or gateway.\n          <\/p>\n        <\/div>\n\n        <div class=\"mini-card\">\n          <h3>Commands<\/h3>\n          <p>\n            The actions and queries available for that device, grouped by technology.\n          <\/p>\n        <\/div>\n\n        <div class=\"mini-card\">\n          <h3>Controller<\/h3>\n          <p>\n            The transport layer that determines how IP-based commands are actually sent.\n          <\/p>\n        <\/div>\n      <\/div>\n\n      <p>\n        This separation is important. A command value does not by itself define transport.\n        The selected controller determines whether MyURemote uses raw TCP, plain HTTP or secure HTTPS\/TLS.\n      <\/p>\n    <\/section>\n\n    <section class=\"card\">\n      <h2>3. Creating a device<\/h2>\n      <p>\n        When you add a device, you define the basic identity of that integration.\n      <\/p>\n\n      <ul>\n        <li><strong>Category<\/strong> \u2192 the functional group, such as TV, audio, media player or automation<\/li>\n        <li><strong>Brand<\/strong> \u2192 the manufacturer or vendor<\/li>\n        <li><strong>Device type<\/strong> \u2192 the actual device model or logical integration name<\/li>\n      <\/ul>\n\n      <p>\n        This device record becomes the container for the command sets you will add later.\n      <\/p>\n\n      <code class=\"block\">\nCategory \u2192 Streamer\nBrand \u2192 WiiM\nDevice type \u2192 WiiM Pro Plus\n      <\/code>\n    <\/section>\n\n    <section class=\"card\">\n      <h2>4. Direct IP control and default controller<\/h2>\n      <p>\n        If a device supports direct network control, enable:\n      <\/p>\n      <code>This device allows IP control<\/code>\n\n      <p>\n        This tells MyURemote that the device can be controlled over the network and that an IP-based controller may be assigned.\n      <\/p>\n\n      <h3>Default controller<\/h3>\n      <p>\n        The default controller defines the transport strategy used for this device&#8217;s IP commands.\n      <\/p>\n\n      <p>\n        Public network controllers currently include:\n      <\/p>\n      <ul>\n        <li><strong>Network TCP\/IP Controller<\/strong> \u2192 raw plain socket transport<\/li>\n        <li><strong>Network HTTP Post-Put-Get Controller<\/strong> \u2192 plain HTTP request construction<\/li>\n        <li><strong>Network HTTPS secure (TLS) Controller<\/strong> \u2192 secure HTTPS\/TLS transport<\/li>\n      <\/ul>\n\n      <div class=\"note\">\n        The controller does not define what the command means. It only defines how the command is transported.\n      <\/div>\n\n      <p>\n        The <strong>default port<\/strong> is the transport port normally used by that device or controller combination.\n      <\/p>\n    <\/section>\n\n    <section class=\"card\">\n      <h2>5. Creating commands<\/h2>\n      <p>\n        Commands are attached to a device and grouped by technology.\n        Each command defines one executable action or one queryable state.\n      <\/p>\n\n      <ul>\n        <li><strong>Command name<\/strong> \u2192 logical name such as <code>PLAY<\/code>, <code>POWER<\/code>, <code>STATUS QUERY<\/code><\/li>\n        <li><strong>Technology<\/strong> \u2192 <code>ir<\/code>, <code>serial<\/code> or <code>ip<\/code><\/li>\n        <li><strong>Value<\/strong> \u2192 the raw value, protocol string or payload fragment associated with that command<\/li>\n      <\/ul>\n\n      <p>\n        In many cases, the command value is not a complete user-facing sentence.\n        It is a protocol-oriented definition that will later be sent through the correct controller or device logic.\n      <\/p>\n    <\/section>\n\n    <section class=\"card\">\n      <h2>6. Technologies: IR, Serial and IP<\/h2>\n\n\t\t<h3>IR<\/h3>\n\t\t<p>\n\t\t  IR commands are typically fire-and-forget. They usually do not return device feedback.\n\t\t<\/p>\n\t\t<p>\n\t\t  If you want to learn infrared codes and add them manually to a device in MyURemote,\n\t\t  see:\n\t\t  <a href=\"https:\/\/www.myuremote.com\/website\/how-to-add-ir-commands-in-myuremote\/\" style=\"text-decoration:underline;\">\n\t\t\tHow to add IR commands in MyURemote\n\t\t  <\/a>\n\t\t<\/p>\n\n      <h3>Serial<\/h3>\n      <p>\n        Serial commands are intended for RS232-like integrations or serial-style command models.\n      <\/p>\n\n      <h3>IP<\/h3>\n      <p>\n        IP commands are the most flexible category. They may use:\n      <\/p>\n      <ul>\n        <li>raw TCP socket transport<\/li>\n        <li>plain HTTP request transport<\/li>\n        <li>secure HTTPS\/TLS transport<\/li>\n        <li>device-specific higher-level extender logic<\/li>\n      <\/ul>\n\n      <div class=\"note\">\n        Technology tells MyURemote which command family is being defined. The controller then determines the actual network transport path for IP commands.\n      <\/div>\n    <\/section>\n\n    <section class=\"card\">\n      <h2>7. Simple commands vs child commands<\/h2>\n      <p>\n        A command can either contain a single direct value, or it can act as a parent command with children.\n      <\/p>\n\n      <h3>Simple command<\/h3>\n      <code class=\"block\">\nName  \u2192 PLAY\nValue \u2192 setPlayerCmd:resume\n      <\/code>\n\n      <h3>Command with children<\/h3>\n      <p>\n        Use child commands when one logical command must group several related values or sub-entries.\n      <\/p>\n\n      <p>\n        This is useful when a command is not just one simple payload, but a structured set of related command values.\n      <\/p>\n    <\/section>\n\n    <section class=\"card\">\n      <h2>8. Command templates<\/h2>\n      <p>\n        Templates allow faster setup by reusing known command names.\n      <\/p>\n\n      <p>\n        A template does not automatically make the command functional. You still need to define a valid value, correct technology and the right transport\/controller model.\n      <\/p>\n\n      <div class=\"note\">\n        Templates help with naming and consistency. They do not replace real protocol knowledge.\n      <\/div>\n    <\/section>\n\n    <section class=\"card\">\n      <h2>9. IP commands are only one part of the execution flow<\/h2>\n      <p>\n        For IP-based devices, a saved command is only the start of the process.\n        At runtime, MyURemote still has to:\n      <\/p>\n      <ul>\n        <li>resolve the selected device and command<\/li>\n        <li>choose the correct controller or extender path<\/li>\n        <li>build the final request payload<\/li>\n        <li>send it through the local proxy<\/li>\n        <li>optionally read and parse the response<\/li>\n      <\/ul>\n\n      <p>\n        This is why command definition, controller selection and feedback parsing must be understood together.\n      <\/p>\n    <\/section>\n\n    <section class=\"card\">\n      <h2>10. Which controller should you choose?<\/h2>\n\n      <h3>Use Network TCP\/IP Controller when:<\/h3>\n      <ul>\n        <li>the device expects a raw TCP socket connection<\/li>\n        <li>you need byte-exact command transport<\/li>\n        <li>the protocol is plain socket-based and not HTTP<\/li>\n      <\/ul>\n\n      <h3>Use Network HTTP Post-Put-Get Controller when:<\/h3>\n      <ul>\n        <li>the device expects plain HTTP requests<\/li>\n        <li>you need to construct headers and content explicitly<\/li>\n        <li>the API is local and not TLS-protected<\/li>\n      <\/ul>\n\n      <h3>Use Network HTTPS secure (TLS) Controller when:<\/h3>\n      <ul>\n        <li>the device requires HTTPS\/TLS<\/li>\n        <li>plain HTTP to port 443 is not sufficient<\/li>\n        <li>transport intent must explicitly be secure<\/li>\n      <\/ul>\n    <\/section>\n\n<section class=\"card\">\n  <h2>11. Where to go next<\/h2>\n  <p>\n    This page is the starting point. For deeper technical information, continue with:\n  <\/p>\n  <ul>\n    <li><a href=\"https:\/\/www.myuremote.com\/website\/how-to-add-ir-commands-in-myuremote\/\">How to add IR commands in MyURemote<\/a><\/li>\n    <li><a href=\"\/website\/docs\/how-to\/device-database-commands\/advanced-command-reference\/\">Advanced Command &amp; Feedback Reference<\/a><\/li>\n    <li><a href=\"\/website\/docs\/how-to\/device-database-commands\/ip-tcp-device-integrations-myuremote\/\">Network TCP\/IP &amp; HTTP Controllers<\/a><\/li>\n    <li><a href=\"\/website\/docs\/how-to\/device-database-commands\/secure-http-https-device-integrations-myuremote\/\">Secure HTTP \/ HTTPS (TLS) Controller<\/a><\/li>\n  <\/ul>\n<\/section>\n\n    <div class=\"footer\">\n      MyURemote \u2014 Device Database &#038; Command Sets.\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>Create Your Own Devices \u2013 MyURemote Create Your Own Devices MyURemote allows advanced users to define their own devices, command sets and transport strategies. This is the configuration layer behind custom integrations for IR, Serial and IP-based devices. Important: MyURemote is not a generic cloud API client. It is a local execution engine. The database [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":43,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-218","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\/218","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=218"}],"version-history":[{"count":13,"href":"https:\/\/www.myuremote.com\/website\/wp-json\/wp\/v2\/pages\/218\/revisions"}],"predecessor-version":[{"id":281,"href":"https:\/\/www.myuremote.com\/website\/wp-json\/wp\/v2\/pages\/218\/revisions\/281"}],"up":[{"embeddable":true,"href":"https:\/\/www.myuremote.com\/website\/wp-json\/wp\/v2\/pages\/43"}],"wp:attachment":[{"href":"https:\/\/www.myuremote.com\/website\/wp-json\/wp\/v2\/media?parent=218"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}