How to diffuse a bomb with ecf and efxclipse

Christoph Keimel
Christoph KeimelSoftwareentwickler um EM-SOFTWARE GmbH
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;
1 von 22

Recomendados

FGS 2011: Making A Game With Molehill: Zombie Tycoon von
FGS 2011: Making A Game With Molehill: Zombie TycoonFGS 2011: Making A Game With Molehill: Zombie Tycoon
FGS 2011: Making A Game With Molehill: Zombie Tycoonmochimedia
758 views33 Folien
The not so short von
The not so shortThe not so short
The not so shortAXM
1.6K views111 Folien
Presentatie Willem En Kevin von
Presentatie Willem En KevinPresentatie Willem En Kevin
Presentatie Willem En Kevingueste26e85
366 views28 Folien
Democamp - Munich - Java9 von
Democamp - Munich - Java9Democamp - Munich - Java9
Democamp - Munich - Java9Tom Schindl
6.2K views16 Folien
Brillar como Informático en la empresa moderna von
Brillar como Informático en la empresa modernaBrillar como Informático en la empresa moderna
Brillar como Informático en la empresa modernaProyectalis / Improvement21
14.6K views126 Folien
Proyectalis - Agile Course V 14.0 von
Proyectalis - Agile Course V 14.0Proyectalis - Agile Course V 14.0
Proyectalis - Agile Course V 14.0Proyectalis / Improvement21
19.7K views280 Folien

Más contenido relacionado

Similar a How to diffuse a bomb with ecf and efxclipse

Powering a live escape game with ecf and efxclipse von
Powering a live escape game with ecf and efxclipsePowering a live escape game with ecf and efxclipse
Powering a live escape game with ecf and efxclipseChristoph Keimel
109 views30 Folien
Review 0 (2) (1) (1).pptx von
Review 0 (2) (1) (1).pptxReview 0 (2) (1) (1).pptx
Review 0 (2) (1) (1).pptxWidsoulDevil
44 views25 Folien
Internet of Things Magic Show von
Internet of Things Magic ShowInternet of Things Magic Show
Internet of Things Magic ShowStephen Chin
2.7K views64 Folien
TestowanieIoT2016 von
TestowanieIoT2016TestowanieIoT2016
TestowanieIoT2016kraqa
409 views52 Folien
Using Smalltalk for controlling robotics systems von
Using Smalltalk for controlling robotics systemsUsing Smalltalk for controlling robotics systems
Using Smalltalk for controlling robotics systemsSerge Stinckwich
2.3K views59 Folien
Introducing the Sun SPOTs von
Introducing the Sun SPOTsIntroducing the Sun SPOTs
Introducing the Sun SPOTsStefano Sanna
828 views39 Folien

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

