SlideShare a Scribd company logo
How to diffuse a bomb with ECF
and e(fx)clipse
Building a bomb disarming simulation
Simulation Prototype
Cut the correct cables to
disarm the bomb!
Every cable has a unique number:
5 = ORANGE
15 = WHITE
30 = BLUE
40 = GREEN
50 = YELLOW
Live Escape Game
• Played as a team
• You must be physically present
• You have 1 hour time
• to solve a chain of puzzles
Great place to use IoT technologies to
create cool interactive puzzle gadgets!
int a = LocalDate.now().getMonthValue();
Fingerprint Scanner
Touch Sensor (FSR)
Magnetic Sensor
(Reed)Magnet
“Fingerprint Scanner”
Bomb Gadget Hardware
Sensors
• Touch and magnetic sensors (fake “fingerprint scanner”)
• Magnetic lid sensor (turn on lights, lock lid)
• 5 Cables (disarm or detonate bomb)
Actors
• Fingerprint LEDs (red and green) – 5V (via Output)
• Lid lock: electromagnet – 12V (via Relay)
• LED lights – 12V (via Relay)
int d = LocalDate.now().minusYears(2016).getEra().toString().length();
Simple Gadget Setup
Hardware
• Raspberry Pi 2
• PiFace Digital 2
• Sensors (Input)
• Actors (Output)
Software
• Equinox gateway application
• Pi4J library (API for PiFace)
• ECF Remote Services
int d = LocalDate.now().minusYears(2016).getEra().toString().length();
System Architecture
Communication lines between all the components with
OSGi remote services
One Service for every Input (Sensor) and Output (Actor)
Bomb
Monitor
Operator
Tool
Gadget 4Gadget 3Gadget 2
Bomb
Gadget
int c = Character.getNumericValue(System.getProperty("java.version").charAt(0));
Remote Services
Why I love OSGi remote services
• Type safe development
• Loosely coupled
• No central server (dependencies by design)
• Dynamic (services may come and go)
• Protocol independent
int cable2 = e - d;
Register a Remote Service
Register the service through the API or use DS
int cable2 = e - d;
ECF
• Pluggable distribution providers
(generic, r-osgi, JMS, MQTT, REST, …)
• Pluggable discovery providers
(Zeroconf, Zookeeper, SLP, …)
• Asynchronous remote services
Gadget Service Architecture
int e = Integer.valueOf(System.getProperty("javafx.runtime.version").substring(0, c)).intValue();
Every service has a unique
name to identify it
This Ecore diagram is used for presentation purposes only. No EMF model code generation …
Gadget Service Architecture
Remote
control
int e = Integer.valueOf(System.getProperty("javafx.runtime.version").substring(0, c)).intValue();
This Ecore diagram is used for presentation purposes only. No EMF model code generation …
Gadget Service Architecture
Whiteboard
Pattern
int a = LocalDate.now().getMonthValue();
This Ecore diagram is used for presentation purposes only. No EMF model code generation …
Sniffers
Whiteboard Pattern
• The sniffer is
registered as a remote
OSGi service
• By the party that is
interested in receiving
change notifications
• The gadget will pick
up the service and
start sending
notifications if
connect() returns true
int a = LocalDate.now().getMonthValue();
Service Implementation
• Generic implementations
for PiFace inputs and
outputs using Pi4J
• Abstract implementation
SniffableIO provides API
to register IOSniffers as
observers
int e = Integer.valueOf(System.getProperty("javafx.runtime.version").substring(0, c)).intValue();
Easy Gadget Configuration
RemoteServiceComponent
• Manages the services on a gadget
• Watches for “Sniffers” and adds
these as Observables to a service
Bomb Monitor
Game Timer
Reaction to
Sensors
Animations & Sound effects
OSGi + JavaFX =
FX-OSGi Application
• Equinox runtime
• JavaFX (design in FXML)
• Eclipse DI
• E(fx)clipse APIs
• (no e4 application)
int cable1 = (b - a) * c;
Game Services
Use GameService
• Internally when
sniffed sensors
change state
• Built-in test panel
for rapid creative
development
• From the operator
application for
remote control
Whiteboard Pattern
int b = Double.valueOf(System.getProperty("java.class.version")).intValue();
This Ecore diagram is used for presentation purposes only. No EMF model code generation …
Operator Tool
GameSniffer
GameService
InputService
OutputService
IOSniffer
DEMO
Simulation Prototype
Cut the correct cables to
disarm the bomb!
Every cable has a unique number:
5 = ORANGE
15 = WHITE
30 = BLUE
40 = GREEN
50 = YELLOW
int cable1 = (b - a) * c; int cable2 = e - d;

