SlideShare uma empresa Scribd logo
1 de 30
Baixar para ler 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

Mais conteúdo relacionado

Mais de 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
 

Mais de 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
 

Último

%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
masabamasaba
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
masabamasaba
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
VictorSzoltysek
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
shinachiaurasa2
 

Último (20)

WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT  - Elevating Productivity in Today's Agile EnvironmentHarnessing ChatGPT  - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
 
tonesoftg
tonesoftgtonesoftg
tonesoftg
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare
 

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