<feed xml:base="https://iot.robootika.com/" xmlns="http://www.w3.org/2005/Atom">
  <title type="text">Internet Of Things</title>
  <subtitle type="text">Latest blog posts</subtitle>
  <id>uuid:f0d2d19d-de1b-4b34-af4c-8a78da0103f2;id=2</id>
  <updated>2026-04-23T12:40:44Z</updated>
  <link href="https://iot.robootika.com/" />
  <entry>
    <id>https://iot.robootika.com/post/power-apps-for-home-automation</id>
    <title type="text">Power Apps for Home Automation</title>
    <published>2020-12-05T22:00:00Z</published>
    <updated>2020-12-06T16:54:35Z</updated>
    <author>
      <name />
    </author>
    <link rel="alternate" href="https://iot.robootika.com/post/power-apps-for-home-automation" />
    <content type="text">&lt;p&gt;Power Apps is a great no-code/low-code platform for home automation. &lt;/p&gt;&lt;p&gt;&lt;img width="439" height="772" title="Home Automation powered by Power Apps" style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" alt="Home Automation powered by Power Apps" src="https://internetofthing.io/posts/files/01e3d72e-c8a7-4efe-aeff-e208b973eb16.jpg" border="0"&gt;&lt;/p&gt;&lt;h3&gt;Remote Sauna project&lt;/h3&gt;&lt;p&gt;Last weekend I added a new functionality into my home automation. Now the sauna can be turned on and off remotely.&lt;/p&gt;&lt;p&gt;This project had been in my todo list for a long time. I used to be able to turn the sauna on by phone. Just calling my son and asking him to turn it on and voilà, when I got home, it would be ready. Unfortunately, the automation stopped working once he went to high school.&lt;/p&gt;&lt;h3&gt;DIY – Do It Yourself&lt;/h3&gt;&lt;p&gt;I bought a long drill to drill the hole from sauna to technical room. Huhh. Finally. That was the first and most important step.&lt;/p&gt;&lt;p&gt;&lt;img width="644" height="484" title="Drill the hole" style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" alt="Drill the hole" src="https://internetofthing.io/posts/files/27b59059-411b-4b75-a4db-aaec773af92e.jpg" border="0"&gt;&lt;/p&gt;&lt;p&gt;The rest of the work are simple DIY - “Do It Yourself” tasks.&lt;/p&gt;&lt;h4&gt;#1 Installing the one wire digital temperature sensor DS18B20.&lt;/h4&gt;&lt;p&gt;&lt;img width="364" height="484" title="digital temperature sensor DS18B20" style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" alt="digital temperature sensor DS18B20" src="https://internetofthing.io/posts/files/972936e6-de19-4285-9e2c-e92cb393f8bd.jpg" border="0"&gt;&lt;/p&gt;&lt;h4&gt;#2 Installing the reed switch sensor + magnet for sauna door. &lt;/h4&gt;&lt;p&gt;&lt;img width="644" height="484" title="reed switch sensor + magnet for sauna door" style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" alt="reed switch sensor + magnet for sauna door" src="https://internetofthing.io/posts/files/566b0ad5-5cc7-4879-a384-8ae1c38f18cf.jpg" border="0"&gt;&lt;/p&gt;&lt;h4&gt;#3 Installing a big ABB relay OKYM 0R40 into my home electrical panel that I found in my garage by luck. &lt;/h4&gt;&lt;p&gt;&lt;img width="364" height="484" title="ABB relay OKYM 0R40" style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" alt="ABB relay OKYM 0R40" src="https://internetofthing.io/posts/files/116f305f-e393-4e7c-ad3e-eac0f442a7a3.jpg" border="0"&gt;&lt;/p&gt;&lt;h4&gt;#4 Already having a small reserve relay module to control the big relay. &lt;/h4&gt;&lt;p&gt;&lt;img width="364" height="484" title="relay module" style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" alt="relay module" src="https://internetofthing.io/posts/files/cdb07de8-ffbd-4e61-96bd-8ada8e4acb56.jpg" border="0"&gt;&lt;/p&gt;&lt;h4&gt;#5 Already having the I2C to One Wire (DS2482-100) bridge device connected. &lt;/h4&gt;&lt;p&gt;The One Wire system is a very nice solution as it can handle great amount of temperature sensors connected into it. &lt;/p&gt;&lt;p&gt;&lt;img width="364" height="484" title="I2C to One Wire (DS2482-100)" style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" alt="I2C to One Wire (DS2482-100)" src="https://internetofthing.io/posts/files/81b2928f-aaac-4b84-98a9-35ea6b2b9099.jpg" border="0"&gt;&lt;/p&gt;&lt;h4&gt;#6 Eliminating the mechanical sauna heater timer. &lt;/h4&gt;&lt;p&gt;After studying the schema I figured out that only one cable has to be reconnected.&lt;/p&gt;&lt;p&gt;&lt;img width="644" height="453" title="Eliminating the sauna heater timer" style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" alt="Eliminating the sauna heater timer" src="https://internetofthing.io/posts/files/3b04b9eb-cc87-457c-8ca1-4d61f09f478c.jpg" border="0"&gt;&lt;/p&gt;&lt;h4&gt;#7 Connecting cables into Raspberry PI.&lt;/h4&gt;&lt;p&gt;It used to look quite nice when I first started the project. From time to time, I decide to add to its functionalities, increasing the amount of cables by one or two.&lt;/p&gt;&lt;p&gt;&lt;img width="644" height="484" title="20201206_073119808_iOS" style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" alt="20201206_073119808_iOS" src="https://internetofthing.io/posts/files/c7ecf8fe-b3ad-428a-a421-5d9764b965cc.jpg" border="0"&gt;&lt;/p&gt;&lt;h4&gt;#8 Connecting the sauna cables into the big relay.&lt;/h4&gt;&lt;p&gt;&lt;img width="364" height="484" title="ABB relay OKYM 0R40" style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" alt="ABB relay OKYM 0R40" src="https://internetofthing.io/posts/files/4bba725b-5dec-4541-9cbd-e0cf75c8170d.jpg" border="0"&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;h3&gt;Logic and programming&lt;/h3&gt;&lt;p&gt;Every sauna automation has at least three important rules.&lt;/p&gt;&lt;p&gt;1. If sauna door is open then sauna can’t be turned on.&lt;/p&gt;&lt;p&gt;2. If sauna has been turned on already more than 3 hours then it turns off automatically.&lt;/p&gt;&lt;p&gt;3. If sauna temperature is extremely high (more than 110C) then it just turns off.&lt;/p&gt;&lt;p&gt;Implementation: the sauna button is disabled as the sauna door is open. Closing sauna door will enable the button immediately.&lt;/p&gt;&lt;p&gt;&lt;img width="644" height="306" title="Home automation sauna control " style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" alt="Home automation sauna control " src="https://internetofthing.io/posts/files/c6bb6658-3f82-4b62-8d53-5fb04a7ee0c3.jpg" border="0"&gt;&lt;/p&gt;&lt;h3&gt;Raspberry PI&lt;/h3&gt;&lt;p&gt;Raspberry PI is the central hub of home automation. The base OS is Linux and on top of that is &lt;a href="https://internetofthing.io/post/3-registering-the-edge-device-set-up-azure-iot-edge-device"&gt;Azure IoT Edge&lt;/a&gt;, docker platform and containers. The code is inside the containers. &lt;/p&gt;&lt;p&gt;Visual Studio 2019 is the programming IDE. Code deployment and continuous delivery is fully automated by &lt;a href="https://dev.azure.com/"&gt;Azure DevOps&lt;/a&gt; and a &lt;a href="https://internetofthing.io/post/how-to-setup-raspberry-pi-as-an-azure-devops-agent"&gt;self-hosted Arm32 deployment agent&lt;/a&gt; based on Raspberry PI.&lt;/p&gt;&lt;p&gt;A lot of Raspberry pin’s are already used but I have still some availability.&lt;/p&gt;&lt;p&gt;&lt;img width="644" height="311" title="Raspberry PI pins" style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" alt="Raspberry PI pins" src="https://internetofthing.io/posts/files/85ba0092-eb7c-4381-8fff-24f69a604784.jpg" border="0"&gt;&lt;/p&gt;&lt;h3&gt;Power Apps as a user Interface&lt;/h3&gt;&lt;p&gt;Home automation user interface is built on &lt;a href="https://powerapps.microsoft.com/"&gt;Power Apps&lt;/a&gt;. There are many reasons of choosing Power Apps over custom made web app.&lt;/p&gt;&lt;p&gt;#1 Power Apps is a &lt;a href="https://powerapps.microsoft.com/en-us/blog/powerapps-for-pros-develop-faster-with-low-code/"&gt;no-code/low-code&lt;/a&gt; platform. Ready made components to just drag and drop them into place.&lt;/p&gt;&lt;p&gt;#2 Authentication is already done and it’s based on &lt;a href="https://docs.microsoft.com/en-us/microsoft-365/admin/security-and-compliance/secure-your-business-data"&gt;Office 365 security&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;#3 Secure database connection to &lt;a href="https://docs.microsoft.com/en-us/azure/cosmos-db/introduction"&gt;Azure CosmosDB&lt;/a&gt; is implemented by &lt;a href="https://docs.microsoft.com/en-us/azure/azure-functions/functions-overview"&gt;Azure Functions&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;#4 Two-way communication between the app and Raspberry is secured by &lt;a href="https://azure.microsoft.com/en-us/services/iot-edge/"&gt;Azure IoT Edge&lt;/a&gt;. &lt;/p&gt;</content>
  </entry>
  <entry>
    <id>https://iot.robootika.com/post/how-to-setup-raspberry-pi-as-an-azure-devops-agent</id>
    <title type="text">How to setup Raspberry PI as an Azure DevOps agent</title>
    <published>2019-10-06T12:51:00Z</published>
    <updated>2020-05-07T08:49:40Z</updated>
    <author>
      <name />
    </author>
    <link rel="alternate" href="https://iot.robootika.com/post/how-to-setup-raspberry-pi-as-an-azure-devops-agent" />
    <content type="text">&lt;p&gt;You may wonder why this question even raised? Why we have to do something such a weird thing as to add Raspberry PI as an Azure DevOps agent?&lt;/p&gt;&lt;p&gt;Azure DevOps have plenty of agents for different OS-s to build and deploy solutions for Windows, Linux and mac-s.&lt;/p&gt;&lt;p&gt;&lt;img width="644" height="317" title="Azure DevOps pipelines" style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" alt="Azure DevOps pipelines" src="http://internetofthing.io/posts/files/6d6b32de-3af1-48d1-8d0b-eafe5a6177b3.png" border="0"&gt;&lt;/p&gt;&lt;h2&gt;Can I set up CI/CD pipeline for Raspberry? &lt;/h2&gt;&lt;h2&gt;No by default! &lt;/h2&gt;&lt;p&gt;By default Azure DevOps doesn’t have an option to build a solution for Raspberry. &lt;/p&gt;&lt;p&gt;I couldn’t find complete instructions to do this so I created one.&lt;/p&gt;&lt;p&gt;To set up build pipeline for Raspberry we have to build Raspberry as a self-hosted agent for Azure DevOps.&lt;/p&gt;&lt;p&gt;After completing all the steps below you can create a fully automated CI/CD pipeline for your IoT Edge device based on Raspberry PI.&lt;/p&gt;&lt;p&gt;&lt;img width="644" height="232" title="ARM32 hosted agent based on Raspberry PI" style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" alt="ARM32 hosted agent based on Raspberry PI" src="http://internetofthing.io/posts/files/a355e5ea-22b4-4d50-bda2-9003e8d789e7.png" border="0"&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;This is all SUPER&lt;font color="#ff0000"&gt;COOL !&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Please be patient and follow all the steps below. It takes more than 1 hour of your time.&lt;/p&gt;&lt;p&gt;Ok, let’s rock with the Raspberry.&lt;/p&gt;&lt;h2&gt;&lt;font color="#ff0000"&gt;Step 1.&lt;/font&gt; Install Raspbian-strech &lt;font size="3"&gt;/10min&lt;/font&gt;&lt;/h2&gt;&lt;p&gt;This step is explained in another article so I am not going to repeat the story here. Please follow the instruction here.&lt;/p&gt;&lt;p&gt;&lt;a href="http://internetofthing.io/post/install-linux-on-raspberry-set-up-azure-iot-edge-device"&gt;#1 &lt;strong&gt;Installing Linux &lt;/strong&gt;(Rasbian-stretch) on Raspberry PI&lt;/a&gt;&lt;/p&gt;&lt;h2&gt;&lt;font color="#ff0000"&gt;Step 2. &lt;font color="#000000"&gt;Install prerequisites &lt;font size="3"&gt;/4min&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/h2&gt;&lt;p&gt;If you are smarter than me then you probably know why all this stuff needed.&lt;/p&gt;&lt;pre style="background: rgb(30, 30, 30); color: rgb(218, 218, 218); font-family: consolas; font-size: 13px;"&gt;sudo apt-get install python3-setuptools python3-dev build-essential tk-dev libncurses5-dev libncursesw5-dev libreadline6-dev libdb5.3-dev libgdbm-dev libsqlite3-dev libssl-dev libbz2-dev libexpat1-dev liblzma-dev zlib1g-dev libffi-dev -y &amp;amp;&amp;amp; sudo easy_install3 pip