More Related Content

PPTX
FGS 2011: Making A Game With Molehill: Zombie Tycoon
PDF
The not so short
 
PPT
Presentatie Willem En Kevin
PDF
Democamp - Munich - Java9
PDF
Brillar como Informático en la empresa moderna
PDF
Proyectalis - Agile Course V 14.0
PDF
Unicorns, Krakens and self organizing teams
PDF
Java fx & xtext
FGS 2011: Making A Game With Molehill: Zombie Tycoon
The not so short
 
Presentatie Willem En Kevin
Democamp - Munich - Java9
Brillar como Informático en la empresa moderna
Proyectalis - Agile Course V 14.0
Unicorns, Krakens and self organizing teams
Java fx & xtext

Similar to How to diffuse a bomb with ecf and efxclipse (20)

PPTX
Powering a live escape game with ecf and efxclipse
PDF
Data Capture in IBM WebSphere Premises Server - Aldo Eisma, IBM
PDF
Eclipse Kura Shoot a-pi
PDF
Automated Discovery of Deserialization Gadget Chains
PDF
Automated Discovery of Deserialization Gadget Chains
PDF
Vii 2 Z Final Slides Os Gi Iess 2010
PPTX
The Eclipse M2M IWG and Standards for the Internet of Things
PDF
What's new in the OSGi 4.2 Enterprise Release
PDF
OSGi Remote Services - Alexander Broekhuis, Bram de Kruijff
PDF
From Distributed to Pervasive OSGi
PDF
KPN Innovation Playground webinar 2 sep 2020
PDF
Benefits of OSGi in Practise
PDF
Feuerlabs Exosense
PPT
Les2222
PDF
Using Device Abstraction Layers in OSGi based Embedded Systems - Dimitar Valt...
PDF
Eclipse IoT Overview
PPTX
Internet of Things Magic Show
PDF
Useful USB Gadgets on Linux
PDF
OSGi and Private Clouds
PPTX
Hands on Java8 and RaspberryPi
Powering a live escape game with ecf and efxclipse
Data Capture in IBM WebSphere Premises Server - Aldo Eisma, IBM
Eclipse Kura Shoot a-pi
Automated Discovery of Deserialization Gadget Chains
Automated Discovery of Deserialization Gadget Chains
Vii 2 Z Final Slides Os Gi Iess 2010
The Eclipse M2M IWG and Standards for the Internet of Things
What's new in the OSGi 4.2 Enterprise Release
OSGi Remote Services - Alexander Broekhuis, Bram de Kruijff
From Distributed to Pervasive OSGi
KPN Innovation Playground webinar 2 sep 2020
Benefits of OSGi in Practise
Feuerlabs Exosense
Les2222
Using Device Abstraction Layers in OSGi based Embedded Systems - Dimitar Valt...
Eclipse IoT Overview
Internet of Things Magic Show
Useful USB Gadgets on Linux
OSGi and Private Clouds
Hands on Java8 and RaspberryPi
Ad

Recently uploaded (20)