Powering a live escape game with ecf and efxclipse von Christoph Keimel
Powering a live escape game with ecf and efxclipsePowering a live escape game with ecf and efxclipse
Powering a live escape game with ecf and efxclipse
Christoph Keimel109 views
Review 0 (2) (1) (1).pptx von WidsoulDevil
Review 0 (2) (1) (1).pptxReview 0 (2) (1) (1).pptx
Review 0 (2) (1) (1).pptx
WidsoulDevil44 views
Internet of Things Magic Show von Stephen Chin
Internet of Things Magic ShowInternet of Things Magic Show
Internet of Things Magic Show
Stephen Chin2.7K views
TestowanieIoT2016 von kraqa
TestowanieIoT2016TestowanieIoT2016
TestowanieIoT2016
kraqa409 views
Using Smalltalk for controlling robotics systems von Serge Stinckwich
Using Smalltalk for controlling robotics systemsUsing Smalltalk for controlling robotics systems
Using Smalltalk for controlling robotics systems
Serge Stinckwich2.3K views
Becoming a kinect hacker innovator v2 von Jeff Sipko
Becoming a kinect hacker innovator v2Becoming a kinect hacker innovator v2
Becoming a kinect hacker innovator v2
Jeff Sipko2.5K views
Static analysis of C++ source code von Andrey Karpov
Static analysis of C++ source codeStatic analysis of C++ source code
Static analysis of C++ source code
Andrey Karpov1.7K views
Static analysis of C++ source code von PVS-Studio
Static analysis of C++ source codeStatic analysis of C++ source code
Static analysis of C++ source code
PVS-Studio545 views
Deterministic Simulation - What modern online games can learn from the Game B... von David Salz
Deterministic Simulation - What modern online games can learn from the Game B...Deterministic Simulation - What modern online games can learn from the Game B...
Deterministic Simulation - What modern online games can learn from the Game B...
David Salz1.4K views
Socketプログラム Silverlight for Windows Phoneへの移植のポイント von Shin Ise
Socketプログラム Silverlight for Windows Phoneへの移植のポイントSocketプログラム Silverlight for Windows Phoneへの移植のポイント
Socketプログラム Silverlight for Windows Phoneへの移植のポイント
Shin Ise707 views
Using the Kinect for Fun and Profit by Tam Hanna von Codemotion
Using the Kinect for Fun and Profit by Tam HannaUsing the Kinect for Fun and Profit by Tam Hanna
Using the Kinect for Fun and Profit by Tam Hanna
Codemotion1.6K views
Working Without Wires von Kinoma
Working Without WiresWorking Without Wires
Working Without Wires
Kinoma836 views
Fun with JavaScript and sensors - AmsterdamJS April 2015 von Jan Jongboom
Fun with JavaScript and sensors - AmsterdamJS April 2015Fun with JavaScript and sensors - AmsterdamJS April 2015
Fun with JavaScript and sensors - AmsterdamJS April 2015
Jan Jongboom886 views
ACM Mid-Southeast Slides von krinchan
ACM Mid-Southeast SlidesACM Mid-Southeast Slides
ACM Mid-Southeast Slides
krinchan351 views
PyKinect: Body Iteration Application Development Using Python von pycontw
PyKinect: Body Iteration Application Development Using PythonPyKinect: Body Iteration Application Development Using Python
PyKinect: Body Iteration Application Development Using Python
pycontw10.3K views
Introduction to wave engine von waveengineteam
Introduction to wave engineIntroduction to wave engine
Introduction to wave engine
waveengineteam4.8K views

Último

Software testing company in India.pptx von
Software testing company in India.pptxSoftware testing company in India.pptx
Software testing company in India.pptxSakshiPatel82
7 views9 Folien
El Arte de lo Possible von
El Arte de lo PossibleEl Arte de lo Possible
El Arte de lo PossibleNeo4j
38 views35 Folien
360 graden fabriek von
360 graden fabriek360 graden fabriek
360 graden fabriekinfo33492
24 views25 Folien
DSD-INT 2023 Delft3D FM Suite 2024.01 1D2D - Beta testing programme - Geertsema von
DSD-INT 2023 Delft3D FM Suite 2024.01 1D2D - Beta testing programme - GeertsemaDSD-INT 2023 Delft3D FM Suite 2024.01 1D2D - Beta testing programme - Geertsema
DSD-INT 2023 Delft3D FM Suite 2024.01 1D2D - Beta testing programme - GeertsemaDeltares
17 views13 Folien
Unleash The Monkeys von
Unleash The MonkeysUnleash The Monkeys
Unleash The MonkeysJacob Duijzer
7 views28 Folien
Citi TechTalk Session 2: Kafka Deep Dive von
Citi TechTalk Session 2: Kafka Deep DiveCiti TechTalk Session 2: Kafka Deep Dive
Citi TechTalk Session 2: Kafka Deep Diveconfluent
17 views60 Folien

Último(20)

