This is an automated email from the ASF dual-hosted git repository.

cdutz pushed a commit to branch pres/iot-magic-industrial-data-acquision
in repository https://gitbox.apache.org/repos/asf/incubator-training.git

commit 24a0a738c9638272456609830815368b022c6262
Author: Christofer Dutz <[email protected]>
AuthorDate: Mon Oct 28 10:34:44 2024 +0100

    chore: Added my presentation material for the IoTDB, TSFile and PLC4X talk 
that I gave on 3 occasions in 2024 (CoC EU, CoC NA, Eclipse OCX)
---
 .../IoT/magic-industrial-data-acquisition/pom.xml  |  60 +++
 .../src/main/asciidoc/_settings.adoc}              |  46 +-
 .../src/main/asciidoc/index.adoc                   | 366 +++++++++++++
 .../main/resources/images/benchmark-benchant.png   | Bin 0 -> 575542 bytes
 .../main/resources/images/benchmark-tpcx-iot.png   | Bin 0 -> 1045106 bytes
 .../src/main/resources/images/christofer-dutz.jpg  | Bin 0 -> 730219 bytes
 .../src/main/resources/images/denver.jpg           | Bin 0 -> 13091723 bytes
 .../src/main/resources/images/linkedin.jpg         | Bin 0 -> 26989 bytes
 .../src/main/resources/images/logo-apache.png      | Bin 0 -> 16185 bytes
 .../src/main/resources/images/logo-iotdb.png       | Bin 0 -> 54876 bytes
 .../src/main/resources/images/logo-plc4x.png       | Bin 0 -> 96696 bytes
 .../src/main/resources/images/logo-timecho.png     | Bin 0 -> 10629 bytes
 .../src/main/resources/images/logo-training.png    | Bin 0 -> 58861 bytes
 .../src/main/resources/images/logo-tsfile.png      | Bin 0 -> 26203 bytes
 .../main/resources/images/modbus-tcp-example.png   | Bin 0 -> 119088 bytes
 .../src/main/resources/images/mqtt-example.png     | Bin 0 -> 90486 bytes
 .../main/resources/images/mucho-problemo-iotdb.png | Bin 0 -> 126532 bytes
 .../main/resources/images/mucho-problemo-plc4x.png | Bin 0 -> 125750 bytes
 .../resources/images/mucho-problemo-tsfile.png     | Bin 0 -> 125268 bytes
 .../src/main/resources/images/mucho-problemo.png   | Bin 0 -> 124569 bytes
 .../src/main/resources/images/no-problemo.png      | Bin 0 -> 77314 bytes
 .../src/main/resources/images/opc-ua-example.png   | Bin 0 -> 134515 bytes
 .../src/main/resources/images/solution.png         | Bin 0 -> 126341 bytes
 .../src/main/theme/apache.css                      | 577 +++++++++++++++++++++
 content/IoT/pom.xml                                |   1 +
 site/pom.xml                                       |  13 +
 site/src/site/site.xml                             |   5 +
 27 files changed, 1043 insertions(+), 25 deletions(-)

diff --git a/content/IoT/magic-industrial-data-acquisition/pom.xml 
b/content/IoT/magic-industrial-data-acquisition/pom.xml
new file mode 100644
index 0000000..3c43af8
--- /dev/null
+++ b/content/IoT/magic-industrial-data-acquisition/pom.xml
@@ -0,0 +1,60 @@
+<?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.3.0</version>
+        <relativePath/>
+    </parent>
+
+    <groupId>org.apache.training.content</groupId>
+    
<artifactId>magic-industrial-data-acquisition-with-apache-plc4x-tsfile-and-iotdb</artifactId>
+    <version>1.0.0-SNAPSHOT</version>
+    <packaging>war</packaging>
+
+    <!-- Make Snapshots of Apache projects available -->
+    <repositories>
+        <repository>
+            <id>apache-snapshots</id>
+            
<url>https://repository.apache.org/content/repositories/snapshots</url>
+            <releases>
+                <enabled>false</enabled>
+            </releases>
+            <snapshots>
+                <enabled>true</enabled>
+            </snapshots>
+        </repository>
+        <!-- When we release stuff like the site skin or the build tools, 
syncing to Maven Central usually takes some time -->
+        <repository>
+            <id>apache-releases</id>
+            
<url>https://repository.apache.org/content/repositories/releases</url>
+            <releases>
+                <enabled>true</enabled>
+            </releases>
+            <snapshots>
+                <enabled>false</enabled>
+            </snapshots>
+        </repository>
+    </repositories>
+
+</project>
diff --git a/content/IoT/pom.xml 
b/content/IoT/magic-industrial-data-acquisition/src/main/asciidoc/_settings.adoc
similarity index 51%
copy from content/IoT/pom.xml
copy to 
content/IoT/magic-industrial-data-acquisition/src/main/asciidoc/_settings.adoc
index 509eacc..261a396 100644
--- a/content/IoT/pom.xml
+++ 
b/content/IoT/magic-industrial-data-acquisition/src/main/asciidoc/_settings.adoc
@@ -1,5 +1,4 @@
-<?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
@@ -8,7 +7,7 @@
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at
 
