This is an automated email from the ASF dual-hosted git repository.
cdutz pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/incubator-training.git
The following commit(s) were added to refs/heads/develop by this push:
new 5f3c1ef chore(presentation/apache/plc4x): Added a new presentation on
Apache PLC4X
5f3c1ef is described below
commit 5f3c1ef6c83712c112560cae29807d4303fe7a9e
Author: christoferdutz <[email protected]>
AuthorDate: Wed Mar 22 22:36:46 2023 +0100
chore(presentation/apache/plc4x): Added a new presentation on Apache PLC4X
---
content/Apache/{ => PLC4X}/pom.xml | 27 +--
.../revolutionizing-iiot-with-plc4x/README.md | 66 ++++++
.../PLC4X/revolutionizing-iiot-with-plc4x/pom.xml | 36 ++++
.../src/main/asciidoc/_settings.adoc | 36 ++++
.../src/main/asciidoc/index.adoc | 222 +++++++++++++++++++++
.../main/resources/images/apache_plc4x_logo.png | Bin 0 -> 87342 bytes
.../main/resources/images/sp-data-explorer-3.png | Bin 0 -> 243072 bytes
content/Apache/pom.xml | 1 +
site/pom.xml | 13 ++
site/src/site/site.xml | 3 +
10 files changed, 385 insertions(+), 19 deletions(-)
diff --git a/content/Apache/pom.xml b/content/Apache/PLC4X/pom.xml
similarity index 65%
copy from content/Apache/pom.xml
copy to content/Apache/PLC4X/pom.xml
index 0a8b121..043b2e3 100644
--- a/content/Apache/pom.xml
+++ b/content/Apache/PLC4X/pom.xml
@@ -23,31 +23,20 @@
<modelVersion>4.0.0</modelVersion>
<parent>
- <groupId>org.apache.training.content</groupId>
- <artifactId>training-content</artifactId>
- <version>0.4.0-SNAPSHOT</version>
+ <groupId>org.apache.training</groupId>
+ <artifactId>content-parent-pom</artifactId>
+ <version>1.0.0</version>
</parent>
- <artifactId>training-content-apache</artifactId>
+ <groupId>org.apache.training.content</groupId>
+ <artifactId>training-content-apache-plc4x</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
- <name>Training: Content: Apache</name>
+ <name>Training: Content: Apache: PLC4X</name>
<modules>
- <module>Airflow</module>
- <module>ComDev</module>
- <module>Druid</module>
- <module>Flink</module>
- <module>Hadoop</module>
- <module>Hive</module>
- <module>Ignite</module>
- <module>Incubator</module>
- <module>MyNewt</module>
- <module>Pulsar</module>
- <module>Samza</module>
- <module>Spark</module>
- <module>Training</module>
- <module>ZooKeeper</module>
+ <module>revolutionizing-iiot-with-plc4x</module>
</modules>
</project>
diff --git a/content/Apache/PLC4X/revolutionizing-iiot-with-plc4x/README.md
b/content/Apache/PLC4X/revolutionizing-iiot-with-plc4x/README.md
new file mode 100644
index 0000000..1845bc1
--- /dev/null
+++ b/content/Apache/PLC4X/revolutionizing-iiot-with-plc4x/README.md
@@ -0,0 +1,66 @@
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+-->
+
+# Presentation with Reveal.JS and AsciiDoctor
+
+Remarks:
+- Currently it seems as if the system can't detect the 'docinfo' files, so we
have to replace the `document.html.slim` file from `asciidoctor-reveal.js` with
an updated one, that adds some additional js and css references. This template
is located in `libs/docinfo-hack`.
+- In order to use the preview of the IntelliJ asciidoctor plugin, you need to
set an attribute in the plugin settings: `imagesdir` = `../resources/images`
+- Even if it is possible to run the presentation directly from the
`generated-slides` directory, some JavaScript extensions don't work in this
case. Therefore it is required to run the presentation from a local webserver.
+- In order to generate the diagrams, GraphVIS needs to be installed locally.
Get it from: http://www.graphviz.org/
+- The template is adjusted to use the codecentric font `Panton`, so be sure to
have that installed on your presentation machine.
+- Any css adjustments can go to `src/main/theme/cc.css` as this is
automatically embedded into the themes directory.
+
+## Building the presentation
+
+By running the following command, you can generate the presentation:
+
+ mvn clean package
+
+## Running the presentation
+
+In order to start a local web server serving the presentation, execute the
following command:
+
+ mvn jetty:run-exploded
+
+As soon as that's done, just point your browser to:
+
+ http://localhost:8080/
+
+## Generating PDF versions
+
+In order to generate a PDF version of the presentation just add `?print-pdf`
to the url. (Keep in mind, that you have to add it before any `#blahblah`)
+
+The following link should do the trick:
+
+ http://localhost:8080/?print-pdf
+
+As soon as that's loaded, just use the normal `print` functionality of the
browser and `print as PDF`.
+
+## Installing third party software:
+
+### Mermaid
+
+ npm install mermaid.cli
+
+This will install mermaid under `node_modules/.bin/mmdc`.
+
+### PhantomJS
+
+https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-macosx.zip
diff --git a/content/Apache/PLC4X/revolutionizing-iiot-with-plc4x/pom.xml
b/content/Apache/PLC4X/revolutionizing-iiot-with-plc4x/pom.xml
new file mode 100644
index 0000000..f147004
--- /dev/null
+++ b/content/Apache/PLC4X/revolutionizing-iiot-with-plc4x/pom.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+--><project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.training</groupId>
+ <artifactId>content-parent-pom</artifactId>
+ <version>1.1.0-SNAPSHOT</version>
+
<relativePath>../../../../tools/content-parent-pom/pom.xml</relativePath>
+ </parent>
+
+ <groupId>org.apache.training.content</groupId>
+
<artifactId>training-content-apache-plc4x-revolutionizing-iiot-with-plc4x</artifactId>
+ <version>1.0.0.SNAPSHOT</version>
+ <packaging>war</packaging>
+
+ <name>Training: Content: Apache: PLC4X: Revolutionizing IIoT with Apache
PLC4X</name>
+
+</project>
diff --git
a/content/Apache/PLC4X/revolutionizing-iiot-with-plc4x/src/main/asciidoc/_settings.adoc
b/content/Apache/PLC4X/revolutionizing-iiot-with-plc4x/src/main/asciidoc/_settings.adoc
new file mode 100644
index 0000000..261a396
--- /dev/null
+++
b/content/Apache/PLC4X/revolutionizing-iiot-with-plc4x/src/main/asciidoc/_settings.adoc
@@ -0,0 +1,36 @@
+////
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+////
+
+:goto:
+:menu:
+:navigation:
+:status:
+:arrows:
+:revealjs_theme: cc_black
+:revealjs_progress: true
+:revealjs_slidenumber: true
+:pdf-page-size: A4
+:revealjs_center: false
+:revealjs_history: true
+:icons: font
+:imagesdir: images
+:sourcedir: ../java
+:title-slide-background-image: background-dark-orig.jpg
+:idprefix:
+:idseparator: -
diff --git
a/content/Apache/PLC4X/revolutionizing-iiot-with-plc4x/src/main/asciidoc/index.adoc
b/content/Apache/PLC4X/revolutionizing-iiot-with-plc4x/src/main/asciidoc/index.adoc
new file mode 100644
index 0000000..87ae0cd
--- /dev/null
+++
b/content/Apache/PLC4X/revolutionizing-iiot-with-plc4x/src/main/asciidoc/index.adoc
@@ -0,0 +1,222 @@
+////
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+////
+
+include::_settings.adoc[]
+:presenter_name: Your Name
+:presenter_company: Your Company
+:description: A short intro into what benefits the industry could have with
PLC4X
+:keywords: IIoT, IoT
+:author: Christofer Dutz
+:email: [email protected]
+:position: Board member
+
+== Revolutionizing IIoT with Apache PLC4X
+
+image::apache_plc4x_logo.png[]
+
+== Who am I?
+{author} +
+{position} +
+{email} +
+
+[NOTE.speaker]
+--
+Please add your own details here
+--
+
+== What am I going to cover?
+
+* What is Apache PLC4X?
+* What can you do with PLC4X?
+* What could you do beyond that?
+
+== What is Apache PLC4X?
+
+image::apache_plc4x_logo.png[]
+
+[quote, Apache PLC4X Project Statement]
+PLC4X is a set of libraries for communicating with industrial programmable
logic controllers (PLCs) using a variety of protocols but with a shared API.
+
+== Apache PLC4X
+
+* https://plc4x.apache.org
+* Allows writing software for any type of PLC
+* When changing the PLC, only configuration needs to be adjusted
+* Strong growing number of supported protocols
+* Strong growing number of programming languages
+* Support of features, which protocols generally don't support
+* Strong growing number of integration modules
+* Make PLC Data available in a unified way
+
+[NOTE.speaker]
+--
+* Modbus generally only allows bits and short values
+* Unified data: PlcValues all handled equally over all protocols
+--
+
+== PLC4X Supported Operations
+
+* Read icon:check[role=green]
+* Write icon:check[role=green]
+* Subscription icon:check[role=green]
+** Cyclic
+** On Value Change
+** Event/Alarm
+* Discovery icon:hammer[role=orange]
+* Browse icon:hammer[role=orange]
+
+[NOTE.speaker]
+--
+* We're currently working a lot on Discovery and Browsing
+* Discovery: Which devices do I have and how can I connect to them?
+* Browse: Which resources do these devices have?
+--
+
+== PLC4X Supported Protocols
+
+[.west]
+* Siemens S7 (Step7) icon:check[role=green]
+* Beckhoff ADS icon:check[role=green]
+* Modbus (TCP/RTU) icon:check[role=green]
+* EtherNet/IP icon:check[role=green]
+* OPC-UA icon:check[role=green]
+* Firmata icon:check[role=green]
+* KnxNet/IP icon:check[role=green]
+* CAN icon:check[role=green]
+
+//
+[.east]
+* ProfiNet icon:wrench[role=orange]
+* Allen-Bradley AB-ETH icon:wrench[role=orange]
+* Allen-Bradley DF1 icon:wrench[role=orange]
+* BacNet icon:wrench[role=orange]
+* Emerson DeltaV icon:wrench[role=orange]
+* Luxtronic icon:wrench[role=orange]
+* Siemens S7 (TIA) icon:comments-o[role=red]
+* ...
+
+== Polyglot PLC4X
+
+* Supporting multiple languages was planned from the start
+** The `X` in PLC4X stands for the multiple Languages
+* Writing PLC driver code is easy
+* Understanding the protocols is hard
+* As soon as a protocol is "understood", create drivers in many languages
+* Cross-compiling/wrapping just wouldn't feel right
+* Heavy lifting done by our code-generation framework
+
+[NOTE.speaker]
+--
+* Cross Compiling:
+** Increased Size
+** Strange API feeling in other language
+--
+
+== What can you do with PLC4X?
+
+== Making machine data visible
+
+image::sp-data-explorer-3.png[]
+
+== OEE Overall Equipment Efficiency
+
+Julian's picture comes here ...
+he promised me to send it to me
+If this text is still here, well ...
+guess he didn't
+
+== Predictive Maintenance
+
+== What could you do beyond that?
+
+* Following use-cases not yet fully implemented
+* Would need some extra work
+
+== PLC "Simulator" for unit-tests
+
+* Currently almost no unit-testing done
+* If testing is done, on the real machine
+* Usually only happy-path testing
+* Solution:
+** PLC4X stand-alone application: "Simulator"
+** Built to speak with PLC4X drivers (Not full protocol support)
+** Use PLC4X to set values in the "PLC" from the Unit-Test
+** Test PLC4X Application against the simulator without needing real machinery
+
+[NOTE.speaker]
+--
+* The simulator already exists
+* Need to implement:
+** General memory management
+** "Subscriptions"
+--
+
+== Historian
+
+* Historians are sort of ancient time-series databases
+* Mostly required for regulations
+* Extremely expensive
+* Don't scale
+* Solution:
+** Use Apache PLC4X to get the data
+** Use Apache IoTDB to store the data
+** Add interfaces to replicate Historian interfaces
+
+[NOTE.speaker]
+--
+* We're already working on Apache Historian
+* However mainly me working on it
+--
+
+== Digital Twin
+
+* Everyone is talking about Digital Twins
+* No good products available yet
+* Solution:
+** Use Apache PLC4X to get the data
+** Use Apache IoTDB to store the timeseries data
+** Use Eclipse Dito to store the current state
+** Use Apache KIE (incubating) to do smart things with the data
+
+[NOTE.speaker]
+--
+IoTDB is great for time-series data
+Ditto is great for current state and dependencies
+KIE (Knowledge is everything): Contains Drools, jBPM
+--
+
+== MES replacement
+
+* MES (Manufacturing Execution System) are big, fat, slow and don't scale
+* Products today way more customizable:
+** A lot more interaction between PLC and MES needed
+** A lot more to do for the MES
+** MES becomes the bottleneck
+* Solution:
+** Building a distributed MES based on principle of highly scalable
distributed systems
+
+[NOTE.speaker]
+--
+--
+
+== Want to make this happen?
+
+* [email protected]
+* Twitter: @ApachePLC4X
+
diff --git
a/content/Apache/PLC4X/revolutionizing-iiot-with-plc4x/src/main/resources/images/apache_plc4x_logo.png
b/content/Apache/PLC4X/revolutionizing-iiot-with-plc4x/src/main/resources/images/apache_plc4x_logo.png
new file mode 100755
index 0000000..cb7131d
Binary files /dev/null and
b/content/Apache/PLC4X/revolutionizing-iiot-with-plc4x/src/main/resources/images/apache_plc4x_logo.png
differ
diff --git
a/content/Apache/PLC4X/revolutionizing-iiot-with-plc4x/src/main/resources/images/sp-data-explorer-3.png
b/content/Apache/PLC4X/revolutionizing-iiot-with-plc4x/src/main/resources/images/sp-data-explorer-3.png
new file mode 100644
index 0000000..84f5b88
Binary files /dev/null and
b/content/Apache/PLC4X/revolutionizing-iiot-with-plc4x/src/main/resources/images/sp-data-explorer-3.png
differ
diff --git a/content/Apache/pom.xml b/content/Apache/pom.xml
index 0a8b121..f93556b 100644
--- a/content/Apache/pom.xml
+++ b/content/Apache/pom.xml
@@ -43,6 +43,7 @@
<module>Ignite</module>
<module>Incubator</module>
<module>MyNewt</module>
+ <module>PLC4X</module>
<module>Pulsar</module>
<module>Samza</module>
<module>Spark</module>
diff --git a/site/pom.xml b/site/pom.xml
index 6666b68..143ee4b 100644
--- a/site/pom.xml
+++ b/site/pom.xml
@@ -305,6 +305,13 @@
<type>war</type>
<outputDirectory>${project.build.directory}/site/presentations/mynewt</outputDirectory>
</artifactItem>
+ <artifactItem>
+ <groupId>org.apache.training.content</groupId>
+
<artifactId>training-content-apache-plc4x-revolutionizing-iiot-with-plc4x</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <type>war</type>
+
<outputDirectory>${project.build.directory}/site/presentations/plc4x/revolutionizing-iiot-with-plc4x</outputDirectory>
+ </artifactItem>
<artifactItem>
<groupId>org.apache.training.content</groupId>
<artifactId>training-content-apache-pulsar</artifactId>
@@ -623,6 +630,12 @@
<version>1.0.0-SNAPSHOT</version>
<type>war</type>
</dependency>
+ <dependency>
+ <groupId>org.apache.training.content</groupId>
+
<artifactId>training-content-apache-plc4x-revolutionizing-iiot-with-plc4x</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <type>war</type>
+ </dependency>
<dependency>
<groupId>org.apache.training.content</groupId>
<artifactId>training-content-apache-pulsar</artifactId>
diff --git a/site/src/site/site.xml b/site/src/site/site.xml
index ad0509d..f2fc7ec 100644
--- a/site/src/site/site.xml
+++ b/site/src/site/site.xml
@@ -125,6 +125,9 @@
<item name="Release Checklist"
href="presentations/incubator/release-checklist/index.html" target="_blank"/>
</item>
<item name="Apache MyNewt" href="presentations/mynewt/index_en.html"
target="_blank"/>
+ <item name="Apache PLC4X">
+ <item name="Revolutionizing IIoT with Apache PLC4X"
href="presentations/plc4x/revolutionizing-iiot-with-plc4x/index.html"
target="_blank"/>
+ </item>
<item name="Apache Pulsar" href="presentations/pulsar/index.html"
target="_blank"/>
<item name="Apache Samza" href="presentations/samza/index.html"
target="_blank"/>
<item name="Apache Spark">