PDF
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PDF
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
PDF
Design an Analysis of Algorithms I-SECS-1021-03
PDF
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
PDF
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
PDF
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
PDF
How to Migrate SBCGlobal Email to Yahoo Easily
PDF
wealthsignaloriginal-com-DS-text-... (1).pdf
PPTX
Introduction to Artificial Intelligence
PPTX
ai tools demonstartion for schools and inter college
PPTX
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
PDF
Design an Analysis of Algorithms II-SECS-1021-03
PDF
Digital Strategies for Manufacturing Companies
PDF
Understanding Forklifts - TECH EHS Solution
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PDF
Odoo Companies in India – Driving Business Transformation.pdf
PDF
How to Choose the Right IT Partner for Your Business in Malaysia
PDF
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
PDF
System and Network Administraation Chapter 3
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
Design an Analysis of Algorithms I-SECS-1021-03
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
How to Migrate SBCGlobal Email to Yahoo Easily
wealthsignaloriginal-com-DS-text-... (1).pdf
Introduction to Artificial Intelligence
ai tools demonstartion for schools and inter college
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
Design an Analysis of Algorithms II-SECS-1021-03
Digital Strategies for Manufacturing Companies
Understanding Forklifts - TECH EHS Solution
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
Odoo Companies in India – Driving Business Transformation.pdf
How to Choose the Right IT Partner for Your Business in Malaysia
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
System and Network Administraation Chapter 3
Ad

How to diffuse a bomb with ecf and efxclipse

  • 1. How to diffuse a bomb with ECF and e(fx)clipse Building a bomb disarming simulation
  • 2. Simulation Prototype Cut the correct cables to disarm the bomb! Every cable has a unique number: 5 = ORANGE 15 = WHITE 30 = BLUE 40 = GREEN 50 = YELLOW
  • 3. Live Escape Game • Played as a team • You must be physically present • You have 1 hour time • to solve a chain of puzzles Great place to use IoT technologies to create cool interactive puzzle gadgets! int a = LocalDate.now().getMonthValue();
  • 4. Fingerprint Scanner Touch Sensor (FSR) Magnetic Sensor (Reed)Magnet “Fingerprint Scanner”
  • 5. Bomb Gadget Hardware Sensors • Touch and magnetic sensors (fake “fingerprint scanner”) • Magnetic lid sensor (turn on lights, lock lid) • 5 Cables (disarm or detonate bomb) Actors • Fingerprint LEDs (red and green) – 5V (via Output) • Lid lock: electromagnet – 12V (via Relay) • LED lights – 12V (via Relay) int d = LocalDate.now().minusYears(2016).getEra().toString().length();
  • 6. Simple Gadget Setup Hardware • Raspberry Pi 2 • PiFace Digital 2 • Sensors (Input) • Actors (Output) Software • Equinox gateway application • Pi4J library (API for PiFace) • ECF Remote Services int d = LocalDate.now().minusYears(2016).getEra().toString().length();
  • 7. System Architecture Communication lines between all the components with OSGi remote services One Service for every Input (Sensor) and Output (Actor) Bomb Monitor Operator Tool Gadget 4Gadget 3Gadget 2 Bomb Gadget int c = Character.getNumericValue(System.getProperty("java.version").charAt(0));
  • 8. Remote Services Why I love OSGi remote services • Type safe development • Loosely coupled • No central server (dependencies by design) • Dynamic (services may come and go) • Protocol independent int cable2 = e - d;
  • 9. Register a Remote Service Register the service through the API or use DS int cable2 = e - d;
  • 10. ECF • Pluggable distribution providers (generic, r-osgi, JMS, MQTT, REST, …) • Pluggable discovery providers (Zeroconf, Zookeeper, SLP, …) • Asynchronous remote services
  • 11. Gadget Service Architecture int e = Integer.valueOf(System.getProperty("javafx.runtime.version").substring(0, c)).intValue(); Every service has a unique name to identify it This Ecore diagram is used for presentation purposes only. No EMF model code generation …
  • 12. Gadget Service Architecture Remote control int e = Integer.valueOf(System.getProperty("javafx.runtime.version").substring(0, c)).intValue(); This Ecore diagram is used for presentation purposes only. No EMF model code generation …
  • 13. Gadget Service Architecture Whiteboard Pattern int a = LocalDate.now().getMonthValue(); This Ecore diagram is used for presentation purposes only. No EMF model code generation …
  • 14. Sniffers Whiteboard Pattern • The sniffer is registered as a remote OSGi service • By the party that is interested in receiving change notifications • The gadget will pick up the service and start sending notifications if connect() returns true int a = LocalDate.now().getMonthValue();
  • 15. Service Implementation • Generic implementations for PiFace inputs and outputs using Pi4J • Abstract implementation SniffableIO provides API to register IOSniffers as observers int e = Integer.valueOf(System.getProperty("javafx.runtime.version").substring(0, c)).intValue();
  • 16. Easy Gadget Configuration RemoteServiceComponent • Manages the services on a gadget • Watches for “Sniffers” and adds these as Observables to a service
  • 17. Bomb Monitor Game Timer Reaction to Sensors Animations & Sound effects
  • 18. OSGi + JavaFX = FX-OSGi Application • Equinox runtime • JavaFX (design in FXML) • Eclipse DI • E(fx)clipse APIs • (no e4 application) int cable1 = (b - a) * c;
  • 19. Game Services Use GameService • Internally when sniffed sensors change state • Built-in test panel for rapid creative development • From the operator application for remote control Whiteboard Pattern int b = Double.valueOf(System.getProperty("java.class.version")).intValue(); This Ecore diagram is used for presentation purposes only. No EMF model code generation …
  • 21. DEMO
  • 22. Simulation Prototype Cut the correct cables to disarm the bomb! Every cable has a unique number: 5 = ORANGE 15 = WHITE 30 = BLUE 40 = GREEN 50 = YELLOW int cable1 = (b - a) * c; int cable2 = e - d;