&lt;/pre&gt;&lt;h2&gt;&lt;font color="#ff0000"&gt;Step 3.&lt;/font&gt; Install Python 3.7&amp;nbsp; &lt;font size="3"&gt;/13min&lt;/font&gt;&lt;/h2&gt;&lt;p&gt;1. Download and install Python. More information: &lt;a href="https://gist.github.com/SeppPenner/6a5a30ebc8f79936fa136c524417761d"&gt;https://gist.github.com/SeppPenner/6a5a30ebc8f79936fa136c524417761d&lt;/a&gt;&lt;/p&gt;&lt;pre style="background: rgb(30, 30, 30); color: rgb(218, 218, 218); font-family: consolas; font-size: 13px;"&gt;wget https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tar.xz &amp;amp;&amp;amp; tar xf Python-3.7.4.tar.xz &amp;amp;&amp;amp; cd Python-3.7.4 &amp;amp;&amp;amp; ./configure &amp;amp;&amp;amp; make -j 4 &amp;amp;&amp;amp; sudo make altinstall &amp;amp;&amp;amp; cd ..
&lt;/pre&gt;&lt;p&gt;2. Make Python 3.7 as default python version. More information: &lt;a href="https://raspberry-valley.azurewebsites.net/Python-Default-Version/"&gt;https://raspberry-valley.azurewebsites.net/Python-Default-Version/&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;pre style="background: rgb(30, 30, 30); color: rgb(218, 218, 218); font-family: consolas; font-size: 13px;"&gt;sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1 &amp;amp;&amp;amp; sudo update-alternatives --install /usr/bin/python python /usr/local/bin/python3.7 2
&lt;/pre&gt;&lt;h2&gt;&lt;p&gt;&lt;font color="#ff0000"&gt;Step 4.&lt;/font&gt; Install Azure CLI tools &lt;font size="3"&gt;/18min&lt;/font&gt;&lt;/p&gt;&lt;/h2&gt;&lt;p&gt;More information: &lt;a href="https://docs.microsoft.com/en-us/cli/azure/install-azure-cli-linux"&gt;https://docs.microsoft.com/en-us/cli/azure/install-azure-cli-linux&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Just push enter when the script asks for the default installation directories (twice in the beginning of the script) and paths (twice in the end of script).&lt;/p&gt;&lt;pre style="background: rgb(30, 30, 30); color: rgb(218, 218, 218); font-family: consolas; font-size: 13px;"&gt;curl -L https://aka.ms/InstallAzureCli | bash &amp;amp;&amp;amp; exec -l $SHELL
&lt;/pre&gt;&lt;h2&gt;&lt;font color="#ff0000"&gt;Step 5.&lt;/font&gt; Install the IoT Edge runtime &lt;font size="3"&gt;/2sec&lt;/font&gt;&lt;/h2&gt;&lt;p&gt;More information: &lt;a href="https://docs.microsoft.com/en-us/azure/iot-edge/how-to-install-iot-edge-linux"&gt;https://docs.microsoft.com/en-us/azure/iot-edge/how-to-install-iot-edge-linux&lt;/a&gt;&lt;pre style="background: rgb(30, 30, 30); color: rgb(218, 218, 218); font-family: consolas; font-size: 13px;"&gt;curl https://packages.microsoft.com/config/debian/stretch/multiarch/prod.list &amp;gt; ./microsoft-prod.list &amp;amp;&amp;amp; sudo cp ./microsoft-prod.list /etc/apt/sources.list.d/ &amp;amp;&amp;amp; curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor &amp;gt; microsoft.gpg &amp;amp;&amp;amp; sudo cp ./microsoft.gpg /etc/apt/trusted.gpg.d/
&lt;/pre&gt;&lt;h2&gt;&lt;font color="#ff0000"&gt;Step 6.&lt;/font&gt; Install the Moby container runtime &lt;font size="3"&gt;/4min&lt;/font&gt;&lt;/h2&gt;&lt;p&gt;More information: &lt;a href="https://docs.microsoft.com/en-us/azure/iot-edge/how-to-install-iot-edge-linux"&gt;https://docs.microsoft.com/en-us/azure/iot-edge/how-to-install-iot-edge-linux&lt;/a&gt;&lt;p&gt;Just push enter when the script ask for the default installation directory.&lt;pre style="background: rgb(30, 30, 30); color: rgb(218, 218, 218); font-family: consolas; font-size: 13px;"&gt;sudo apt-get update &amp;amp;&amp;amp; sudo apt-get install moby-engine &amp;amp;&amp;amp; sudo apt-get install moby-cli
&lt;/pre&gt;&lt;h2&gt;&lt;font color="#ff0000"&gt;Step 7.&lt;/font&gt; Install IotEdgeDev tool &lt;font size="3"&gt;/15min&lt;/font&gt;&lt;/h2&gt;&lt;p&gt;More information: &lt;a href="https://github.com/Azure/iotedgedev/wiki/manual-dev-machine-setup"&gt;https://github.com/Azure/iotedgedev/wiki/manual-dev-machine-setup&lt;/a&gt;&lt;pre style="background: rgb(30, 30, 30); color: rgb(218, 218, 218); font-family: consolas; font-size: 13px;"&gt;sudo pip3 install -U iotedgedev
&lt;/pre&gt;&lt;h2&gt;&lt;font color="#ff0000"&gt;Step 8.&lt;/font&gt; Create an agent pool &lt;font size="3"&gt;/2min&lt;/font&gt;&lt;/h2&gt;&lt;p&gt;Now it is time to switch into Azure DevOps portal and make some configurations here. Go to your &lt;a href="https://dev.azure.com"&gt;https://dev.azure.com&lt;/a&gt; portal and open organization.&lt;/p&gt;&lt;p&gt;1. Open organization settings&lt;/p&gt;&lt;p&gt;&lt;img width="596" height="484" title="Azure DevOps organization settings" style="border: 0px currentcolor; border-image: none; margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" alt="Azure DevOps organization settings" src="http://internetofthing.io/posts/files/317c58de-012e-499f-bdc5-1abca2fa709e.jpg" border="0"&gt;&lt;/p&gt;&lt;p&gt;&lt;font color="#ff0000"&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color="#ff0000"&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;2. Add new agent pool&lt;/p&gt;&lt;p&gt;&lt;img width="644" height="459" title="Azure DevOps add new agent pool" style="border: 0px currentcolor; border-image: none; margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" alt="Azure DevOps add new agent pool" src="http://internetofthing.io/posts/files/8d4ca4d0-c7ea-405b-bcb1-a67709a51ec0.jpg" border="0"&gt;&lt;/p&gt;&lt;p&gt;3. Name it ARM&lt;/p&gt;&lt;p&gt;&lt;img width="175" height="244" title="Azure DevOps add new agent pool" style="border: 0px currentcolor; border-image: none; margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" alt="Azure DevOps add new agent pool" src="http://internetofthing.io/posts/files/30bd6bc0-9574-42e0-9e9a-92df29c9304d.jpg" border="0"&gt;&lt;/p&gt;&lt;h2&gt;&lt;font color="#ff0000"&gt;Step 9.&lt;/font&gt; Create Personal Access Token (PAT)&lt;/h2&gt;&lt;p&gt;1. Click on your name in right corner and open Security.&lt;/p&gt;&lt;p&gt;&lt;img width="206" height="244" title="Azure DevOps create personal access token (PAT)" style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" alt="Azure DevOps create personal access token (PAT)" src="http://internetofthing.io/posts/files/6b48d365-8983-43b1-ad1e-b0cc25908147.jpg" border="0"&gt;&lt;/p&gt;&lt;p&gt;2. Fill out the PAT form&lt;/p&gt;&lt;p&gt;Enter the name for the token. Put some meaningful name for it to remember later the reason you created it.&lt;/p&gt;&lt;p&gt;For the scope select &lt;strong&gt;Agent Pools (read, manage)&lt;/strong&gt; and make sure all the other boxes are cleared. If you don’t see it just click below the link “Show more scopes”.&lt;/p&gt;&lt;p&gt;&lt;img width="360" height="484" title="Azure DevOps configure personal access token (PAT)" style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" alt="Azure DevOps configure personal access token (PAT)" src="http://internetofthing.io/posts/files/1c64e91a-5c82-4b1b-8a23-2f17b3820a08.jpg" border="0"&gt;&lt;/p&gt;&lt;p&gt;3. Copy the PAT&lt;/p&gt;&lt;p&gt;Warning - Make sure you copy the above token now. You will not be able to see it again.&lt;/p&gt;&lt;p&gt;&lt;img width="274" height="484" title="Azure DevOps personal access token (PAT)" style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" alt="Azure DevOps personal access token (PAT)" src="http://internetofthing.io/posts/files/ba86c158-8033-4cfe-a6b4-e7e055b3f242.jpg" border="0"&gt;&lt;/p&gt;&lt;pre&gt;v3xv75txw54cevpkriuafeawojmhqsibp4anxamtgyfr4zqt2ygq&lt;/pre&gt;&lt;p&gt;&lt;a href="http://internetofthing.io/posts/files/1aeff9a8-efeb-4744-9a90-719aa05d55c5.jpg"&gt;&lt;br&gt;&lt;/a&gt;&lt;/p&gt;&lt;h2&gt;&lt;font color="#ff0000"&gt;Step 10.&lt;/font&gt; Configure Raspberry as an agent &lt;font size="3"&gt;/3min&lt;/font&gt;&lt;/h2&gt;&lt;p&gt;This script will download ARM template and configure Raspberry as an Azure DevOps hosted agent.&lt;p&gt;This script asks some questions during agent configuration.&lt;pre style="background: rgb(30, 30, 30); color: rgb(218, 218, 218); font-family: consolas; font-size: 13px;"&gt;wget https://vstsagentpackage.azureedge.net/agent/2.158.0/vsts-agent-linux-arm-2.158.0.tar.gz &amp;amp;&amp;amp; mkdir myagent &amp;amp;&amp;amp; cd myagent &amp;amp;&amp;amp; tar zxvf ../vsts-agent-linux-arm-2.158.0.tar.gz &amp;amp;&amp;amp; ./config.sh &amp;amp;&amp;amp; sudo ./svc.sh install root &amp;amp;&amp;amp; sudo ./svc.sh start &amp;amp;&amp;amp; cd ..
&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Accept license terms: y + enter (do not just push enter as this equals No)&lt;/li&gt;&lt;li&gt;Server URL: https://dev.azure.com/testarm32 (your organization URL)&lt;/li&gt;&lt;li&gt;Your copied PAT: v3xv75txw54cevpkriuafeawojmhqsibp4anxamtgyfr4zqt2ygq&lt;/li&gt;&lt;li&gt;Agent pool: ARM&lt;/li&gt;&lt;li&gt;Agent name: just push enter&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;img width="644" height="400" title="Configure Raspberry PI as an Azure DevOps self-hosted agent" style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" alt="Configure Raspberry PI as an Azure DevOps self-hosted agent" src="http://internetofthing.io/posts/files/518215cb-4c14-4bc6-a244-a0e75faf8227.jpg" border="0"&gt;&lt;/p&gt;&lt;p&gt;Optional: You may want to change the command if there are never ARM-template available. On that case just update all the version numbers in the command.&lt;/p&gt;&lt;p&gt;To check never version of ARM template then open the agent pool in DevOps portal.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Click New Agent&lt;/li&gt;&lt;li&gt;Select Linux&lt;/li&gt;&lt;li&gt;Select ARM&lt;/li&gt;&lt;li&gt;Copy the download link (do not download this file into your PC, you don’t need it).&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;&lt;font color="#ff0000"&gt;Finally you are done after 1h 10min! &lt;/font&gt;&lt;/h2&gt;&lt;p&gt;You have now Raspberry PI configured as a self-hosted agent in Azure DevOps. For next step you can create a fully automated CI/CD pipeline for your Raspberry PI projects.&lt;p&gt;This is explained very well here by Microsoft: &lt;a href="https://docs.microsoft.com/en-us/azure/iot-edge/how-to-ci-cd"&gt;https://docs.microsoft.com/en-us/azure/iot-edge/how-to-ci-cd&lt;/a&gt;&amp;nbsp;&lt;p&gt;Check the new agent in the Azure DevOps portal.&lt;p&gt;&lt;img width="644" height="203" title="Azure DevOps self-hosted agent" style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" alt="Azure DevOps self-hosted agent" src="http://internetofthing.io/posts/files/19b8ec2c-fafe-45f0-b590-905476013de9.jpg" border="0"&gt;</content>
  </entry>
  <entry>
    <id>https://iot.robootika.com/post/3-registering-the-edge-device-set-up-azure-iot-edge-device</id>
    <title type="text">#3 Registering the Edge device: Set up Azure IoT Edge device</title>
    <published>2019-08-29T11:14:00Z</published>
    <updated>2021-08-20T18:10:59Z</updated>
    <author>
      <name />
    </author>
    <link rel="alternate" href="https://iot.robootika.com/post/3-registering-the-edge-device-set-up-azure-iot-edge-device" />
    <content type="text">&lt;p&gt;Following is a guidance how to set up Raspberry PI from the scratch to working Azure IoT Edge device.&lt;p&gt;There is a three step-by-step articles.&lt;ul&gt;&lt;li&gt;&lt;a href="http://internetofthing.io/post/install-linux-on-raspberry-set-up-azure-iot-edge-device"&gt;#1 &lt;strong&gt;Installing Linux&amp;nbsp; &lt;/strong&gt;(Rasbian-stretch) on Raspberry PI.&lt;/a&gt;&lt;li&gt;&lt;a href="http://internetofthing.io/post/2-install-iot-edge-on-raspberry-set-up-azure-iot-edge-device"&gt;#2 &lt;strong&gt;Installing IoT Edge&amp;nbsp; &lt;/strong&gt;functionality into Raspberry.&lt;/a&gt;&lt;li&gt;&lt;a href="http://internetofthing.io/post/3-registering-the-edge-device-set-up-azure-iot-edge-device"&gt;#3 &lt;strong&gt;Registering the device&amp;nbsp; &lt;/strong&gt;as an IoT Edge device in Azure&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Lets do it together step-by-step.&lt;h2&gt;Registering the Edge device&lt;/h2&gt;&lt;p&gt;Before you can use your IoT devices with Azure IoT Edge, you need to register them with your IoT hub. Once you register a device, you receive a connection string that can be used to set up your device for IoT Edge workloads.&lt;/p&gt;&lt;p&gt;This is all about creating IoT hub in Azure and then creating/registering new IoT Edge device.&lt;/p&gt;&lt;h2&gt;&lt;font color="#ff0000"&gt;Step 1.&lt;/font&gt; Create IoT hub in Azure&lt;/h2&gt;&lt;p&gt;I assume that you have already Azure subscription. If not you can get one 12 months subscription here for free: &lt;a href="https://azure.microsoft.com/en-us/free/"&gt;https://azure.microsoft.com/en-us/free/&lt;/a&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Open Azure portal &lt;a href="https://portal.azure.com/"&gt;https://portal.azure.com/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Click “&lt;strong&gt;Create new resource&lt;/strong&gt;”&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;img width="730" height="211" title="Azure create new resource" style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" alt="Azure create new resource" src="http://internetofthing.io/posts/files/831cafab-b797-43bc-a85c-06a444d770f4.png" border="0"&gt;&lt;/p&gt;&lt;p&gt;3. &lt;strong&gt;Enter IoT hub&lt;/strong&gt; for the search box and click &lt;strong&gt;Create&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;img width="644" height="461" title="Azure create iot hub" style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" alt="Azure create iot hub" src="http://internetofthing.io/posts/files/a7292686-c913-49a1-84d8-8cf3d155570e.png" border="0"&gt;&lt;/p&gt;&lt;p&gt;4. Configure &lt;strong&gt;IoT hub parameters&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Create new resource group&lt;/strong&gt;, for example “TestGroup”&lt;/li&gt;&lt;li&gt;Select the &lt;strong&gt;closest region&lt;/strong&gt;, I have West Europe&lt;/li&gt;&lt;li&gt;Enter &lt;strong&gt;name of your IoT hub&lt;/strong&gt;, for example IoTHubForTestingPurposes&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;img width="644" height="316" title="Azure create iot hub" style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" alt="Azure create iot hub" src="http://internetofthing.io/posts/files/b8a79fc3-dd46-4863-a33c-fe07de5eade6.png" border="0"&gt;&lt;/p&gt;&lt;p&gt;5. Configure &lt;strong&gt;pricing&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;&lt;!--StartFragment--&gt;
