Diese Präsentation wurde erfolgreich gemeldet.

How to diffuse a bomb with ecf and efxclipse

0

Teilen

Wird geladen in …3
×
1 von 22
1 von 22

How to diffuse a bomb with ecf and efxclipse

0

Teilen

Herunterladen, um offline zu lesen

Beschreibung

Building a bomb disarming simulation with Eclipse IoT technologies

Transkript

  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;

Hinweis der Redaktion

  • 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.
  • 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 Inputs
    7 Outputs 5V
    2 Relays (up to 20V)

    No soldering!
  • 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
  • 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
  • Used the Ecore diagram editor to visualize the interface relationships. No EMF model is generated from this.
  • Used the Ecore diagram editor to visualize the interface relationships. No EMF model is generated from this.
  • Used the Ecore diagram editor to visualize the interface relationships. No EMF model is generated from this.
  • This Sniffer is used by the bomb monitor application
  • 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
  • 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
  • This can potentially be a very media enabled application. JavaFX seems a no-brainer in this situation.
    JavaFX + OSGi = e(fx)clipse
  • Bomb monitor application can be in different states, depending on the observed (sniffed) sensor states.
  • Used the Ecore diagram editor to visualize the interface relationships. No EMF model is generated from this.
  • FX-E4 Application
  • Beschreibung

    Building a bomb disarming simulation with Eclipse IoT technologies

    Transkript

    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;

    Hinweis der Redaktion

  • 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.
  • 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 Inputs
    7 Outputs 5V
    2 Relays (up to 20V)

    No soldering!
  • 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
  • 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
  • Used the Ecore diagram editor to visualize the interface relationships. No EMF model is generated from this.
  • Used the Ecore diagram editor to visualize the interface relationships. No EMF model is generated from this.
  • Used the Ecore diagram editor to visualize the interface relationships. No EMF model is generated from this.
  • This Sniffer is used by the bomb monitor application
  • 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
  • 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
  • This can potentially be a very media enabled application. JavaFX seems a no-brainer in this situation.
    JavaFX + OSGi = e(fx)clipse
  • Bomb monitor application can be in different states, depending on the observed (sniffed) sensor states.
  • Used the Ecore diagram editor to visualize the interface relationships. No EMF model is generated from this.
  • FX-E4 Application
  • Weitere Verwandte Inhalte

    Ähnliche Bücher

    Kostenlos mit einer 30-tägigen Testversion von Scribd

    Alle anzeigen

    Ähnliche Hörbücher

    Kostenlos mit einer 30-tägigen Testversion von Scribd

    Alle anzeigen

    ×