SlideShare une entreprise Scribd logo
1  sur  56
Manage PTZ Cameras with Phoenix
José C García-Sacristán
@jgsacristan
“Phoenix is a framework for building
HTML5 apps, API backends and
distributed systems to take on the
modern Web.”
“Written in Elixir, you get beautiful
syntax, productive tooling and a fast
runtime”
2 million connections per server
400 million users, 30 engineers
Erlang
• Created in 1986
- Windows in 1985
- Linux in 1991
• Handles 50% of the worlds telecom traffic
• Reported 99.9999999% availability (nine
nines)
Elixir
Elixir is a functional, concurrent, general-
purpose programming language that runs on the
Erlang virtual machine (BEAM). Elixir builds on
top of Erlang to provide distributed, fault-
tolerant, soft real-time, non-stop applications
but also extends it to support metaprogramming
with macros and polymorphism via protocols.
Productivity in Phoenix
• Short term productivity
- Documentation / Guides / Generators
- Eliminates trivial choices
• Long term productivity
- Maintainability
- Introspection
Easy installation
• $mix local.hex
• $ mix archive.install
https://github.com/phoenixframework/phoen
ix/releases/download/v1.0.2/phoenix_new-
1.0.2.ez
• $mix phoenix.new my_app
Endpoints
Routers
Controllers
Generators
$ mix phoenix.gen.html
$ mix phoenix.gen.json
$ mix phoenix.gen.channel
Views & Templates
• Precompiled. Fast
• Views render templates.
• Views serve as a presentation layer
• Beyond HTML
Performance
Robust Concurrency Model
• “processes” – extreme lightweight units of
concurrency
• Garbage collection is per process
- No global pauses
• Load balances on IO and CPU
Channels
Trivial realtime communication for
connected devices
But there is more ..
• Form builders
• Static build tools with ES6 by default
• Live reloading
• First class test tools
• Packages via hex.pm (+2MM downloads)
Applications
• Package and run our code
• Can be started and stopped as a unit
• Provide unified configuration
• Hold processes and state in the
supervision tree
:observer.start
:observer.start
• The ONVIF specification defines a common
protocol for the exchange of information
between network video devices including
automatic device discovery, video streaming
and intelligence metadata.
Onvif Specification
Based on relevant Web Services standards including security
and IP configuration requirements. Areas covered:
• IP configuration
• Device discovery
• Device management
• Media configuration
• Real time viewing
• Event handling
• PTZ camera control
• Video analytics
• Security
http://www.onvif.org/onvif/ver20/util/operationIndex.html
Integration with evercam-media
Problems:
• Poor SOAP support in Erlang/Elixir.
• WS-Security not implemented.
• SOAP operations return XML.
• evercam-media needs JSON responses.
Integration with evercam-media
Solution:
• HTTPotion for HTTP requests
Integration with evercam-media
Solution:
• HTTPotion for HTTP requests
• Own implementation of SOAP Envelope and
WS-Security headers.
Integration with evercam-media
Solution:
• HTTPotion for HTTP requests
• Own implementation of SOAP Envelope and
WS-Security headers.
• Own implementation of XML to Elixir Map
transformations using Erlang xmerl library
Integration with evercam-media
• Definition of needed operations using
onvif_client methods.
Integration with evercam-media
• Definition of needed operations using
onvif_client methods.
• Add REST routes to web/router.ex
Integration with evercam-media
• Definition of needed operations using
onvif_client methods.
• Add REST routes to web/router.ex
• Implement controllers that will invoke ONVIF
operations and return the responses as Elixir
Map structures.
Integration with evercam-media
• Definition of needed operations using
onvif_client methods.
• Add REST routes to web/router.ex
• Implement controllers that will invoke ONVIF
operations and return the responses as Elixir
Map structures.
• Phoenix translate these Maps into JSON
structures without the need of extra coding
Demo
Managing PTZ cameras using Elixir and the Phoenix Framework
Managing PTZ cameras using Elixir and the Phoenix Framework

