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">

Reply via email to