&lt;li&gt;Open “&lt;strong&gt;Size and scale&lt;/strong&gt;” sheet&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Select pricing &lt;/strong&gt;and scale: “&lt;strong&gt;F1: Free 
tier&lt;/strong&gt;”&lt;/li&gt;&lt;!--EndFragment--&gt;&lt;/ol&gt;&lt;p&gt;&lt;img width="644" height="396" title="Azure iot hub pricing" style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" alt="Azure iot hub pricing" src="http://internetofthing.io/posts/files/b954ab40-804a-4d98-a834-ec738159ed67.png" border="0"&gt;&lt;/p&gt;&lt;p&gt;6. Click “&lt;strong&gt;Review + create&lt;/strong&gt;”&lt;/p&gt;&lt;p&gt;&lt;img width="622" height="484" title="Azure iot hub create" style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" alt="Azure iot hub create" src="http://internetofthing.io/posts/files/4cc0a622-dc45-4485-93ad-1457a68e3a4e.png" border="0"&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;h2&gt;&lt;font color="#ff0000"&gt;Step 2.&lt;/font&gt; Create an Edge device&lt;/h2&gt;&lt;ol&gt;&lt;li&gt;Navigate to your &lt;strong&gt;IoT hub&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;Select &lt;strong&gt;IoT Edge &lt;/strong&gt;from the menu&lt;/li&gt;&lt;li&gt;Select &lt;strong&gt;Add an IoT Edge device&lt;/strong&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;&lt;img width="644" height="483" title="create azure iot edge device" style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" alt="create azure iot edge device" src="http://internetofthing.io/posts/files/5278e137-d5a2-45f0-9280-e68dae6e4aac.jpg" border="0"&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;4. &lt;strong&gt;Enter name&lt;/strong&gt; of your device&lt;/p&gt;&lt;p&gt;5. Leave all other information as default and &lt;strong&gt;click Save&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;img width="547" height="484" title="create iot edge device" style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" alt="create iot edge device" src="http://internetofthing.io/posts/files/cdc93274-26f9-481a-81ff-3e911deb70a6.jpg" border="0"&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;h2&gt;&lt;font color="#ff0000"&gt;Step 3.&lt;/font&gt; Get the device connection string&lt;/h2&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Open &lt;/strong&gt;your IoT Edge device&lt;/li&gt;&lt;li&gt;Click &lt;strong&gt;Copy&lt;/strong&gt; of &lt;strong&gt;Primary Connection String&lt;strong&gt;&lt;img width="644" height="325" title="get the primary connection string" style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" alt="get the primary connection string" src="http://internetofthing.io/posts/files/07f35975-8e89-446b-9c45-927d5c8773ce.jpg" border="0"&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;h2&gt;&lt;font color="#ff0000"&gt;Step 4.&lt;/font&gt; Configure the Raspberry device&lt;/h2&gt;&lt;p&gt;As you have now IoT Edge device created in Azure IoT hub you can configure your device to connect to the IoT hub.&lt;/p&gt;&lt;p&gt;In previous step you copied the connection string to your clipboard. Now this has to be placed into Edge device. Based this connection string the device knows where is the cloud and cloud knows how to find and connect with the device.&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Open PuTTY&lt;/strong&gt; and connect to your device&lt;/li&gt;&lt;li&gt;Enter following command to &lt;strong&gt;open configuration file &lt;/strong&gt;config.yaml&lt;/li&gt;&lt;/ol&gt;&lt;pre style="background: rgb(30, 30, 30); color: gainsboro; font-family: consolas; font-size: 13px;"&gt;sudo nano /etc/iotedge/config.yaml
&lt;/pre&gt;&lt;p&gt;3. Find &lt;strong&gt;Manual provisioning section&lt;/strong&gt;&lt;p&gt;Find the provisioning configurations of the file and uncomment the Manual provisioning configuration section. &lt;p&gt;4. Update the value of device_connection_string &lt;p&gt;Update the value of device_connection_string with the connection string from your IoT Edge device. Make sure any other provisioning sections are commented out.&lt;pre style="background: rgb(30, 30, 30); color: gainsboro; font-family: consolas; font-size: 13px;"&gt;# Manual provisioning configuration provisioning:
	source: "manual"
	device_connection_string: "HostName=IoTHubForTestingPurposes.azure-devices.net;DeviceId=TestDevice;SharedAccessKey=manynumbersandletters"
# DPS TPM provisioning configuration
&lt;/pre&gt;&lt;p&gt;5. Save and close the file, CTRL + X, Y, Enter.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Close the file: Ctrl + X&lt;/li&gt;&lt;li&gt;Do you want to save: Y&lt;/li&gt;&lt;li&gt;Exit: Enter&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;6. Restart your device IoT Edge daemon&lt;/p&gt;&lt;pre style="background: rgb(30, 30, 30); color: gainsboro; font-family: consolas; font-size: 13px;"&gt;sudo systemctl restart iotedge
&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;&lt;br&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;Congratulation&lt;/font&gt;: you have now a working Azure IoT Edge device!&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;We can start to develop solutions on it but there are some tricky things so I will publish additional guidance's for tips and tricks.&lt;/strong&gt;&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>https://iot.robootika.com/post/2-install-iot-edge-on-raspberry-set-up-azure-iot-edge-device</id>
    <title type="text">#2 Install IoT Edge on Raspberry: Set up Azure IoT Edge device</title>
    <published>2019-08-28T15:16:00Z</published>
    <updated>2022-11-12T21:03:42Z</updated>
    <author>
      <name />
    </author>
    <link rel="alternate" href="https://iot.robootika.com/post/2-install-iot-edge-on-raspberry-set-up-azure-iot-edge-device" />
    <content type="text">&lt;p&gt;Following is a guidance how to set up Raspberry PI from the scratch to working Azure IoT Edge device.&lt;/p&gt;&lt;p&gt;There is a three step-by-step articles.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://internetofthing.io/post/install-linux-on-raspberry-set-up-azure-iot-edge-device"&gt;#1 &lt;strong&gt;Installing Linux &lt;/strong&gt;(Rasbian-stretch) on Raspberry PI&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://internetofthing.io/post/2-install-iot-edge-on-raspberry-set-up-azure-iot-edge-device"&gt;#2 &lt;strong&gt;Installing IoT Edge &lt;/strong&gt;functionality into Raspberry.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://internetofthing.io/post/3-registering-the-edge-device-set-up-azure-iot-edge-device"&gt;#3 &lt;strong&gt;Registering the device &lt;/strong&gt;as an IoT Edge device in Azure.&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Lets do it together step-by-step.&lt;/p&gt;&lt;p&gt;The Azure IoT Edge runtime is what turns a device into an IoT Edge device. The runtime can be deployed on devices as small as a Raspberry Pi or as large as an industrial server. Once a device is configured with the IoT Edge runtime, you can start deploying business logic to it from the cloud.&lt;/p&gt;&lt;h2&gt;&lt;font color="#ff0000"&gt;Step 0.&lt;/font&gt; Login to your Raspberry&lt;/h2&gt;&lt;p&gt;Before any further step you have to log in to your Raspberry.&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Open&lt;/strong&gt; PuTTY&lt;/li&gt;&lt;li&gt;Enter your Raspberry name and &lt;strong&gt;connect&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Log in&lt;/strong&gt; using username: pi and password: raspberry (if not changed)&lt;/li&gt;&lt;/ol&gt;&lt;h2&gt;&lt;font color="#ff0000"&gt;Step &lt;/font&gt;&lt;font color="#ff0000"&gt;1.&lt;/font&gt; Install the latest runtime version&lt;/h2&gt;&lt;p&gt;1. Prepare your device for the IoT Edge runtime installation.&lt;/p&gt;&lt;pre style="background:rgb(30,30,30);width:756px;height:40px;color:gainsboro;font-family:consolas;font-size:13px"&gt;&lt;span style="color: rgb(230, 230, 230); font-family: SFMono-Regular, Consolas, &amp;quot;Liberation Mono&amp;quot;, Menlo, Courier, monospace; font-size: 14px; background-color: rgb(47, 47, 47);"&gt;curl https://packages.microsoft.com/config/debian/11/packages-microsoft-prod.deb &amp;gt; ./packages-microsoft-prod.deb&lt;/span&gt;
&lt;/pre&gt;&lt;p&gt;2. add the Microsoft package signing key to your list of trusted keys.&lt;/p&gt;&lt;pre style="background:rgb(30,30,30);color:gainsboro;font-family:consolas;font-size:13px"&gt;sudo apt install ./packages-microsoft-prod.deb&lt;/pre&gt;&lt;h2&gt;&lt;font color="#ff0000"&gt;Step &lt;/font&gt;&lt;font color="#ff0000"&gt;2.&lt;/font&gt; Install the container runtime&lt;/h2&gt;&lt;p&gt;Azure IoT Edge relies on an &lt;a href="https://www.opencontainers.org/"&gt;OCI-compatible&lt;/a&gt; container runtime. Microsoft recommended to use the &lt;a href="https://mobyproject.org/"&gt;Moby-based&lt;/a&gt; engine provided below. It is the only container engine officially supported with Azure IoT Edge.&lt;/p&gt;&lt;p&gt;1. Perform apt update.&lt;/p&gt;&lt;pre style="background:rgb(30,30,30);color:gainsboro;font-family:consolas;font-size:13px"&gt;sudo apt-get update
&lt;/pre&gt;&lt;p&gt;2. Install the Moby engine.&lt;/p&gt;&lt;pre style="background:rgb(30,30,30);color:gainsboro;font-family:consolas;font-size:13px"&gt;sudo apt-get install moby-engine
&lt;/pre&gt;&lt;p&gt;&lt;font color="#ff0000" style="font-family: inherit; font-size: 1.5em;"&gt;Step &lt;/font&gt;&lt;font color="#ff0000" style="font-family: inherit; font-size: 1.5em;"&gt;3.&lt;/font&gt;&lt;span style="color: inherit; font-family: inherit; font-size: 1.5em;"&gt; Install the Azure IoT Edge Security Daemon&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The IoT Edge security daemon provides and maintains security standards on the IoT Edge device. The daemon starts on every boot and bootstraps the device by starting the rest of the IoT Edge runtime.&lt;/p&gt;&lt;p&gt;1. Perform apt update.&lt;/p&gt;&lt;pre style="background:rgb(30,30,30);color:gainsboro;font-family:consolas;font-size:13px"&gt;sudo apt-get update
&lt;/pre&gt;&lt;p&gt;2. Install the security daemon.&lt;/p&gt;&lt;pre style="background: rgb(30, 30, 30);"&gt;&lt;font color="#dcdcdc" face="consolas"&gt;sudo apt-get install aziot-edge defender-iot-micro-agent-edge&lt;br /&gt;&lt;/font&gt;&lt;/pre&gt;&lt;h2&gt;&lt;font color="#ff0000"&gt;Step  4.&lt;/font&gt; Configure the security daemon&lt;/h2&gt;&lt;p&gt;To manually provision a device, you need to provide it with a &lt;a href="https://docs.microsoft.com/en-us/azure/iot-edge/how-to-register-device-portal"&gt;device connection string&lt;/a&gt; that you can create by registering a new device in your IoT hub.&lt;/p&gt;&lt;p&gt;Before you can configure security daemon in your IoT Edge device, you have to register your new in Azure IoT Hub.&lt;/p&gt;&lt;p&gt;Please take a look the third article on this series and then come back here to register your device.&lt;/p&gt;&lt;p&gt;&lt;a href="http://internetofthing.io/post/3-registering-the-edge-device-set-up-azure-iot-edge-device"&gt;#3 &lt;strong&gt;Registering the device&lt;/strong&gt;as an IoT Edge device in Azure.&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;Do you have already IoT hub and Edge device in Azure?&lt;/h3&gt;&lt;p&gt;If you have already your IoT Edge device created in Azure IoT hub, then just copy the device connection string from the Azure portal and you can immediately configure your Raspberry.&lt;/p&gt;&lt;p&gt;Based this connection string the device knows where is the cloud and cloud knows how to find and connect with the device.&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Open PuTTY&lt;/strong&gt; and connect to your device&lt;/li&gt;&lt;li&gt;Enter following command to &lt;strong&gt;open configuration file &lt;/strong&gt;config.toml&lt;/li&gt;&lt;/ol&gt;&lt;pre style="background:rgb(30,30,30);color:gainsboro;font-family:consolas;font-size:13px"&gt;sudo nano /etc/aziot/config.toml
&lt;/pre&gt;&lt;p&gt;3. Find &lt;strong&gt;Manual provisioning section&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Find the provisioning configurations of the file and uncomment the Manual provisioning configuration section.&lt;/p&gt;&lt;p&gt;4. &lt;strong&gt;Update&lt;/strong&gt; the value of device_connection_string&lt;/p&gt;&lt;p&gt;Update the value of device_connection_string with the connection string from your IoT Edge device. Make sure any other provisioning sections are commented out.&lt;/p&gt;&lt;pre style="background:rgb(30,30,30);color:gainsboro;font-family:consolas;font-size:13px"&gt;# Manual provisioning configuration provisioning:
	source: "manual"
	device_connection_string: "HostName=IoTHubForTestingPurposes.azure-devices.net;DeviceId=TestDevice;SharedAccessKey=manynumbersandletters"