Editor's Notes

  • #5: Simple logic, like “turn on the red light, when the touch sensor is pressed but the magnetic sensor is off” can be implemented on the device directly. But often enough, this information needs to be accessible remotely. Let’s take a step back and look at the big picture.
  • #6: Simple logic, like “turn on the red light, when the touch sensor is pressed but the magnetic sensor is off” can be implemented on the device directly. But often enough, this information needs to be accessible remotely. Let’s take a step back and look at the big picture.
  • #7: 7 Inputs 7 Outputs 5V 2 Relays (up to 20V) No soldering!
  • #8: Gadget: Sensors and actors Application: Graphics and sounds It’s a game, so an agile development approach is necessary. We want to be able to change this quickly: Move services from one device to another Introduce new services and/or new devices Change the game logic
  • #11: The distribution provider is responsible for the actual marshalling/serialization and network communication that takes place when a consumer invokes a method on a remote service The discovery provider is responsible to publish, find and register remote services
  • #12: Used the Ecore diagram editor to visualize the interface relationships. No EMF model is generated from this.
  • #13: Used the Ecore diagram editor to visualize the interface relationships. No EMF model is generated from this.
  • #14: Used the Ecore diagram editor to visualize the interface relationships. No EMF model is generated from this.
  • #15: This Sniffer is used by the bomb monitor application
  • #16: Sniffers need to be found using a service tracker, which then adds the sniffer to the IO service if its connect() method returns true. Now we have our building blocks to create and publish simple input/output services hooked to sensors and actors. Ggf. die nächsten beiden Seiten (Register Remote Services & Using Remote Services) weglassen und hier einfach erzählen
  • #17: Sniffers need to be found using a service tracker, which then adds the sniffer to the IO service if its connect() method returns true. Now we have our building blocks to create and publish simple input/output services hooked to sensors and actors. Ggf. die nächsten beiden Seiten (Register Remote Services & Using Remote Services) weglassen und hier einfach erzählen
  • #18: This can potentially be a very media enabled application. JavaFX seems a no-brainer in this situation. JavaFX + OSGi = e(fx)clipse
  • #19: Bomb monitor application can be in different states, depending on the observed (sniffed) sensor states.
  • #20: Used the Ecore diagram editor to visualize the interface relationships. No EMF model is generated from this.
  • #21: FX-E4 Application