SlideShare a Scribd company logo
1 of 30
Download to read offline
PharoThings
The live programming IoT platform
http://pharo.org
http://rmod.inria.fr
Denis Kudriashov dionisiydk@gmail.com https://github.com/pharo-iot/PharoThings
What is PharoThings?
• A Pharo image running on IoT device
• Raspberry Pi
• Beaglebone
• other small machines
*Follow github page for installation https://github.com/pharo-iot/PharoThings
Pharo on ARM machines
• ArmVM: http://files.pharo.org/vm/pharo-spur32/
linux/armv6/latest.zip
• JIT
• FFI
• OSProcess/OSSubprocess
• https://github.com/marianopeck/
OSSubprocess
Raspberry GPIO libraries
• WiringPI bindings from Jean Baptiste
• used by PharoThings
• https://github.com/pharo-iot/WiringPi
• docs http://wiringpi.com
• Pigpio bindings from Tim Rowledge
• http://www.squeaksource.com/HardwarePeripherals.html
• docs http://abyz.co.uk/rpi/pigpio/
• Required old compiler to install in Pharo
What is PharoThings?
• A Pharo image running on IoT device
• A Pharo image controlling remote IoT device
*Follow github page for installation https://github.com/pharo-iot/PharoThings
TelePharo
• Remote access to running Pharo images
• Remote image scripting from playground
• Remote object inspector
• Remote process browser
• Complete toolset for remote development
• Remote code browser
• Remote debugger
• https://github.com/dionisiydk/TelePharo
What is PharoThings?
• A Pharo image running on IoT device
• A Pharo image controlling remote IoT device
*Follow github page for installation https://github.com/pharo-iot/PharoThings
Direct access to IoT device
• Low level libraries/protocols to access devices
• Arduino by Firmata https://github.com/pharo-iot/
Firmata
*Follow github page for installation https://github.com/pharo-iot/PharoThings
What is PharoThings?
• A Pharo image running on IoT device
• A Pharo image controlling remote IoT device
• An object board model
The board model
• Pins are objects
• gpio4 beDigitalOutput
• gpio4 toggleDigitalValue
The board model
• Hierarchy of boards with specific configuration of pins
• RpiBoardBRev1 with single connector P1 with 26 pins
• RpiBoardBRev2 with two connectors P1 with 26 pins
and P5 with 8 pins
The board model
• High level peripheral model to program connected devices
button := board installDevice: (PotButton named: 'button green' fromPowerTo: gpio3).
button when: PotButtonReleased send: #toggleDigitalValue to: gpio4.
The board model
• Persistent by default
• Save the image: the board state will be recovered
after restart
• pins are in same state
• connected devices continue working
What is PharoThings?
• A Pharo image running on IoT device
• A Pharo image controlling remote IoT device
• An object board model
• The advanced board model inspector
The board model inspector
• Pins schema like in docs
• live pin state
• interactive
The board model inspector
• Evaluation pane with gpio bindings
• script pins by #doIt/#printIt
The board model inspector
• Extra device management tab
button := board installDevice: (PotButton named: 'button green' fromPowerTo: gpio3).
board installDevice: (PotSwitch named: 'led switch' for: gpio4 using: button).
Device management tab
The board model inspector
• Works remotely
remoteBoard := remotePharo evaluate: [ RpiBoardBRev1 current].
remoteBoard inspect
PharoThings
• A Pharo image running on IoT device
• A Pharo image controlling remote IoT device
• An object board model
• The advanced board model inspector
Demo
Demo
• Headless Raspberry Pi
• Button connected by red wire from the ground to gpio0
• Red led connected to gpio1
• Green led connected to gpio4
• Button connected by green wire from the power to gpio3
*Follow peripherals on picture from the left to the right
We want
• Switch the green led by green button (green wire)
• Switch the red led by red button (red wire)
*Follow demo videos at github page https://github.com/pharo-iot/PharoThings
Few pictures of remote tools
Remote playground
Remote browser
Remote debugger
Future
• More RaspberryPI models
• Beaglebone models
• Arduino models
• Deploying as service from image
• Zeroconf for armVM+PharoThings
• General evolution of TelePharo
• Automatic detection of running images in network
• Remote refactoring
• Security
• many other things
The end