# DPS TPM provisioning configuration
&lt;/pre&gt;&lt;p&gt;5. &lt;strong&gt;Save and close&lt;/strong&gt; the file, CTRL + X, Y, Enter.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Close the file: Ctrl + X&lt;/li&gt;&lt;li&gt;Do you want to save: Y&lt;/li&gt;&lt;li&gt;Exit: Enter&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;6. &lt;strong&gt;Restart&lt;/strong&gt; your device IoT Edge daemon&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&lt;pre style="background:rgb(30,30,30);color:gainsboro;font-family:consolas;font-size:13px"&gt;&lt;strong&gt;sudo systemctl restart iotedge
&lt;/strong&gt;&lt;/pre&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;Congratulation&lt;/font&gt;: you have now a working Azure IoT Edge device!&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;We can start to develop solutions on it but there are some tricky things so I will publish additional guidance's for tips and tricks.&lt;/strong&gt;&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>https://iot.robootika.com/post/install-linux-on-raspberry-set-up-azure-iot-edge-device</id>
    <title type="text">#1 Install Linux on Raspberry: Set up Azure IoT Edge device</title>
    <published>2019-08-27T11:16:00Z</published>
    <updated>2022-11-12T15:43:42Z</updated>
    <author>
      <name />
    </author>
    <link rel="alternate" href="https://iot.robootika.com/post/install-linux-on-raspberry-set-up-azure-iot-edge-device" />
    <content type="text">&lt;p&gt;Following is a guidance how to set up Raspberry PI from the scratch to working Azure IoT Edge device.&lt;/p&gt;&lt;p&gt;There is a three step-by-step articles.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://internetofthing.io/post/install-linux-on-raspberry-set-up-azure-iot-edge-device"&gt;#1 &lt;strong&gt;Installing Linux&lt;/strong&gt;(Rasbian-stretch) on Raspberry PI.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://internetofthing.io/post/2-install-iot-edge-on-raspberry-set-up-azure-iot-edge-device"&gt;#2 &lt;strong&gt;Installing IoT Edge&lt;/strong&gt;functionality into Raspberry.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://internetofthing.io/post/3-registering-the-edge-device-set-up-azure-iot-edge-device"&gt;#3 &lt;strong&gt;Registering the device&lt;/strong&gt;as an IoT Edge device in Azure.&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Lets do it together step-by-step.&lt;/p&gt;&lt;h2&gt;Installing Linux (Rasbian) on Raspberry PI&lt;/h2&gt;&lt;p&gt;This is the article about supported &lt;a href="https://docs.microsoft.com/en-us/azure/iot-edge/support"&gt;Azure IoT Edge systems&lt;/a&gt;. Only Raspbian Debian 11 (bullseye) is currently fully supported.&lt;/p&gt;&lt;h2&gt;&lt;font color="#ff0000"&gt;Step 1.&lt;/font&gt; Download Raspbian-bullseye image&lt;/h2&gt;&lt;ol&gt;&lt;li&gt;Download the Raspbian-bullseye lite image from the archive here: &lt;a href="https://downloads.raspberrypi.org/raspbian_lite/images/raspbian_lite-2019-04-09/"&gt;https://downloads.raspberrypi.org/raspios_lite_armhf/images/raspios_lite_armhf-2022-09-26/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Download&lt;/strong&gt;the latest and greatest version of &lt;a href="https://downloads.raspberrypi.org/raspios_lite_armhf/images/raspios_lite_armhf-2022-09-26/2022-09-22-raspios-bullseye-armhf-lite.img.xz"&gt;Raspbian Bullseye&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Unpack the image to your hard drive.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;&lt;font color="#ff0000"&gt;Step 2.&lt;/font&gt; Burn the image to the SD card&lt;/h2&gt;&lt;p&gt;For this step I am using Win32 Disk Imager which can be downloaded here: &lt;a href="https://sourceforge.net/projects/win32diskimager/"&gt;https://sourceforge.net/projects/win32diskimager/&lt;/a&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Download Disk Imager and install it to your PC.&lt;/li&gt;&lt;li&gt;Run the Disk Imager&lt;/li&gt;&lt;li&gt;Select image file you just downloaded and unpacked from Raspbian&lt;/li&gt;&lt;li&gt;Select SD card as your device (use at least&lt;strong&gt;8Gb or bigger&lt;/strong&gt; SD card)&lt;/li&gt;&lt;li&gt;Click Write!&lt;img width="644" height="381" title="Disk Imager" style="margin-right:auto;margin-left:auto;float:none;display:block;background-image:none" alt="Disk Imager" src="http://internetofthing.io/posts/files/fd5626fc-bdf7-48e2-b9b8-4d8df69ed5b6.jpg" border="0" /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;When the process complete you may see some prompts that the drive is not ready would you like format it etc.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Don't do this! Don’t format!&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;img width="244" height="120" title="Don't format the disk" style="display:inline;background-image:none" alt="Don't format the disk" src="http://internetofthing.io/posts/files/3b267f31-9592-4dd2-8e61-3446b660cbc3.jpg" border="0" /&gt;&lt;/p&gt;&lt;p&gt;There is just one partition named &lt;strong&gt;boot&lt;/strong&gt; which can read. Do not touch other partitions.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;&lt;font color="#ff0000"&gt;Step 3.&lt;/font&gt; Enable SSH&lt;/h2&gt;&lt;p&gt;SSH is used to access remotely to your Raspberry. You definitely need this so don’t think this is unnecessary step.&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Open &lt;strong&gt;boot&lt;/strong&gt; drive from the SD card&lt;/li&gt;&lt;li&gt;Create empty file named &lt;strong&gt;ssh&lt;/strong&gt; on that drive (without any extension). No content, nothing, just 0 byte file.&lt;/li&gt;&lt;/ol&gt;&lt;h2&gt;&lt;font color="#ff0000"&gt;Step 3.1&lt;/font&gt; Add user&lt;/h2&gt;&lt;p&gt;For security reason Debian 11 has removed the default user for Raspberry. This mean that after installation you cannot log in remotely through SSH as you dont have any user. &lt;/p&gt;&lt;ol&gt;&lt;li&gt;Open &lt;span style="font-weight: 700;"&gt;boot&lt;/span&gt; drive from the SD card&lt;/li&gt;&lt;li&gt;Create empty file named &lt;b&gt;userconf.txt &lt;/b&gt;on that drive.&lt;/li&gt;&lt;li&gt;Add the following content. This content will create a username &lt;b&gt;pi &lt;/b&gt;with password &lt;b&gt;password&lt;/b&gt;.&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&lt;pre style="font-family: consolas; line-height: 1.42857; color: gainsboro; background: rgb(30, 30, 30);"&gt;&lt;div class="s-prose js-post-body" itemprop="text" style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: var(--s-prose-line-height); font-family: var(--theme-post-body-font-family); font-size: 15px; vertical-align: baseline; box-sizing: inherit; --s-prose-line-height:1.5; --s-prose-spacing:1.1em; --s-prose-spacing-condensed:calc(var(--s-prose-spacing) / 2); overflow-wrap: break-word; width: 659px;"&gt;&lt;pre style="margin-bottom: 0px; padding: var(--su12); border-width: 0px; border-style: initial; border-color: initial; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: var(--lh-md); font-family: var(--ff-mono); font-size: var(--fs-body1); vertical-align: baseline; box-sizing: inherit; width: auto; max-height: 600px; background-color: var(--highlight-bg); border-radius: var(--br-md); overflow-wrap: normal; color: var(--highlight-color);"&gt;&lt;code style="margin: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: var(--ff-mono); font-size: var(--fs-body1); vertical-align: baseline; box-sizing: inherit; white-space: inherit;"&gt;pi:$6$38HiUnLhwlE1DRdL$MHHb6/OsyAlZNqmW7igj333g/CRwG/g5nls7ylTEqZZg9rOIM/cUvE962.5x6M0ONMz/r6OlBy/G6f4v8zrH51
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="mt24" style="margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; vertical-align: baseline; box-sizing: inherit; margin-top: var(--su24)  !important;"&gt;&lt;div class="d-flex fw-wrap ai-start jc-end gs8 gsy" style="margin-right: 0px; margin-left: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; vertical-align: baseline; box-sizing: inherit; flex-wrap: wrap !important; justify-content: flex-end !important; align-items: flex-start !important; display: flex !important;"&gt;&lt;time itemprop="dateCreated" datetime="2022-05-24T12:16:25" style="margin: 0px; padding: 0px; border: 0px; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-stretch: inherit; line-height: inherit; font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI Adjusted&amp;quot;, &amp;quot;Segoe UI&amp;quot;, &amp;quot;Liberation Sans&amp;quot;, sans-serif; vertical-align: baseline; box-sizing: inherit; color: rgb(35, 38, 41); white-space: normal; background-color: rgb(255, 255, 255);"&gt;&lt;/time&gt;&lt;div class="flex--item mr16" style="margin-right: 0px; margin-left: 0px; padding: 0px; border: 0px; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-stretch: inherit; line-height: inherit; font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI Adjusted&amp;quot;, &amp;quot;Segoe UI&amp;quot;, &amp;quot;Liberation Sans&amp;quot;, sans-serif; vertical-align: baseline; box-sizing: inherit; color: rgb(35, 38, 41); white-space: normal; background-color: rgb(255, 255, 255); flex: 1 1 100px;"&gt;&lt;div class="js-post-menu pt2" data-post-id="72362734" style="margin: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; vertical-align: baseline; box-sizing: inherit; padding-top: var(--su2)  !important;"&gt;&lt;div class="d-flex gs8 s-anchors s-anchors__muted fw-wrap" style="margin: calc(var(--su8) / 2 * -1); padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; line-height: inherit; font-family: inherit; vertical-align: baseline; box-sizing: inherit; flex-wrap: wrap !important; display: flex !important;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2&gt;&lt;font color="#ff0000"&gt;Step 4.&lt;/font&gt; Add WiFi network&lt;/h2&gt;&lt;p&gt;This step is makes your Raspberry PI connected into your WiFi network after booting.&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Open &lt;strong&gt;boot&lt;/strong&gt;drive from the SD card.&lt;/li&gt;&lt;li&gt;Create a file named &lt;strong&gt;wpa_supplicant.conf&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;Open this file with &lt;strong&gt;Notepad&lt;/strong&gt; and add your WiFi network information.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Btw, my favorite notepad is &lt;a href="https://notepad-plus-plus.org/download"&gt;Notepad++&lt;/a&gt;.&lt;/p&gt;&lt;pre style="background:rgb(30,30,30);color:gainsboro;font-family:consolas;font-size:13px"&gt;ctrl_interface=/run/wpa_supplicant
update_config=1
country=US
network={
	ssid="NETWORK-NAME"
	psk="NETWORK-PASSWORD"
}
&lt;/pre&gt;&lt;h2&gt;&lt;font color="#ff0000"&gt;Step 5.&lt;/font&gt; Enable I2C and SPI protocols&lt;/h2&gt;&lt;p&gt;This step will make I2C and SPI connections available. By default they are disabled but many modern sensors are using especially I2C protocol.&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Open &lt;strong&gt;boot&lt;/strong&gt;drive from the SD card&lt;/li&gt;&lt;li&gt;Open existing file &lt;strong&gt;config.txt&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;Find the lines and &lt;strong&gt;uncomment&lt;/strong&gt; all three lines&lt;/li&gt;&lt;/ol&gt;&lt;pre style="background:rgb(30,30,30);color:gainsboro;font-family:consolas;font-size:13px"&gt;dtparam=i2c_arm=on
dtparam=i2s=on
dtparam=spi=on&lt;/pre&gt;&lt;p&gt;&lt;img width="644" height="67" title="config.txt I2C, SPI I2S" style="margin-right:auto;margin-left:auto;float:none;display:block;background-image:none" alt="config.txt I2C, SPI I2S" src="http://internetofthing.io/posts/files/4711b348-3dff-4cc6-95bc-fd2fd1e8a33c.jpg" border="0" /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;&lt;font color="#ff0000"&gt;Step 6.&lt;/font&gt; Take the SD card and boot your Raspberry&lt;/h2&gt;&lt;p&gt;Now is finally time to take out the SD card from your PC and start the Raspberry from it.&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Remove SD card from your PC&lt;/li&gt;&lt;li&gt;Put it into Raspberry&lt;/li&gt;&lt;li&gt;Plug the power cable&lt;/li&gt;&lt;li&gt;Let the Raspberry boot, up to 2 minutes&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;&lt;font color="#ff0000"&gt;Step 7.&lt;/font&gt; Login to your Raspberry PI through ssh&lt;/h2&gt;&lt;p&gt;Now we will log in into the Raspberry to make some additional changes. For this step we need additional software for example PuTTY.&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Download&lt;/strong&gt;and &lt;strong&gt;install&lt;/strong&gt;PuTTY&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Open&lt;/strong&gt;PuTTY&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Connect&lt;/strong&gt; to your Raspberry,&lt;/li&gt;&lt;ol&gt;&lt;li&gt;the name of your fresh Raspberry is just &lt;strong&gt;raspberrypi&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;img width="244" height="240" title="Open PuTTY and connect to Raspberry" style="display:inline;background-image:none" alt="Open PuTTY and connect to Raspberry" src="http://internetofthing.io/posts/files/a04b12df-d0cc-49f2-ac8a-f31e14070864.jpg" border="0" /&gt;&lt;/li&gt;&lt;li&gt;First time PuTTY asks security question, Correct answer is &lt;strong&gt;Yes&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;img width="244" height="211" title="Answer Yes for this security question" style="display:inline;background-image:none" alt="Answer Yes for this security question" src="http://internetofthing.io/posts/files/8853186b-bb06-427e-bdfc-dbaf35832553.jpg" border="0" /&gt;&lt;/strong&gt;&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;&lt;strong&gt;Login&lt;/strong&gt;to your Raspberry&lt;/li&gt;&lt;ol&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Username: pi&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Password: raspberry&lt;/strong&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/ol&gt;&lt;li&gt;You are &lt;strong&gt;in&lt;/strong&gt;!&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;img width="644" height="281" title="Logged in into Raspberry" style="margin-right:auto;margin-left:auto;float:none;display:block;background-image:none" alt="Logged in into Raspberry" src="http://internetofthing.io/posts/files/d0dc6f36-0fd4-43ab-b309-a9d35cd565ad.jpg" border="0" /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h2&gt;&lt;font color="#ff0000"&gt;Step 8.&lt;/font&gt; Change your Raspberry name!&lt;/h2&gt;&lt;p&gt;You can’t have many devices with the same name. It will be mesh. So better to change the name right now.&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Run the following command on your Raspberry:&lt;/li&gt;&lt;/ol&gt;&lt;pre style="background:rgb(30,30,30);color:gainsboro;font-family:consolas;font-size:13px"&gt;sudo raspi-config
&lt;/pre&gt;&lt;p&gt;&lt;font color="#000000"&gt;2. Go to &lt;strong&gt;Network Options&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color="#000000"&gt;&lt;a href="http://internetofthing.io/posts/files/5fce70b7-ee6c-4949-ae70-882f7cbe10e9.jpg"&gt;&lt;strong&gt;&lt;img width="644" height="316" title="Raspberry network options" style="margin-right:auto;margin-left:auto;float:none;display:block;background-image:none" alt="Raspberry network options" src="http://internetofthing.io/posts/files/3afd1a8c-1a81-4faf-aec6-7e2ac21ea38f.jpg" border="0" /&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color="#000000"&gt;3. Go to &lt;strong&gt;Hostname&lt;/strong&gt;&lt;font color="#000000"&gt;&lt;img width="644" height="308" title="Raspberry Hostname" style="margin-right:auto;margin-left:auto;float:none;display:block;background-image:none" alt="Raspberry Hostname" src="http://internetofthing.io/posts/files/19df521b-cb00-4ba0-83dd-0a013c4ac7fd.jpg" border="0" /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color="#000000"&gt;4. Enter new name for this Raspberry, for example &lt;strong&gt;testpi&lt;/strong&gt; and press &lt;strong&gt;OK&lt;/strong&gt;&lt;font color="#000000"&gt;&lt;strong&gt;&lt;img width="644" height="381" title="Raspberry name" style="margin-right:auto;margin-left:auto;float:none;display:block;background-image:none" alt="Raspberry name" src="http://internetofthing.io/posts/files/58658e7b-35f5-4ea8-b52b-6d76bfd690f9.jpg" border="0" /&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color="#000000"&gt;&lt;font color="#000000"&gt;5. Press &lt;strong&gt;Finish&lt;/strong&gt;and let the Raspberry boot&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color="#000000"&gt;&lt;img width="370" height="183" title="Finish" style="display:inline;background-image:none" alt="Finish" src="http://internetofthing.io/posts/files/d56fb3c7-6ec5-477d-9c38-ff933baf39f1.jpg" border="0" /&gt;&lt;img width="344" height="203" title="Reboot" style="display:inline;background-image:none" alt="Reboot" src="http://internetofthing.io/posts/files/e3accbef-ccc8-4309-9a18-beb1fd0fa214.jpg" border="0" /&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color="#000000"&gt;&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;&lt;h2&gt;&lt;font color="#000000"&gt;&lt;font color="#ff0000"&gt;Step 9.&lt;/font&gt; Login with the new name &lt;strong&gt;testpi&lt;/strong&gt;&lt;/font&gt;&lt;/h2&gt;&lt;p&gt;&lt;font color="#000000"&gt;&lt;img width="244" height="241" title="Login to your Raspberry with the new name" style="display:inline;background-image:none" alt="Login to your Raspberry with the new name" src="http://internetofthing.io/posts/files/db5cef2d-9d06-4adf-bb7a-966a4e84ba18.jpg" border="0" /&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color="#000000"&gt;&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;&lt;h2&gt;&lt;font color="#000000"&gt;&lt;font color="#ff0000"&gt;Step 10.&lt;/font&gt; Get the updates&lt;/font&gt;&lt;/h2&gt;&lt;p&gt;&lt;font color="#000000"&gt;To get the important &lt;strong&gt;updates&lt;/strong&gt; run the &lt;strong&gt;command&lt;/strong&gt;:&lt;/font&gt;&lt;/p&gt;&lt;pre style="background:rgb(30,30,30);color:gainsboro;font-family:consolas;font-size:13px"&gt;sudo apt-get update
&lt;/pre&gt;&lt;p&gt;&lt;img width="644" height="173" title="Get the important updates" style="margin-right:auto;margin-left:auto;float:none;display:block;background-image:none" alt="Get the important updates" src="http://internetofthing.io/posts/files/17399501-e430-4f0a-bb92-66ea759a3f27.jpg" border="0" /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;font color="#ff0000"&gt;&lt;strong&gt;Congratulation&lt;/strong&gt;&lt;/font&gt;: Your Raspberry PI setup is done. Please follow the next article to make this Raspberry as an IoT Edge capable device.&lt;/p&gt;&lt;p&gt;Next step: &lt;a href="http://internetofthing.io/post/2-install-iot-edge-on-raspberry-set-up-azure-iot-edge-device"&gt;#2 &lt;strong&gt;Installing IoT Edge&lt;/strong&gt; functionality into Raspberry&lt;/a&gt;&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>https://iot.robootika.com/post/home-iot-project-smart-home-security</id>
    <title type="text">HOME IOT project: smart security</title>
    <published>2018-10-07T21:00:00Z</published>
    <updated>2019-10-02T12:07:04Z</updated>
    <author>
      <name />
    </author>
    <link rel="alternate" href="https://iot.robootika.com/post/home-iot-project-smart-home-security" />
    <content type="text">&lt;p&gt;Another step to make my home smarter using activity detection and human presence.&lt;p&gt;1. How IoT can modernize your home security? It will be human-centric, almost nonvisible.&lt;p&gt;2. Are you tired remember another PIN? You can forget your home-security pin forever.&lt;p&gt;3. Do you need remotely turn off home security? This is easy, you don’t need to do anything for it.&lt;p&gt;This picture presenting the full smart home concept, security is just a one part of my smart home environment. The main heart is Raspberry as an IoT device and Azure cloud for information processing, reporting and alerting.&lt;p&gt;&lt;a href="http://internetofthing.io/posts/files/30d1ece6-dda1-4db6-baa0-dbe744c0ce92.jpg"&gt;&lt;img width="704" height="388" title="Home IoT project" style="display: inline; background-image: none;" alt="Home IoT project" src="http://internetofthing.io/posts/files/518a34ca-a0c2-492b-a754-db5ee584335b.jpg" border="0"&gt;&lt;/a&gt;&lt;p&gt;The idea is to use existing:&lt;p&gt;1) PIR (passive infrared sensor) and door magnetic proximity sensors to detect human movement by sliding window algorithm and&lt;p&gt;2) Wi-Fi sniffer to detect by phone MAC-address who is at home (assumption: phone Wi-Fi is turned on).&lt;p&gt;IR detectors and door proximity sensor together are used to automatically secure on unsecure entire home. It is based on sliding window algorithm as there are clear patterns for entry/exit activities. &lt;p&gt;The accuracy is not 100%, for example, if someone is leaving and doesn’t close the door afterwards, then you cannot say is he really left or just hanging somewhere close.&lt;p&gt;Wi-Fi sniffer is just listening what kind of Wi-Fi devices are close and by MAC-address you can easily match this information to names. &lt;p&gt;Secure/unsecure your home:&lt;p&gt;If algorithm detects exit pattern, then home is automatically secured. What does it mean “secured”?&lt;p&gt;“Secure” mean just active alerting by SMS/WhatsApp/e-mail.&lt;p&gt;Secured home mean that, if PIR or proximity sensors are detecting movement, then you will be alerted by SMS, WhatsApp, e-mail that someone is at your home. You can make whatever you like to do now, call neighbors, friends, police etc.&lt;p&gt;If the person is known by his/her phone MAC-address, then there will be no alerting and security is basically off. &lt;p&gt;If your phone Wi-Fi is not turned on and you will get alerted, then you must answer to SMS/WhatsApp/e-mail notification. System automatically recognizes you and taking off active alerting functionality.</content>
  </entry>
  <entry>
    <id>https://iot.robootika.com/post/iota-on-uus-blockchain</id>
    <title type="text">IOTA on uus Blockchain</title>
    <published>2017-06-28T12:48:02Z</published>
    <updated>2017-06-29T05:34:42Z</updated>
    <author>
      <name />
    </author>
    <link rel="alternate" href="https://iot.robootika.com/post/iota-on-uus-blockchain" />
    <content type="text">&lt;p&gt;&lt;a href="https://iota.org/"&gt;IOTA&lt;/a&gt; on 2014 aastal loodud innovaatiline ja tulevikukindel tehnoloogia, mis loob turvalise andmevõrgu Internet of Things ehk IoT seadmetele.&lt;/p&gt;&lt;p&gt;IOTA-t nimetatakse mõnikord ka blockchain 3.0, kuigi IOTA ei ole blockchain.&lt;/p&gt;&lt;p&gt;IOTA sobib suurepäraselt IoT seadmetel põhinevatele rakendustele, võimaldades &lt;/p&gt;&lt;ul&gt;&lt;li&gt;mikro- ja nanomakseid, &lt;/li&gt;&lt;li&gt;odomeetrid (auto pass),&lt;/li&gt;&lt;li&gt;seadmelt-seadmele suhtlust (sensorid-kontrollerid), &lt;/li&gt;&lt;li&gt;smart city, &lt;/li&gt;&lt;li&gt;energy grid, &lt;/li&gt;&lt;li&gt;adaptiivsed süsteemid &lt;/li&gt;&lt;li&gt;jm suured hajusvõrgud,&lt;/li&gt;&lt;li&gt;&lt;a href="https://blog.iota.org/automating-machine-transactions-and-building-trust-in-the-4th-industrial-revolution-d3219a157396"&gt;Industrial Revolution 4.0&lt;/a&gt;. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;img width="644" height="278" title="IOTA v&amp;otilde;imalused" style="display: inline; background-image: none;" alt="IOTA v&amp;otilde;imalused" src="http://internetofthing.io/posts/files/0327a780-3a71-4a29-b642-f8c25ef2bb11.png" border="0"&gt;&lt;/p&gt;&lt;p&gt;Kui maailm on vaevalt hakanud rääkima blockchainist ja aru saamas selle toimise põhimõtetest ning kasulikkusest majandusele, on matemaatikud-geeniused-programmeeriad välja töötanud täielikult teistel alustel töötava krüptoraha mudeli IOTA.&lt;/p&gt;&lt;h2&gt;IOTA vs Blockchain&lt;/h2&gt;&lt;p&gt;Mille poolest erineb IOTA blockchainist?&lt;/p&gt;&lt;p&gt;&lt;img width="504" height="205" title="tangle vs blockchain" style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" alt="tangle vs blockchain" src="http://internetofthing.io/posts/files/92499a6e-4ff1-46b8-9cdc-6b44ec966566.png" border="0"&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;IOTA võrk on &lt;strong&gt;suunatud atsükliline graaf&lt;/strong&gt; (Directed Acyclic Graph - DAG) ja&amp;nbsp; alustehnoloogia kannab nime &lt;a href="http://www.tangleblog.com/"&gt;Tangle&lt;/a&gt;. Blockchainis on kõik blokid ühes ranges reas.&lt;/li&gt;&lt;li&gt;IOTA-s &lt;strong&gt;pole blokke, ahelat ja ei toimu kaevandamist&lt;/strong&gt;. Blockchainis asuvad kõik tehingud blokkides ja tehingute kinnitamist nimetatakse kaevandamiseks ning see võtab aega.&lt;/li&gt;&lt;li&gt;IOTA-s on kõik &lt;strong&gt;ülekanded tasuta ja reaalajas&lt;/strong&gt;. Blockchainis on igal ülekandel väike võrgutasu ning tehingu kinnitamine võib aega võtta 10 minutit (Bitcoin).&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;img width="244" height="66" title="IOTA no fees" style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" alt="IOTA no fees" src="http://internetofthing.io/posts/files/29e9d0ea-e8b5-4b9c-8d7d-36fdc1552c03.png" border="0"&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;IOTA &lt;strong&gt;skaleerub lõpmatuseni&lt;/strong&gt;. Blockchain ei skaleeru andmemahtude kasvades.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;img width="244" height="149" title="IOTA unlimited scalability" style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" alt="IOTA unlimited scalability" src="http://internetofthing.io/posts/files/826e9fbd-b467-483d-bd1f-90b1c8bb84a3.png" border="0"&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;IOTA disainiti &lt;strong&gt;miljoneid IoT seadmeid&lt;/strong&gt; silmas pidades, eesmärgiks ei olnud otseselt krüptoraha loomine, kuigi turul on ka IOTA krüptoraha. Blockchain ei sobi IoT seadmetele, kuna sisaldab tehingutasusid.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;img width="244" height="138" title="IOTA the next sharing economy" style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" alt="IOTA the next sharing economy" src="http://internetofthing.io/posts/files/2ba56203-b3f4-4bca-be13-e6d5f61f0175.png" border="0"&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;IOTA eesmärk on anda &lt;strong&gt;turvaline ja skaleeruv alusvõrk&lt;/strong&gt; IoT sedmetele.&lt;/li&gt;&lt;li&gt;IOTA on &lt;strong&gt;tulevikukindel&lt;/strong&gt; ja tänase teadmise kohaselt ka kvantarvutite kindel. Blockchaini on teoreetiliselt võimalik kvantarvutite tekkimisel murda.&lt;/li&gt;&lt;li&gt;IOTA tangle võrgus on võimalikud &lt;strong&gt;offline tehingud&amp;nbsp; &lt;/strong&gt;ja &lt;strong&gt;offline Tangle &lt;/strong&gt;võrk&lt;strong&gt;. &lt;/strong&gt;Blockchainis puudub igasugune võimalus, et mõni blokk offline’s välja arvutataks ja jadasse lisataks.&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Tasuta IOTA ülekanded&lt;/h2&gt;&lt;p&gt;Erinevalt blockchainist puuduvad IOTA-s vahendustasud (seetõttu on võimalikud ka mikro- või nanomaksed). &lt;/p&gt;&lt;p&gt;Blockchainis eksisteerivad vahendustasud selleks, et vältida spämmerite tegevust (spämmer = DDoS rünnak). IOTA toimib graafi põhimõttel ning iga tehing peab enne võrku jõudmist valideerima kaks eelmist tehingut, sellega on muudetud spämmimine (ehk DDoS rünnak) mõttetuks. &lt;/p&gt;&lt;p&gt;Ehk siis valideerimisnõudega saavutati IOTA-s kaks eelist:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;tehingud on tasuta,&lt;/li&gt;&lt;li&gt;välistatud tehingute spämm.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;h2&gt;Kuidas toimib IOTA?&lt;/h2&gt;&lt;p&gt;Alljärgnevalt püüan seda keerulist IOTA asja selgitada. Selleks, et IOTA toimimisest lõpuni aru saada peab aga olema kõrgema matemaatikaga sina-peal.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1&lt;/strong&gt;: IOTA Tangle on &lt;strong&gt;suunatud atsükliline graaf&lt;/strong&gt; (Directed Acyclic Graph ehk DAG). Tangle pole blockchain. Blockchain on ahel, tangle on graaf.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;DAG&lt;/strong&gt; on suunatud graaf, kus&amp;nbsp; puudub tsükkel, ehk siis graafi tipud on teineteisele pidevas järgnevuses.&lt;/p&gt;&lt;p&gt;&lt;img width="508" height="292" title="IOTA tangle" style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" alt="IOTA tangle" src="http://internetofthing.io/posts/files/134cb0e1-10de-4dc1-bd6b-32fd11cea7bb.png" border="0"&gt;&lt;/p&gt;&lt;p&gt;Sellel pildil tähistavad tähed/tipud IOTA tehinguid ja nool tähistab tehingu valideerimise suunda. Aeg liigub vasakult paremale ning tsüklite tekkimine on välistatud. Iga tehing kinnitab kaks eelmist tehingut, A kinnitab näiteks tehingud B ja D.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2&lt;/strong&gt;: IOTA on &lt;strong&gt;skaleeruv. &lt;/strong&gt;Iga node peab omapoolse tehingu tegemisel kinnitama enne kaks teist tehingut. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;3&lt;/strong&gt;: IOTA on &lt;strong&gt;detsentraliseeritud&lt;/strong&gt;.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;4&lt;/strong&gt;: IOTA on &lt;strong&gt;kiire&lt;/strong&gt;. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;5&lt;/strong&gt;: IOTA tehingud on &lt;strong&gt;tasuta&lt;/strong&gt;. Blockchaini puhul lisandub alati väikene võrgutasu mis läheb tehingu kinnitamise arvutamiseks.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;6&lt;/strong&gt;: IOTA on &lt;strong&gt;kvantarvutite kindel&lt;/strong&gt;, tänase teadmise kohaselt. Blockchaini on teoreetiliselt võimalik ülisuure arvutusvõimsusega murda (täna sellist arvutusvõimsust ei eksisteeri).&lt;/p&gt;&lt;h2&gt;Skaleeruvus&lt;/h2&gt;&lt;p&gt;IOTA skaleeruvus väljendub selles, et enne oma tehingu sooritamist tuleb kinnitada kaks teist tehingut. Seega, mida rohkem on IOTA-s seadmeid ja suhtlust, seda kiiremini saavad tehingud kinnituse.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Mida rohkem on IOTA kasutajaid, seda kõrgemaks muutub turvalisus ja kiiremaks tehingute kinnitamine.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Kuna iga tehingu lisandumisel saavad kinnituse kaks eelmist tehingut, tõuseb iga üksiku tehingu usaldusväärsus ajas.&lt;/p&gt;&lt;p&gt;Võrreldes blockchainiga muutub IOTA ajas seda kiiremaks mida rohkem on kasutajaid kuna seal puudub blockchainile omane blokkide arvutamine. Blockchain on oma olemuselt mahtude kasvades ajas aeglasemaks muutuv.&lt;/p&gt;&lt;h2&gt;Kuidas IOTA kiiremaks muutub?&lt;/h2&gt;&lt;p&gt;IOTA ei pea järjestama oma tehinguid nende täpses toimumise järjekorras nagu see toimub blockchainis. Tehingud võivad asuda suvalises järjekorras. &lt;/p&gt;&lt;p&gt;Kui lülitada juurde uus node, siis sünkroniseerimisel grupeeritakse tehingud aadresside järgi ja tehingute järjestus pole samal ajal oluline. IOTA aadress on nn. krüptoraha konto, millega tehakse tehinguid.&lt;/p&gt;&lt;p&gt;IOTA tehingute kiirus on väga suur sest ühe konto arvutamisel arvestatakse kommutatiivsuse seadust a+b=b+a. Tehingud liidetakse kokku kokku suvalises järjekorras ning see tagab kiiruse. Nullide liitmise peale aega ei kulutata, need visatakse lõppu. &lt;/p&gt;&lt;p&gt;Blockchainis on tehingud rangelt ajalises järjestuses ja seal ei arvestata kommutatiivsuse seadust seega kõik tehingud tuleb ükshaaval kokku liita. &lt;/p&gt;&lt;p&gt;IOTA-s puudub mõiste “maksimaane tehingute arv ühes blokis” nagu see on blockchainis. Näiteks suure hulga tehingute korral ootavad blockchain tehingud järjekorras ja see lisab ajalise viite nende kinnitamisele.&lt;/p&gt;&lt;p&gt;Tulenevalt graafi iseloomust kinnitatakse IOTA-s tehinguid paralleelselt. Blockchainis toimub tehingute kinnitamine ühes kindlas ahelas ja järjestuses ning see tingib paratamatult andmemahtude kasvades kiiruse langust.&lt;/p&gt;&lt;h2&gt;Konsensusel põhinev võrk?&lt;/h2&gt;&lt;p&gt;Me teame, et inimeste vahel pole 100% konsensust olemas, alati on kellelgi oma arvamus.&lt;/p&gt;&lt;p&gt;IOTA tehingud kinnitatakse &lt;a href="https://en.wikipedia.org/wiki/Markov_chain_Monte_Carlo"&gt;Markov chain Monte Carlo&lt;/a&gt; (MCMC) algoritmiga &lt;a href="https://blog.iota.org/a-primer-on-iota-with-presentation-e0a6eb2cc621"&gt;konsensue&lt;/a&gt; põhimõttel. &lt;/p&gt;&lt;p&gt;&lt;img width="644" height="202" title="IOTA konsensus" style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" alt="IOTA konsensus" src="http://internetofthing.io/posts/files/a853ae22-d8f7-4830-80f6-bee0ae076479.png" border="0"&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Rohelised &lt;/strong&gt;on konsensusega kinnitatud tehingud, &lt;strong&gt;punaste &lt;/strong&gt;tehingute puhul pole konsensus lõplikult kindel ja &lt;strong&gt;hallid &lt;/strong&gt;on täiesti uued, kinnitamata tehingud.&lt;/p&gt;&lt;p&gt;Kuidas siis saavad hallid tehingud endale kinnituse?&lt;/p&gt;&lt;p&gt;Tehingute kinnitamise algoritm baseerub MCMC-l. Kui näiteks kaupmehe jaoks on tehingu 51% tõenäosus piisav, võib ta oma tehing edukaks lugeda. Seega kinnituste lisandumisel liiguvad punased tehingud lihtsalt aja möödudes roheliseks.&lt;/p&gt;&lt;h2&gt;Ebaaus tehing süsteemis?&lt;/h2&gt;&lt;p&gt;Esimene küsimus mis ülaltoodud kirjelduse peale ilmselt tekib on, et “mis siis kui ma panen süsteemi ebaausa tehingu?”&lt;/p&gt;&lt;p&gt;Oletagem näiteks, et üks hall tehing on &lt;em&gt;non-valid, &lt;/em&gt;mis tähendab peaasjalikult seda, et üritatakse maksta rahaga mida kontol pole. &lt;/p&gt;&lt;ol&gt;&lt;li&gt;Esiteks kinnitab see &lt;em&gt;non-valid &lt;/em&gt;tehing kaks punast tehingut &lt;/li&gt;&lt;li&gt;siis jääb &lt;em&gt;non-valid&lt;/em&gt; tehing endale kinnitust ootama, et võrku pääseda&lt;/li&gt;&lt;li&gt;saabub uus tehing, mis ühena peab kinnitama selle &lt;em&gt;non-valid&lt;/em&gt; tehingu&lt;/li&gt;&lt;li&gt;kinnitamiseks arvutatakse kontojääk ning kui see ei klapi, tehingule kinnitust ei anta ja see jääb süsteemist välja&lt;/li&gt;&lt;li&gt;kui aga peaks osutuma mingil (tehnilisel) põhjusel et &lt;em&gt;non-valid &lt;/em&gt;tehing saab siiski kinnituse, peavad seda ka teised valideerima ning pettus tuleb igal juhul välja.&lt;/li&gt;&lt;li&gt;Lisaks on selline “pahatahtlik” kinnitamine väga ohtlik, kuna &lt;em&gt;non-valid&lt;/em&gt; tehingule kinnituse andja node’i edaspidiseid tehinguid ei kinnita. Node muutub süsteemi jaoks ebausaldusväärseks.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Seega IOTA süsteemi autentsul baseerub ühisel tehingute-vahelisel konsensusel.&lt;/p&gt;&lt;h2&gt;Masinad teenivad raha?&lt;/h2&gt;&lt;p&gt;Lähitulevikus on võimalik mudel, kus masinad hakkavad ise maksma oma hoolduse, energiatarbe, arvutusvõimsuse, andmemahu või ka kindlustuse eest. Seega masinad hakkavad isesisvalt teenima ja kulutama raha sensoritelt ja anduritelt saadud info põhjal. &lt;/p&gt;&lt;p&gt;Masinal tekib esimest korda mõttekus pangakonto omanikuks hakata. Masina sissetulek baseerub pakutavatel teenustel ning väljaminekud võivad olla energia või kindlustuse maksed.&lt;/p&gt;&lt;h2&gt;IOTA ärimudelid?&lt;/h2&gt;&lt;p&gt;IOTA ärimudelite väljatöötamisega tegeleb &lt;a href="https://innovationhub.innogy.com/"&gt;Innovation HUB&lt;/a&gt;. &lt;/p&gt;&lt;h2&gt;IOTA ja Microsoft&lt;/h2&gt;&lt;p&gt;&lt;a href="https://azure.microsoft.com/en-us/blog/azure-blockchain-update-5/"&gt;Microsoft&lt;/a&gt; teeb koostööd IOTA-ga. Azure’s on olemas teenused IOTA kasutamiseks.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;IoT seadmete maksekanal&lt;/li&gt;&lt;li&gt;Smart Contracts&lt;/li&gt;&lt;li&gt;Luua oma Tangle võrk&lt;/li&gt;&lt;/ul&gt;</content>
  </entry>
  <entry>
    <id>https://iot.robootika.com/post/blockchain-lahendused-eestis-ja-maailmas</id>
    <title type="text">Blockchain lahendused Eestis ja maailmas</title>
    <published>2017-06-27T13:00:49Z</published>
    <updated>2017-07-05T09:41:24Z</updated>
    <author>
      <name />
    </author>
    <link rel="alternate" href="https://iot.robootika.com/post/blockchain-lahendused-eestis-ja-maailmas" />
    <content type="text">&lt;p&gt;Rääkides Blockchainist on esimene seostuv sõna muidugi Bitcoin, kuid see on vaid jäämäe veepealne osa. &lt;/p&gt;&lt;p&gt;Alljärgnevalt olen koondanud kokku loetelu Eesti ja maailma silmapaistvatest tegudest blockchain tehnoloogial.&lt;/p&gt;&lt;p&gt;&lt;img width="644" height="338" title="Blockchain lahendused Eestis ja maailmas" style="margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" alt="Blockchain lahendused Eestis ja maailmas" src="http://internetofthing.io/posts/files/d01b1ffc-193f-4e8e-a3a2-4fa434163aaa.png" border="0"&gt;&lt;/p&gt;&lt;h2&gt;Eesti ja Blockchain&lt;/h2&gt;&lt;h4&gt;&lt;a href="http://www.nasdaq.com/"&gt;Nasdaq&lt;/a&gt; &lt;/h4&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.nasdaq.com/article/nasdaq-and-citi-announce-pioneering-blockchain-and-global-banking-integration-cm792544"&gt;CitiConnect&lt;/a&gt; blockchainil põhinev väärtpaberiturg.&lt;/li&gt;&lt;li&gt;&lt;a href="https://geenius.ee/uudis/nasdaq-loob-tallinna-borsile-e-residentsuse-ja-blockchainiga-aktsionaridele-e-haaletuse/"&gt;Tallinna börsil&lt;/a&gt; noteeritud firmade osanike koosolekutel osalemine ja blockchainil põhinev hääletamise süsteem.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.reuters.com/article/nasdaq-blockchain-estonia-idUSL1N1382S620151113"&gt;Nasdaq Private Market&lt;/a&gt; kasutab blockchaini&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;&lt;a href="https://www.lhv.ee/"&gt;LHV pank&lt;/a&gt;&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;koostöö suurima krüptoaha platvormiga &lt;a href="http://www.coindesk.com/lhv-bank-coinbase-europe/"&gt;coinbase&lt;/a&gt;, krüptovaluuta vahetus Euroopas&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.cuber.ee/en_US/"&gt;Cuber&lt;/a&gt; nimeline krüptorahakott blockchain tehnoloogial, EURO-de jaoks.&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;&lt;a href="https://www.funderbeam.com/faq#how-does-funderbeam-use-blockchain"&gt;Funderbeam&lt;/a&gt;&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;Tegeleb Startupide rahastamisega ning investeerimiskeskkond põhineb blockchain tehnoloogial.&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;&lt;a href="https://www.ria.ee/ee/eriik-2018-x-tee-vahendab-sellest-nadalast-alusteenusena-plokiaheldust.html"&gt;X-tee&lt;/a&gt;&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;Kasutab osaliselt blockchaini põhimõtet ning sellega saab tagatud andmete turvalisus ja terviklikkus ning valitsus ega ka keegi teine ei saa nendega manipuleerida.&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;&lt;a href="http://www.ituudised.ee/uudised/2017/02/15/roivas-eesti-e-tervise-lahendused-naitavad-suunda"&gt;E-tervis&lt;/a&gt; &lt;/h4&gt;&lt;ul&gt;&lt;li&gt;Inimeste terviseandmete hoidmine baseerub &lt;a href="https://guardtime.com/"&gt;Guardtime’i&lt;/a&gt; loodud blockchaini tehnoloogial.&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;&lt;a href="http://tehnika.postimees.ee/3619613/eesti-riik-on-poordunud-blockchain-i-usku"&gt;Riigi teataja&lt;/a&gt;&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;Riigi Teataja on Eesti riigi seaduse alustala. Uued seadusandlikud aktid lisanduvad blockchaini tehnoloogial.&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;&lt;a href="http://www.identit.ee/"&gt;e-Resident&lt;/a&gt;&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;&lt;a href="https://bitnation.co/blog/pressrelease-estonia-bitnation-public-notary-partnership/"&gt;Bitnationi&lt;/a&gt; blockchainil põhinev notar: abielu sõlmimise, sünnitunnistuse välja andmine, ärilepingud jpm.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;&lt;a href="http://www.eesti2.ee/projektid/bitcoin"&gt;Eesti 2.0&lt;/a&gt;&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;Tegeleb innovatsiooniliste tehnoloogiate edendamisega Eesti koolinoorte hulgas ning ühe projektina jagas 10-le Eesti koolile bitcoini krüptoraha kaevandava arvuti.&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;&lt;a href="http://decrypto.ee/?lang=et"&gt;Bitcoini automaat&lt;/a&gt;&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Tallinnas ja Narvas on Bitcoini vahetamise automaadid, ATM-d.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;&lt;a href="https://geenius.ee/uudis/ilves-hakkab-juhtima-maailma-majandusfoorumi-blockchaini-toogruppi/"&gt;Toomas Hendrik Ilves&lt;/a&gt;&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;hakkas juhtima World Economic Forum loodud töögruppi, mis tegeleb blockchainil põhineva valitsemismudeli arendamisega. Sinna kuuluvad mh. Hiina ja Suurbiritannia keskpankade ning Barclay ja Deutsche bank inimesed.&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;&lt;a href="https://smartlog.kinno.fi/"&gt;Smartlog&lt;/a&gt;&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;Soome ja Eesti ühine tegevus, mida rahastab EU ning mille eesmärk on välja töötada blockchainil põhinev logistika lahendus.&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Blockchain maailmas&lt;/h2&gt;&lt;p&gt;&lt;a href="https://azure.microsoft.com/en-us/solutions/blockchain/"&gt;Microsoft&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Microsoft on loonud lahenduse, mille abil saab paari hiirekliki abil püsti panna oma privaatse blockchain lahenduse, selleks et arendada ja testida oma ärirakendusi. Partneriteks avatud platvorm Ethereum ja teised.&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;&lt;a href="https://newsroom.accenture.com/news/accenture-microsoft-create-blockchain-solution-to-support-id2020.htm"&gt;Inimese digitaalne ID&lt;/a&gt;&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Microsoft ja Accenture on loomas blockchainil põhinevat globaalset digi ID lahendust vähemalt 1 miljardile inimesele: &lt;a href="http://id2020.org/"&gt;ID2020&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;&lt;a href="http://investor.visa.com/news/news-details/2016/Visa-Introduces-International-B2B-Payment-Solution-Built-on-Chains-Blockchain-Technology/default.aspx"&gt;Visa&lt;/a&gt; &lt;/h4&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Rahvusvahlised B2B maksed põhinevad blockchainil. &lt;a href="http://www.zerohedge.com/news/2017-06-24/visa-hiring-ethereum-blockchain-engineer"&gt;Otsib&lt;/a&gt; Ethereum tehnoloogi.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;&lt;a href="http://www.reuters.com/article/us-banks-barclays-blockchain-idUSKCN11D23B"&gt;Bank of America, Barclays, HSBC, Credit Suisse UBS&lt;/a&gt;&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt; ja paljud teised pangad kasutavad omavaheliste finantsteenuste jaoks blockchaini. &lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;&lt;a href="http://www.prnewswire.com/news-releases/chinese-logistics-industry-enters-blockchain-era-with-the-new-blockchain-application-sub-committee-300382342.html"&gt;China Federation of Logistics &amp;amp; Purchasing (CFLP)&lt;/a&gt;&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.chinawuliu.com.cn/english/"&gt;CFLP&lt;/a&gt; missioon on tuua innovatsiooni Hiina logistikaärisse ning algatas koostöös Shenzhen Digital Singularity’ga blockchain tehonloogia arendamise logistika jaoks.&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;&lt;a href="https://www.forbes.com/sites/tomgroenfeldt/2017/03/05/ibm-and-maersk-apply-blockchain-to-container-shipping/"&gt;Maersk&lt;/a&gt;&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;Maersk ja IBM on loonud blockchainil põhineva logistikalahenduse, millega täiemahulise rakendamise korral tõuseb kogu maailma SKP 2%.&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;&lt;a href="http://www.coindesk.com/walmart-blockchain-food-tracking-test-results-encouraging/"&gt;Walmart&lt;/a&gt;&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Koostöös IBM-i ja Pekingi Tsinghua ülikooliga töötati välja esmalt sealiha trackimiseks blockchaini tehnoloogial põhinev lahendus. &lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href="http://www.zdnet.com/article/walmarts-drone-delivery-plan-includes-blockchain-tech/"&gt;Droonidega “last mile delivery”&lt;/a&gt; jaoks on välja töötamisel blockchainil põhinev lahendus.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;&lt;a href="https://www.cryptocoinsnews.com/samsung-sds-puts-blockchain-use-koreas-shipping-industry/"&gt;Korea kaubalaevade transport&lt;/a&gt;&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Koostöös Samsungi, IBMi ja Korea valitsusega luuakse blockchainil põhinev transpordilogistika süsteem.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href="http://www.wired.co.uk/article/blockchain-conflict-diamonds-everledger"&gt;Teemantite autentsuse tagamine&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Maailmas ringiliikuvate teemantite autentsuse jälgimiseks loodi blockchainil põhinev lahendus, mis anab igale kivile unikaalse ID erinevate parameetrite alusel. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href="http://www.eft.com/supply-chain/4-ways-blockchain-will-change-supply-chain-forever-and-4-things-preventing-it-doing-so"&gt;Blockchaini võimalused ja väljakutsed logistikas&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Suurimad võimalused ja takistused Blockchaini rakendamisel logistikas. Millised need on ja kuidas nendega tegeleda.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href="https://news.bitcoin.com/australia-postal-3-blockchain-use-cases/"&gt;Austraalia Post&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Leidis kolm use case’i, kus kasutada ja arendada blockchaini tehnoloogiat: e-hääletamine, identiteet ja erinevad registrid.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href="https://news.bitcoin.com/australia-post-uber-moment-parcel/"&gt;Austraalia Post ja pakiäri Uberiga&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Pakkide kohaletoimetamiseks plaanitakse hakata kasutama Uberi teenuseid, mis aga eeldab omakorda blockchain tehnoloogiat, et oleks tagatud turvalisus ja trackingu läbipaistvus.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href="http://www.opengovasia.com/articles/7443-australia-post-exploring-blockchain-technology-to-secure-food-products-supply-chain"&gt;Austraalia Post ja Alibaba&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Austraalia Post hakkab koostöös Alibabaga ehitama blockchaini põhist logistikalahendust kiiresti riknevate toiduainete jälgimiseks transpordis.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href="http://www.coindesk.com/europe-biggest-port-blockchain-logistics/"&gt;Rotterdami sadam&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Tegemist on ühe Euroopa suurima kaubasadamaga ning nemad on oma logistika efektiivistamiseks välja valinud blockchaini.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href="https://www.dealstreetasia.com/stories/ibm-partners-singapore-start-up-freshturf-to-use-ibm-cloud-and-blockchain-technologies-for-secure-storage-lockers-network-56215/"&gt;Singapur, online shopping&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;FreshTurf, Singapuri startup võttis kasutusele koos IBM-ga blockchain tehnoloogia, et viia Singapuris online shopping ja delivery uuele tasemele.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href="http://www.ubims.com/"&gt;3D Supply Chain Process System&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Töötas välja blockchainil põhineva logistikalahenduse, mis haarab kogu väärtusahelat.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href="https://www.uspsoig.gov/document/blockchain-technology-possibilities-us-postal-service"&gt;USPS liigub blockchaini&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;USPS on ära teinud põhjaliku analüüsi, et milliseid teenuseid saaks hakata osutama blockchaini tehnoloogial.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href="https://www.enel.com/en/media/news/d201702-enel-to-the-discovery-of-the-blockchain.html"&gt;Enel energia turg&lt;/a&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Juhtiv energia ning gaasiettevõte Enel hakkas tegelema blockchaini kasutuselevõtuga kauplemiseks, võrguhalduseks ja taastuvenergia mikrotootjate haldamiseks.&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;&lt;a href="https://coinmarketcap.com/all/views/all/"&gt;Krüptoraha&lt;/a&gt;&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;&lt;p&gt;Bitcoin on krüptoraha ehk rakendus, mis baseerub Blockchain tehnoloogial. Krüptorahasid on turul juba ligi 1000 tükki. Enam kui pooled neist ei kannata mingit kriitikat ning peale Bitcoini teatakse veel ka Ethereumi ja võibolla ka Litcoini. &lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;</content>
  </entry>
  <entry>
    <id>https://iot.robootika.com/post/how-to-minimize-home-energy-consumption-with-iot</id>
    <title type="text">How IoT can save your energy consumption?</title>
    <published>2017-02-08T12:27:58Z</published>
    <updated>2017-07-20T19:59:20Z</updated>
    <author>
      <name />
    </author>
    <link rel="alternate" href="https://iot.robootika.com/post/how-to-minimize-home-energy-consumption-with-iot" />
    <content type="text">&lt;h1&gt;What is the biggest cost in your home? &lt;/h1&gt;&lt;h3&gt;It is heating!&lt;/h3&gt;&lt;p&gt;I will be introducing a home controller project, where I will be focusing on minimizing the consumption of home energy .&lt;/p&gt;&lt;p&gt;This project uses Microsoft software technology stack like Windows 10 IoT Core, Azure, IoThub and PowerBI. Hardware used for this project is Raspberry PI, OneWire digital temperature sensors, relays, some resistors and transistors.&lt;/p&gt;&lt;p&gt;&lt;a href="http://internetofthing.io/posts/files/d7d50d26-0e86-4052-ae91-9f7ca280bfef.png"&gt;&lt;img width="704" height="491" title="IoT HomeController overview" style="display: inline; background-image: none;" alt="IoT HomeController overview" src="http://internetofthing.io/posts/files/b0e96db0-5e21-49af-8819-46f01df99326.png" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;h1&gt;Where did my story begin?&lt;/h1&gt;&lt;p&gt;I had an apartment in a very cool region which has lovely architecture from ages 1950-1970. However, I had 3 major problems there:&lt;/p&gt;&lt;p&gt;1. During the winter we sometimes have –30 degrees and the walls of these buildings are quite thin, my monthly expenditure for heating was sometimes 500 EUR/month. &lt;/p&gt;&lt;p&gt;2. I love kayaking, so I need to keep my 6,5m long kayak somewhere. I cannot take it into my sleeping room.&lt;/p&gt;&lt;p&gt;3. I love to live in a quiet place, but there we had some lovely neighbors with a dog Rottweiler, who was barking almost all the time.&lt;/p&gt;&lt;p&gt;So I started to look for a new home which would be free from these problems. Now we have our own home which is quiet, it has a garage to store the kayak but most importantly, my yearly expenditure for heating the whole home is 1000 EUR using a ground based heat pump. &lt;/p&gt;&lt;p&gt;Even though my monthly costs are so small now, I still wanted to reduce it. I figured out 4 ways for optimization.&lt;/p&gt;&lt;h1&gt;What to even optimize on a heat pump?&lt;/h1&gt;&lt;p&gt;There are three things you can optimize.&lt;/p&gt;&lt;p&gt;1. Homes with heat pumps have some special pumps (motors), which move water inside the pipes that is inside floor. Usually these pumps are working 24/7. It sounds weird, but yes, no heat pump has been produced that would turn these motors off when room temperature is on normal levels and doesn’t need more heating. &lt;/p&gt;&lt;h2&gt;This will be my optimization #1&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;If room temperature is normal and doesn’t need heating, I can safely turn off this motor to save energy consumption.&lt;/strong&gt;&lt;/p&gt;&lt;hr&gt;&lt;p&gt;2. Usually, these homes have another motor for hot water, which enables you to have instant hot water from the shower. This pump is working 24/7 and I haven’t seen a single solution where it is turned off when there’s no demand for hot water.&lt;/p&gt;&lt;h2&gt;This will be my optimization #2&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;If nobody is at home (children are at school and we are at work) or during the night time when everyone is asleep, this pump can be safely turned off to save energy consumption.&lt;/strong&gt;&lt;/p&gt;&lt;hr&gt;&lt;p&gt;3. Heat pumps are working in automated mode, where they measure the outside temperature and the water temperature inside the heating pipes (outgoing and incoming) and based on that information, the heat pump calculates the heating time to keep the temperature constant in a room.&lt;/p&gt;&lt;h3&gt;The heat pump doesn’t know anything about energy price.&lt;/h3&gt;&lt;h3&gt;But I know. Or the Internet knows. &lt;/h3&gt;&lt;p&gt;Energy has a market price that will change hourly. The price is very often twice as high in daytime when compared to night time. Take a look at this graph, from 00:00 to 05:00 it has a price of 3,75 s/kWh but at 8:00 or at 18-19:00 the energy price is over 8 s/kWh. It is more than two times higher.&lt;/p&gt;&lt;p&gt;&lt;img width="704" height="339" title="Energy hourly market price" style="display: inline; background-image: none;" alt="Energy hourly market price" src="http://internetofthing.io/posts/files/44515220-242f-472e-b6f9-6f418794c7b4.png" border="0"&gt;&lt;/p&gt;&lt;h2&gt;This will be my optimization #3&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;If energy price is high, my heat pump will be turned off. This is actually the highest energy consumption in my home compared to my other optimizations.&lt;/strong&gt;&lt;/p&gt;&lt;hr&gt;&lt;p&gt;I worked out a special algorithm to avoid a cold home if the energy price is high during the day. My program will calculate 12 cheapest hours during the day and the heat pumps are turned on only during that time. If the energy price is high during the day, I will still calculate the cheapest hours and my heating system will work during that time. The floor is from betony, so it can keep heat for many hours. &lt;/p&gt;&lt;p&gt;Look at the following graph. Green lines will represent 12 cheapest hours during the day, so my heat pump will work actually during periods: 00:00-06:59, 13:00-13:59, 16:00-16:50 and 21:00-23:59, altogether 12 hours in a day.&lt;/p&gt;&lt;p&gt;&lt;img width="704" height="328" title="Energy hourly market priceEnergy hourly market price, green is 12 cheapest hours in a day" style="display: inline; background-image: none;" alt="Energy hourly market price, green is 12 cheapest hours in a day" src="http://internetofthing.io/posts/files/c4582168-f6d4-450f-ac11-2fd9d30c3fd3.png" border="0"&gt;&lt;/p&gt;&lt;p&gt;In order to use this energy price based optimization, you need to have an energy meter which measures your home energy on an hourly basis and you need an hourly based energy contract with your energy provider. I have both, so this optimization has a huge effect on my energy consumption.&lt;/p&gt;&lt;p&gt;&lt;hr&gt;&lt;/p&gt;&lt;h1&gt;What to even optimize with the ventilation system?&lt;/h1&gt;&lt;p&gt;My home also has a ventilation system. The ventilation system will ensure that you will have fresh air in your home. &lt;/p&gt;&lt;p&gt;But how do I know the air is fresh? The most important parameter is to measure CO2 level. If this is high, you could turn ventilation on.&amp;nbsp; There is a proved science behind the CO2 level in rooms. &lt;/p&gt;&lt;h2&gt;This will be my optimization #4&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;If CO2 level is high, my ventilation will be turned on, after CO2 level is back on normal levels, ventilation will be turned off.&lt;/strong&gt;&lt;/p&gt;&lt;hr&gt;
