<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/rss-style.xsl" type="text/xsl"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	    xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	     xmlns:dc="http://purl.org/dc/elements/1.1/"
	   xmlns:atom="http://www.w3.org/2005/Atom"
	     xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	  xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>
<channel>
	<title>omega2 &#8211; Terence Eden’s Blog</title>
	<atom:link href="https://shkspr.mobi/blog/tag/omega2/feed/" rel="self" type="application/rss+xml" />
	<link>https://shkspr.mobi/blog</link>
	<description>Regular nonsense about tech and its effects 🙃</description>
	<lastBuildDate>Thu, 26 Dec 2024 10:59:24 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://shkspr.mobi/blog/wp-content/uploads/2023/07/cropped-avatar-32x32.jpeg</url>
	<title>omega2 &#8211; Terence Eden’s Blog</title>
	<link>https://shkspr.mobi/blog</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title><![CDATA[Building an Internet Connected Fridge]]></title>
		<link>https://shkspr.mobi/blog/2016/12/building-an-internet-connected-fridge/</link>
					<comments>https://shkspr.mobi/blog/2016/12/building-an-internet-connected-fridge/#comments</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Tue, 27 Dec 2016 11:16:32 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[fridge]]></category>
		<category><![CDATA[hacks]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[IoT]]></category>
		<category><![CDATA[omega2]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=24464</guid>

					<description><![CDATA[The Internet Fridge is a standing joke among technologists.  I was writing about them in 2002, and they still haven&#039;t appeared!  So I&#039;m going to show you how I built one.  Stop giggling at the back! All I want is for my fridge to notify me if the door has been left over for more than a minute.  I&#039;m building this with an Onion Omega2 - but you could just as easily use a Pi Zero or any other board. …]]></description>
										<content:encoded><![CDATA[<p>The Internet Fridge is a standing joke among technologists.  I was <a href="https://shkspr.mobi/blog/2002/04/disappearing-computer-2002/">writing about them in 2002</a>, and they <em>still</em> haven't appeared!</p>

<p>So I'm going to show you how I built one.</p>

<p>Stop giggling at the back! All I want is for my fridge to notify me if the door has been left over for more than a minute.  I'm building this with an <a href="https://shkspr.mobi/blog/2016/12/review-omega2-iot-prototyping-board/">Onion Omega2</a> - but you could just as easily use a <a href="https://shkspr.mobi/blog/2015/11/raspberry-pi-zero-hidden-in-an-xbox-controller/">Pi Zero</a> or any other board.</p>

<p><a href="https://shkspr.mobi/blog/2016/12/review-omega2-iot-prototyping-board/"><img src="https://shkspr.mobi/blog/wp-content/uploads/2016/12/Omega2-Small.jpeg" alt="The Omega2 plugged into a dock" width="680" height="510" class="aligncenter size-full wp-image-24459"></a></p>

<h2 id="design"><a href="https://shkspr.mobi/blog/2016/12/building-an-internet-connected-fridge/#design">Design</a></h2>

<p>This should be simple (as all complicated stories start):</p>

<ol>
<li>When the fridge door is closed, a circuit is closed.</li>
<li>When the fridge door is opened, a circuit is broken.</li>
<li>If the circuit has been broken for more than 60 seconds, send an alert.</li>
<li>While the circuit is broken, repeat the alert every 60 seconds.</li>
</ol>

<p>Easy, right?</p>

<h2 id="build"><a href="https://shkspr.mobi/blog/2016/12/building-an-internet-connected-fridge/#build">Build</a></h2>

<p>We need a circuit which will be closed when the fridge is <strong>firmly</strong> closed, but isn't so strong that it prevents the fridge door closing.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2016/12/Internet-Fridge-open.jpeg" alt="A fridge door is slightly open. On top of the fridge is a small computer. Wires trail down to a button which is stuck to the door frame using blue-tack" width="768" height="480" class="aligncenter size-full wp-image-24476">

<p>All bodged together with Blue-tack!  Perfect for some impromptu Internetting.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2016/12/Internet-Fridge-close-up.jpeg" alt="The fridge door is closed, and the button is depressed" width="768" height="480" class="aligncenter size-full wp-image-24477">

<p>You <em>could</em> just use bare wires, but that doesn't look very nice, and they tend to trail around.  I'm using a simple spring-loaded button.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2016/12/Internet-Fridge-long-shot.jpeg" alt="The internet fridge as viewed from above. Nestled among the dust on top is a micro-computer. Wires extend down to the door frame." width="384" height="512" class="aligncenter size-full wp-image-24478">

<p>Hidden on top of the fridge, the USB wire is long enough to drape around the back. Inconspicuous!</p>

<h2 id="code"><a href="https://shkspr.mobi/blog/2016/12/building-an-internet-connected-fridge/#code">Code</a></h2>

<p>This Python code reads the wire at GPIO 7 every second.</p>

<pre><code class="language-python">import time
import onionGpio

#  The GPIO port to sense from
gpioNum = 7
gpioObj = onionGpio.OnionGpio(gpioNum)

#  Port set to Input
#  When a 5V circuit is completed, it will be active
status  = gpioObj.setInputDirection()

# read and print the value once a second
loop = 1
while loop == 1:
    value = gpioObj.getValue()
    print 'GPIO%d input value: %d'%(gpioNum, int(value))
    time.sleep(5)
</code></pre>

<p>That will print <code>0</code> when the fridge door is open, and <code>1</code> when it is closed.</p>

<h2 id="timing-events"><a href="https://shkspr.mobi/blog/2016/12/building-an-internet-connected-fridge/#timing-events">Timing Events</a></h2>

<p>There are two main ways to time how long the door has been open for.</p>

<ol>
<li>Once the door is open, sleep for 60 seconds, if the door is still open - send an alert.</li>
<li>Once the door is open, add up the number of seconds where the door is open - if it reaches 60 (or a multiple of 60), send an alert.</li>
</ol>

<p>The first solution has a disadvantage - if I open the door for 20 seconds, close it for 10 seconds, then open it for 30 seconds, an alert will be sent.  Do I want an alert just because I forgot to take out the cheese for my sandwich?</p>

<p>The second solution is more complex.  Complexity scares me.  But spending more time with code is better than being annoyed by irrelevant alerts.</p>

<p>I replaced the previous loop with this:</p>

<pre><code class="language-python">#       Set a counter for how many seconds the circuit is open
counter = 0

#       Read the pin once every second
loop = 1
while loop == 1:
        value = int(gpioObj.getValue())
        if 1 == value:
                #       Door is closed, reset the timer.
                print "Closed. Sleeping"
                counter = 0
                time.sleep(1)
        elif 0 == value:
                time.sleep(1)
                counter += 1
                if (counter &amp;gt; 59):
                        if (0 == counter % 60):
                                #       Send an alert
                                print "Alert! The door has been open for " + str(counter) + " seconds!"

</code></pre>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2016/12/Alert-code-running-in-a-terminal.jpeg" alt="Alert code running in a terminal" width="680" height="446" class="aligncenter size-full wp-image-24466">

<p>Hurrah! It works!</p>

<h2 id="sending-alerts"><a href="https://shkspr.mobi/blog/2016/12/building-an-internet-connected-fridge/#sending-alerts">Sending alerts</a></h2>

<p>OK, I'm not going to be staring at a console the whole day long. How do I get notified that the door is open?  A speaker won't be loud enough if I'm out of the room.  I could <a href="https://shkspr.mobi/blog/2016/05/singing-to-my-light-bulbs/">flash my lightbulbs</a> - but I don't have them in <em>every</em> room.  I think I'm going to have to push an alert to my phone and my wife's phone.</p>

<p>How?</p>

<blockquote class="social-embed" id="social-embed-812953637836255233" lang="en" itemscope="" itemtype="https://schema.org/SocialMediaPosting"><blockquote class="social-embed" id="social-embed-812777540016361472" lang="en" itemscope="" itemtype="https://schema.org/SocialMediaPosting"><header class="social-embed-header" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><a href="https://twitter.com/edent" class="social-embed-user" itemprop="url"><img class="social-embed-avatar social-embed-avatar-circle" src="data:image/webp;base64,UklGRkgBAABXRUJQVlA4IDwBAACQCACdASowADAAPrVQn0ynJCKiJyto4BaJaQAIIsx4Au9dhDqVA1i1RoRTO7nbdyy03nM5FhvV62goUj37tuxqpfpPeTBZvrJ78w0qAAD+/hVyFHvYXIrMCjny0z7wqsB9/QE08xls/AQdXJFX0adG9lISsm6kV96J5FINBFXzHwfzMCr4N6r3z5/Aa/wfEoVGX3H976she3jyS8RqJv7Jw7bOxoTSPlu4gNbfXYZ9TnbdQ0MNnMObyaRQLIu556jIj03zfJrVgqRM8GPwRoWb1M9AfzFe6Mtg13uEIqrTHmiuBpH+bTVB5EEQ3uby0C//XOAPJOFv4QV8RZDPQd517Khyba8Jlr97j2kIBJD9K3mbOHSHiQDasj6Y3forATbIg4QZHxWnCeqqMkVYfUAivuL0L/68mMnagAAA" alt="" itemprop="image"><div class="social-embed-user-names"><p class="social-embed-user-names-name" itemprop="name">Terence Eden is on Mastodon</p>@edent</div></a><img class="social-embed-logo" alt="Twitter" src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%0Aaria-label%3D%22Twitter%22%20role%3D%22img%22%0AviewBox%3D%220%200%20512%20512%22%3E%3Cpath%0Ad%3D%22m0%200H512V512H0%22%0Afill%3D%22%23fff%22%2F%3E%3Cpath%20fill%3D%22%231d9bf0%22%20d%3D%22m458%20140q-23%2010-45%2012%2025-15%2034-43-24%2014-50%2019a79%2079%200%2000-135%2072q-101-7-163-83a80%2080%200%200024%20106q-17%200-36-10s-3%2062%2064%2079q-19%205-36%201s15%2053%2074%2055q-50%2040-117%2033a224%20224%200%2000346-200q23-16%2040-41%22%2F%3E%3C%2Fsvg%3E"></header><section class="social-embed-text" itemprop="articleBody">I'm using this to build an INTERNET FRIDGE*! And none of you can stop me!<br><br>* well, something to SMS me if I leave the fridge door open. <a href="https://twitter.com/edent/status/812640403275005952">x.com/edent/status/8…</a><blockquote class="social-embed" id="social-embed-812640403275005952" lang="en" itemscope="" itemtype="https://schema.org/SocialMediaPosting"><header class="social-embed-header" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><a href="https://twitter.com/edent" class="social-embed-user" itemprop="url"><img class="social-embed-avatar social-embed-avatar-circle" src="data:image/webp;base64,UklGRkgBAABXRUJQVlA4IDwBAACQCACdASowADAAPrVQn0ynJCKiJyto4BaJaQAIIsx4Au9dhDqVA1i1RoRTO7nbdyy03nM5FhvV62goUj37tuxqpfpPeTBZvrJ78w0qAAD+/hVyFHvYXIrMCjny0z7wqsB9/QE08xls/AQdXJFX0adG9lISsm6kV96J5FINBFXzHwfzMCr4N6r3z5/Aa/wfEoVGX3H976she3jyS8RqJv7Jw7bOxoTSPlu4gNbfXYZ9TnbdQ0MNnMObyaRQLIu556jIj03zfJrVgqRM8GPwRoWb1M9AfzFe6Mtg13uEIqrTHmiuBpH+bTVB5EEQ3uby0C//XOAPJOFv4QV8RZDPQd517Khyba8Jlr97j2kIBJD9K3mbOHSHiQDasj6Y3forATbIg4QZHxWnCeqqMkVYfUAivuL0L/68mMnagAAA" alt="" itemprop="image"><div class="social-embed-user-names"><p class="social-embed-user-names-name" itemprop="name">Terence Eden is on Mastodon</p>@edent</div></a><img class="social-embed-logo" alt="Twitter" src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%0Aaria-label%3D%22Twitter%22%20role%3D%22img%22%0AviewBox%3D%220%200%20512%20512%22%3E%3Cpath%0Ad%3D%22m0%200H512V512H0%22%0Afill%3D%22%23fff%22%2F%3E%3Cpath%20fill%3D%22%231d9bf0%22%20d%3D%22m458%20140q-23%2010-45%2012%2025-15%2034-43-24%2014-50%2019a79%2079%200%2000-135%2072q-101-7-163-83a80%2080%200%200024%20106q-17%200-36-10s-3%2062%2064%2079q-19%205-36%201s15%2053%2074%2055q-50%2040-117%2033a224%20224%200%2000346-200q23-16%2040-41%22%2F%3E%3C%2Fsvg%3E"></header><section class="social-embed-text" itemprop="articleBody">Spending today reviewing onion.io - shout if you have any questions. <a href="https://twitter.com/edent/status/812640403275005952/photo/1">pic.x.com/f6pld2vhrd</a><div class="social-embed-media-grid"><a href="https://pbs.twimg.com/media/C0cUInpXUAAXUm9.jpg" class="social-embed-media-link"><img class="social-embed-media" alt="" src="data:image/webp;base64,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"></a></div></section><hr class="social-embed-hr"><footer class="social-embed-footer"><a href="https://twitter.com/edent/status/812640403275005952"><span aria-label="2 likes" class="social-embed-meta">❤️ 2</span><span aria-label="0 replies" class="social-embed-meta">💬 0</span><span aria-label="0 reposts" class="social-embed-meta">🔁 0</span><time datetime="2016-12-24T12:45:44.000Z" itemprop="datePublished">12:45 - Sat 24 December 2016</time></a></footer></blockquote></section><hr class="social-embed-hr"><footer class="social-embed-footer"><a href="https://twitter.com/edent/status/812777540016361472"><span aria-label="10 likes" class="social-embed-meta">❤️ 10</span><span aria-label="0 replies" class="social-embed-meta">💬 0</span><span aria-label="2 reposts" class="social-embed-meta">🔁 2</span><time datetime="2016-12-24T21:50:40.000Z" itemprop="datePublished">21:50 - Sat 24 December 2016</time></a></footer></blockquote><header class="social-embed-header" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><a href="https://twitter.com/edent" class="social-embed-user" itemprop="url"><img class="social-embed-avatar social-embed-avatar-circle" src="data:image/webp;base64,UklGRkgBAABXRUJQVlA4IDwBAACQCACdASowADAAPrVQn0ynJCKiJyto4BaJaQAIIsx4Au9dhDqVA1i1RoRTO7nbdyy03nM5FhvV62goUj37tuxqpfpPeTBZvrJ78w0qAAD+/hVyFHvYXIrMCjny0z7wqsB9/QE08xls/AQdXJFX0adG9lISsm6kV96J5FINBFXzHwfzMCr4N6r3z5/Aa/wfEoVGX3H976she3jyS8RqJv7Jw7bOxoTSPlu4gNbfXYZ9TnbdQ0MNnMObyaRQLIu556jIj03zfJrVgqRM8GPwRoWb1M9AfzFe6Mtg13uEIqrTHmiuBpH+bTVB5EEQ3uby0C//XOAPJOFv4QV8RZDPQd517Khyba8Jlr97j2kIBJD9K3mbOHSHiQDasj6Y3forATbIg4QZHxWnCeqqMkVYfUAivuL0L/68mMnagAAA" alt="" itemprop="image"><div class="social-embed-user-names"><p class="social-embed-user-names-name" itemprop="name">Terence Eden is on Mastodon</p>@edent</div></a><img class="social-embed-logo" alt="Twitter" src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%0Aaria-label%3D%22Twitter%22%20role%3D%22img%22%0AviewBox%3D%220%200%20512%20512%22%3E%3Cpath%0Ad%3D%22m0%200H512V512H0%22%0Afill%3D%22%23fff%22%2F%3E%3Cpath%20fill%3D%22%231d9bf0%22%20d%3D%22m458%20140q-23%2010-45%2012%2025-15%2034-43-24%2014-50%2019a79%2079%200%2000-135%2072q-101-7-163-83a80%2080%200%200024%20106q-17%200-36-10s-3%2062%2064%2079q-19%205-36%201s15%2053%2074%2055q-50%2040-117%2033a224%20224%200%2000346-200q23-16%2040-41%22%2F%3E%3C%2Fsvg%3E"></header><section class="social-embed-text" itemprop="articleBody"><small class="social-embed-reply"><a href="https://twitter.com/edent/status/812777540016361472">Replying to @edent</a></small>What's the best way to send push notifications to my phone?<br>SMS costs money.<br>WhatsApp has no API.<br>Telegram bots can't start conversations.</section><hr class="social-embed-hr"><footer class="social-embed-footer"><a href="https://twitter.com/edent/status/812953637836255233"><span aria-label="1 likes" class="social-embed-meta">❤️ 1</span><span aria-label="14 replies" class="social-embed-meta">💬 14</span><span aria-label="0 reposts" class="social-embed-meta">🔁 0</span><time datetime="2016-12-25T09:30:25.000Z" itemprop="datePublished">09:30 - Sun 25 December 2016</time></a></footer></blockquote>

<p>To be clear, I don't want to install yet-another-bloody-app on my phone and I don't have the patience to develop my own.</p>

<p>Let's see what the peanut-gallery suggests:</p>

<blockquote class="social-embed" id="social-embed-812959150481244160" lang="en" itemscope="" itemtype="https://schema.org/SocialMediaPosting"><header class="social-embed-header" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><a href="https://twitter.com/artesea" class="social-embed-user" itemprop="url"><img class="social-embed-avatar social-embed-avatar-circle" src="data:image/webp;base64,UklGRu4CAABXRUJQVlA4IOICAADwDQCdASowADAAPqFAnEmmI6MhNVqtUMAUCWYAnTMORghYPKxsFSxtE9LpGXYDqFuFzktyCq7b0wO0RsJmHNeweFafikrmMH599Lox5OunwahAqBdrTgtP8ZBiS9Pm1VAhmoC69YffnE9bQOVxPQHYI0zCag7VdjwA/vitYb/vXsunqlYAIB+EGbWPCsrKIQv2Oc6OyRMQaAN+fqQgzOYVeK1cNEafM4mmRV31SP9D3L+5ZoK3g+LUEn71/jFbR57WoTprC0btsDxhY2jZGYOc6Ndd5e2PgcgJXxvv6Qm8ATMRM01UWDNQj0wfVd5G/9j37U9T6Nz8Oj5jLtY9O/NwhJ8VssvhVuu+va/AhYyCr0g8txxqI0gFm04gGYYykwMZC6HnVlQ6L7xLBfSto/gz19l0LSZUeUJVxKxSUt/pjgiP3T5OTTYeG6vYRtVqXBEW8E3hSnNP6StIX+h9OPdbMysgoOhHSk5JqtrEczqNPCKYm0Hpfqvc6WWgxEdTsC/7ieZ68uaOPx7iYATnb79uzIz2wejk+p68mpCoMyeQ8DIuhWRohbrip0GQjhO6vyLAarzQhDD/zdrTGZCYT6Tb5MDcMGlF2X5ZCX1D7QIQc+yFXgw8k9Xi1CroR6k5CwNQIjvzjVSCM8M6FT7puLCetfKk1waLVqnNVrkoEOLJqyP2DbPR0XHpe1A75W5er0Hg23ry45rpvUxuY8QOM5ZHyigDDS5CRO7fk7nCt7N7GU60ZuvzPaC2ilovOvelei940b62MG0EqT+Qb9EB18w12qvYTQcE7+hDmcge85MXNefa8M/hLtVxwg6YMdpLRQh1uQcNxTUqkuXyjB2mcQTesJRv8CHYwMbQEXe6kINcC0NECTKYmVjHJI/i8MzNMvepRSFxn0lOjTAwPLo3PgGLPlfWPh1jfdUuBNjbvYRLHpqPtvE8nzPtp6ndjSkwCCqIv+njlOa6DhSWkVYbT8lUAAA=" alt="" itemprop="image"><div class="social-embed-user-names"><p class="social-embed-user-names-name" itemprop="name">Ryan Cullen</p>@artesea</div></a><img class="social-embed-logo" alt="Twitter" src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%0Aaria-label%3D%22Twitter%22%20role%3D%22img%22%0AviewBox%3D%220%200%20512%20512%22%3E%3Cpath%0Ad%3D%22m0%200H512V512H0%22%0Afill%3D%22%23fff%22%2F%3E%3Cpath%20fill%3D%22%231d9bf0%22%20d%3D%22m458%20140q-23%2010-45%2012%2025-15%2034-43-24%2014-50%2019a79%2079%200%2000-135%2072q-101-7-163-83a80%2080%200%200024%20106q-17%200-36-10s-3%2062%2064%2079q-19%205-36%201s15%2053%2074%2055q-50%2040-117%2033a224%20224%200%2000346-200q23-16%2040-41%22%2F%3E%3C%2Fsvg%3E"></header><section class="social-embed-text" itemprop="articleBody"><small class="social-embed-reply"><a href="https://twitter.com/edent/status/812953637836255233">Replying to @edent</a></small><a href="https://twitter.com/edent">@edent</a> MSN messenger bot? Sure I've got some code lying around from 10 years ago when bots were about to be the next big thing.</section><hr class="social-embed-hr"><footer class="social-embed-footer"><a href="https://twitter.com/artesea/status/812959150481244160"><span aria-label="3 likes" class="social-embed-meta">❤️ 3</span><span aria-label="0 replies" class="social-embed-meta">💬 0</span><span aria-label="0 reposts" class="social-embed-meta">🔁 0</span><time datetime="2016-12-25T09:52:20.000Z" itemprop="datePublished">09:52 - Sun 25 December 2016</time></a></footer></blockquote>

<blockquote class="social-embed" id="social-embed-812955499121537024" lang="en" itemscope="" itemtype="https://schema.org/SocialMediaPosting"><header class="social-embed-header" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><a href="https://twitter.com/Marcus_Noble_" class="social-embed-user" itemprop="url"><img class="social-embed-avatar social-embed-avatar-circle" src="data:image/webp;base64,UklGRsYCAABXRUJQVlA4ILoCAABQDACdASowADAAPq1Im0mmJCIhNVVaqMAViWYAyQfoDVd25grpLrBitO9OU6wF0qzRytYUOyKcCY+ZWxk+GxCxVqZe64RQ6bz3BCLaJ/zAEXMEt0wFmo1Z2X8BjmnltQD/TCl4NpiIegFTAAD+js0XffMerwVEc9qEbGnjkvsmLMe3YijtyPcziuBGshPhHeywkDRUxde7LFNymKgWhUn0XHB8VqkyPgm/fveFumPPSQNQDkP0uyXBiKGlXjfYvdO+1hGckhKS5v/FfO+tq/7U+LPYSJfwsvD8X+wHl/laICu9BGT06ClEYwB5YiZZhJ3w/+y33g5RZVrGANwZAihIY9pmjn1SRk3KalcASrAALQUHR40fa151SENAfhq2VaOwP19Jzjb0pjFiwbohBHCC+vbS10MDnX28cRGyEZiscupwFoFQu7Cq64FL83TVhZxBHSi2riEVoUJWWv8uqu7FBt5CPtcBpM97ZN//xQZ2kg/r482nyipmXvJPcugo8TyugYC879+HbG0Cyi8J0b6MbwpQQZU/1gw6xV5bP3OyeONxFO1b7GkAL8n+UHESbkQggkujS42Q59UrLalXQWFKP0woElhteF1wDPJjRVx2vKI6O2GkfQvOFqVm1MQXedSVVk/oqm1iirX0VIBR4aFSb2VmYEIr8i5DXFtffy05eq98TYstsglmMIkgOXXuv6HojeaewAwvzr1zYiVgSQ0EwbYHCT7mIW2ygLCkxy2z6zrfi7KdjU3GyDNwM6D5WCm/MnArAv2uNYOFMDKmyRxlxPkYgg5aYcdyXIAaROzkD4Lgj3Lgm3466mGLFortuY7JJin2JC57MLVMsCaV4LyD5G9LBOvX3u3wPTUCCr48Fbj9TKKkQfaZvBM1T34mw0oEeQoRUaEeDm3lda/oJIjtpP/4/qLQEVSAAA==" alt="" itemprop="image"><div class="social-embed-user-names"><p class="social-embed-user-names-name" itemprop="name">Marcus Noble</p>@Marcus_Noble_</div></a><img class="social-embed-logo" alt="Twitter" src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%0Aaria-label%3D%22Twitter%22%20role%3D%22img%22%0AviewBox%3D%220%200%20512%20512%22%3E%3Cpath%0Ad%3D%22m0%200H512V512H0%22%0Afill%3D%22%23fff%22%2F%3E%3Cpath%20fill%3D%22%231d9bf0%22%20d%3D%22m458%20140q-23%2010-45%2012%2025-15%2034-43-24%2014-50%2019a79%2079%200%2000-135%2072q-101-7-163-83a80%2080%200%200024%20106q-17%200-36-10s-3%2062%2064%2079q-19%205-36%201s15%2053%2074%2055q-50%2040-117%2033a224%20224%200%2000346-200q23-16%2040-41%22%2F%3E%3C%2Fsvg%3E"></header><section class="social-embed-text" itemprop="articleBody"><small class="social-embed-reply"><a href="https://twitter.com/edent/status/812953637836255233">Replying to @edent</a></small><a href="https://twitter.com/edent">@edent</a> also, telegram bot can send at any time once you start the convoy. My 3d printer notifies me using telegram</section><hr class="social-embed-hr"><footer class="social-embed-footer"><a href="https://twitter.com/Marcus_Noble_/status/812955499121537024"><span aria-label="0 likes" class="social-embed-meta">❤️ 0</span><span aria-label="1 replies" class="social-embed-meta">💬 1</span><span aria-label="0 reposts" class="social-embed-meta">🔁 0</span><time datetime="2016-12-25T09:37:49.000Z" itemprop="datePublished">09:37 - Sun 25 December 2016</time></a></footer></blockquote>

<blockquote class="social-embed" id="social-embed-812954612915441666" lang="no" itemscope="" itemtype="https://schema.org/SocialMediaPosting"><header class="social-embed-header" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><a href="https://twitter.com/Whatleydude" class="social-embed-user" itemprop="url"><img class="social-embed-avatar social-embed-avatar-circle" src="data:image/webp;base64,UklGRmgBAABXRUJQVlA4IFwBAACQCACdASowADAAPrVUok4nJCKiI4sA4BaJYwC/7GUkwhzA8Y2Ezn8HxTy7M1NNej/VQ0WCef9zu8U7J47IkoramG0rnAS1gbxTKweqAAD++3iEwqAZ0CBSlQJ1/GT+blVnxXZDipNCQgpO4d01PzDcrtJyOwJQd5taic9LQ2Tky5EIWiwvP/VrhDQdpKtjqwU0mjtadwyLprx1e73zGSBjswnsiNp3AXvbBbDb3qyXHvgqz6a5qEJiomEFI3dF1RRiZ12qsN9jSe6EmTEpNmsteW+CYlSafJPEnm+E5R68oEsccO7f9EK4MjEPyzecFuC7N4JVWzLHZfikLaRhwpvc76PAtT8wPIQH4DJMbQfya6TFgmALrOq6JuXxjnD0ZSDJF+iIwx0+CswdKi2wadryXbZLBroFvsJsMpoj0Dx2fz68vmYAUuPg1RqmSIniGyIke8IgCfE41nQAAAA=" alt="" itemprop="image"><div class="social-embed-user-names"><p class="social-embed-user-names-name" itemprop="name">James Whatley (inactive)</p>@Whatleydude</div></a><img class="social-embed-logo" alt="Twitter" src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%0Aaria-label%3D%22Twitter%22%20role%3D%22img%22%0AviewBox%3D%220%200%20512%20512%22%3E%3Cpath%0Ad%3D%22m0%200H512V512H0%22%0Afill%3D%22%23fff%22%2F%3E%3Cpath%20fill%3D%22%231d9bf0%22%20d%3D%22m458%20140q-23%2010-45%2012%2025-15%2034-43-24%2014-50%2019a79%2079%200%2000-135%2072q-101-7-163-83a80%2080%200%200024%20106q-17%200-36-10s-3%2062%2064%2079q-19%205-36%201s15%2053%2074%2055q-50%2040-117%2033a224%20224%200%2000346-200q23-16%2040-41%22%2F%3E%3C%2Fsvg%3E"></header><section class="social-embed-text" itemprop="articleBody"><small class="social-embed-reply"><a href="https://twitter.com/edent/status/812953637836255233">Replying to @edent</a></small><a href="https://twitter.com/edent">@edent</a> email? Messenger bot?</section><hr class="social-embed-hr"><footer class="social-embed-footer"><a href="https://twitter.com/Whatleydude/status/812954612915441666"><span aria-label="0 likes" class="social-embed-meta">❤️ 0</span><span aria-label="0 replies" class="social-embed-meta">💬 0</span><span aria-label="0 reposts" class="social-embed-meta">🔁 0</span><time datetime="2016-12-25T09:34:18.000Z" itemprop="datePublished">09:34 - Sun 25 December 2016</time></a></footer></blockquote>

<p>I think the Wonderous Mr Whatley might be right. Email. It isn't as glamorous as the others, but it doesn't rely on frequently changing APIs, capricious library developers, flaky 3rd party services, or anything too fragile.</p>

<p>And it is <a href="http://naelshiab.com/tutorial-send-email-python/">pretty damn simple to send email using Python</a>.</p>

<p>Note - if your Gmail account uses 2FA (and it should!) you will need to <a href="https://support.google.com/accounts/answer/185833?hl=en">create an app-specific password</a>.</p>

<pre><code class="language-python">import smtplib

from_email = "fridge@example.com"
password   = "Password123"
to_email   = "you@example.com"

message = "THE FRIDGE IS OPEN"

server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(from_email, password)
server.sendmail(from_email, to_email, message)
server.quit()
</code></pre>

<p>Which results in...</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2016/12/An-email-notification-telling-me-to-Close-The-Fridge-Door-fs8.png" alt="An email notification telling me to Close The Fridge Door-fs8" width="1100" height="892" class="aligncenter size-full wp-image-24467">

<p><em>Sweeeeeet!</em></p>

<h2 id="run-on-start-up"><a href="https://shkspr.mobi/blog/2016/12/building-an-internet-connected-fridge/#run-on-start-up">Run on start-up</a></h2>

<p>First up, if you're not comfortable with <code>vi</code> you'll need to <a href="https://github.com/OnionIoT/OpenWRT-Packages/issues/4#issuecomment-269117656">install nano</a></p>

<p>Then run:</p>

<pre><code>export VISUAL=nano; crontab -e
</code></pre>

<p>Then add the following line:</p>

<pre><code># m h dom mon dow user  command
@reboot /usr/bin/python /root/fridge.py &amp;
</code></pre>

<p>And that's pretty much it!</p>

<h2 id="final-thoughts"><a href="https://shkspr.mobi/blog/2016/12/building-an-internet-connected-fridge/#final-thoughts">Final Thoughts</a></h2>

<p>I'm using the <a href="https://onion.io/">$9 Omega2 prototyping board</a> - read my <a href="(https://shkspr.mobi/blog/2016/12/review-omega2-iot-prototyping-board/)">full review</a> of it - this sort of kit is cheap, reliable, and simple.  So why isn't it in every domestic appliance?</p>

<p>We always joke about Internet Fridges - usually over-complicated devices which tell you that <a href="https://3.bp.blogspot.com/-qffjrYne7GY/U3OBx3_yUeI/AAAAAAAAXek/Kamro7jpJrU/s1600/When+Potato+Salad+Goes+Bad.jpg">the potato salad has gone bad</a> and automatically order you more wine. But it doesn't need to be so ambitious.</p>

<p>A basic fridge/freezer is around <a href="http://amzn.to/2hovVf6">£200</a>.  Even the cheapest appliance <em>should</em> have WiFi connectivity. Not necessarily <em>control</em> or something as dumb as a <a href="http://ifixit.org/blog/7657/this-dumb-smart-fridge-shows-why-the-internet-of-things-will-break/">calendar display</a> - but just a simple, local API for reading information.</p>

<p>Of course, the real barrier isn't cost of the device - it's the cost of service and support. As I repeatedly say, <a href="https://shkspr.mobi/blog/2016/11/the-connected-house-of-horrors/">hardware manufacturers are shit at developing software</a> - each frustrated customer ringing a call-centre cuts into the manufacturer's profits.  There are huge associated costs for <a href="https://www.wired.com/2016/12/botnet-broke-internet-isnt-going-away/">updating software against security threats</a>.  That's before we get around to building apps for phones - and then updating them to match newer OS style-guides.</p>

<p>Even on expensive items - like <a href="https://shkspr.mobi/blog/2015/11/reverse-engineering-the-bmw-i3-api/">BMW cars</a> - the software experience is just crap!   Go to any app store and read the reviews for the apps of "luxury" items, they're uniformly dreadful.</p>

<p>Until manufacturers start taking software seriously, we'll have to augment their offerings with our own home-made bionic implants.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=24464&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2016/12/building-an-internet-connected-fridge/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title><![CDATA[Review: Omega2 IoT Prototyping Board]]></title>
		<link>https://shkspr.mobi/blog/2016/12/review-omega2-iot-prototyping-board/</link>
					<comments>https://shkspr.mobi/blog/2016/12/review-omega2-iot-prototyping-board/#respond</comments>
				<dc:creator><![CDATA[@edent]]></dc:creator>
		<pubDate>Mon, 26 Dec 2016 11:55:58 +0000</pubDate>
				<category><![CDATA[/etc/]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[IoT]]></category>
		<category><![CDATA[omega2]]></category>
		<category><![CDATA[review]]></category>
		<guid isPermaLink="false">https://shkspr.mobi/blog/?p=24454</guid>

					<description><![CDATA[I&#039;ve been sent an Omega2 Plus from Onion.io - it is a $9 Linux computer with built in Wi-Fi, Made for IoT.    The obvious comparison is with the Raspberry Pi - and the ultra-cheap Pi-Zero.  The Omega2 has a few advantages.   It has a (small) amount of built in memory - so even if you don&#039;t have an SD card to hand it is still usable. WiFi is also built in - only 2.4GHz, but good enough for most…]]></description>
										<content:encoded><![CDATA[<p>I've been sent an Omega2 Plus from <a href="https://onion.io/">Onion.io</a> - it is a $9 Linux computer with built in Wi-Fi, Made for IoT.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2016/12/Omega2-Small.jpeg" alt="The Omega2 plugged into a dock" width="680" height="510" class="aligncenter size-full wp-image-24459">

<p>The obvious comparison is with the Raspberry Pi - and the ultra-cheap Pi-Zero.</p>

<p>The <a href="https://docs.onion.io/omega2-docs/omega2p.html">Omega2 has a few advantages</a>.</p>

<ul>
<li>It has a (small) amount of built in memory - so even if you don't have an SD card to hand it is still usable.</li>
<li>WiFi is also built in - only 2.4GHz, but good enough for most purposes.</li>
<li>Arduino compatible.</li>
<li>A whole range of expansion boards.</li>
<li>It runs <a href="https://lede.readthedocs.io/en/latest/">Linux Embedded Development Environment</a> - the fork of OpenWRT.</li>
</ul>

<p>On the downside:</p>

<ul>
<li>There's less RAM than the zero (128MB vs 512MB) </li>
<li>No HDMI port.</li>
<li>A slower CPU.</li>
<li>Fewer GPIO pins (15 vs 40).</li>
</ul>

<p>Basically, it's fine for building a simple IoT device. You're probably not going to be using this as a media-player or a full desktop replacement.</p>

<p>On its own, the Omega2 is of limited usage. It is a pin-only device. If you want to power it, or get data on or off it, you'll need to wire in directly.  So you'll need one of the expansion boards if you want to make life easy for yourself.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2016/12/Omega-Expansion-Dock.jpg" alt="Omega Expansion Dock" width="620" height="206" class="aligncenter size-full wp-image-24458">

<p>The basic <a href="https://docs.onion.io/omega2-docs/expansion-dock.html">expansion dock</a> has USB in for power, USB out for regular USB devices, an RGB LED, power and reset switch.  The price is $15 - which takes the TCO up closer to the Raspberry Pi.</p>

<p>There are a range of expansion boards - one with batteries, one for <a href="http://onioniot.github.io/wiki/Tutorials/Arduino-Dock/Using-the-Arduino-Dock.html">Arduino</a>, <a href="https://onion.io/product/oled-expansion/">OLED screens</a>, relays, GPS, <a href="https://onion.io/product/ethernet-expansion/">Ethernet</a>, breadboards, and more promised.</p>

<p>You can <a href="https://www.indiegogo.com/projects/omega2-5-linux-computer-with-wi-fi-made-for-iot#/">buy the Omega2 and accessories on IndieGoGo</a> and on <a href="https://www.kickstarter.com/projects/onion/omega2-5-iot-computer-with-wi-fi-powered-by-linux/description">KickStarter</a> - or <a href="https://onion.io/store/">direct from Onion</a>.</p>

<h2 id="installing-software"><a href="https://shkspr.mobi/blog/2016/12/review-omega2-iot-prototyping-board/#installing-software">Installing software</a></h2>

<p>All software is installed via the <a href="https://wiki.openwrt.org/doc/techref/opkg"><code>opgk</code></a> package manager.</p>

<pre><code>opkg update
opkg install python
</code></pre>

<p>A few minutes later and you've got a python environment ready to play with!</p>

<p>It's also simple to install Git in a similar fashion</p>

<pre><code>opkg update
opkg install git git-http
</code></pre>

<h2 id="cloud"><a href="https://shkspr.mobi/blog/2016/12/review-omega2-iot-prototyping-board/#cloud">Cloud!</a></h2>

<p>The operating system comes with built-in cloud access via <a href="https://cloud.onion.io/">https://cloud.onion.io/</a>.</p>

<p>There are a few "apps" available - but nothing too exciting.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2016/12/Onion-Cloud-Service-fs8.png" alt="" width="999" height="578" class="aligncenter size-full wp-image-24470">

<p>You can also see what the GPIO ports are doing.</p>

<img src="https://shkspr.mobi/blog/wp-content/uploads/2016/12/Omega2-Cloud-fs8.png" alt="" width="887" height="579" class="aligncenter size-full wp-image-24471">

<p>I've mixed feelings about this. It is undoubtedly handy to be able to access some parts of your Omega2 from afar - but there's a lack of services there.</p>

<p>Overall, it isn't quite as useful as <a href="https://shkspr.mobi/blog/2016/03/fire-up-your-raspberry-pi-with-cayenne/">the Cayenne software for Raspberry Pi</a>.</p>

<h2 id="final-thoughts"><a href="https://shkspr.mobi/blog/2016/12/review-omega2-iot-prototyping-board/#final-thoughts">Final Thoughts</a></h2>

<p>This is a nifty little prototyping board. It has a tiny form factor - smaller than the Pi Zero - and a good range of accessories. As with all small-batch hardware, you may struggle to find the <em>exact</em> accessory that you want.</p>

<p>The built-in WiFi is brilliant - as is the web-based configuration - it takes away a lot of the hassle of setting up the device.</p>

<p>The real downside is the size of the community and the resources the manufacturer can offer.  There are thousands of Raspberry Pi tutorials and literally millions of people who can offer help and advice.  The Pi foundation puts a lot of effort into creating clear and comprehensive documentation.</p>

<p>With the Omega2, you're left on your own to tinker.  Yes, they have a <a href="https://docs.onion.io/omega2-docs/first-time-setup.html">good range of documentation</a>, but <a href="https://community.onion.io/">their forums aren't used by the board's creators</a>.</p>

<p>If you're happy doing your own troubleshooting when things go wrong - this is an excellent board to play around with. The price is ridiculously low and opens up endless possibilities.</p>

<p>You can <a href="https://www.indiegogo.com/projects/omega2-5-linux-computer-with-wi-fi-made-for-iot#/">buy the Omega2 and accessories on IndieGoGo</a> and on <a href="https://www.kickstarter.com/projects/onion/omega2-5-iot-computer-with-wi-fi-powered-by-linux/description">KickStarter</a>.</p>
<img src="https://shkspr.mobi/blog/wp-content/themes/edent-wordpress-theme/info/okgo.php?ID=24454&HTTP_REFERER=RSS" alt="" width="1" height="1" loading="eager">]]></content:encoded>
					
					<wfw:commentRss>https://shkspr.mobi/blog/2016/12/review-omega2-iot-prototyping-board/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