More Related Content

More from ESUG

Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
ESUG
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test Generation
ESUG
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
ESUG
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
ESUG
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience Report
ESUG
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIs
ESUG
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
ESUG
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
ESUG
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and Transformations
ESUG
 
gt4atproto, A Programmable Environment for Social Media
gt4atproto, A Programmable Environment for Social Mediagt4atproto, A Programmable Environment for Social Media
gt4atproto, A Programmable Environment for Social Media
ESUG
 

More from ESUG (20)

Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test Generation
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience Report
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIs
 
Garbage Collector Tuning
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector Tuning
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the Debugger
 
Websockets for Fencing Score
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing Score
 
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design Mooc
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and Transformations
 
BioSmalltalk
BioSmalltalkBioSmalltalk
BioSmalltalk
 
gt4atproto, A Programmable Environment for Social Media
gt4atproto, A Programmable Environment for Social Mediagt4atproto, A Programmable Environment for Social Media
gt4atproto, A Programmable Environment for Social Media
 
Roassal3 update
Roassal3 updateRoassal3 update
Roassal3 update
 
VASER Control: Smart Energy
VASER Control: Smart EnergyVASER Control: Smart Energy
VASER Control: Smart Energy
 
Do you know your browser?
Do you know your browser?Do you know your browser?
Do you know your browser?
 
News on Bloc for Pharo
News on Bloc for PharoNews on Bloc for Pharo
News on Bloc for Pharo
 

Recently uploaded