Software testing company in India.pptx von SakshiPatel82
Software testing company in India.pptxSoftware testing company in India.pptx
Software testing company in India.pptx
SakshiPatel827 views
El Arte de lo Possible von Neo4j
El Arte de lo PossibleEl Arte de lo Possible
El Arte de lo Possible
Neo4j38 views
360 graden fabriek von info33492
360 graden fabriek360 graden fabriek
360 graden fabriek
info3349224 views
DSD-INT 2023 Delft3D FM Suite 2024.01 1D2D - Beta testing programme - Geertsema von Deltares
DSD-INT 2023 Delft3D FM Suite 2024.01 1D2D - Beta testing programme - GeertsemaDSD-INT 2023 Delft3D FM Suite 2024.01 1D2D - Beta testing programme - Geertsema
DSD-INT 2023 Delft3D FM Suite 2024.01 1D2D - Beta testing programme - Geertsema
Deltares17 views
Citi TechTalk Session 2: Kafka Deep Dive von confluent
Citi TechTalk Session 2: Kafka Deep DiveCiti TechTalk Session 2: Kafka Deep Dive
Citi TechTalk Session 2: Kafka Deep Dive
confluent17 views
Unmasking the Dark Art of Vectored Exception Handling: Bypassing XDR and EDR ... von Donato Onofri
Unmasking the Dark Art of Vectored Exception Handling: Bypassing XDR and EDR ...Unmasking the Dark Art of Vectored Exception Handling: Bypassing XDR and EDR ...
Unmasking the Dark Art of Vectored Exception Handling: Bypassing XDR and EDR ...
Donato Onofri711 views
Tridens DevOps von Tridens
Tridens DevOpsTridens DevOps
Tridens DevOps
Tridens9 views
Software evolution understanding: Automatic extraction of software identifier... von Ra'Fat Al-Msie'deen
Software evolution understanding: Automatic extraction of software identifier...Software evolution understanding: Automatic extraction of software identifier...
Software evolution understanding: Automatic extraction of software identifier...
2023-November-Schneider Electric-Meetup-BCN Admin Group.pptx von animuscrm
2023-November-Schneider Electric-Meetup-BCN Admin Group.pptx2023-November-Schneider Electric-Meetup-BCN Admin Group.pptx
2023-November-Schneider Electric-Meetup-BCN Admin Group.pptx
animuscrm13 views
Navigating container technology for enhanced security by Niklas Saari von Metosin Oy
Navigating container technology for enhanced security by Niklas SaariNavigating container technology for enhanced security by Niklas Saari
Navigating container technology for enhanced security by Niklas Saari
Metosin Oy8 views
DSD-INT 2023 Wave-Current Interaction at Montrose Tidal Inlet System and Its ... von Deltares
DSD-INT 2023 Wave-Current Interaction at Montrose Tidal Inlet System and Its ...DSD-INT 2023 Wave-Current Interaction at Montrose Tidal Inlet System and Its ...
DSD-INT 2023 Wave-Current Interaction at Montrose Tidal Inlet System and Its ...
Deltares9 views
DSD-INT 2023 The Danube Hazardous Substances Model - Kovacs von Deltares
DSD-INT 2023 The Danube Hazardous Substances Model - KovacsDSD-INT 2023 The Danube Hazardous Substances Model - Kovacs
DSD-INT 2023 The Danube Hazardous Substances Model - Kovacs
Deltares7 views
DSD-INT 2023 Modelling litter in the Yarra and Maribyrnong Rivers (Australia)... von Deltares
DSD-INT 2023 Modelling litter in the Yarra and Maribyrnong Rivers (Australia)...DSD-INT 2023 Modelling litter in the Yarra and Maribyrnong Rivers (Australia)...
DSD-INT 2023 Modelling litter in the Yarra and Maribyrnong Rivers (Australia)...
Deltares9 views
DSD-INT 2023 3D hydrodynamic modelling of microplastic transport in lakes - J... von Deltares
DSD-INT 2023 3D hydrodynamic modelling of microplastic transport in lakes - J...DSD-INT 2023 3D hydrodynamic modelling of microplastic transport in lakes - J...
DSD-INT 2023 3D hydrodynamic modelling of microplastic transport in lakes - J...
Deltares9 views

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;

Hinweis der Redaktion

  1. 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.
  2. 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.
  3. 7 Inputs 7 Outputs 5V 2 Relays (up to 20V) No soldering!
  4. 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
  5. 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
  6. Used the Ecore diagram editor to visualize the interface relationships. No EMF model is generated from this.
  7. Used the Ecore diagram editor to visualize the interface relationships. No EMF model is generated from this.
  8. Used the Ecore diagram editor to visualize the interface relationships. No EMF model is generated from this.
  9. This Sniffer is used by the bomb monitor application
  10. 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
  11. 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
  12. This can potentially be a very media enabled application. JavaFX seems a no-brainer in this situation. JavaFX + OSGi = e(fx)clipse
  13. Bomb monitor application can be in different states, depending on the observed (sniffed) sensor states.
  14. Used the Ecore diagram editor to visualize the interface relationships. No EMF model is generated from this.
  15. FX-E4 Application