&lt;h1&gt;Do I need reports on how my home is doing?&lt;/h1&gt;&lt;p&gt;Initially I though that getting reports is not needed, but when I started to learn about Azure IoTHub, stream analytics and PowerBI, I figured out that asking for reports is so easily achievable, that it would be really stupid not to.&lt;/p&gt;&lt;p&gt;Microsoft has tons of information on how to send data to Azure through Azure IoTHub. That just required a few lines of code and the creation of an Azure IoTHub and I was ready to send data into Azure.&lt;/p&gt;&lt;p&gt;PowerBI is working just out-of-the-box. What I was missing was how to send data from Azure to PowerBI. That was very easy – stream analytics will do all the job for you. So I just needed to create PowerBI reports to see what’s happening at home.&lt;/p&gt;&lt;p&gt;Finally, I have a good PowerBI dashboard to see all different aspects regarding heating time, temperatures, CO2 levels, ventilation etc.&lt;/p&gt;&lt;p&gt;&lt;img width="244" height="169" title="temperatures, proposed heating time, real heating time" style="display: inline; background-image: none;" alt="temperatures, proposed heating time, real heating time" src="http://internetofthing.io/posts/files/71a1f272-08bd-4d6d-8e44-a3f807e1d847.png" border="0"&gt;&lt;img width="244" height="140" title="heating and hot water producing time in minutes per day" style="display: inline; background-image: none;" alt="heating and hot water producing time in minutes per day" src="http://internetofthing.io/posts/files/a45cc157-68b2-403c-ba00-73a163363dff.png" border="0"&gt;&lt;img width="244" height="85" title="CO2, humidity level and report about ventilation time in minutes per day" style="display: inline; background-image: none;" alt="CO2, humidity level and report about ventilation time in minutes per day" src="http://internetofthing.io/posts/files/63405845-2742-48bf-88de-eb35dfb595e4.png" border="0"&gt;&lt;img width="244" height="169" title="IoT outside temperature graph in last 24 h" style="display: inline; background-image: none;" alt="IoT outside temperature graph in last 24 h" src="http://internetofthing.io/posts/files/ec3e529b-a655-4c27-846a-d558d1147828.png" border="0"&gt;&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>https://iot.robootika.com/post/hello-blinky-first-lesson-in-raspberry-pi</id>
    <title type="text">Hello Blinky first lesson in Raspberry PI</title>
    <published>2017-02-03T11:27:30Z</published>
    <updated>2017-02-03T20:12:13Z</updated>
    <author>
      <name />
    </author>
    <link rel="alternate" href="https://iot.robootika.com/post/hello-blinky-first-lesson-in-raspberry-pi" />
    <content type="text">&lt;p&gt;HelloBlinky is one of the shortest and easily understandable program which illustrates Raspberry PI GPIO programming.&lt;/p&gt;&lt;p&gt;In the following example we are using Raspberry PI with Windows 10 IoT Core.&lt;/p&gt;&lt;p&gt;&lt;a title="https://github.com/LeivoSepp/Lesson1-HelloBlinky" href="https://github.com/LeivoSepp/Lesson1-HelloBlinky"&gt;https://github.com/LeivoSepp/Lesson1-HelloBlinky&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;What is GPIO?&lt;/h3&gt;&lt;p&gt;GPIO stands for &lt;strong&gt;g&lt;/strong&gt;eneral-&lt;strong&gt;p&lt;/strong&gt;urpose &lt;strong&gt;i&lt;/strong&gt;nput/&lt;strong&gt;o&lt;/strong&gt;utput and it is a generic pin on a Raspberry/Arduino board. Each pin can be configured to be input or output.&lt;/p&gt;&lt;h3&gt;If pin is configured as an input&lt;/h3&gt;&lt;p&gt;Use it for buttons, measuring temperature, measuring light,&amp;nbsp; measuring distance&lt;/p&gt;&lt;h3&gt;If pin is configured as an output&lt;/h3&gt;&lt;p&gt;Use it for LEDs, motors, relays, lamps&lt;/p&gt;&lt;h3&gt;Pin identification number&lt;/h3&gt;&lt;p&gt;Each pin has its own personal number. This number is used to communicate with the pin. The pin number to use to communicate has an orange background. Do not try to use the numbers with grey backgrounds! It wont work and you will get an error.&lt;/p&gt;&lt;p&gt;&lt;img width="704" height="421" title="Raspberry PI pinout" style="display:inline;background-image:none" alt="Raspberry PI pinout" src="http://internetofthing.io/posts/files/9f2da784-623e-4753-b521-59ea81b6f2c3.png" border="0" /&gt;&lt;/p&gt;&lt;p&gt;Raspberry PI has two special pins which are to control the green and red LED integrated on the board. The green LED’s pin number is 35 and the red’s pin number is 47.&lt;/p&gt;&lt;h3&gt;Windows 10&lt;/h3&gt;&lt;p&gt;In order to set up Windows 10 IoT Core to your Raspberry, please follow the instructions here: &lt;a title="https://developer.microsoft.com/en-us/windows/iot/Docs/GetStarted/rpi2/sdcard/stable/getstartedstep1" href="https://developer.microsoft.com/en-us/windows/iot/Docs/GetStarted/rpi2/sdcard/stable/getstartedstep1"&gt;https://developer.microsoft.com/en-us/windows/iot/Docs/GetStarted/rpi2/sdcard/stable/getstartedstep1&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;h3&gt;Visual Studio&lt;/h3&gt;&lt;p&gt;To start new Raspberry project, use the Visual Studio template “Background Application (IoT)”.&lt;/p&gt;&lt;p&gt;&lt;img width="704" height="485" title="Visual Studio Background Application IoT" style="display:inline;background-image:none" alt="Visual Studio Background Application IoT" src="http://internetofthing.io/posts/files/acc2be75-7380-42a2-bce4-164157b551a5.png" border="0" /&gt;&lt;/p&gt;&lt;p&gt;If you do not have this project template, then open menu Visual Studio –&amp;gt; Tools –&amp;gt; Extensions and Updates. From there, click online, search for the string “iot” and install “Windows IoT Core Project Templates for VS”.&lt;/p&gt;&lt;p&gt;&lt;img width="704" height="485" title="Visual Studio Tools Extensions and Updates" style="display:inline;background-image:none" alt="Visual Studio Tools Extensions and Updates" src="http://internetofthing.io/posts/files/a65a0012-adad-43b7-8bd5-c363cd40d322.png" border="0" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;h3&gt;Blinky code and explanation.&lt;/h3&gt;&lt;p&gt;&lt;a href="http://internetofthing.io/posts/files/aa37c36b-0aea-429b-b511-696ad92192d0.png"&gt;&lt;img width="704" height="488" title="Blinky code and explanation" style="display:inline;background-image:none" alt="Blinky code and explanation" src="http://internetofthing.io/posts/files/2cfbea38-ea7b-4449-906f-26f92f7e558d.png" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;pre style="font-family:Consolas;font-size:13;color:black;background:white"&gt;&lt;span style="color:blue"&gt;using&lt;/span&gt;&amp;nbsp;Windows.ApplicationModel.Background;