-      https://www.apache.org/licenses/LICENSE-2.0
+      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,
@@ -16,25 +15,22 @@
   See the License for the specific language governing permissions and
   limitations under the License.
 
--->
-<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xmlns="http://maven.apache.org/POM/4.0.0";
-         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.content</groupId>
-    <artifactId>training-content</artifactId>
-    <version>0.4.0-SNAPSHOT</version>
-  </parent>
-
-  <artifactId>training-content-iot</artifactId>
-  <packaging>pom</packaging>
-
-  <name>Training: Content: IoT</name>
-
-  <modules>
-    <module>IoTDeveloper</module>
-  </modules>
-
-</project>
+////
+
+: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/IoT/magic-industrial-data-acquisition/src/main/asciidoc/index.adoc 
b/content/IoT/magic-industrial-data-acquisition/src/main/asciidoc/index.adoc
new file mode 100644
index 0000000..4ab626e
--- /dev/null
+++ b/content/IoT/magic-industrial-data-acquisition/src/main/asciidoc/index.adoc
@@ -0,0 +1,366 @@
+////
+
+  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: Christofer Dutz
+:presenter_company: Timecho Europe GmbH
+:description: Using Apache IoTDB, Apache TsFile and Apache PLC4X for 
collecting industrial data.
+:keywords: IIoT, IoT
+:author: Christofer Dutz
+:email: [email protected]
+:position: Solution Consulting Expert
+
+// 35 minutes - 5 minutes Q&A = 1800 seconds
+:revealjs_totalTime: 1800
+
+== !
+
+image::denver.jpg[canvas]
+
+[.talkTitle]
+****
+
+[.mainTitle]
+Magic industrial data acquisition with Apache PLC4X, TsFile and IoTDB
+[.subTitle]
+
+
+[.speaker]
+Christofer Dutz, Timecho
+****
+
+[.conferenceName]
+Community over Code NA
+
+[.year]
+09.10.2024
+
+[.imageCredits]
+(Image from Wikipedia under CC)
+
+[NOTE.speaker]
+--
+--
+
+== Remarks
+
+image::logo-training.png[float=right,width=300]
+
+* Slides made with:
+* https://training.apache.org
+* Incubating project
+* Written in Asciidoctor
+* For sharing training material
+* Slides will be available there
+
+[NOTE.speaker]
+--
+* Under the hood Maven+AsciiDoc+RevealJS
+--
+
+== Overview
+
+* Typical data acquisition szenarios
+* Problems with these szenarios
+* Solving problems with:
+** Apache PLC4X
+** Apache TsFile
+** Apache IoTDB
+* Putting it all together
+
+[NOTE.speaker]
+--
+--
+
+== Typical szenarios
+
+image::no-problemo.png[]
+
+[NOTE.speaker]
+--
+* Quickly explain the scenarios
+* Point out Eclipse SDV for the mobile data collection
+* Don't go into the problems, that's on the next slides.
+--
+
+== Problems with these szenarios
+
+image::mucho-problemo.png[]
+
+[NOTE.speaker]
+--
+* Line width == bandwidth
+* Problems come on the other slide
+** We'll go into all of them on the following slides
+* This slide is just for setting the stage
+--
+
+== Accessibility Problems
+
+image::mucho-problemo-plc4x.png[]
+
+[NOTE.speaker]
+--
+* Accessing data on the machinery
+* Overloading PLCs and Network infrastructure
+* Shop-floor networks usually overloaded
+** Demonstrate network and device load by the thickness of lines
+* Switches configured to prioritize packets
+* Digitization efforts require more data -> increase traffic
+--
+
+== Apache PLC4X
+
+image::logo-plc4x.png[float=right,width=300]
+
+* Unified protocol adapter
+* Native protocol communication
+** About 19 protocols currently
+* Shared API over all protocols
+* Available in multiple languages
+** Java, Go, C, C#, Python (Rust)
+
+[NOTE.speaker]
+--
+* Now you know why I'm carrying around Toddy all the time ;-)
+* Why not use MQTT or OPC-UA you ask?
+* Especially given the Eclipse Milo and the SparkplugB Working-Group
+--
+
+== OPC-UA
+
+image::opc-ua-example.png[]
+
+[NOTE.speaker]
+--
+* See the size of the payload?
+* That's only reading one boolean value!
+--
+
+== MQTT
+
+image::mqtt-example.png[]
+
+[NOTE.speaker]
+--
+* See the size of the payload?
+* SparkplugB would add more payload
+--
+
+== Modbus-TCP
+
+image::modbus-tcp-example.png[]
+
+[NOTE.speaker]
+--
+* See the size of the payload?
+--
+
+== Using native protocols
+
+* Using native protocols of PLCs reduces:
+** Size of packets
+** Load on the network
+** Load on the Hardware (both sides)
+** Costs, as no retrofit is required
+
+[NOTE.speaker]
+--
+* OPC-UA and MQTT run as additional processes on hardware
+* Native protocols cause less CPU and Memory usage
+* In the IT & Production Magazine even an article on how the license costs of 
OPC-UA are slowing digitization progress
+--
+
+== Network Load/Availability
+
+image::mucho-problemo-tsfile.png[]
+
+[NOTE.speaker]
+--
+* Cars more unconnected than connected in Germany
+* Bandwidth too small
+** Wireless connections
+** Internet Uplink
+** Also Shop-floor networks
+--
+
+== Apache TsFile
+
+image::logo-tsfile.png[float=right,width=300]
+
+* Storage format for IoT-data
+* Aggregated data
+* Highly compressed data
+* Available in multiple languages
+* Storage technology of Apache IoTDB
+
+[NOTE.speaker]
+--
+* Compression to 10% of original size lossless
+* Compression to 1% of original size lossy
+** Lossy means: loose accuracy after several fractional digits (Not always 
important if its 21.45245435454°C or just 1.4524°C)
+--
+
+== How does Apache TsFile help?
+
+* Collecting data ON the devices
+** Push instead of Pull
+** Bonus: Cycle-Synchronous data
+* Aggregating data on gateways
+* Utilizing NB IoT bandwidth 100%
+* Buffering if no connection
+
+[NOTE.speaker]
+--
+* Libraries for common OT Engineering tools (needs to be created)
+* Pull reads lots of redundant data
+* Using full size of LoRaWan packet
+--
+
+== Data Volume and Granularity
+
+image::mucho-problemo-iotdb.png[]
+
+[NOTE.speaker]
+--
+* Too many apps querying the hardware
+* Data replicated 1-to-1 on all levels
+* Internet Uplink becomes the bottleneck
+* Cloud-Storage-Costs
+* Different layers need different retention and granularity
+--
+
+== Solving problems with: Apache IoTDB
+
+image::logo-iotdb.png[float=right,width=300]
+
+* Acting as data-hub
+** Unified Namespace
+** Streaming queries
+** Apps subscribe to DB
+* Aggregation
+* Compression
+* Replication
+* Different retention on every level/device
+
+[NOTE.speaker]
+--
+* Uses compression of TsFile
+* Replication with aggregation (Only forward what's needed)
+* IoTDB benefits:
+** IoTDB is built for tree structure such as Unified Namespace
+* Example:
+** Line-Level: ms granularity of all data-points with one day retention
+** Department-Level: minute granularity of performance indicators (year 
retention)
+** Factory-Level: hour granularity of the main KPIs (year retention)
+** Cloud-Level: daily granularity of the main KPIs (eternal retention)
+--
+
+== Solving problems with: Apache IoTDB
+
+* Apache IoTDB / TimechoDB won first place in any dimension in any benchmark 
it competed in
+** benchAnt
+** TPCx-IoT
+
+[NOTE.speaker]
+--
+* In contrast to most other TSDBs not built up on existing solution
+* Built explicitly to target the scenarios causing issues with regular 
solutions
+** Out-of-order data
+** Bursts of data (Millions per Second)
+** Aggregation queries
+--
+
+== !
+
+image::benchmark-benchant.png[canvas]
+
+[NOTE.speaker]
+--
+* Wins when sorting by all categories
+* Would have only lost by name, if that was sortable
+--
+
+== !
+
+image::benchmark-tpcx-iot.png[canvas]
+
+[NOTE.speaker]
+--
+* TimechoDB
+** Commercial offering of IoTDB by Timecho
+** Apache IoTDB with additional bells and whistles aimed at enterprise 
customers
+* Just look at the gap between 1 and 2 and third place
+** Especially Performance and Price/kIoTps
+--
+
+== Putting it all together
+
+image::solution.png[]
+
+[NOTE.speaker]
+--
+* See the thinner lines?
+--
+
+== Putting it all together
+
+* Using TsFile-Embedded on Hardware
+** PLC libraries
+** No Gateways needed
+** Forward data via MQTT
+
+* Gateways using:
+** TsFile to store aggregated & compressed data
+** PLC4X to collect data using native protocols
+** Forward data to IoTDB servers using Session-API or MQTT
+
+[NOTE.speaker]
+--
+* Forward with MQTT because libs are already available
+* OT admins know how to handle MQTT traffic
+--
+
+== Putting it all together
+
+* Servers based on Apache IoTDB:
+** Acting as central data-hub for applications (Unified Namespace)
+** Applications subscribe to changes (Push vs Pull)
+** Automatically replicating to higher levels
+** Automatic aggregation to higher levels
+
+[NOTE.speaker]
+--
+* We're currently working on all of this
+* Basic functionality in Open-Source projects
+* Turnkey solutions most probably as commercial product by Timecho
+--
+
+== Thanks for listening
+
+image::linkedin.jpg[float=right,width=280]
+
+* Questions?
+* Suggestions?
+* Wanna join in on the fun?
+** [email protected]
+** [email protected]
+** [email protected]
+* Contact me on LinkedIn:
+** linkedin.com/in/christofer-dutz/
diff --git 
a/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/benchmark-benchant.png
 
b/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/benchmark-benchant.png
new file mode 100644
index 0000000..f031bba
Binary files /dev/null and 
b/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/benchmark-benchant.png
 differ
diff --git 
a/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/benchmark-tpcx-iot.png
 
b/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/benchmark-tpcx-iot.png
new file mode 100644
index 0000000..92b32f4
Binary files /dev/null and 
b/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/benchmark-tpcx-iot.png
 differ
diff --git 
a/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/christofer-dutz.jpg
 
b/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/christofer-dutz.jpg
new file mode 100755
index 0000000..96cd415
Binary files /dev/null and 
b/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/christofer-dutz.jpg
 differ
diff --git 
a/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/denver.jpg
 
b/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/denver.jpg
new file mode 100644
index 0000000..b7001cc
Binary files /dev/null and 
b/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/denver.jpg
 differ
diff --git 
a/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/linkedin.jpg
 
b/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/linkedin.jpg
new file mode 100644
index 0000000..993ce56
Binary files /dev/null and 
b/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/linkedin.jpg
 differ
diff --git 
a/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/logo-apache.png
 
b/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/logo-apache.png
new file mode 100644
index 0000000..44c337b
Binary files /dev/null and 
b/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/logo-apache.png
 differ
diff --git 
a/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/logo-iotdb.png
 
b/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/logo-iotdb.png
new file mode 100644
index 0000000..4fa9f56
Binary files /dev/null and 
b/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/logo-iotdb.png
 differ
diff --git 
a/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/logo-plc4x.png
 
b/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/logo-plc4x.png
new file mode 100644
index 0000000..cda4f0d
Binary files /dev/null and 
b/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/logo-plc4x.png
 differ
diff --git 
a/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/logo-timecho.png
 
b/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/logo-timecho.png
new file mode 100644
index 0000000..8e79ba8
Binary files /dev/null and 
b/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/logo-timecho.png
 differ
diff --git 
a/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/logo-training.png
 
b/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/logo-training.png
new file mode 100644
index 0000000..0a765b5
Binary files /dev/null and 
b/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/logo-training.png
 differ
diff --git 
a/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/logo-tsfile.png
 
b/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/logo-tsfile.png
new file mode 100644
index 0000000..d6661bb
Binary files /dev/null and 
b/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/logo-tsfile.png
 differ
diff --git 
a/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/modbus-tcp-example.png
 
b/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/modbus-tcp-example.png
new file mode 100644
index 0000000..ff90156
Binary files /dev/null and 
b/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/modbus-tcp-example.png
 differ
diff --git 
a/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/mqtt-example.png
 
b/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/mqtt-example.png
new file mode 100644
index 0000000..3433a33
Binary files /dev/null and 
b/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/mqtt-example.png
 differ
diff --git 
a/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/mucho-problemo-iotdb.png
 
b/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/mucho-problemo-iotdb.png
new file mode 100644
index 0000000..2e1a78c
Binary files /dev/null and 
b/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/mucho-problemo-iotdb.png
 differ
diff --git 
a/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/mucho-problemo-plc4x.png
 
b/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/mucho-problemo-plc4x.png
new file mode 100644
index 0000000..89ea46d
Binary files /dev/null and 
b/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/mucho-problemo-plc4x.png
 differ
diff --git 
a/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/mucho-problemo-tsfile.png
 
b/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/mucho-problemo-tsfile.png
new file mode 100644
index 0000000..6ab3b58
Binary files /dev/null and 
b/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/mucho-problemo-tsfile.png
 differ
diff --git 
a/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/mucho-problemo.png
 
b/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/mucho-problemo.png
new file mode 100644
index 0000000..d3a0e38
Binary files /dev/null and 
b/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/mucho-problemo.png
 differ
diff --git 
a/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/no-problemo.png
 
b/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/no-problemo.png
new file mode 100644
index 0000000..81bb2da
Binary files /dev/null and 
b/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/no-problemo.png
 differ
diff --git 
a/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/opc-ua-example.png
 
b/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/opc-ua-example.png
new file mode 100644
index 0000000..05427fb
Binary files /dev/null and 
b/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/opc-ua-example.png
 differ
diff --git 
a/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/solution.png
 
b/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/solution.png
new file mode 100644
index 0000000..097f7ac
Binary files /dev/null and 
b/content/IoT/magic-industrial-data-acquisition/src/main/resources/images/solution.png
 differ
diff --git 
a/content/IoT/magic-industrial-data-acquisition/src/main/theme/apache.css 
b/content/IoT/magic-industrial-data-acquisition/src/main/theme/apache.css
new file mode 100644
index 0000000..f7f6299
--- /dev/null
+++ b/content/IoT/magic-industrial-data-acquisition/src/main/theme/apache.css
@@ -0,0 +1,577 @@
+/*
+  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.
+*/
+
+section.has-light-background,
+section.has-light-background h1,
+section.has-light-background h2,
+section.has-light-background h3,
+section.has-light-background h4,
+section.has-light-background h5,
+section.has-light-background h6 {
+  color: #FFF;
+}
+
+/*********************************************
+ * GLOBAL STYLES
+ *********************************************/
+body {
+  background-size: cover;
+  background-color: #FFF;
+}
+
+.reveal {
+  font-family: 'Montserrat', sans-serif;
+  font-size: 34px;
+  font-weight: normal;
+  color: #222;
+}
+
+::selection {
+  color: #222;
+  background: #bee4fd;
+  text-shadow: none;
+}
+
+.reveal .slides>section,
+.reveal .slides>section>section {
+  line-height: 1.3;
+  font-weight: inherit;
+}
+
+/*********************************************
+ * HEADERS
+ *********************************************/
+.reveal h1,
+.reveal h2,
+.reveal h3,
+.reveal h4,
+.reveal h5,
+.reveal h6 {
+  margin: 0 0 20px 0;
+  color: #000;
+  font-family: Futura, "Trebuchet MS", Arial, sans-serif;
+  font-weight: 600;
+  line-height: 1.2;
+  letter-spacing: normal;
+  text-shadow: none;
+  word-wrap: break-word;
+}
+
+.reveal h1 {
+  font-size: 2.5em;
+}
+
+.reveal h2 {
+  font-size: 1.6em;
+}
+
+.reveal h3 {
+  font-size: 1.3em;
+}
+
+.reveal h4 {
+  font-size: 1em;
+}
+
+.reveal h1 {
+  text-shadow: none;
+}
+
+/*********************************************
+ * OTHER
+ *********************************************/
+.reveal p {
+  margin: 20px 0;
+  line-height: 1.3;
+}
+
+/* Ensure certain elements are never larger than the slide itself */
+.reveal img,
+.reveal video,
+.reveal iframe {
+  max-width: 95%;
+  max-height: 95%;
+}
+
+.reveal strong,
+.reveal b {
+  font-weight: bold;
+}
+
+.reveal em {
+  font-style: italic;
+}
+
+.reveal ol,
+.reveal dl,
+.reveal ul {
+  display: inline-block;
+  text-align: left;
+  margin: 0 0 0 1em;
+}
+
+.reveal ol {
+  list-style-type: decimal;
+}
+
+.reveal ul {
+  list-style-type: disc;
+}
+
+.reveal ul ul {
+  list-style-type: square;
+}
+
+.reveal ul ul ul {
+  list-style-type: circle;
+}
+
+.reveal ul ul,
+.reveal ul ol,
+.reveal ol ol,
+.reveal ol ul {
+  display: block;
+  margin-left: 40px;
+}
+
+.reveal dt {
+  font-weight: bold;
+}
+
+.reveal dd {
+  margin-left: 40px;
+}
+
+.reveal q,
+.reveal blockquote {
+  quotes: none;
+}
+
+.reveal blockquote {
+  display: block;
+  position: relative;
+  width: 70%;
+  margin: 20px auto;
+  padding: 5px;
+  font-style: italic;
+  background: rgba(0, 0, 0, 0.05);
+  box-shadow: 0 0 2px rgba(255, 255, 255, 0.2);
+}
+
+.reveal blockquote p:first-child,
+.reveal blockquote p:last-child {
+  display: inline-block;
+}
+
+.reveal q {
+  font-style: italic;
+}
+
+.reveal pre {
+  display: block;
+  position: relative;
+  width: 90%;
+  margin: 20px auto;
+  text-align: left;
+  font-size: 0.55em;
+  font-family: monospace;
+  line-height: 1.2em;
+  word-wrap: break-word;
+  box-shadow: 0 0 6px rgba(255, 255, 255, 0.3);
+}
+
+.reveal code {
+  font-family: monospace;
+  color: darkred;
+  font-weight: bold;
+}
+
+.reveal pre code {
+  display: block;
+  padding: 5px;
+  overflow: auto;
+  max-height: 400px;
+  word-wrap: normal;
+  background: #3F3F3F;
+  color: #DCDCDC;
+}
+
+.reveal table {
+  margin: auto;
+  border-collapse: collapse;
+  border-spacing: 0;
+}
+
+.reveal table th {
+  font-weight: bold;
+}
+
+.reveal table th,
+.reveal table td {
+  text-align: left;
+  padding: 0.2em 0.5em 0.2em 0.5em;
+  border-bottom: 1px solid;
+}
+
+.reveal table th[align="center"],
+.reveal table td[align="center"] {
+  text-align: center;
+}
+
+.reveal table th[align="right"],
+.reveal table td[align="right"] {
+  text-align: right;
+}
+
+.reveal table tr:last-child td {
+  border-bottom: none;
+}
+
+.reveal sup {
+  vertical-align: super;
+}
+
+.reveal sub {
+  vertical-align: sub;
+}
+
+.reveal small {
+  display: inline-block;
+  font-size: 0.6em;
+  line-height: 1.2em;
+  vertical-align: top;
+}
+
+.reveal small * {
+  vertical-align: top;
+}
+
+/*********************************************
+ * LINKS
+ *********************************************/
+.reveal a {
+  color: #42affa;
+  text-decoration: none;
+  -webkit-transition: color 0.15s ease;
+  -moz-transition: color 0.15s ease;
+  transition: color 0.15s ease;
+}
+
+.reveal a:hover {
+  color: #8dcffc;
+  text-shadow: none;
+  border: none;
+}
+
+.reveal .roll span:after {
+  color: #fff;
+  background: #068ee9;
+}
+
+/*********************************************
+ * IMAGES
+ *********************************************/
+.reveal section img {
+  margin: 15px 0;
+}
+
+.reveal a img {
+  -webkit-transition: all 0.15s linear;
+  -moz-transition: all 0.15s linear;
+  transition: all 0.15s linear;
+}
+
+.reveal a:hover img {
+  background: rgba(0, 0, 0, 0.2);
+  border-color: #42affa;
+  box-shadow: 0 0 20px rgba(0, 0, 0, 0.55);
+}
+
+/*********************************************
+ * NAVIGATION CONTROLS
+ *********************************************/
+.reveal .controls div.navigate-left,
+.reveal .controls div.navigate-left.enabled {
+  border-right-color: #42affa;
+}
+
+.reveal .controls div.navigate-right,
+.reveal .controls div.navigate-right.enabled {
+  border-left-color: #42affa;
+}
+
+.reveal .controls div.navigate-up,
+.reveal .controls div.navigate-up.enabled {
+  border-bottom-color: #42affa;
+}
+
+.reveal .controls div.navigate-down,
+.reveal .controls div.navigate-down.enabled {
+  border-top-color: #42affa;
+}
+
+.reveal .controls div.navigate-left.enabled:hover {
+  border-right-color: #8dcffc;
+}
+
+.reveal .controls div.navigate-right.enabled:hover {
+  border-left-color: #8dcffc;
+}
+
+.reveal .controls div.navigate-up.enabled:hover {
+  border-bottom-color: #8dcffc;
+}
+
+.reveal .controls div.navigate-down.enabled:hover {
+  border-top-color: #8dcffc;
+}
+
+/*********************************************
+ * PROGRESS BAR
+ *********************************************/
+.reveal .progress {
+  background: rgba(255, 255, 255, 0.2);
+}
+
+.reveal .progress span {
+  background: #42affa;
+  -webkit-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+  -moz-transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+  transition: width 800ms cubic-bezier(0.26, 0.86, 0.44, 0.985);
+}
+
+/*********************************************
+ * SLIDE NUMBER
+ *********************************************/
+.reveal .slide-number {
+  color: #42affa;
+  background-color: rgba(255, 255, 255, 0);
+}
+
+.reveal .red {
+  color: red;
+}
+
+.reveal .deeppink {
+  color: deeppink;
+}
+
+.reveal .green {
+  color: green;
+}
+
+.reveal .blue {
+  color: blue;
+}
+
+.reveal .aquamarine {
+  color: aquamarine;
+}
+
+.reveal .orange {
+  color: orange;
+}
+
+.reveal .white {
+  color: white;
+}
+
+/*********************************************
+ * Footer and Header
+ *********************************************/
+
+.header {
+  position:relative;
+}
+/*.header .left {
+  position:absolute;
+  top: 5px;
+  left: 5px;
+  width: 400px;
+  height: 78px;
+  background-image: url("../../../images/logo-bytefabrik.png");
+}
+.header .right {
+  position:absolute;
+  top: 5px;
+  right: 5px;
+  width: 300px;
+  height: 132px;
+  background-image: url("../../../images/logo-codecentric.png");
+}*/
+
+.footer {
+  position:relative;
+}
+.footer .left {
+  position:absolute;
+  bottom: 5px;
+  left: 5px;
+  width: 246px;
+  height: 100px;
+  background-image: url("../../../images/logo-apache.png");
+}
+.footer .right {
+  position:absolute;
+  bottom: 5px;
+  right: 5px;
+  width: 400px;
+  height: 79px;
+  background-image: url("../../../images/logo-timecho.png");
+}
+
+/* custom styles */
+.big {
+  font-size: 150%
+}
+.small {
+  font-size: 75%
+}
+
+.columns {
+  -webkit-column-count: 2;
+  -moz-column-count: 2;
+  column-count: 2;
+}
+
+/* title slides */
+.fade {
+  position: fixed;
+  height: 100vh;
+  width: 75vw;
+  background: rgba(0, 0, 0, 0.28);
+}
+
+.talkTitle {
+  position: absolute;
+  top: 0;
+  right: -220px;
+  background-color: darkcyan;
+//background: rgba(255, 255, 255, 1);
+  color: rgba(0, 0, 0, 1.0);
+  text-align: left;
+  width: 50%;
+  padding: 0 0 0 1em;
+}
+
+.mainTitle {
+  font-size: 100%;
+  font-weight: bold;
+}
+
+.subTitle {
+  font-size: 80%;
+}
+
+.speaker {
+  font-size: 50%;
+}
+
+.box {
+  background-color: white;
+}
+
+.conferenceName {
+  position: absolute;
+  left: 0;
+  bottom: 30px;
+  background: rgba(218, 112, 214, 0.9);
+  color: rgba(217, 217, 217, 1.0);
+  text-align: left;
+  font-size: 50%;
+  width: 50%;
+  padding: 0 0 0 2em;
+}
+
+.year {
+  position: absolute;
+  left: 5em;
+  bottom: 0.2em;
+  color: rgba(217, 217, 217, 1.0);
+  font-size: 150%;
+}
+
+.imageCredits {
+  position: absolute;
+  right: 1em;
+  bottom: 0.0em;
+  color: rgba(217, 217, 217, 1.0);
+  font-size: 50%;
+}
+
+.centered {
+  position: fixed;
+  top: 50%;
+  left: 50%;
+  transform: translate(-50%, -50%);
+  background: rgba(0, 32, 96, 0.9);
+  color: rgba(230, 230, 230, 1.0);
+  padding: 20px;
+}
+
+.leftlogo {
+  position: fixed;
+  left: -200px;
+  top: 40px;
+}
+
+.righttitle {
+  position: fixed;
+  right: 0;
+  bottom: 200px;
+  color: darkred;
+  padding: 20px;
+  text-align: left;
+}
+
+.title {
+  font-size: 200%;
+}
+
+.present {
+  height: 100%
+}
+
+.big {
+  font-size: 150%
+}
+.small {
+  font-size: 75%
+}
+
+.twocolumns {
+  -webkit-column-count: 2;
+  -moz-column-count: 2;
+  column-count: 2;
+}
+
+.sizeMatters{
+  text-align: left;
+}
+
+.reveal blockquote {
+  display: block;
+  position: relative;
+  width: 70%;
+  margin: 20px auto;
+  padding: 5px;
+  font-style: italic;
+  background: rgba(220, 160, 100, 1.05);
+  box-shadow: 0 0 2px rgba(0, 0, 0, 0.2);
+}
diff --git a/content/IoT/pom.xml b/content/IoT/pom.xml
index 509eacc..b2ba060 100644
--- a/content/IoT/pom.xml
+++ b/content/IoT/pom.xml
@@ -35,6 +35,7 @@
 
   <modules>
     <module>IoTDeveloper</module>
+    <module>magic-industrial-data-acquisition</module>
   </modules>
 
 </project>
diff --git a/site/pom.xml b/site/pom.xml
index fa160f4..7e771a6 100644
--- a/site/pom.xml
+++ b/site/pom.xml
@@ -368,6 +368,13 @@
                   <type>war</type>
                   
<outputDirectory>${project.build.directory}/site/microcourses/apacheway</outputDirectory>
                 </artifactItem-->
+                <artifactItem>
+                  <groupId>org.apache.training.content</groupId>
+                  
<artifactId>magic-industrial-data-acquisition-with-apache-plc4x-tsfile-and-iotdb</artifactId>
+                  <version>1.0.0-SNAPSHOT</version>
+                  <type>war</type>
+                  
<outputDirectory>${project.build.directory}/site/iot/magic-industrial-data-acquisition-with-apache-plc4x-tsfile-and-iotdb</outputDirectory>
+                </artifactItem>
               </artifactItems>
             </configuration>
           </execution>
@@ -705,6 +712,12 @@
        <version>1.0.0-SNAPSHOT</version>
        <type>war</type>
      </dependency-->
+    <dependency>
+      <groupId>org.apache.training.content</groupId>
+      
<artifactId>magic-industrial-data-acquisition-with-apache-plc4x-tsfile-and-iotdb</artifactId>
+      <version>1.0.0-SNAPSHOT</version>
+      <type>war</type>
+    </dependency>
   </dependencies>
 
   <!-- Make Snapshots of Apache projects available -->
diff --git a/site/src/site/site.xml b/site/src/site/site.xml
index 335deb5..5bca643 100644
--- a/site/src/site/site.xml
+++ b/site/src/site/site.xml
@@ -136,6 +136,11 @@
         <item name="Presentation" 
href="presentations/training/presentation/index_en.html" target="_blank"/>
       </item>
       <item name="Apache Zookeeper" 
href="presentations/zookeeper/index_en.html" target="_blank"/>
+      <item name="IoT">
+        <item name="Magic Industrial Data Acquisition" 
href="iot/magic-industrial-data-acquisition-with-apache-plc4x-tsfile-and-iotdb/index.html"
 target="_blank"/>
+        <item name="Apache MyNewt" href="presentations/mynewt/index_en.html" 
target="_blank"/>
+        <item name="Revolutionizing IIoT with Apache PLC4X" 
href="presentations/plc4x/revolutionizing-iiot-with-plc4x/index.html" 
target="_blank"/>
+      </item>
     </menu>
 
     <!-- Users (Authors and presenters) -->


Reply via email to