Team Transformation Tactics for Holistic Testing and Quality (NewCrafts Paris...
Team Transformation Tactics for Holistic Testing and Quality (NewCrafts Paris...Team Transformation Tactics for Holistic Testing and Quality (NewCrafts Paris...
Team Transformation Tactics for Holistic Testing and Quality (NewCrafts Paris...
Lisi Hocke
 

Recently uploaded (20)

Encryption Recap: A Refresher on Key Concepts
Encryption Recap: A Refresher on Key ConceptsEncryption Recap: A Refresher on Key Concepts
Encryption Recap: A Refresher on Key Concepts
 
Abortion Pill Prices Jozini ](+27832195400*)[ 🏥 Women's Abortion Clinic in Jo...
Abortion Pill Prices Jozini ](+27832195400*)[ 🏥 Women's Abortion Clinic in Jo...Abortion Pill Prices Jozini ](+27832195400*)[ 🏥 Women's Abortion Clinic in Jo...
Abortion Pill Prices Jozini ](+27832195400*)[ 🏥 Women's Abortion Clinic in Jo...
 
Abortion Pill Prices Mthatha (@](+27832195400*)[ 🏥 Women's Abortion Clinic In...
Abortion Pill Prices Mthatha (@](+27832195400*)[ 🏥 Women's Abortion Clinic In...Abortion Pill Prices Mthatha (@](+27832195400*)[ 🏥 Women's Abortion Clinic In...
Abortion Pill Prices Mthatha (@](+27832195400*)[ 🏥 Women's Abortion Clinic In...
 
From Theory to Practice: Utilizing SpiraPlan's REST API
From Theory to Practice: Utilizing SpiraPlan's REST APIFrom Theory to Practice: Utilizing SpiraPlan's REST API
From Theory to Practice: Utilizing SpiraPlan's REST API
 
Your Ultimate Web Studio for Streaming Anywhere | Evmux
Your Ultimate Web Studio for Streaming Anywhere | EvmuxYour Ultimate Web Studio for Streaming Anywhere | Evmux
Your Ultimate Web Studio for Streaming Anywhere | Evmux
 
[GRCPP] Introduction to concepts (C++20)
[GRCPP] Introduction to concepts (C++20)[GRCPP] Introduction to concepts (C++20)
[GRCPP] Introduction to concepts (C++20)
 
Effective Strategies for Wix's Scaling challenges - GeeCon
Effective Strategies for Wix's Scaling challenges - GeeConEffective Strategies for Wix's Scaling challenges - GeeCon
Effective Strategies for Wix's Scaling challenges - GeeCon
 
Team Transformation Tactics for Holistic Testing and Quality (NewCrafts Paris...
Team Transformation Tactics for Holistic Testing and Quality (NewCrafts Paris...Team Transformation Tactics for Holistic Testing and Quality (NewCrafts Paris...
Team Transformation Tactics for Holistic Testing and Quality (NewCrafts Paris...
 
Prompt Engineering - an Art, a Science, or your next Job Title?
Prompt Engineering - an Art, a Science, or your next Job Title?Prompt Engineering - an Art, a Science, or your next Job Title?
Prompt Engineering - an Art, a Science, or your next Job Title?
 
The mythical technical debt. (Brooke, please, forgive me)
The mythical technical debt. (Brooke, please, forgive me)The mythical technical debt. (Brooke, please, forgive me)
The mythical technical debt. (Brooke, please, forgive me)
 
Novo Nordisk: When Knowledge Graphs meet LLMs
Novo Nordisk: When Knowledge Graphs meet LLMsNovo Nordisk: When Knowledge Graphs meet LLMs
Novo Nordisk: When Knowledge Graphs meet LLMs
 
Lessons Learned from Building a Serverless Notifications System.pdf
Lessons Learned from Building a Serverless Notifications System.pdfLessons Learned from Building a Serverless Notifications System.pdf
Lessons Learned from Building a Serverless Notifications System.pdf
 
Navigation in flutter – how to add stack, tab, and drawer navigators to your ...
Navigation in flutter – how to add stack, tab, and drawer navigators to your ...Navigation in flutter – how to add stack, tab, and drawer navigators to your ...
Navigation in flutter – how to add stack, tab, and drawer navigators to your ...
 
Food Delivery Business App Development Guide 2024
Food Delivery Business App Development Guide 2024Food Delivery Business App Development Guide 2024
Food Delivery Business App Development Guide 2024
 
A Deep Dive into Secure Product Development Frameworks.pdf
A Deep Dive into Secure Product Development Frameworks.pdfA Deep Dive into Secure Product Development Frameworks.pdf
A Deep Dive into Secure Product Development Frameworks.pdf
 
Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024
Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024
Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024
 
Workshop - Architecting Innovative Graph Applications- GraphSummit Milan
Workshop -  Architecting Innovative Graph Applications- GraphSummit MilanWorkshop -  Architecting Innovative Graph Applications- GraphSummit Milan
Workshop - Architecting Innovative Graph Applications- GraphSummit Milan
 
BusinessGPT - Security and Governance for Generative AI
BusinessGPT  - Security and Governance for Generative AIBusinessGPT  - Security and Governance for Generative AI
BusinessGPT - Security and Governance for Generative AI
 
Auto Affiliate AI Earns First Commission in 3 Hours..pdf
Auto Affiliate  AI Earns First Commission in 3 Hours..pdfAuto Affiliate  AI Earns First Commission in 3 Hours..pdf
Auto Affiliate AI Earns First Commission in 3 Hours..pdf
 
Abortion Pill Prices Jane Furse ](+27832195400*)[ 🏥 Women's Abortion Clinic i...
Abortion Pill Prices Jane Furse ](+27832195400*)[ 🏥 Women's Abortion Clinic i...Abortion Pill Prices Jane Furse ](+27832195400*)[ 🏥 Women's Abortion Clinic i...
Abortion Pill Prices Jane Furse ](+27832195400*)[ 🏥 Women's Abortion Clinic i...
 

PharoThings: a live programming IoT-platform

  • 1. PharoThings The live programming IoT platform http://pharo.org http://rmod.inria.fr Denis Kudriashov dionisiydk@gmail.com https://github.com/pharo-iot/PharoThings
  • 2. What is PharoThings? • A Pharo image running on IoT device • Raspberry Pi • Beaglebone • other small machines *Follow github page for installation https://github.com/pharo-iot/PharoThings
  • 3. Pharo on ARM machines • ArmVM: http://files.pharo.org/vm/pharo-spur32/ linux/armv6/latest.zip • JIT • FFI • OSProcess/OSSubprocess • https://github.com/marianopeck/ OSSubprocess
  • 4. Raspberry GPIO libraries • WiringPI bindings from Jean Baptiste • used by PharoThings • https://github.com/pharo-iot/WiringPi • docs http://wiringpi.com • Pigpio bindings from Tim Rowledge • http://www.squeaksource.com/HardwarePeripherals.html • docs http://abyz.co.uk/rpi/pigpio/ • Required old compiler to install in Pharo
  • 5. What is PharoThings? • A Pharo image running on IoT device • A Pharo image controlling remote IoT device *Follow github page for installation https://github.com/pharo-iot/PharoThings
  • 6. TelePharo • Remote access to running Pharo images • Remote image scripting from playground • Remote object inspector • Remote process browser • Complete toolset for remote development • Remote code browser • Remote debugger • https://github.com/dionisiydk/TelePharo
  • 7. What is PharoThings? • A Pharo image running on IoT device • A Pharo image controlling remote IoT device *Follow github page for installation https://github.com/pharo-iot/PharoThings
  • 8. Direct access to IoT device • Low level libraries/protocols to access devices • Arduino by Firmata https://github.com/pharo-iot/ Firmata *Follow github page for installation https://github.com/pharo-iot/PharoThings
  • 9. What is PharoThings? • A Pharo image running on IoT device • A Pharo image controlling remote IoT device • An object board model
  • 10. The board model • Pins are objects • gpio4 beDigitalOutput • gpio4 toggleDigitalValue
  • 11. The board model • Hierarchy of boards with specific configuration of pins • RpiBoardBRev1 with single connector P1 with 26 pins • RpiBoardBRev2 with two connectors P1 with 26 pins and P5 with 8 pins
  • 12. The board model • High level peripheral model to program connected devices button := board installDevice: (PotButton named: 'button green' fromPowerTo: gpio3). button when: PotButtonReleased send: #toggleDigitalValue to: gpio4.
  • 13. The board model • Persistent by default • Save the image: the board state will be recovered after restart • pins are in same state • connected devices continue working
  • 14. What is PharoThings? • A Pharo image running on IoT device • A Pharo image controlling remote IoT device • An object board model • The advanced board model inspector
  • 15. The board model inspector • Pins schema like in docs • live pin state • interactive
  • 16. The board model inspector • Evaluation pane with gpio bindings • script pins by #doIt/#printIt
  • 17.
  • 18. The board model inspector • Extra device management tab button := board installDevice: (PotButton named: 'button green' fromPowerTo: gpio3). board installDevice: (PotSwitch named: 'led switch' for: gpio4 using: button).
  • 20. The board model inspector • Works remotely remoteBoard := remotePharo evaluate: [ RpiBoardBRev1 current]. remoteBoard inspect
  • 21. PharoThings • A Pharo image running on IoT device • A Pharo image controlling remote IoT device • An object board model • The advanced board model inspector
  • 22. Demo
  • 23. Demo • Headless Raspberry Pi • Button connected by red wire from the ground to gpio0 • Red led connected to gpio1 • Green led connected to gpio4 • Button connected by green wire from the power to gpio3 *Follow peripherals on picture from the left to the right
  • 24. We want • Switch the green led by green button (green wire) • Switch the red led by red button (red wire) *Follow demo videos at github page https://github.com/pharo-iot/PharoThings
  • 25. Few pictures of remote tools
  • 29. Future • More RaspberryPI models • Beaglebone models • Arduino models • Deploying as service from image • Zeroconf for armVM+PharoThings • General evolution of TelePharo • Automatic detection of running images in network • Remote refactoring • Security • many other things