Contenu connexe

Tendances

Semi Custom Integrated Circuit Design
 Semi Custom Integrated Circuit Design Semi Custom Integrated Circuit Design
Semi Custom Integrated Circuit DesignDr.YNM
 
Linux Kernel Init Process
Linux Kernel Init ProcessLinux Kernel Init Process
Linux Kernel Init ProcessKernel TLV
 
Embedded linux
Embedded linuxEmbedded linux
Embedded linuxWingston
 
Browsing Linux Kernel Source
Browsing Linux Kernel SourceBrowsing Linux Kernel Source
Browsing Linux Kernel SourceMotaz Saad
 
Introduction to Linux Kernel by Quontra Solutions
Introduction to Linux Kernel by Quontra SolutionsIntroduction to Linux Kernel by Quontra Solutions
Introduction to Linux Kernel by Quontra SolutionsQUONTRASOLUTIONS
 
Block I/O Layer Tracing: blktrace
Block I/O Layer Tracing: blktraceBlock I/O Layer Tracing: blktrace
Block I/O Layer Tracing: blktraceBabak Farrokhi
 
The Linux Kernel Scheduler (For Beginners) - SFO17-421
The Linux Kernel Scheduler (For Beginners) - SFO17-421The Linux Kernel Scheduler (For Beginners) - SFO17-421
The Linux Kernel Scheduler (For Beginners) - SFO17-421Linaro
 
The Linux Block Layer - Built for Fast Storage
The Linux Block Layer - Built for Fast StorageThe Linux Block Layer - Built for Fast Storage
The Linux Block Layer - Built for Fast StorageKernel TLV
 
Arm device tree and linux device drivers
Arm device tree and linux device driversArm device tree and linux device drivers
Arm device tree and linux device driversHoucheng Lin
 
Part 02 Linux Kernel Module Programming
Part 02 Linux Kernel Module ProgrammingPart 02 Linux Kernel Module Programming
Part 02 Linux Kernel Module ProgrammingTushar B Kute
 
Unix Memory Management - Operating Systems
Unix Memory Management - Operating SystemsUnix Memory Management - Operating Systems
Unix Memory Management - Operating SystemsDrishti Bhalla
 
Part 01 Linux Kernel Compilation (Ubuntu)
Part 01 Linux Kernel Compilation (Ubuntu)Part 01 Linux Kernel Compilation (Ubuntu)
Part 01 Linux Kernel Compilation (Ubuntu)Tushar B Kute
 
Arm DynamIQ: Intelligent Solutions Using Cluster Based Multiprocessing
Arm DynamIQ: Intelligent Solutions Using Cluster Based MultiprocessingArm DynamIQ: Intelligent Solutions Using Cluster Based Multiprocessing
Arm DynamIQ: Intelligent Solutions Using Cluster Based MultiprocessingArm
 

Tendances (20)

Semi Custom Integrated Circuit Design
 Semi Custom Integrated Circuit Design Semi Custom Integrated Circuit Design
Semi Custom Integrated Circuit Design
 
Lect01 flow
Lect01 flowLect01 flow
Lect01 flow
 
Advanced C - Part 1
Advanced C - Part 1 Advanced C - Part 1
Advanced C - Part 1
 
BeagleBone Black Bootloaders
BeagleBone Black BootloadersBeagleBone Black Bootloaders
BeagleBone Black Bootloaders
 
Linux Kernel Init Process
Linux Kernel Init ProcessLinux Kernel Init Process
Linux Kernel Init Process
 
Embedded linux
Embedded linuxEmbedded linux
Embedded linux
 
Embedded Linux - Building toolchain
Embedded Linux - Building toolchainEmbedded Linux - Building toolchain
Embedded Linux - Building toolchain
 
BusyBox for Embedded Linux
BusyBox for Embedded LinuxBusyBox for Embedded Linux
BusyBox for Embedded Linux
 
