The document provides an overview of building connected devices using the Electric Imp platform, which allows developers to connect microcontrollers to the internet and build applications involving hardware, firmware, web services and apps. It discusses what goes into an internet of things application and demonstrates how to get an imp device online, program digital and analog inputs/outputs, create HTTP handlers, and make HTTP requests to control devices from an agent.
I have completed Smart Home Automation project in which we are combining the concept of smart home and automated home
with the help of IoT.In this project we have used Microcontroller to control our automation components.We have also used Adafruit.io cloud service IoT platform and IFTTT triggers
Scripting Things - Creating the Internet of Things with PerlHans Scharler
This talk was featured at the Pittsburgh Perl Workshop held at Carnegie Mellon University and presented by Hans Scharler of ioBridge. Learn how to interface the real-world with Perl by connecting to things using digital I/O, analog, serial, and network protocols. Hans also takes time to explain how to get started with the Internet of Things and start building projects by remixing other projects.
I have completed Smart Home Automation project in which we are combining the concept of smart home and automated home
with the help of IoT.In this project we have used Microcontroller to control our automation components.We have also used Adafruit.io cloud service IoT platform and IFTTT triggers
Scripting Things - Creating the Internet of Things with PerlHans Scharler
This talk was featured at the Pittsburgh Perl Workshop held at Carnegie Mellon University and presented by Hans Scharler of ioBridge. Learn how to interface the real-world with Perl by connecting to things using digital I/O, analog, serial, and network protocols. Hans also takes time to explain how to get started with the Internet of Things and start building projects by remixing other projects.
[HES2013] Hacking apple accessories to pown iDevices – Wake up Neo! Your phon...Hackito Ergo Sum
Unlike the previous jailbreakme.com exploits targeting MobileSafari that could be used against an unwitting victim, publicly available jailbreaks require USB tethering. Since iDevices refuse to communicate over USB if they are locked unless they have previously paired with the connecting device these jailbreaks have a lower security impact, and are usually only useful to the phone’s owner. Then it is legitimate to think we are safe. Nevertheless, malicious codes already running on hosting personal computers silently steal confidential information using iTunes services or leverage USB jailbreaks.
This talk will discuss about the most interesting Apple services (from the attacker point of view) and describe how they can be exploited in order to retrieve confidential information or to deploy the evasi0n jailbreak. Finally, the author will present the analysis of a Made For Apple (MFI) dock station and its weapownizing in order to allow an automated jailbreak.
Audio available here : http://2013.hackitoergosum.org/presentations/Day3-04.Hacking%20apple%20accessories%20to%20pown%20iDevices%20%e2%80%93%20Wake%20up%20Neo!%20Your%20phone%20got%20pwnd%20!%20by%20Mathieu%20GoToHack%20RENARD.mp3
More information about the conference : http://www.hackitoergosum.org
Building the Internet of Things with Thingsquare and Contiki - day 1, part 2Adam Dunkels
How to build the Internet of Things - what is an Internet of things device and how do we connect it? This is the second Thingsquare IoT workshop slide deck.
The Internet of Fails - Mark Stanislav, Senior Security Consultant, Rapid7Rapid7
The Internet of Fails - Where IoT (the Internet of Things) has gone wrong and how we’re making it right. By Mark Stanislav @mstanislav, Senior Security Consultant, Rapid7
These are the slides for the presentation that I gave at ICMEAE in Cuernavaca, Mexico on November 20th, 2014. This includes an example using Spark Core.
Android and Arduio mixed with Breakout jsmusart Park
I made this presentation for DFX Korea 2012.
I will present this in emerging session.
For more information of the event, please go to https://sites.google.com/site/devfestxkorea/program
Bluetooth controlled devices using Arduino microcontroller. how to simply control your home appliances by using arduino . It's pretty simple due to open source platform of Arduino and its IDE.
IoT with Raspberry pi using node-red
This PPT includes steps for analyzing your sensor data on Thingspeak, twitter, IBM Watson IoT demo Cloud and cayenne cloud by myDevices.
IAB3948 Wiring the internet of things with Node-REDPeterNiblett
Internet of Things developers need a tool to wire things together, and they also need to know how to maximize usage of existing services to create powerful connected apps. This session explains the usage of Node-RED as a tool to build powerful integrations that help in creating the connected products. We will explore integrations with devices and also with services to enable smarter products.
1. Explaining the importance of platform based development
2. Understanding The importance of NodeMCU and demonstrate its interfacing with various devices and sensors.
Gobot Meets IoT : Using the Go Programming Language to Control The “Things” A...Justin Grammens
These are the slides that I presented at the Google DevFest Conference in Minneapolis, MN on March 21st, 2015.
Source code can be found on my github repo at: https://github.com/justingrammens/devfestmn2015
I discuss The Internet of Things, The Go Programming Language and did live demos using an Arduino, Sphero and an ArDrone.
Melbourne Azure Meetup presentation 1r4 July 2016
- Windows 10 IoT-Core details
- Internet of Things features
- Azure IoT Hub details
- Into to Azure IoT Suite and SDKs
Looking at the revolution in low cost easy to program embedded computing, focusing on the arduino open source hardware and software platform and zigbee network modules and how both of these can be easily connected up to Flex.
[HES2013] Hacking apple accessories to pown iDevices – Wake up Neo! Your phon...Hackito Ergo Sum
Unlike the previous jailbreakme.com exploits targeting MobileSafari that could be used against an unwitting victim, publicly available jailbreaks require USB tethering. Since iDevices refuse to communicate over USB if they are locked unless they have previously paired with the connecting device these jailbreaks have a lower security impact, and are usually only useful to the phone’s owner. Then it is legitimate to think we are safe. Nevertheless, malicious codes already running on hosting personal computers silently steal confidential information using iTunes services or leverage USB jailbreaks.
This talk will discuss about the most interesting Apple services (from the attacker point of view) and describe how they can be exploited in order to retrieve confidential information or to deploy the evasi0n jailbreak. Finally, the author will present the analysis of a Made For Apple (MFI) dock station and its weapownizing in order to allow an automated jailbreak.
Audio available here : http://2013.hackitoergosum.org/presentations/Day3-04.Hacking%20apple%20accessories%20to%20pown%20iDevices%20%e2%80%93%20Wake%20up%20Neo!%20Your%20phone%20got%20pwnd%20!%20by%20Mathieu%20GoToHack%20RENARD.mp3
More information about the conference : http://www.hackitoergosum.org
Building the Internet of Things with Thingsquare and Contiki - day 1, part 2Adam Dunkels
How to build the Internet of Things - what is an Internet of things device and how do we connect it? This is the second Thingsquare IoT workshop slide deck.
The Internet of Fails - Mark Stanislav, Senior Security Consultant, Rapid7Rapid7
The Internet of Fails - Where IoT (the Internet of Things) has gone wrong and how we’re making it right. By Mark Stanislav @mstanislav, Senior Security Consultant, Rapid7
These are the slides for the presentation that I gave at ICMEAE in Cuernavaca, Mexico on November 20th, 2014. This includes an example using Spark Core.
Android and Arduio mixed with Breakout jsmusart Park
I made this presentation for DFX Korea 2012.
I will present this in emerging session.
For more information of the event, please go to https://sites.google.com/site/devfestxkorea/program
Bluetooth controlled devices using Arduino microcontroller. how to simply control your home appliances by using arduino . It's pretty simple due to open source platform of Arduino and its IDE.
IoT with Raspberry pi using node-red
This PPT includes steps for analyzing your sensor data on Thingspeak, twitter, IBM Watson IoT demo Cloud and cayenne cloud by myDevices.
IAB3948 Wiring the internet of things with Node-REDPeterNiblett
Internet of Things developers need a tool to wire things together, and they also need to know how to maximize usage of existing services to create powerful connected apps. This session explains the usage of Node-RED as a tool to build powerful integrations that help in creating the connected products. We will explore integrations with devices and also with services to enable smarter products.
1. Explaining the importance of platform based development
2. Understanding The importance of NodeMCU and demonstrate its interfacing with various devices and sensors.
Gobot Meets IoT : Using the Go Programming Language to Control The “Things” A...Justin Grammens
These are the slides that I presented at the Google DevFest Conference in Minneapolis, MN on March 21st, 2015.
Source code can be found on my github repo at: https://github.com/justingrammens/devfestmn2015
I discuss The Internet of Things, The Go Programming Language and did live demos using an Arduino, Sphero and an ArDrone.
Melbourne Azure Meetup presentation 1r4 July 2016
- Windows 10 IoT-Core details
- Internet of Things features
- Azure IoT Hub details
- Into to Azure IoT Suite and SDKs
Looking at the revolution in low cost easy to program embedded computing, focusing on the arduino open source hardware and software platform and zigbee network modules and how both of these can be easily connected up to Flex.
A tale of scale & speed: How the US Navy is enabling software delivery from l...sonjaschweigert1
Rapid and secure feature delivery is a goal across every application team and every branch of the DoD. The Navy’s DevSecOps platform, Party Barge, has achieved:
- Reduction in onboarding time from 5 weeks to 1 day
- Improved developer experience and productivity through actionable findings and reduction of false positives
- Maintenance of superior security standards and inherent policy enforcement with Authorization to Operate (ATO)
Development teams can ship efficiently and ensure applications are cyber ready for Navy Authorizing Officials (AOs). In this webinar, Sigma Defense and Anchore will give attendees a look behind the scenes and demo secure pipeline automation and security artifacts that speed up application ATO and time to production.
We will cover:
- How to remove silos in DevSecOps
- How to build efficient development pipeline roles and component templates
- How to deliver security artifacts that matter for ATO’s (SBOMs, vulnerability reports, and policy evidence)
- How to streamline operations with automated policy checks on container images
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionAggregage
Join Maher Hanafi, VP of Engineering at Betterworks, in this new session where he'll share a practical framework to transform Gen AI prototypes into impactful products! He'll delve into the complexities of data collection and management, model selection and optimization, and ensuring security, scalability, and responsible use.
PHP Frameworks: I want to break free (IPC Berlin 2024)Ralf Eggert
In this presentation, we examine the challenges and limitations of relying too heavily on PHP frameworks in web development. We discuss the history of PHP and its frameworks to understand how this dependence has evolved. The focus will be on providing concrete tips and strategies to reduce reliance on these frameworks, based on real-world examples and practical considerations. The goal is to equip developers with the skills and knowledge to create more flexible and future-proof web applications. We'll explore the importance of maintaining autonomy in a rapidly changing tech landscape and how to make informed decisions in PHP development.
This talk is aimed at encouraging a more independent approach to using PHP frameworks, moving towards a more flexible and future-proof approach to PHP development.
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
Removing Uninteresting Bytes in Software FuzzingAftab Hussain
Imagine a world where software fuzzing, the process of mutating bytes in test seeds to uncover hidden and erroneous program behaviors, becomes faster and more effective. A lot depends on the initial seeds, which can significantly dictate the trajectory of a fuzzing campaign, particularly in terms of how long it takes to uncover interesting behaviour in your code. We introduce DIAR, a technique designed to speedup fuzzing campaigns by pinpointing and eliminating those uninteresting bytes in the seeds. Picture this: instead of wasting valuable resources on meaningless mutations in large, bloated seeds, DIAR removes the unnecessary bytes, streamlining the entire process.
In this work, we equipped AFL, a popular fuzzer, with DIAR and examined two critical Linux libraries -- Libxml's xmllint, a tool for parsing xml documents, and Binutil's readelf, an essential debugging and security analysis command-line tool used to display detailed information about ELF (Executable and Linkable Format). Our preliminary results show that AFL+DIAR does not only discover new paths more quickly but also achieves higher coverage overall. This work thus showcases how starting with lean and optimized seeds can lead to faster, more comprehensive fuzzing campaigns -- and DIAR helps you find such seeds.
- These are slides of the talk given at IEEE International Conference on Software Testing Verification and Validation Workshop, ICSTW 2022.
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
In his public lecture, Christian Timmerer provides insights into the fascinating history of video streaming, starting from its humble beginnings before YouTube to the groundbreaking technologies that now dominate platforms like Netflix and ORF ON. Timmerer also presents provocative contributions of his own that have significantly influenced the industry. He concludes by looking at future challenges and invites the audience to join in a discussion.
The Metaverse and AI: how can decision-makers harness the Metaverse for their...Jen Stirrup
The Metaverse is popularized in science fiction, and now it is becoming closer to being a part of our daily lives through the use of social media and shopping companies. How can businesses survive in a world where Artificial Intelligence is becoming the present as well as the future of technology, and how does the Metaverse fit into business strategy when futurist ideas are developing into reality at accelerated rates? How do we do this when our data isn't up to scratch? How can we move towards success with our data so we are set up for the Metaverse when it arrives?
How can you help your company evolve, adapt, and succeed using Artificial Intelligence and the Metaverse to stay ahead of the competition? What are the potential issues, complications, and benefits that these technologies could bring to us and our organizations? In this session, Jen Stirrup will explain how to start thinking about these technologies as an organisation.
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
1. Building Connected Things
with Electric Imp
These slides are licensed under the MIT License
http://opensource.org/licenses/MIT
SSID: impdemo
PW: electric
Matt Haines | Tom Byrne
matt@electricimp.com | tom@electricimp.com
@beardedinventor | @tlbyrn
2. Agenda
The Internet of Things
• What is the Internet of Things
• What does the Internet of Things space look like
• What goes into an Internet of Things application
• Overview of the Electric Imp platform
Workshop – Your first imp project
• Getting your first imp online
• Digital I/O
• Building a basic HTTPS request handler
• Making HTTP requests
3. The Internet of Things (2025)
50B
Connected
Devices
$6.2T
Economic
Impact
McKinsey Global Institute, 2013
5. What Goes Into an IoT Application
• Hardware
• Microcontrollers, radios, sensors, actuators, etc
• Firmware
• Device logic, drivers, network stack, etc
• Server Code
• Heavy processing, external device API, data storage, etc
• External Web Services
• Weather APIs, Twitter, Twilio, Gmail/email, IFTTT, etc
• App / Website / Etc
• User interface, OAuth, etc
• Areas of knowledge required:
• Electrical Engineering, embedded software, security, backend/server
development, web development, database admin, app development, …
6. The Electric Imp Platform
Connectivity Infrastructure
In-house
Great products
Focus on the
core business
Platform
Server Infrastructure
In-house
Great products
Focus on the
core business
Platform
8. The Electric Imp Platform - Devices
• 32-Bit ARM Cortex M3 processor
• 802.11 b/g/n WiFi
• Open WiFi, WEP, WPA, WPA2
• 80 KB* code space (device – 'firmware')
• 6/12 Configurable GPIO Pins
• Digital In/Out
• Analog In
• 12 bit DAC (Analog Out)
• PWM Out
• I2C, UART, SPI
* This value changes a little bit each release (the imp originally only had about 40 KB of code space)
9. The Electric Imp Platform - Agents
• Micro-server than can act on behalf of a device
• Runs on the Electric Imp Servers
• 1 MB code space
• 1MB RAM
• Allows you to do things that you typically can’t on an embedded processor
• Process incoming HTTP requests (create APIs for your device)
• Make outgoing HTTP requests (interact with external APIs)
• Persist small amounts of data
11. BlinkUp - Getting Online
• Create an Electric Imp Account: https://ide.electricimp.com
• Download the Electric Imp mobile app:
• Android: play.google.com/store/apps/details?id=com.electricimp.electricimp
• iPhone: itunes.apple.com/us/app/electric-imp
• Sign into the app with your Electric Imp Account
• Enter WiFi credentials:
• SSID: impdemo
• PW: electric
• Power up your imp
• The imp’s internal LED must be blinking before continuing to the next step
• Click BlinkUp in the mobile app
• Hold screen of phone against blinking light of imp until BlinkUp is complete
• Your device should now be blinking green (online)*
* Your imp will stop blinking after 1 minute to save power (it is still powered on)
12. BlinkUp Example
* Your imp will stop blinking after 1 minute to save power (it is still powered on)
18. Digital Output - Device Code
// Device Code
led <- hardware.pin9;
led.configure(DIGITAL_OUT);
state <- 0;
function blink() {
imp.wakeup(1.0, blink);
state = 1 – state;
led.write(state);
}
blink();
19. Blocking Loops are Bad!
// Device Code
// NOTE: THIS IS BAD CODE:
led <- hardware.pin9;
led.configure(DIGITAL_OUT);
function loop() {
local state = 0;
while (1) {
led.write(state);
state = 1 – state;
imp.sleep(1.0);
}
}
loop();
21. Digital Input - Device Code
// Device Code:
led <- hardware.pin9;
led.configure(DIGITAL_OUT);
button <- hardware.pin1;
function onButton() {
local state = button.read();
led.write(state);
}
button.configure(DIGITAL_IN_PULLUP, onButton);
22. Event Driven Programming and Callbacks
• Squirrel is an Event Driven Language
• Behaviour is defined by events and callbacks
• An event is a pre-programmed thing that can happen:
• The timeout on an imp.wakeup ends
• The state of a DIGITAL_IN pin changes
• A message is passed from the device to the agent or vice versa
• An agent receives an incoming HTTP request
• A callback is a function bound to a event:
• imp.wakeup(5, blink);
• Tells the imp to run the function called blink in 5 seconds
• button.configure(DIGITAL_IN, onButton);
• Tells the imp to run the function called onButton when the state of the pin
assigned to button changes
23. HTTP Handlers
• Each device has an agent – a tiny micro servers that act on behalf of their device
• Each agent has a unique URL associated with it (see below)
• http.onrequest binds a callback to the 'received incoming HTTP Request' event
24. HTTP Handler – Agent Code
// Agent Code:
function httpHandler(request, response) {
if ("state" in request.query) {
local state = request.query["state"];
device.send("led", state);
}
response.send(200, "OK");
}
http.onrequest(httpHandler);
30. Other activities
• Device:
• Try to control your LED with PWM
• electricimp.com/docs/examples/pwm-led
• Bonus: Try to control the brightness with a web request
• Create multiple “states” for your LED (on, off, blinking slow, blinking fast)
• Make the button switch between states
• Agent:
• Grab the Wunderground API code
• github.com/electricimp/reference/tree/master/webservices/wunderground
• Grab weather every 5 mins and change the brightness of the LED based on
the temperature
• Bonus: Create an Umbrella reminder to keep by your front door:
• Every morning the agent checks the weather
• If there’s > 50% chance of rain, LED turns on
• Grab the Twitter API
• github.com/electricimp/reference/tree/master/webservices/twitter
• Make your imp tweet whenever the button is pressed
• Bonus: Control the state of the LED based on a Twitter stream
• Turn the light on whenever something is tweeted with a tracked tag
• Click the button to clear the light
31. Electric Imp Resource
Getting Started Guide electricimp.com/docs/getting-started
API Documentation electricimp.com/docs/api
Squirrel Documentation electricimp.com/docs/squirrel
Reference Code github.com/electricimp/reference
Community Blog community.electricimp.com
Forums forums.electricimp.com
Editor's Notes
Welcome everyone
Introduce yourself
Ensure everyone is on WiFi
Share a link to the slides or provide a printed copy as a handout (printed copies means participants will need to type in code, instead of copy paste)
Quickly go over what they will be learning tonight
The Internet of Things Startup space slide / discussion is very optional, and should really only be used when it will provide interest / value to the workshop (i.e. – university students)
Go over the main goals of the course
Understand how to get your imps online
Understand basic event driven programming and message passing in the Electric Imp platform
Understand how to write basic APIs for your hardware
Understand how to make basic web requests from an agent
Quickly go over what they will be learning tonight
The Internet of Things Startup space slide / discussion is very optional, and should really only be used when it will provide interest / value to the workshop (i.e. – university students)
Go over the main goals of the course
Understand how to get your imps online
Understand basic event driven programming and message passing in the Electric Imp platform
Understand how to write basic APIs for your hardware
Understand how to make basic web requests from an agent
Talk about some of the various verticals in the IoT Space (note this is far from complete)
Talk about how some of the products work, and the various components that go into it
- Nest is a good example..
- Hardware (the Nest), Software (running on the Nest, your phone, the Nest Servers), security between everything so someone else can’t set your thermostat, see when you’re home, etc
- Revenue from Nest comes from selling units, but also potentially from power companies for cycling AC in a way that prevents peaks while people are away from home
- Toymail is a good Electric Imp Example
- Little mailbox shapped toys
- Allows parents/grandparents to send voice mails to kits without phones
- Hardware, software (on the device, your phone, Toymails servers, imp servers), security (you don’t want strangers sending voicemails to your kids, you don’t want strangers knowing when your kids are playing messages (ie – they’re home and their parents may not be).
- Revenue from selling toys, also in-app purchase to send more than X messages per month (on-going revenue stream)
Can talk about this in the context of the startups discussed previously, and how those applications have each of the following
This is designed to illustrate the complexities of building an Internet of Things application and why platforms are a good thing
Talk a little bit about how each layer fits into an IoT application and the user’s experience, and that each layer requires specialized knowledge
Comparing Electric Imp to AWS – depending on the audience this slide may or may not make sense
Focus on the things you’re good at – designing products, making Things
Use platforms to solve things you are not good at / don’t want to focus on in product (security, connectivity, etc)
There are four core components of the Electric Imp platform we’re going to look at today
The imp / impOS
This is the hardware that will execute your device code
More details on the next slide
The imp cloud & Open API
Each imp has a tiny micro servo that runs in our cloud (i.e. on our servers) that you can program to do just about anything
The imp cloud acts as a proxy for your device to do things embeeded devices traditionally can’t do (make and process web requests, encode/decode json, persist data, etc)
BlinkUp
BlinkUp is the process we use to get the imp online
More information shortly
The imp IDE (part of the imp cloud)
This is where you write code for your device and your agent, view logs, and push updates to developer devices
Imp001 (SD Card) has 6 configurable GPIO pins
Imp002 (solder down module) has 12 configurable GPIO pins
Imp003 (8mm x 10mm Murata module) has 24 configurable GPIO pins, but is not well suited for Makers, so we won’t talk about that
Firmware is not true firmware, but rather interpreted code running in a VM on the device.
Agents are embedded code running in a VM on the Electric Imp servers
Imp001 (SD Card) has 6 configurable GPIO pins
Imp002 (solder down module) has 12 configurable GPIO pins
Imp003 (8mm x 10mm Murata module) has 24 configurable GPIO pins, but is not well suited for Makers, so we won’t talk about that
Firmware is not true firmware, but rather interpreted code running in a VM on the device.
Agents are embedded code running in a VM on the Electric Imp servers
This is typically one of the longest and most difficult steps with a large group of people.
Ensure that everyone is online before continuing.. If you don’t there will be people left behind who can’t do anything past this step.
BlinkUp flashes the screen at 60 hz
Please advise the room that if anyone is photosensitive or epileptic they should look away during BlinkUp
If their phones audio is turned on, there are audio cues to indicate when BlinkUp starts and finishes
BlinkUp is the process Electric Imp uses to get imps online
Each imp card has a light sensor + led that is used in the BlinkUp process
BlinkUp flashes the screen very quickly, which the light sensor reads as 1’s (bright) and 0’s (dark)
Once BlinkUp is complete, the imp attempts to connect to the WiFi – and once it connects it talks to our servers and registers itself with your account
If you want to change the account the imp is connected to, you can BlinkUp the device with new credentials
The imp retains it’s network information even when powered off
When the imp is powered on, it checks to see if it has network information, and if it does it tries to connect
See course FAQ for BlinkUp troubleshooting
This is typically one of the longest and most difficult steps with a large group of people.
Ensure that everyone is online before continuing.. If you don’t there will be people left behind who can’t do anything past this step.
BlinkUp flashes the screen at 60 hz
Please advise the room that if anyone is photosensitive or epileptic they should look away during BlinkUp
If their phones audio is turned on, there are audio cues to indicate when BlinkUp starts and finishes
BlinkUp is the process Electric Imp uses to get imps online
Each imp card has a light sensor + led that is used in the BlinkUp process
BlinkUp flashes the screen very quickly, which the light sensor reads as 1’s (bright) and 0’s (dark)
Once BlinkUp is complete, the imp attempts to connect to the WiFi – and once it connects it talks to our servers and registers itself with your account
If you want to change the account the imp is connected to, you can BlinkUp the device with new credentials
The imp retains it’s network information even when powered off
When the imp is powered on, it checks to see if it has network information, and if it does it tries to connect
See course FAQ for BlinkUp troubleshooting
If people don’t see their devices, they may need to refresh
The arrow points to the device we just blinked up
- Click on the gear icon beside it
Enter a model name
- A model is a pair of device and agent code that tied together
We’re naming our model Electric Imp Workshop 1 – you can call yours whatever you want
Hit enter after you’ve entered a name
Click Save Changes
Select your device
- A model can have multiple devices associated with it
- Each device has it’s own agent
We need to select what device we want to communicate with, view logs for, etc
Make sure to point out that LEDs have a “right way” and a “wrong way” and that the longer leg of the LED must be connected to the PIN9 side
Things to point out:
<- global variable
Configure hardware.pin9 as a DIGITAL_OUT – it’s either on (1) or off (0)
state = current state of the LED
Functions are blocks of code we can programmatically call
imp.wakeup schedules a function to run in a certain amount of time..
- In this case we’re telling the imp to run blink function again in 1 second
Need to call blink() once to get things started
Have participants run this code
Their device should disconnect after 30 seconds or a minute, and will require a power cycle to get it back online
Explain the single thread of execution
- imp has lots of things to do.. Running your code is only 1 of them
- Infinite loops steal the thread of execution and don’t allow anything else to happen
- one of the background tasks the imp does is manage it’s wifi connection + connection to the server
- if you steal the thread of execution, it can’t do that, so it looks disconnected to the imp servers.
Make sure button is connected to GND and PIN1
Buttons connected to VIN and PIN1 could potentially damage the imp
Things to point out
local makes a local variable
- if you try and use “state” outside of function onButton, it won’t work
We configure button as a DIGITAL_IN_PULLUP
- this means that when the button is not pressed, it will be 1, and when the button is pressed, it will be 0
Configuring a DIGITAL_IN allows you to pass an optional second parameter of a callback function
- This function gets called whenever the state changes
- more info on next slide
Explain how event driven languages differ from non-event driven languages (like Arduino’s processing)
Explain the power of event driven processing
- When there is nothing to do, we can spin down clocks, etc
- You don’t need to check variables 100 times a second (the OS manages all of that for you)
We’ll see a few more examples of event driven programming + callbacks throughout the rest of the class
Point out where the Agent URL can be found
If they can’t find it, they likely need to select a device (slide 12)
Explain what query parameters are, how we can check to see if a specific query parameter was included, and how to access it
Make sure to point out that we’re doing no validation here, which means someone could pass in state=pineapple if they wanted to
resp.send returns a response back to whoever made the request – it is VERY important that every incoming request send a response back
i.e. make sure you don’t have code paths that don’t send a response
agent.on catches a message from the agent
the parameter for ledHandler comes from the device.send in the previous slide
Next slide explains flow better
Describe how basic message passing between the agent and device works
device.send(“messageName”, data) is caught by agent.on(“messageName”, callback)
- The callback MUST have 1 parameter
- The data from device.send will be the parameter passed into the callback
It’s a lot easier to explain flow of data with this slide than the previous two code slids
Similar to previous example, but data flow is going the other way
Talk about request verbs (GET, PUT, POST, etc)
We’re making a get since it’s the simplest request
Agents can make any kind of request
Talk about sync vs async requests
This code example also introduces inline functions (lambda functions)
Same data flow as slide (22) but with the device -> agent code as well
If people finish early they can try these
They should have all of the required hardware
The exercises get increasingly difficult as you go down the list
Getting Started Guide – essentially what we just went through
Also has a “Next Steps” section, which is worth looking at
API Documentation – complete Electric Imp API spec
Squirrel Standard Library – complete docs for Squirrel standard library
Reference Code – great place to find classes for various web services and hardware components
Community blog – Technical articles, and community contributed projects and blog posts
Forums – The place to ask questions about the Electric Imp platform, and building connected devices