{"id":7845,"date":"2025-11-29T06:53:38","date_gmt":"2025-11-29T05:53:38","guid":{"rendered":"https:\/\/web-dev-weissblau.de\/microconsult\/?p=7845"},"modified":"2026-02-13T15:18:03","modified_gmt":"2026-02-13T14:18:03","slug":"iot-a-software-developers-perspective","status":"publish","type":"post","link":"https:\/\/www.microconsult.de\/en\/iot-a-software-developers-perspective\/","title":{"rendered":"IoT \u2013 A Software Developer&#039;s Perspective"},"content":{"rendered":"<h2>\u201eExecutable Modeling for Distributable Components\u201c in Embedded Software Engineering<\/h2>\n<p style=\"text-align: left;\" align=\"center\">Author: Ian Macafee, EVOCEAN GmbH<\/p>\n<h3>Contribution \u2013 Embedded Software Engineering Congress 2017<\/h3>\n<p><strong>The term IoT has become widely used in recent years. Google dictionary defines it as:\u00a0<em>Internet of things: The interconnection via the Internet of computing devices embedded in everyday objects, enabling them to send and receive data.<\/em><\/strong><\/p>\n<p><strong>As a software developer, I produce code that probably receives and sends data. So, what, if anything, do I need to change to satisfy the IoT? Maybe you don&#039;t see a need to change. The logic of your code is the valuable part. How it receives and sends the data could be viewed as someone else&#039;s problem. At a conceptual level, this is true. You shouldn&#039;t have to change the logic of your functions but\u2026 perhaps there are ways of making your implementation easier to\u00a0<em>thingify<\/em>. Perhaps there are techniques and tools that you are yet to discover?<\/strong><\/p>\n<h2><em>So, what do we mean by thingify?<\/em><\/h2>\n<p>To understand the IoT context, as developers, we need to understand its mechanics. Given this understanding we can move forward knowing\u00a0<strong>why<\/strong>\u00a0we should, and\u00a0<strong>how to<\/strong>, adjust. The purpose of this paper is to convey my observations of the past few years while working in this rapidly growing distributed software development world. I have witnessed how some companies find their way while others lie. I have noticed how many of the lagging companies have one thing in common. They have lots of useful IP buried in existing systems but are struggling to know how best to expose it to enable innovation. By breaking up systems into the component parts, these things, they can be wired together in new ways. An organization then has the possibility to discover new capabilities and new products without having to implement the details. Details take time and expertise. Wiring things is easy if I have things I can wire!<\/p>\n<p>I have helped to influence thinking in several organizations and witnessed the injection of energy a new perspective can provide. I wish to pass on these experiences to help others catch up and reap the benefits both outside and within their organizations.<\/p>\n<p>Mostly I am focused on helping to make software development fun, simple and effective.<\/p>\n<h2>Thingification<\/h2>\n<p>I think of IoT as a set of runnable functions that communicate through a\u00a0<strong>distributed database<\/strong>. So, I regard a thing as a function built as a single executable and accessible through a database. From the point of view of its output this seems straight forward enough, the function puts data into the database and anything with access to that database can see the data.<\/p>\n<p>I use the term database to refer to a set of tables that hold data independent of the function that creates that data. The data may or may not persist. If a function wishes the data to persist it would specify the data as\u00a0<strong>retained<\/strong>. The length of retention may be dependent on factors such as the nature of the data and lifetime of the function.<\/p>\n<p>Writing to a distributed database is commonly referred to as\u00a0<strong><em>publishing<\/em><\/strong>.<\/p>\n<h2>Publishing<\/h2>\n<p>Take, for example, a thermostat. It can be regarded as a function. It may have two attributes: the temperature that a user has selected for activation purposes; and the actual temperature it is sensing.<\/p>\n<p>(see image in\u00a0<a title=\"Fachinfo_ESE_iot_evocean_macafee\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/12\/fachinfo_ese_iot_evocean_macafee-2.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>)<\/p>\n<p>To organize the data in the database we have tables. The tables contain rows of data of the same type. In the example, our type is Celsius. A published temperature will be inserted into our table. But there may be multiple things inserting temperatures into our table. We need a way of organizing our database such that we understand what each row of a table represents. A key.<\/p>\n<p>Rather than using the term key, each individual row in our database is commonly referred to as a\u00a0<strong><em>topic<\/em><\/strong>.<\/p>\n<p>You should think of a topic in a similar way to a folder structure. Topics can have hierarchy. If there is more than one thermostat in our system, then we will want to uniquely identify each one. We may have, for example, a thermostat in both the lounge and the kitchen.<\/p>\n<p>In this case our Celsius database table would have 4 rows, keyed as follows:<\/p>\n<ul>\n<li>Kitchen\/Thermostat\/selected<\/li>\n<li>Kitchen\/Thermostat\/actual<\/li>\n<li>Lounge\/Thermostat\/selected<\/li>\n<li>Lounge \/Thermostat\/actual<\/li>\n<\/ul>\n<p>A consistent topic naming scheme is as important as how we would decompose our systems, organize our repositories and file systems.<\/p>\n<h2>Subscribing<\/h2>\n<p>Publishing data into a database is a simple idea to understand. However, the strategy for reacting to changes in data is an area that needs more thought.<\/p>\n<p>For us, as developers, to avoid coupling our functions unnecessarily we simply provide methods, aka operations|triggers|receptions, in our functions that may be called by any user. Some carry parameters which we might consider as data, others simply trigger functionality to run.<\/p>\n<p>(see image in\u00a0<a title=\"Fachinfo_ESE_iot_evocean_macafee\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/12\/fachinfo_ese_iot_evocean_macafee-2.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>)<\/p>\n<p align=\"center\">Here the SwitchOn\/Off methods would not naturally be regarded as data. Nevertheless, data ultimately triggers all methods. In some cases, time is the data, in our example a change in selected or actual could be used to SwitchOn our boiler.<\/p>\n<ul>\n<li>If (actual &lt; selected) then Boiler.SwitchOn()<\/li>\n<\/ul>\n<p>The job of reacting to the change in thermostat attributes and evaluating the condition is the responsibility of neither the boiler nor the thermostat itself. In fact, it should not influence the design of either.\u00a0<strong>It is simply a wiring job to connect the output of one thing to the input of another.<\/strong><\/p>\n<p>So, I am finally getting around to what our things should subscribe to. Put simply, a thing needs only subscribe to the inputs defined by the context of that thing. To do this, it must subscribe to a topic that identifies it as the owner. In the case of our boiler, located in the garage, for example, those topics would be:<\/p>\n<ul>\n<li>Inputs\/Garage\/Boiler\/switchOn<\/li>\n<li>Inputs\/Garage\/Boiler\/switchOff<\/li>\n<\/ul>\n<p align=\"center\">Perhaps there is also a thermostat in the garage. The garage system could subscribe to all its inputs via a single wildcard subscription to:<\/p>\n<ul>\n<li>Inputs\/Garage\/#<\/li>\n<\/ul>\n<p>NB Similarly it is possible to subscribe to all thermostat data using a level wildcard:<\/p>\n<ul>\n<li>+\/Thermostat\/#<\/li>\n<\/ul>\n<p>(see image in\u00a0<a title=\"Fachinfo_ESE_iot_evocean_macafee\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/12\/fachinfo_ese_iot_evocean_macafee-2.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>)<\/p>\n<p>So, now we have two standalone software executables, boiler and thermostat. Both can be implemented to subscribe to their inputs and publish their outputs without knowledge of the systems in which they are deployed. To build our somewhat artificial system, we need to:<\/p>\n<ol>\n<li>Instantiate 1 boiler and 3 thermostats and uniquely identify them<\/li>\n<li>Wire them together with some additional logic to create the desired system behavior<\/li>\n<\/ol>\n<ul>\n<li>Our boiler will need to SwitchOn if any thermostat is showing (actual &lt; selected) as true and this can be built into our wiring logic<\/li>\n<\/ul>\n<h2>Rhapsody + TXF (Thing eXecution Framework)<\/h2>\n<p>For many years, in fact more than 15, I have been using Rhapsody to develop software. I find it especially useful because it provides the ability to simplify complex behavior by utilizing state charts. When communication between objects is required the OXF (Object eXecution Framework) is perfectly suited to running an application on a real-time operating system. The actual operating system is abstracted through a layer known as the OSAL, Operating System Abstraction Layer. This makes it possible to port an application across different operating systems with minimum, if any, rework.<\/p>\n<p>In recent years I have required to develop larger and more complex systems. These systems have had some aspect of distribution across processors. On several occasions I have had to use more than one programming language to produce my overall system in the most efficient way.<\/p>\n<p>All of this has meant I have experimented with different approaches to inter-process communication. Shared memory, TCP, pipes, UDP, serial comms to name but a few. Then I moved on to middlewares. DDS (Data Distribution Service) was my first experience. It worked for the specific problem being solved at the time but had a steep learning curve and put restrictions on the way I wanted to think about distributed applications. DDS&#039;s means of communication is based on the publish subscribe paradigm I have suggested in this paper. It is a candidate for a suitable IoT implementation and is used by many. However, I also discovered MQTT. It is my current middleware of choice. MQTT puts fewer constraints on the application that uses it.<\/p>\n<p>Regardless, I am aware that, just as settling on a specific operating system is often a mistake for progression of a business, settling on a specific middleware is likely to result in a problem down the line when something better comes along. However, I have settled on the publish subscribe paradigm. I think it fits into real life. I like things I can explain in terms that make sense to everyone. If I speak (publish some data) you can choose to listen (subscribe) and react in whatever way suits you.<\/p>\n<p>I have therefore created a layer of software I call the Thing eXecution Framework (TXF). Which is based on the publish subscribe paradigm and has a Middleware Abstraction Layer built into it.<\/p>\n<p>By simply using a library and a set of stereotypes a competent Rhapsody user can easily thingify his application using the TXF. He can then build his executable to include the chosen middleware adapter.<\/p>\n<h2>MQTT<\/h2>\n<p>As mentioned above MQTT would be my recommendation to anyone thinking about how to move towards a standard protocol for the IoT.<\/p>\n<p>A simple Google search of\u00a0<em>MQTT<\/em>\u00a0opens an expanse of tools, implementations, and knowledge.<\/p>\n<p><strong><a href=\"https:\/\/mqtt.org\/\" target=\"_blank\" rel=\"noopener\">https:\/\/mqtt.org\/<\/a><\/strong><\/p>\n<h2>Node-RED<\/h2>\n<p>Node-RED is a free tool for wiring together the internet of things, licensed under the Apache License. It does not rely on MQTT but supports it perfectly. It is a tool of simplicity that provides endless opportunities.<\/p>\n<p><strong><a href=\"https:\/\/nodered.org\/\" target=\"_blank\" rel=\"noopener\">https:\/\/nodered.org\/<\/a><\/strong><\/p>\n<h2>Author<\/h2>\n<p>Ian Macafee has more than 25 years of experience in software development, support, consulting and UML training. Since 2016 he has worked as a Principal Consultant for Evocean GmbH. His specific interests include behavioral modeling with Rhapsody and distributed architectures.<\/p>\n<p><a title=\"Fachinfo_ESE_iot_evocean_macafee\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/12\/fachinfo_ese_iot_evocean_macafee-2.pdf\" target=\"_blank\" rel=\"noopener\"><strong>Download the article as a PDF<\/strong><\/a><\/p>\n<hr \/>\n<h2>IoT \/ Industry 4.0 \u2013 our training courses &amp; coaching<\/h2>\n<p><strong>Do you want to bring yourself up to date with the latest technology?<\/strong><\/p>\n<p>Then find out more\u00a0<a title=\"System and hardware development training and coaching\" href=\"https:\/\/www.microconsult.de\/en\/all-training-dates-complete-overview\/\" target=\"_blank\" rel=\"noopener\"><strong>here<\/strong>\u00a0<\/a>MircoConsult offers training courses\/seminars\/workshops and individual coaching on the topics of IoT\/Industry 4.0\/system and hardware development.<\/p>\n<p><strong>Training &amp; coaching on the other topics in our portfolio can be found here.\u00a0<a title=\"Training &amp; Consulting - all topics\" href=\"https:\/\/www.microconsult.de\/en\/training-beratung\/\" target=\"_blank\" rel=\"noopener\">here<\/a>.<\/strong><\/p>\n<hr \/>\n<h2>IoT \/ Industry 4.0 \u2013 Expertise<\/h2>\n<p>Valuable expertise in IoT\/Industry 4.0\/system and hardware development is available.\u00a0<a title=\"Systems and Hardware Engineering\" href=\"https:\/\/www.microconsult.de\/en\/system-and-hardware-development\/\" target=\"_blank\" rel=\"noopener\"><strong>here<\/strong>\u00a0<\/a>Available for you to download free of charge.<\/p>\n<p><a title=\"Systems and Hardware Engineering\" href=\"https:\/\/www.microconsult.de\/en\/system-and-hardware-development\/\" target=\"_blank\" rel=\"noopener\"><strong>To the specialist information<\/strong><\/a><\/p>\n<p><strong>You can find expertise on other topics in our portfolio here. <a title=\"Technical information\" href=\"https:\/\/www.microconsult.de\/en\/specialist-knowledge\/\" target=\"_blank\" rel=\"noopener\">here<\/a>.<\/strong><\/p>","protected":false},"excerpt":{"rendered":"<p>&#8222;Executable Modelling for Distributable Components&#8220; in Embedded Software Engineering Autor: Ian Macafee, EVOCEAN GmbH Beitrag &#8211; Embedded Software Engineering Kongress 2017 The term IoT has become widely used in recent years. Google dictionary defines it as:\u00a0Internet of things: The interconnection via the Internet of computing devices embedded in everyday objects, enabling them to send and [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","inline_featured_image":false,"footnotes":""},"categories":[],"tags":[],"class_list":["post-7845","post","type-post","status-publish","format-standard","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>IoT \u2013 A Software Developer\u2018s Perspective - MicroConsult Academy GmbH<\/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.microconsult.de\/en\/iot-a-software-developers-perspective\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"IoT \u2013 A Software Developer\u2018s Perspective - MicroConsult Academy GmbH\" \/>\n<meta property=\"og:description\" content=\"&#8222;Executable Modelling for Distributable Components&#8220; in Embedded Software Engineering Autor: Ian Macafee, EVOCEAN GmbH Beitrag &#8211; Embedded Software Engineering Kongress 2017 The term IoT has become widely used in recent years. Google dictionary defines it as:\u00a0Internet of things: The interconnection via the Internet of computing devices embedded in everyday objects, enabling them to send and [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.microconsult.de\/en\/iot-a-software-developers-perspective\/\" \/>\n<meta property=\"og:site_name\" content=\"MicroConsult Academy GmbH\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-29T05:53:38+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-02-13T14:18:03+00:00\" \/>\n<meta name=\"author\" content=\"weissblau media\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"weissblau media\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/iot-a-software-developers-perspective\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/iot-a-software-developers-perspective\\\/\"},\"author\":{\"name\":\"weissblau media\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#\\\/schema\\\/person\\\/b6d4c4ae959b068fbe8d9416ed019a0a\"},\"headline\":\"IoT \u2013 A Software Developer\u2018s Perspective\",\"datePublished\":\"2025-11-29T05:53:38+00:00\",\"dateModified\":\"2026-02-13T14:18:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/iot-a-software-developers-perspective\\\/\"},\"wordCount\":1760,\"commentCount\":0,\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.microconsult.de\\\/iot-a-software-developers-perspective\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/iot-a-software-developers-perspective\\\/\",\"url\":\"https:\\\/\\\/www.microconsult.de\\\/iot-a-software-developers-perspective\\\/\",\"name\":\"IoT \u2013 A Software Developer\u2018s Perspective - MicroConsult Academy GmbH\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#website\"},\"datePublished\":\"2025-11-29T05:53:38+00:00\",\"dateModified\":\"2026-02-13T14:18:03+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#\\\/schema\\\/person\\\/b6d4c4ae959b068fbe8d9416ed019a0a\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/iot-a-software-developers-perspective\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.microconsult.de\\\/iot-a-software-developers-perspective\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/iot-a-software-developers-perspective\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.microconsult.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"IoT \u2013 A Software Developer\u2018s Perspective\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#website\",\"url\":\"https:\\\/\\\/www.microconsult.de\\\/\",\"name\":\"MicroConsult Academy GmbH\",\"description\":\"Professionelle Schulungen, Beratung und Projektunterst\u00fctzung\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.microconsult.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#\\\/schema\\\/person\\\/b6d4c4ae959b068fbe8d9416ed019a0a\",\"name\":\"weissblau media\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bbb409da4970da9446f6c49465d453cb8a0dae301e4d4f465b5c4e62408daa2e?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bbb409da4970da9446f6c49465d453cb8a0dae301e4d4f465b5c4e62408daa2e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bbb409da4970da9446f6c49465d453cb8a0dae301e4d4f465b5c4e62408daa2e?s=96&d=mm&r=g\",\"caption\":\"weissblau media\"},\"sameAs\":[\"https:\\\/\\\/www.microconsult.de\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"IoT \u2013 A Software Developer&#039;s Perspective - MicroConsult Academy GmbH","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.microconsult.de\/en\/iot-a-software-developers-perspective\/","og_locale":"en_GB","og_type":"article","og_title":"IoT \u2013 A Software Developer\u2018s Perspective - MicroConsult Academy GmbH","og_description":"&#8222;Executable Modelling for Distributable Components&#8220; in Embedded Software Engineering Autor: Ian Macafee, EVOCEAN GmbH Beitrag &#8211; Embedded Software Engineering Kongress 2017 The term IoT has become widely used in recent years. Google dictionary defines it as:\u00a0Internet of things: The interconnection via the Internet of computing devices embedded in everyday objects, enabling them to send and [&hellip;]","og_url":"https:\/\/www.microconsult.de\/en\/iot-a-software-developers-perspective\/","og_site_name":"MicroConsult Academy GmbH","article_published_time":"2025-11-29T05:53:38+00:00","article_modified_time":"2026-02-13T14:18:03+00:00","author":"weissblau media","twitter_card":"summary_large_image","twitter_misc":{"Written by":"weissblau media","Estimated reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.microconsult.de\/iot-a-software-developers-perspective\/#article","isPartOf":{"@id":"https:\/\/www.microconsult.de\/iot-a-software-developers-perspective\/"},"author":{"name":"weissblau media","@id":"https:\/\/www.microconsult.de\/#\/schema\/person\/b6d4c4ae959b068fbe8d9416ed019a0a"},"headline":"IoT \u2013 A Software Developer\u2018s Perspective","datePublished":"2025-11-29T05:53:38+00:00","dateModified":"2026-02-13T14:18:03+00:00","mainEntityOfPage":{"@id":"https:\/\/www.microconsult.de\/iot-a-software-developers-perspective\/"},"wordCount":1760,"commentCount":0,"inLanguage":"en-GB","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.microconsult.de\/iot-a-software-developers-perspective\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.microconsult.de\/iot-a-software-developers-perspective\/","url":"https:\/\/www.microconsult.de\/iot-a-software-developers-perspective\/","name":"IoT \u2013 A Software Developer&#039;s Perspective - MicroConsult Academy GmbH","isPartOf":{"@id":"https:\/\/www.microconsult.de\/#website"},"datePublished":"2025-11-29T05:53:38+00:00","dateModified":"2026-02-13T14:18:03+00:00","author":{"@id":"https:\/\/www.microconsult.de\/#\/schema\/person\/b6d4c4ae959b068fbe8d9416ed019a0a"},"breadcrumb":{"@id":"https:\/\/www.microconsult.de\/iot-a-software-developers-perspective\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.microconsult.de\/iot-a-software-developers-perspective\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.microconsult.de\/iot-a-software-developers-perspective\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.microconsult.de\/"},{"@type":"ListItem","position":2,"name":"IoT \u2013 A Software Developer\u2018s Perspective"}]},{"@type":"WebSite","@id":"https:\/\/www.microconsult.de\/#website","url":"https:\/\/www.microconsult.de\/","name":"MicroConsult Academy GmbH","description":"Professional training, consulting and project support","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.microconsult.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Person","@id":"https:\/\/www.microconsult.de\/#\/schema\/person\/b6d4c4ae959b068fbe8d9416ed019a0a","name":"weissblau media","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/secure.gravatar.com\/avatar\/bbb409da4970da9446f6c49465d453cb8a0dae301e4d4f465b5c4e62408daa2e?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/bbb409da4970da9446f6c49465d453cb8a0dae301e4d4f465b5c4e62408daa2e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bbb409da4970da9446f6c49465d453cb8a0dae301e4d4f465b5c4e62408daa2e?s=96&d=mm&r=g","caption":"weissblau media"},"sameAs":["https:\/\/www.microconsult.de"]}]}},"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/posts\/7845","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/comments?post=7845"}],"version-history":[{"count":7,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/posts\/7845\/revisions"}],"predecessor-version":[{"id":11751,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/posts\/7845\/revisions\/11751"}],"wp:attachment":[{"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/media?parent=7845"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/categories?post=7845"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/tags?post=7845"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}