Browsing Linux Kernel Source
Browsing Linux Kernel SourceBrowsing Linux Kernel Source
Browsing Linux Kernel Source
 
Making Linux do Hard Real-time
Making Linux do Hard Real-timeMaking Linux do Hard Real-time
Making Linux do Hard Real-time
 
Introduction to Linux Kernel by Quontra Solutions
Introduction to Linux Kernel by Quontra SolutionsIntroduction to Linux Kernel by Quontra Solutions
Introduction to Linux Kernel by Quontra Solutions
 
Block I/O Layer Tracing: blktrace
Block I/O Layer Tracing: blktraceBlock I/O Layer Tracing: blktrace
Block I/O Layer Tracing: blktrace
 
Getting started with BeagleBone Black - Embedded Linux
Getting started with BeagleBone Black - Embedded LinuxGetting started with BeagleBone Black - Embedded Linux
Getting started with BeagleBone Black - Embedded Linux
 
The Linux Kernel Scheduler (For Beginners) - SFO17-421
The Linux Kernel Scheduler (For Beginners) - SFO17-421The Linux Kernel Scheduler (For Beginners) - SFO17-421
The Linux Kernel Scheduler (For Beginners) - SFO17-421
 
The Linux Block Layer - Built for Fast Storage
The Linux Block Layer - Built for Fast StorageThe Linux Block Layer - Built for Fast Storage
The Linux Block Layer - Built for Fast Storage
 
Arm device tree and linux device drivers
Arm device tree and linux device driversArm device tree and linux device drivers
Arm device tree and linux device drivers
 
Part 02 Linux Kernel Module Programming
Part 02 Linux Kernel Module ProgrammingPart 02 Linux Kernel Module Programming
Part 02 Linux Kernel Module Programming
 
Unix Memory Management - Operating Systems
Unix Memory Management - Operating SystemsUnix Memory Management - Operating Systems
Unix Memory Management - Operating Systems
 
Part 01 Linux Kernel Compilation (Ubuntu)
Part 01 Linux Kernel Compilation (Ubuntu)Part 01 Linux Kernel Compilation (Ubuntu)
Part 01 Linux Kernel Compilation (Ubuntu)
 
Arm DynamIQ: Intelligent Solutions Using Cluster Based Multiprocessing
Arm DynamIQ: Intelligent Solutions Using Cluster Based MultiprocessingArm DynamIQ: Intelligent Solutions Using Cluster Based Multiprocessing
Arm DynamIQ: Intelligent Solutions Using Cluster Based Multiprocessing
 

Similaire à Managing PTZ cameras using Elixir and the Phoenix Framework

FIWARE and IoT net services by DunavNET, SenZations 2015
FIWARE and IoT net services by DunavNET, SenZations 2015FIWARE and IoT net services by DunavNET, SenZations 2015
FIWARE and IoT net services by DunavNET, SenZations 2015SenZations Summer School
 
A First Look at vSphere Integrated Containers and Photon Platform
A First Look at vSphere Integrated Containers and Photon PlatformA First Look at vSphere Integrated Containers and Photon Platform
A First Look at vSphere Integrated Containers and Photon PlatformDan Wendlandt
 
OpenStack in an Ever Expanding World of Possibilities - Vancouver 2015 Summit
OpenStack in an Ever Expanding World of Possibilities - Vancouver 2015 SummitOpenStack in an Ever Expanding World of Possibilities - Vancouver 2015 Summit
OpenStack in an Ever Expanding World of Possibilities - Vancouver 2015 SummitLew Tucker
 
Cloud Native Application
Cloud Native ApplicationCloud Native Application
Cloud Native ApplicationVMUG IT
 
OSCON: Unikernels and Docker: From revolution to evolution
OSCON: Unikernels and Docker: From revolution to evolutionOSCON: Unikernels and Docker: From revolution to evolution
OSCON: Unikernels and Docker: From revolution to evolutionDocker, Inc.
 