&lt;span style="color:blue"&gt;using&lt;/span&gt;&amp;nbsp;Windows.Devices.Gpio;
&lt;span style="color:blue"&gt;using&lt;/span&gt;&amp;nbsp;System.Threading.Tasks;
 
&lt;span style="color:blue"&gt;namespace&lt;/span&gt;&amp;nbsp;HelloBlinky
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue"&gt;sealed&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue"&gt;class&lt;/span&gt;&amp;nbsp;&lt;span style="color:#2b91af"&gt;StartupTask&lt;/span&gt;&amp;nbsp;:&amp;nbsp;&lt;span style="color:#2b91af"&gt;IBackgroundTask&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue"&gt;void&lt;/span&gt;&amp;nbsp;Run(&lt;span style="color:#2b91af"&gt;IBackgroundTaskInstance&lt;/span&gt;&amp;nbsp;taskInstance)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue"&gt;int&lt;/span&gt;&amp;nbsp;LED_PIN&amp;nbsp;=&amp;nbsp;35;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue"&gt;var&lt;/span&gt;&amp;nbsp;gpio&amp;nbsp;=&amp;nbsp;&lt;span style="color:#2b91af"&gt;GpioController&lt;/span&gt;.GetDefault();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#2b91af"&gt;GpioPin&lt;/span&gt;&amp;nbsp;pin&amp;nbsp;=&amp;nbsp;gpio.OpenPin(LED_PIN);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pin.SetDriveMode(&lt;span style="color:#2b91af"&gt;GpioPinDriveMode&lt;/span&gt;.Output);
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue"&gt;while&lt;/span&gt;(&lt;span style="color:blue"&gt;true&lt;/span&gt;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pin.Write(&lt;span style="color:#2b91af"&gt;GpioPinValue&lt;/span&gt;.Low);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#2b91af"&gt;Task&lt;/span&gt;.Delay(1000).Wait();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pin.Write(&lt;span style="color:#2b91af"&gt;GpioPinValue&lt;/span&gt;.High);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#2b91af"&gt;Task&lt;/span&gt;.Delay(1000).Wait();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}
&lt;/pre&gt;</content>
  </entry>
</feed>