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 ...
Live Escape Game
• Played as a team
• You must be physically present
• You have 1 hour time
• to solve a chain of puzzles
...
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 ligh...
Simple Gadget Setup
Hardware
• Raspberry Pi 2
• PiFace Digital 2
• Sensors (Input)
• Actors (Output)
Software
• Equinox ga...
System Architecture
Communication lines between all the components with
OSGi remote services
One Service for every Input (...
Remote Services
Why I love OSGi remote services
• Type safe development
• Loosely coupled
• No central server (dependencie...
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, Zo...
Gadget Service Architecture
int e = Integer.valueOf(System.getProperty("javafx.runtime.version").substring(0, c)).intValue...
Gadget Service Architecture
Remote
control
int e = Integer.valueOf(System.getProperty("javafx.runtime.version").substring(...
Gadget Service Architecture
Whiteboard
Pattern
int a = LocalDate.now().getMonthValue();
This Ecore diagram is used for pre...
Sniffers
Whiteboard Pattern
• The sniffer is
registered as a remote
OSGi service
• By the party that is
interested in rece...
Service Implementation
• Generic implementations
for PiFace inputs and
outputs using Pi4J
• Abstract implementation
Sniffa...
Easy Gadget Configuration
RemoteServiceComponent
• Manages the services on a gadget
• Watches for “Sniffers” and adds
thes...
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 a...
Game Services
Use GameService
• Internally when
sniffed sensors
change state
• Built-in test panel
for rapid creative
deve...
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 ...
Nächste SlideShare
Wird geladen in …5
×

How to diffuse a bomb with ecf and efxclipse

1.209 Aufrufe

Veröffentlicht am

Building a bomb disarming simulation with Eclipse IoT technologies

Veröffentlicht in: Software
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

How to diffuse a bomb with ecf and efxclipse

  1. 1. How to diffuse a bomb with ECF and e(fx)clipse Building a bomb disarming simulation
  2. 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. 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. 4. Fingerprint Scanner Touch Sensor (FSR) Magnetic Sensor (Reed)Magnet “Fingerprint Scanner”
  5. 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. 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. 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. 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. 9. Register a Remote Service Register the service through the API or use DS int cable2 = e - d;
  10. 10. ECF • Pluggable distribution providers (generic, r-osgi, JMS, MQTT, REST, …) • Pluggable discovery providers (Zeroconf, Zookeeper, SLP, …) • Asynchronous remote services
  11. 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. 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. 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. 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. 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. 16. Easy Gadget Configuration RemoteServiceComponent • Manages the services on a gadget • Watches for “Sniffers” and adds these as Observables to a service
  17. 17. Bomb Monitor Game Timer Reaction to Sensors Animations & Sound effects
  18. 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. 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 …
  20. 20. Operator Tool GameSniffer GameService InputService OutputService IOSniffer
  21. 21. DEMO
  22. 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;

×