Superfluid networking for 5G: vision and state of the art
Superfluid networking for 5G: vision and state of the artSuperfluid networking for 5G: vision and state of the art
Superfluid networking for 5G: vision and state of the artStefano Salsano
 
Take control back on Android devices with Flyve MDM, OW2con'18, June 7-8, 201...
Take control back on Android devices with Flyve MDM, OW2con'18, June 7-8, 201...Take control back on Android devices with Flyve MDM, OW2con'18, June 7-8, 201...
Take control back on Android devices with Flyve MDM, OW2con'18, June 7-8, 201...OW2
 
20140708 - Jeremy Edberg: How Netflix Delivers Software
20140708 - Jeremy Edberg: How Netflix Delivers Software20140708 - Jeremy Edberg: How Netflix Delivers Software
20140708 - Jeremy Edberg: How Netflix Delivers SoftwareDevOps Chicago
 
Developing Tizen OS Based Solutions (IDF13) - Chris Norman
Developing Tizen OS Based Solutions (IDF13) - Chris NormanDeveloping Tizen OS Based Solutions (IDF13) - Chris Norman
Developing Tizen OS Based Solutions (IDF13) - Chris NormanRyo Jin
 
Make the Shift from Manual to Automation with Open Source
Make the Shift from Manual to Automation with Open SourceMake the Shift from Manual to Automation with Open Source
Make the Shift from Manual to Automation with Open SourcePerfecto by Perforce
 
Multicore 101: Migrating Embedded Apps to Multicore with Linux
Multicore 101: Migrating Embedded Apps to Multicore with LinuxMulticore 101: Migrating Embedded Apps to Multicore with Linux
Multicore 101: Migrating Embedded Apps to Multicore with LinuxBrad Dixon
 
Superfluid Deployment of Virtual Functions: Exploiting Mobile Edge Computing ...
Superfluid Deployment of Virtual Functions: Exploiting Mobile Edge Computing ...Superfluid Deployment of Virtual Functions: Exploiting Mobile Edge Computing ...
Superfluid Deployment of Virtual Functions: Exploiting Mobile Edge Computing ...Stefano Salsano
 
NFV foundation/NFV For Dummies
NFV foundation/NFV For DummiesNFV foundation/NFV For Dummies
NFV foundation/NFV For Dummiesanandbajaj
 
Introduction to Open Mano
Introduction to Open ManoIntroduction to Open Mano
Introduction to Open Manovideos
 

Similaire à Managing PTZ cameras using Elixir and the Phoenix Framework (20)

FIWARE and IoT net services by DunavNET, SenZations 2015
FIWARE and IoT net services by DunavNET, SenZations 2015FIWARE and IoT net services by DunavNET, SenZations 2015
FIWARE and IoT net services by DunavNET, SenZations 2015
 
Andrew Resume
Andrew ResumeAndrew Resume
Andrew Resume
 
IPLOOK vEPC solution
IPLOOK vEPC solutionIPLOOK vEPC solution
IPLOOK vEPC solution
 
Elixir in the Wild
Elixir in the WildElixir in the Wild
Elixir in the Wild
 
Introduction to FIWARE Open Ecosystem
Introduction to FIWARE Open EcosystemIntroduction to FIWARE Open Ecosystem
Introduction to FIWARE Open Ecosystem
 
A First Look at vSphere Integrated Containers and Photon Platform
A First Look at vSphere Integrated Containers and Photon PlatformA First Look at vSphere Integrated Containers and Photon Platform
A First Look at vSphere Integrated Containers and Photon Platform
 
OpenStack in an Ever Expanding World of Possibilities - Vancouver 2015 Summit
OpenStack in an Ever Expanding World of Possibilities - Vancouver 2015 SummitOpenStack in an Ever Expanding World of Possibilities - Vancouver 2015 Summit
OpenStack in an Ever Expanding World of Possibilities - Vancouver 2015 Summit
 
