{"id":1187,"date":"2026-09-02T11:35:13","date_gmt":"2026-09-02T09:35:13","guid":{"rendered":"https:\/\/www.embedded-communication.com\/?p=1187"},"modified":"2026-09-02T11:38:53","modified_gmt":"2026-09-02T09:38:53","slug":"j1939-diagnostic-messages","status":"publish","type":"post","link":"https:\/\/www.embedded-communication.com\/en\/j1939\/j1939-diagnostic-messages\/","title":{"rendered":"J1939 Diagnostic Messages"},"content":{"rendered":"<p><\/p>\n<h1>J1939 Diagnostics: DM1, DM2 and the Structure of a DTC<\/h1>\n<p>Anyone reading out the fault memory of a commercial vehicle, an engine or an agricultural machine inevitably ends up with three abbreviations: SPN, FMI and OC. Together they form a Diagnostic Trouble Code (DTC), and it is transported by the diagnostic messages DM1 and DM2 defined in SAE J1939-73. This article explains how those two parameter groups are built, how to decompose a DTC correctly, and where hand-written parsers regularly get it wrong.<\/p>\n<p><!--more--><\/p>\n<h2>DM1 \u2014 active faults<\/h2>\n<p>The parameter group <strong>DM1 (Active Diagnostic Trouble Codes)<\/strong> carries PGN 65226 (0xFECA) and is sent with the default priority 6. It is a broadcast message in PDU2 format \u2014 the PF value 0xFE is above 240, so there is no destination address but a group extension. Every device on the network can listen in on DM1 without being addressed.<\/p>\n<p>As long as at least one fault is active, the ECU transmits DM1 cyclically <strong>once per second<\/strong>. This is where DM1 differs fundamentally from an event log: a DM1 is not a fault entry but a snapshot of all faults currently present. Once a fault clears, it simply no longer appears in the next DM1.<\/p>\n<p>Important for receivers: even <strong>when no fault is active<\/strong>, a standard-compliant device keeps transmitting DM1 cyclically \u2014 with the lamps off and a DTC field containing SPN 0, FMI 0 and occurrence count 0. The absence of DM1 therefore does not mean &#8220;no faults&#8221;, it means &#8220;the device is not responding&#8221;. A receiver that does not model this distinction will miss failed ECUs.<\/p>\n<p>When the fault state changes, DM1 may be transmitted once immediately; after that the one-second cycle applies again. An ECU that pushes out DM1 every few milliseconds while a sensor value flutters violates the specification and loads the bus for no reason.<\/p>\n<h2>The lamp status in bytes 1 and 2<\/h2>\n<p>The first two bytes of DM1 do not describe the fault but the indication in the cab. Byte 1 holds the status of four lamps, two bits each:<\/p>\n<table border=\"1\">\n<tr>\n<th>Bits in byte 1<\/th>\n<th>Lamp<\/th>\n<th>Meaning<\/th>\n<\/tr>\n<tr>\n<td>8\u20137<\/td>\n<td>Malfunction Indicator Lamp (MIL)<\/td>\n<td>emissions-related fault<\/td>\n<\/tr>\n<tr>\n<td>6\u20135<\/td>\n<td>Red Stop Lamp<\/td>\n<td>stop the vehicle<\/td>\n<\/tr>\n<tr>\n<td>4\u20133<\/td>\n<td>Amber Warning Lamp<\/td>\n<td>warning, operation may continue<\/td>\n<\/tr>\n<tr>\n<td>2\u20131<\/td>\n<td>Protect Lamp<\/td>\n<td>condition outside engine operation, e.g. coolant<\/td>\n<\/tr>\n<\/table>\n<p>The values are <code>00<\/code> for off, <code>01<\/code> for on and <code>11<\/code> for not available. Byte 2 has exactly the same structure but describes the <strong>flash behaviour<\/strong> of the same four lamps: slow flash, fast flash or no flashing.<\/p>\n<p>That second byte is the one most often ignored in practice. Bytes 1 and 2 have to be evaluated together \u2014 only both combined yield the statement &#8220;amber warning lamp flashing slowly&#8221;. A diagnostic tool that displays byte 1 only withholds information that, for the engine manufacturer, may well distinguish different fault classes.<\/p>\n<h2>The DTC in four bytes<\/h2>\n<p>The first DTC follows from byte 3 onwards. It always occupies exactly four bytes and contains four fields:<\/p>\n<table border=\"1\">\n<tr>\n<th>Field<\/th>\n<th>Width<\/th>\n<th>Position<\/th>\n<\/tr>\n<tr>\n<td>SPN (Suspect Parameter Number)<\/td>\n<td>19 bit<\/td>\n<td>bytes 3 and 4 in full, plus the upper 3 bits of byte 5<\/td>\n<\/tr>\n<tr>\n<td>FMI (Failure Mode Identifier)<\/td>\n<td>5 bit<\/td>\n<td>lower 5 bits of byte 5<\/td>\n<\/tr>\n<tr>\n<td>SPN conversion method (CM)<\/td>\n<td>1 bit<\/td>\n<td>most significant bit of byte 6<\/td>\n<\/tr>\n<tr>\n<td>Occurrence count (OC)<\/td>\n<td>7 bit<\/td>\n<td>lower 7 bits of byte 6<\/td>\n<\/tr>\n<\/table>\n<p>The <strong>SPN<\/strong> identifies the affected parameter, i.e. <em>what<\/em> is faulty \u2014 the coolant temperature, say, or a particular pressure sensor. The mapping from SPN to parameter is given in SAE J1939-71 and in the J1939 Digital Annex. Manufacturer-specific SPNs are permitted, so an unknown value is not automatically a parser error.<\/p>\n<p>The <strong>FMI<\/strong> identifies the failure mode, i.e. <em>how<\/em> the parameter is faulty. The value range 0 to 21 is defined in J1939-73, and 31 means &#8220;condition exists&#8221; without further specification. The complete table belongs in the standard rather than in a blog article, but it is worth knowing the groups:<\/p>\n<ul>\n<li><strong>Electrical faults<\/strong> \u2014 voltage above normal or shorted high (3), voltage below normal or shorted low (4), current below normal or open circuit (5), current above normal (6). These are the codes that point at wiring rather than at the application.<\/li>\n<li><strong>Plausibility faults<\/strong> \u2014 data valid but above or below the normal range, each in three severity levels. The value is measured cleanly but is implausible.<\/li>\n<li><strong>Signal behaviour<\/strong> \u2014 data erratic or incorrect (2), abnormal update rate (9), abnormal rate of change (10).<\/li>\n<li><strong>Communication faults<\/strong> \u2014 received network data in error (19). The single most important FMI for network integrators, because it points at another device rather than at the reporting one.<\/li>\n<\/ul>\n<p>The <strong>occurrence count<\/strong> records how often the fault has become active since the last reset. The counter saturates at 126, and 127 means &#8220;not available&#8221;. It does not count down \u2014 an OC of 40 on a fault that is currently active strongly suggests an intermittent loose contact rather than a failed component.<\/p>\n<h2>The SPN conversion method \u2014 the most common parser bug<\/h2>\n<p>The CM bit has historical roots and is the cause of most incorrectly decoded fault codes. In the early days of J1939 there were several ways of distributing the 19 bits of the SPN across three bytes. Only one of them applies today, and it is indicated by <strong>CM = 0<\/strong>: byte 3 holds the least significant byte of the SPN, byte 4 the middle one, and the upper three bits of byte 5 hold the three most significant bits.<\/p>\n<p>A <strong>CM = 1<\/strong> signals one of the older methods. Those cannot be told apart from each other, so a generic receiver cannot reliably reconstruct the SPN in that case. For new designs, only CM = 0 is permitted.<\/p>\n<p>The practical mistake happens elsewhere: many hand-written parsers read the SPN as a 24-bit value from bytes 3 to 5 and mask off the lower five bits \u2014 which leaves the three SPN bits from byte 5 in the wrong position. The result is SPN values that happen to look right for faults below 65536 and are systematically wrong above it. Anyone who only uses small SPNs during testing will never notice.<\/p>\n<h2>Several faults at once<\/h2>\n<p>If several faults are active, further DTCs are simply appended in four-byte blocks. Two DTCs already make 10 bytes \u2014 the parameter group then no longer fits into a single CAN frame and has to be transported by the transport protocol.<\/p>\n<p>Since DM1 is a broadcast, the <a href=\"https:\/\/www.embedded-communication.com\/en\/j1939\/bam-j1939-broadcast-announce-message\/\">Broadcast Announce Message (BAM)<\/a> is used rather than the handshake procedure <a href=\"https:\/\/www.embedded-communication.com\/en\/j1939\/j1939-cmdt-connection-mode-data-transfer-transport-protocol\/\">CMDT<\/a>. That has two consequences which are often underestimated during design: BAM requires gaps of at least 50 ms between data frames, so a DM1 carrying many faults needs several hundred milliseconds of transmission time. And BAM has no flow control \u2014 a receiver that cannot keep up loses the message silently.<\/p>\n<p>For the implementation this means the DM1 receive path has to handle the transport protocol case from the start. A parser that only processes 8-byte frames with a single DTC works flawlessly on the bench and fails precisely when several faults coincide in the field.<\/p>\n<h2>DM2 and clearing<\/h2>\n<p><strong>DM2 (Previously Active Diagnostic Trouble Codes)<\/strong>, PGN 65227 (0xFECB), contains faults that occurred and are no longer present \u2014 the actual fault memory. Format and lamp fields are identical to DM1; the decisive difference is the transmission behaviour: DM2 is <strong>not sent cyclically<\/strong> but only on request, via the request parameter group (PGN 59904).<\/p>\n<p>Two services are available for clearing: <strong>DM11<\/strong> (PGN 65235) resets the active faults, <strong>DM3<\/strong> (PGN 65228) clears the previously active ones, i.e. the DM2 content. Both are sent as a request and acknowledged by the device. What matters is the expectation: a DM11 on a fault whose cause still exists will make that fault active again immediately \u2014 with the occurrence count incremented by one.<\/p>\n<h2>Evaluation in practice<\/h2>\n<p>A DM1 with three active faults consists of a BAM announcement frame and three data frames, with lamp status and DTCs spread across packet boundaries. Assembling those bytes by hand and reconstructing the SPN from three fields is tedious and error-prone.<\/p>\n<p>The <a href=\"https:\/\/www.emotas.de\/en\/software-products-by-emotas\/can-software-products\/can-tools\/caninterpreter\">emotas CANinterpreter<\/a> with the J1939 extension does it for you: it reassembles the transport protocol transfer, decomposes each DTC into SPN, FMI and occurrence count, and shows the lamp status in plain text. For field troubleshooting the recording and replay functions matter as well, because intermittent faults by their nature cannot be reproduced on demand \u2014 a long-term recording that you can search afterwards for the moment the DTC appeared is what helps here.<\/p>\n<h2>For device manufacturers<\/h2>\n<p>Three recommendations that save the integrators of your device a great deal of work:<\/p>\n<ul>\n<li><strong>Always set CM to 0<\/strong> and pack the SPN according to the current method. Anything else cannot be decoded by generic tools.<\/li>\n<li><strong>Transmit DM1 in the fault-free state as well<\/strong>, so receivers can distinguish &#8220;all fine&#8221; from &#8220;device gone&#8221;.<\/li>\n<li><strong>Document the SPNs you use<\/strong>, in particular the manufacturer-specific ones. An SPN without documentation is just a number to the user \u2014 and generates exactly the support requests you wanted to avoid.<\/li>\n<\/ul>\n<p><\/p>","protected":false},"excerpt":{"rendered":"<p>Sorry, this entry is only available in Deutsch.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"class_list":["post-1187","post","type-post","status-publish","format-standard","hentry","category-j1939"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>J1939 Diagnostic Messages - embedded communication<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.embedded-communication.com\/j1939\/j1939-diagnostic-messages\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"J1939 Diagnostic Messages - embedded communication\" \/>\n<meta property=\"og:description\" content=\"Sorry, this entry is only available in Deutsch.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.embedded-communication.com\/j1939\/j1939-diagnostic-messages\/\" \/>\n<meta property=\"og:site_name\" content=\"embedded communication\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-02T09:35:13+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-02T09:38:53+00:00\" \/>\n<meta name=\"author\" content=\"Torsten Gedenk\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@EmbeddedComm\" \/>\n<meta name=\"twitter:site\" content=\"@EmbeddedComm\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Torsten Gedenk\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"16 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.embedded-communication.com\\\/j1939\\\/j1939-diagnostic-messages\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.embedded-communication.com\\\/j1939\\\/j1939-diagnostic-messages\\\/\"},\"author\":{\"name\":\"Torsten Gedenk\",\"@id\":\"https:\\\/\\\/www.embedded-communication.com\\\/en\\\/#\\\/schema\\\/person\\\/8f0fcf033edee00b06d4dd4cf196680e\"},\"headline\":\"J1939 Diagnostic Messages\",\"datePublished\":\"2026-09-02T09:35:13+00:00\",\"dateModified\":\"2026-09-02T09:38:53+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.embedded-communication.com\\\/j1939\\\/j1939-diagnostic-messages\\\/\"},\"wordCount\":2830,\"publisher\":{\"@id\":\"https:\\\/\\\/www.embedded-communication.com\\\/en\\\/#organization\"},\"articleSection\":[\"J1939\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.embedded-communication.com\\\/j1939\\\/j1939-diagnostic-messages\\\/\",\"url\":\"https:\\\/\\\/www.embedded-communication.com\\\/j1939\\\/j1939-diagnostic-messages\\\/\",\"name\":\"J1939 Diagnostic Messages - embedded communication\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.embedded-communication.com\\\/en\\\/#website\"},\"datePublished\":\"2026-09-02T09:35:13+00:00\",\"dateModified\":\"2026-09-02T09:38:53+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.embedded-communication.com\\\/j1939\\\/j1939-diagnostic-messages\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.embedded-communication.com\\\/j1939\\\/j1939-diagnostic-messages\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.embedded-communication.com\\\/j1939\\\/j1939-diagnostic-messages\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\\\/\\\/www.embedded-communication.com\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"J1939 Diagnostic Messages\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.embedded-communication.com\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/www.embedded-communication.com\\\/en\\\/\",\"name\":\"embedded communication\",\"description\":\"A blog about embedded communcation protocols.\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.embedded-communication.com\\\/en\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.embedded-communication.com\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.embedded-communication.com\\\/en\\\/#organization\",\"name\":\"embedded communication\",\"url\":\"https:\\\/\\\/www.embedded-communication.com\\\/en\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.embedded-communication.com\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.embedded-communication.com\\\/wp-content\\\/uploads\\\/2016\\\/08\\\/embedded-communication.png\",\"contentUrl\":\"https:\\\/\\\/www.embedded-communication.com\\\/wp-content\\\/uploads\\\/2016\\\/08\\\/embedded-communication.png\",\"width\":240,\"height\":240,\"caption\":\"embedded communication\"},\"image\":{\"@id\":\"https:\\\/\\\/www.embedded-communication.com\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/x.com\\\/EmbeddedComm\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.embedded-communication.com\\\/en\\\/#\\\/schema\\\/person\\\/8f0fcf033edee00b06d4dd4cf196680e\",\"name\":\"Torsten Gedenk\",\"url\":\"https:\\\/\\\/www.embedded-communication.com\\\/en\\\/author\\\/ged\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"J1939 Diagnostic Messages - embedded communication","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.embedded-communication.com\/j1939\/j1939-diagnostic-messages\/","og_locale":"en_US","og_type":"article","og_title":"J1939 Diagnostic Messages - embedded communication","og_description":"Sorry, this entry is only available in Deutsch.","og_url":"https:\/\/www.embedded-communication.com\/j1939\/j1939-diagnostic-messages\/","og_site_name":"embedded communication","article_published_time":"2026-09-02T09:35:13+00:00","article_modified_time":"2026-09-02T09:38:53+00:00","author":"Torsten Gedenk","twitter_card":"summary_large_image","twitter_creator":"@EmbeddedComm","twitter_site":"@EmbeddedComm","twitter_misc":{"Written by":"Torsten Gedenk","Est. reading time":"16 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.embedded-communication.com\/j1939\/j1939-diagnostic-messages\/#article","isPartOf":{"@id":"https:\/\/www.embedded-communication.com\/j1939\/j1939-diagnostic-messages\/"},"author":{"name":"Torsten Gedenk","@id":"https:\/\/www.embedded-communication.com\/en\/#\/schema\/person\/8f0fcf033edee00b06d4dd4cf196680e"},"headline":"J1939 Diagnostic Messages","datePublished":"2026-09-02T09:35:13+00:00","dateModified":"2026-09-02T09:38:53+00:00","mainEntityOfPage":{"@id":"https:\/\/www.embedded-communication.com\/j1939\/j1939-diagnostic-messages\/"},"wordCount":2830,"publisher":{"@id":"https:\/\/www.embedded-communication.com\/en\/#organization"},"articleSection":["J1939"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.embedded-communication.com\/j1939\/j1939-diagnostic-messages\/","url":"https:\/\/www.embedded-communication.com\/j1939\/j1939-diagnostic-messages\/","name":"J1939 Diagnostic Messages - embedded communication","isPartOf":{"@id":"https:\/\/www.embedded-communication.com\/en\/#website"},"datePublished":"2026-09-02T09:35:13+00:00","dateModified":"2026-09-02T09:38:53+00:00","breadcrumb":{"@id":"https:\/\/www.embedded-communication.com\/j1939\/j1939-diagnostic-messages\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.embedded-communication.com\/j1939\/j1939-diagnostic-messages\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.embedded-communication.com\/j1939\/j1939-diagnostic-messages\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/www.embedded-communication.com\/en\/"},{"@type":"ListItem","position":2,"name":"J1939 Diagnostic Messages"}]},{"@type":"WebSite","@id":"https:\/\/www.embedded-communication.com\/en\/#website","url":"https:\/\/www.embedded-communication.com\/en\/","name":"embedded communication","description":"A blog about embedded communcation protocols.","publisher":{"@id":"https:\/\/www.embedded-communication.com\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.embedded-communication.com\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.embedded-communication.com\/en\/#organization","name":"embedded communication","url":"https:\/\/www.embedded-communication.com\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.embedded-communication.com\/en\/#\/schema\/logo\/image\/","url":"https:\/\/www.embedded-communication.com\/wp-content\/uploads\/2016\/08\/embedded-communication.png","contentUrl":"https:\/\/www.embedded-communication.com\/wp-content\/uploads\/2016\/08\/embedded-communication.png","width":240,"height":240,"caption":"embedded communication"},"image":{"@id":"https:\/\/www.embedded-communication.com\/en\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/EmbeddedComm"]},{"@type":"Person","@id":"https:\/\/www.embedded-communication.com\/en\/#\/schema\/person\/8f0fcf033edee00b06d4dd4cf196680e","name":"Torsten Gedenk","url":"https:\/\/www.embedded-communication.com\/en\/author\/ged\/"}]}},"_links":{"self":[{"href":"https:\/\/www.embedded-communication.com\/en\/wp-json\/wp\/v2\/posts\/1187","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.embedded-communication.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.embedded-communication.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.embedded-communication.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.embedded-communication.com\/en\/wp-json\/wp\/v2\/comments?post=1187"}],"version-history":[{"count":5,"href":"https:\/\/www.embedded-communication.com\/en\/wp-json\/wp\/v2\/posts\/1187\/revisions"}],"predecessor-version":[{"id":1192,"href":"https:\/\/www.embedded-communication.com\/en\/wp-json\/wp\/v2\/posts\/1187\/revisions\/1192"}],"wp:attachment":[{"href":"https:\/\/www.embedded-communication.com\/en\/wp-json\/wp\/v2\/media?parent=1187"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.embedded-communication.com\/en\/wp-json\/wp\/v2\/categories?post=1187"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.embedded-communication.com\/en\/wp-json\/wp\/v2\/tags?post=1187"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}