Cloud Native Application
Cloud Native ApplicationCloud Native Application
Cloud Native Application
 
Fiware, the future internet
Fiware, the future internetFiware, the future internet
Fiware, the future internet
 
OSCON: Unikernels and Docker: From revolution to evolution
OSCON: Unikernels and Docker: From revolution to evolutionOSCON: Unikernels and Docker: From revolution to evolution
OSCON: Unikernels and Docker: From revolution to evolution
 
Superfluid networking for 5G: vision and state of the art
Superfluid networking for 5G: vision and state of the artSuperfluid networking for 5G: vision and state of the art
Superfluid networking for 5G: vision and state of the art
 
Take control back on Android devices with Flyve MDM, OW2con'18, June 7-8, 201...
Take control back on Android devices with Flyve MDM, OW2con'18, June 7-8, 201...Take control back on Android devices with Flyve MDM, OW2con'18, June 7-8, 201...
Take control back on Android devices with Flyve MDM, OW2con'18, June 7-8, 201...
 
20140708 - Jeremy Edberg: How Netflix Delivers Software
20140708 - Jeremy Edberg: How Netflix Delivers Software20140708 - Jeremy Edberg: How Netflix Delivers Software
20140708 - Jeremy Edberg: How Netflix Delivers Software
 
Developing Tizen OS Based Solutions (IDF13) - Chris Norman
Developing Tizen OS Based Solutions (IDF13) - Chris NormanDeveloping Tizen OS Based Solutions (IDF13) - Chris Norman
Developing Tizen OS Based Solutions (IDF13) - Chris Norman
 
Make the Shift from Manual to Automation with Open Source
Make the Shift from Manual to Automation with Open SourceMake the Shift from Manual to Automation with Open Source
Make the Shift from Manual to Automation with Open Source
 
Javantura v6 - Just say it v2 - Pavao Varela Petrac
Javantura v6 - Just say it v2 - Pavao Varela PetracJavantura v6 - Just say it v2 - Pavao Varela Petrac
Javantura v6 - Just say it v2 - Pavao Varela Petrac
 
Multicore 101: Migrating Embedded Apps to Multicore with Linux
Multicore 101: Migrating Embedded Apps to Multicore with LinuxMulticore 101: Migrating Embedded Apps to Multicore with Linux
Multicore 101: Migrating Embedded Apps to Multicore with Linux
 
Superfluid Deployment of Virtual Functions: Exploiting Mobile Edge Computing ...
Superfluid Deployment of Virtual Functions: Exploiting Mobile Edge Computing ...Superfluid Deployment of Virtual Functions: Exploiting Mobile Edge Computing ...
Superfluid Deployment of Virtual Functions: Exploiting Mobile Edge Computing ...
 
NFV foundation/NFV For Dummies
NFV foundation/NFV For DummiesNFV foundation/NFV For Dummies
NFV foundation/NFV For Dummies
 
Introduction to Open Mano
Introduction to Open ManoIntroduction to Open Mano
Introduction to Open Mano
 

Dernier

UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxAndreas Kunz
 
How To Manage Restaurant Staff -BTRESTRO
How To Manage Restaurant Staff -BTRESTROHow To Manage Restaurant Staff -BTRESTRO
How To Manage Restaurant Staff -BTRESTROmotivationalword821
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsChristian Birchler
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceBrainSell Technologies
 
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...Akihiro Suda
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfInnovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfYashikaSharma391629
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfStefano Stabellini
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Mater
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Natan Silnitsky
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsSafe Software
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 

Dernier (20)

UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
 
How To Manage Restaurant Staff -BTRESTRO
How To Manage Restaurant Staff -BTRESTROHow To Manage Restaurant Staff -BTRESTRO
How To Manage Restaurant Staff -BTRESTRO
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. Salesforce
 
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
20240415 [Container Plumbing Days] Usernetes Gen2 - Kubernetes in Rootless Do...
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfInnovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdf
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data Streams
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 

Managing PTZ cameras using Elixir and the Phoenix Framework

  • 1. Manage PTZ Cameras with Phoenix José C García-Sacristán @jgsacristan
  • 2.
  • 3. “Phoenix is a framework for building HTML5 apps, API backends and distributed systems to take on the modern Web.” “Written in Elixir, you get beautiful syntax, productive tooling and a fast runtime”
  • 4. 2 million connections per server 400 million users, 30 engineers
  • 5.
  • 6. Erlang • Created in 1986 - Windows in 1985 - Linux in 1991 • Handles 50% of the worlds telecom traffic • Reported 99.9999999% availability (nine nines)
  • 7.
  • 8. Elixir Elixir is a functional, concurrent, general- purpose programming language that runs on the Erlang virtual machine (BEAM). Elixir builds on top of Erlang to provide distributed, fault- tolerant, soft real-time, non-stop applications but also extends it to support metaprogramming with macros and polymorphism via protocols.
  • 9. Productivity in Phoenix • Short term productivity - Documentation / Guides / Generators - Eliminates trivial choices • Long term productivity - Maintainability - Introspection
  • 10. Easy installation • $mix local.hex • $ mix archive.install https://github.com/phoenixframework/phoen ix/releases/download/v1.0.2/phoenix_new- 1.0.2.ez • $mix phoenix.new my_app
  • 14.
  • 15.
  • 16. Generators $ mix phoenix.gen.html $ mix phoenix.gen.json $ mix phoenix.gen.channel
  • 17. Views & Templates • Precompiled. Fast • Views render templates. • Views serve as a presentation layer • Beyond HTML
  • 19. Robust Concurrency Model • “processes” – extreme lightweight units of concurrency • Garbage collection is per process - No global pauses • Load balances on IO and CPU
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27. But there is more .. • Form builders • Static build tools with ES6 by default • Live reloading • First class test tools • Packages via hex.pm (+2MM downloads)
  • 28. Applications • Package and run our code • Can be started and stopped as a unit • Provide unified configuration • Hold processes and state in the supervision tree
  • 31.
  • 32.
  • 33.
  • 34. • The ONVIF specification defines a common protocol for the exchange of information between network video devices including automatic device discovery, video streaming and intelligence metadata.
  • 35. Onvif Specification Based on relevant Web Services standards including security and IP configuration requirements. Areas covered: • IP configuration • Device discovery • Device management • Media configuration • Real time viewing • Event handling • PTZ camera control • Video analytics • Security
  • 37. Integration with evercam-media Problems: • Poor SOAP support in Erlang/Elixir. • WS-Security not implemented. • SOAP operations return XML. • evercam-media needs JSON responses.
  • 38. Integration with evercam-media Solution: • HTTPotion for HTTP requests
  • 39.
  • 40. Integration with evercam-media Solution: • HTTPotion for HTTP requests • Own implementation of SOAP Envelope and WS-Security headers.
  • 41.
  • 42.
  • 43. Integration with evercam-media Solution: • HTTPotion for HTTP requests • Own implementation of SOAP Envelope and WS-Security headers. • Own implementation of XML to Elixir Map transformations using Erlang xmerl library
  • 44.
  • 45. Integration with evercam-media • Definition of needed operations using onvif_client methods.
  • 46.
  • 47. Integration with evercam-media • Definition of needed operations using onvif_client methods. • Add REST routes to web/router.ex
  • 48.
  • 49.
  • 50. Integration with evercam-media • Definition of needed operations using onvif_client methods. • Add REST routes to web/router.ex • Implement controllers that will invoke ONVIF operations and return the responses as Elixir Map structures.
  • 51.
  • 52. Integration with evercam-media • Definition of needed operations using onvif_client methods. • Add REST routes to web/router.ex • Implement controllers that will invoke ONVIF operations and return the responses as Elixir Map structures. • Phoenix translate these Maps into JSON structures without the need of extra coding
  • 53.
  • 54. Demo