You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by cd...@apache.org on 2020/01/22 09:06:19 UTC

[plc4x-build-tools] branch develop updated: - Added a demo page that should contain most styles used in the website - Added a html home-page as sort of a suggestion which content we should have on the starting page

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/plc4x-build-tools.git


The following commit(s) were added to refs/heads/develop by this push:
     new 7d3f25e  - Added a demo page that should contain most styles used in the website - Added a html home-page as sort of a suggestion which content we should have on the starting page
7d3f25e is described below

commit 7d3f25eb19e756a7bbaeacea2304a2e78a21a357
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Wed Jan 22 10:06:12 2020 +0100

    - Added a demo page that should contain most styles used in the website
    - Added a html home-page as sort of a suggestion which content we should have on the starting page
---
 .../it/plc4x-website/src/site/asciidoc/index.adoc  | 127 +++++------
 .../src/site/asciidoc/users/test.adoc              | 238 +++++++++++++++++++++
 .../src/it/plc4x-website/src/site/site.xml         |   1 +
 .../src/main/resources/META-INF/maven/site.vm      |   2 +-
 4 files changed, 298 insertions(+), 70 deletions(-)

diff --git a/plc4x-site-skin/src/it/plc4x-website/src/site/asciidoc/index.adoc b/plc4x-site-skin/src/it/plc4x-website/src/site/asciidoc/index.adoc
index aee7d19..d49bd5e 100644
--- a/plc4x-site-skin/src/it/plc4x-website/src/site/asciidoc/index.adoc
+++ b/plc4x-site-skin/src/it/plc4x-website/src/site/asciidoc/index.adoc
@@ -17,72 +17,61 @@
 :imagesdir: images/
 :icons: font
 
-== Apache PLC4X™: Universal Protocol Adapter for Industrial IoT
-
-image::iot-lab.jpg[width=480, float=right]
-
-[.lead]
-Just like OPC-UA, but totally different.
-
-We are currently probably experiencing the greatest advances in the way we process information in human history.
-
-While these advances are taking over more and more parts of our world, it seems one large segment has continuously been missing out all the fun.
-
-As everyone is talking about IoT, virtualization, BigData, FastData and machine-learning, the manufacturing industry has seemed to been stuck in a closed-source proprietary world.
-
-Unfortunately the industry's Programmable Logic Controllers (PLCs) communicate with a large number of usually incompatible protocols.
-This has made it difficult to create applications that integrate these systems with the new world.
-
-This is where PLC4X™ comes in:
-
-*It is our goal to create a set of libraries, that allow unified access to any type of PLC*
-
-In general we are trying to achieve the same goal OPC-UA is trying to address, but we try to do this by going a completely different path.
-
-While with OPC-UA every device has to be retrofitted with the ability to speak a new protocol and use a common client to speak with these devices,
-PLC4X tries to provide a unified API by implementing drivers for communicating with most industrial controllers in the protocols they natively understand.
-
-Each of these drivers is being implemented from the specs or by reverse engineering protocols in order to be fully Apache 2.0 licensed.
-
-The major benefits of PLC4X™ over OPC-UA, from our point of view are:
-
-- No need to modify existing hardware
-- Activating OPC-UA support on existing PLCs greatly increases the load on the PLCs
-- No need to pay for licenses to activate OPC-UA support
-
-At first we will be concentrating on providing adapters for the most widely used protocols such as:
-
-- icon:pause-circle[role=light-gray] BACnet
-- icon:check[role=green] link:protocols/ads/index.html[Beckhoff ADS (TCP)]
-- icon:wrench[role=yellow] link:protocpls/delta-v/index.html[Emerson DeltaV (UDP)]
-- icon:wrench[role=yellow] link:protocols/ethernet-ip/index.html[EtherNet/IP (TCP)]
-- icon:wrench[role=yellow] KNXNet/IP (UDP)
-- icon:check[role=green] link:protocols/modbus/index.html[Modbus (TCP)]
-- icon:check[role=green] link:protocols/opc-ua/index.html[OPC-UA (TCP)]
-- icon:pause-circle[role=light-gray] Profinet
-- icon:check[role=green] link:protocols/s7/index.html[S7-STEP7 (TCP)]
-- icon:wrench[role=yellow] link:protocols/s7/index.html[S7-TIA (TCP)]
-
-We are planning on providing support for the following programming languages:
-
-- icon:wrench[role=yellow] C++
-- icon:wrench[role=yellow] C# (.Net)
-- icon:check[role=green] link:plc4j/index.html[Java]
-- icon:wrench[role=yellow] Python
-
-=== Upcoming Conferences & Meetups
-
-On this page we are listing options to attend talks and events around PLC4X.
-
-[width="100%",cols="2,^2,2,^2,^3",options="header"]
-|=========================================================
-|Date           |Location        |Type   |Event                                                                 |Title
-|24th May 2019  |Frankfurt (GER) |Meetup |https://www.meetup.com/de-DE/IoT-Hessen/events/261422034/[IoT Hessen] |Industrial IoT goes Open Source: Apache PLC4X Talks & Party
-|18th June 2019 |Erfurt (GER)    |Meetup |https://www.meetup.com/de-DE/iothde/events/260140057/[IoT Thüringen]  |Industrie & IoT: Die perfekte Verbindung mit Flexibus & Apache PLC4X
-|=========================================================
-
-A full list containing also previous events can be found https://plc4x.apache.org/developers/conferences.html[here].
-
-Looking forward to meeting you.
-
-If you've got or found any events or talks we might be missing, please inform us on dev@plc4x.apache.org.
+++++
+    <header class="bg-light text-white">
+        <div class="container text-center">
+            <h1>The universal protocol adapter for Industrial IoT</h1>
+            <p class="lead">Building bridges between IT and OT</p>
+        </div>
+    </header>
+    <section id="no-retrofit">
+        <div class="container text-center">
+            <div class="row">
+                <div class="col-lg-8 mx-auto">
+                    <h2>Connect your shopfloor assets without retrofit</h2>
+                    <p class="lead">In contrast to other approches, Apache PLC4X lets you connect your industrial assets without needing to modify them.</p>
+                </div>
+            </div>
+        </div>
+    </section>
+    <section id="secure" class="bg-light">
+        <div class="container text-center">
+            <div class="row">
+                <div class="col-lg-8 mx-auto">
+                    <h2>Secure by design</h2>
+                    <p class="lead">Not only are PLC4X drivers implemented with security in mind, also do our <b>passive-mode drivers</b> bring to you guaranteed side-effect-freeness without the need to pay for validated software.</p>
+                </div>
+            </div>
+        </div>
+    </section>
+    <section id="performant">
+        <div class="container text-center">
+            <div class="row">
+                <div class="col-lg-8 mx-auto">
+                    <h2>Get the performance you need</h2>
+                    <p class="lead">Most approaches like OPC-UA currently don't deliver the performance needed for machine learning, deep learning and AI. PLC4X allows you to get the data volumes in the resolutons needed, without stressing out your industial hardware.</p>
+                </div>
+            </div>
+        </div>
+    </section>
+    <section id="costs" class="bg-light">
+        <div class="container text-center">
+            <div class="row">
+                <div class="col-lg-8 mx-auto">
+                    <h2>No license-costs, no restrictive licenses</h2>
+                    <p class="lead">Being open-source, PLC4X is <b>free of charge</b>. Start experimenting without worrying about license costs or shady license agreements. The Apache 2.0 is one of the worlds <b>most trusted and adopted</b> open-source licenses out there.</p>
+                </div>
+            </div>
+        </div>
+    </section>
+    <section id="with-support">
+        <div class="container text-center">
+            <div class="row">
+                <div class="col-lg-8 mx-auto">
+                    <h2>Get the commercial support you need</h2>
+                    <p class="lead">Just because you can download and use PLC4X for free doesn't mean that your're left on your own. Some of our community member's comapnies can also provide your with the <b>commercial support</b> you need.</p>
+                </div>
+            </div>
+        </div>
+    </section>
+++++
diff --git a/plc4x-site-skin/src/it/plc4x-website/src/site/asciidoc/users/test.adoc b/plc4x-site-skin/src/it/plc4x-website/src/site/asciidoc/users/test.adoc
new file mode 100644
index 0000000..f950bd8
--- /dev/null
+++ b/plc4x-site-skin/src/it/plc4x-website/src/site/asciidoc/users/test.adoc
@@ -0,0 +1,238 @@
+//
+//  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.
+//
+:imagesdir: ../images/
+:icons: font
+
+== Users
+
+This part of the PLC4X website is dedicated to people wanting to use Apache PLC4X.
+
+It will provide information on the features and how to use them as well as documentation on how to use the different integration modules.
+
+[width=100%,cols="^.^,^.^,^.^"]
+|===
+a|image::apache_calcite_logo.svg[width=80%,link=https://calcite.apache.org] a|image::apache_camel_logo.png[width=80%,link=https://camel.apache.org] a|image::apache_edgent_logo.png[width=80%,link=https://edgent.apache.org]
+|icon:check[role=green] https://calcite.apache.org[Apache Calcite™]         |icon:check[role=green] https://camel.apache.org[Apache Camel™]         |icon:check[role=green] https://edgent.apache.org[Apache Edgent™ (retired)]
+a|image::apache_iotdb_logo.png[width=80%,link=https://iotdb.apache.org]     a|image::apache_kafka_logo.png[width=80%,link=https://kafka.apache.org] a|image::apache_nifi_logo.svg[width=80%,link=https://nifi.apache.org]
+|icon:check[role=green] https://iotdb.apache.org[Apache IoTDB™ (incubating)]|icon:check[role=green] https://kafka.apache.org[Apache Kafka™]         |icon:wrench[role=green] https://nifi.apache.org[Apache Nifi™]
+a|image::apache_streampipes_logo.png[width=80%,link=https://streampipes.apache.org]     a|image::eclipse_ditto_logo.svg[link=https://www.eclipse.org/ditto/] a|image::elastic_logstash_logo.svg[width=80%,link=https://www.elastic.co/de/products/logstash]
+|icon:wrench[role=yellow] https://mynewt.apache.org[Apache StreamPipes™ (incubating)]   |icon:wrench[role=yellow] https://kafka.apache.org[Apache Kafka™]              |icon:wrench[role=green] https://www.elastic.co/de/products/logstash[Elastic Logstash™]
+|===
+
+=== Using the PLC4X API directly
+
+In order to write a valid PLC4X Java application, all you need, is to add a dependency to the `api module`.
+When using Maven, all you need to do is add this dependency:
+
+[subs=attributes+]
+----
+    <dependency>
+      <groupId>org.apache.plc4x</groupId>
+      <artifactId>plc4j-api</artifactId>
+      <version>{project-version}</version>
+    </dependency>
+----
+
+This will allow you to write a valid application, that compiles fine.
+However in order to actually connect to a device using a given protocol, you need to add this protocol implementation to the classpath.
+
+If this line is empty, the output is skipped for this instance.
+
+=== Example `Java` output
+
+....
+package org.apache.plc4x.language.java;
+
+import freemarker.template.*;
+import org.apache.plc4x.plugins.codegenerator.protocol.freemarker.FreemarkerLanguageOutput;
+import org.apache.plc4x.plugins.codegenerator.protocol.freemarker.FreemarkerLanguageTemplateHelper;
+import org.apache.plc4x.plugins.codegenerator.types.definitions.ComplexTypeDefinition;
+
+import java.io.*;
+import java.util.*;
+
+public class JavaLanguageOutput extends FreemarkerLanguageOutput {
+
+    @Override
+    public String getName() {
+        return "Java";
+    }
+
+    protected List<Template> getTemplates(Configuration freemarkerConfiguration) throws IOException {
+        return Arrays.asList(
+            freemarkerConfiguration.getTemplate("templates/java/pojo-template.ftlh"),
+            freemarkerConfiguration.getTemplate("templates/java/io-template.ftlh"));
+    }
+
+    protected FreemarkerLanguageTemplateHelper getHelper(Map<String, ComplexTypeDefinition> types) {
+        return new JavaLanguageTemplateHelper(types);
+    }
+
+}
+....
+
+=== Current Releases
+
+[#release-0.5.0]
+==== 0.5.0 Official https://www.apache.org/dyn/closer.lua/plc4x/0.5.0/apache-plc4x-0.5.0-source-release.zip[source release] [ https://www.apache.org/dist/plc4x/0.5.0/apache-plc4x-0.5.0-source-release.zip.sha512[SHA512] ] [ https://www.apache.org/dist/plc4x/0.5.0/apache-plc4x-0.5.0-source-release.zip.asc[ASC] ]
+
+This is the first release containing our new generated drivers (AB-ETH)
+
+===== New Features
+
+- Implemented a new Apache Kafka Connect integration module
+- Implemented a new Apache NiFi integration module
+- Implemented a new Logstash integration module
+- Implemented a driver for the AB-ETH protocol
+- Implemented Apache Karaf features for S7 OSGI drivers
+- PLC4X-121	Develop Code Generation to allow Generated Drivers in multiple Languages
+
+Sandbox (Beta-Features)
+- Implemented a new BACnet/IP passive mode driver
+- Implemented a new Serial DF1 driver
+
+===== Incompatible changes
+
+===== Bug Fixes
+
+- PLC4X-104	S7 Driver Datatype TIME_OF_DAY causes ArrayOutOfBoundException
+- PLC4X-134	S7 is terminating the connection during handshake
+- PLC4X-139	PLC4X leaks sockets in case of connection problems
+- PLC4X-141	String with real length of greater 127 throw an exception
+- PLC4X-144	When requesting invalid addresses, the DefaultS7MessageProcessor produces errors
+
+=== Options to communicating with PLCs
+
+In general there are two options for communicating with industrial PLCs:
+
+* Using a protocol converter
+** Hardware protocol converter
+** Software protocol converter
+* Using a driver for direct communication
+** Commercial drivers
+** Open-Source drivers
+
+Well protocol converters are all software in the end, but while a "hardware converter" is usually a closed hardware box that runs some sort of software, a "software converter" is usually an installable service or program that runs on a host system.
+
+== Example: DF1 MSpec
+
+The DF1 protocol has three basic messages: a command message, acknowledge and not acknowledge.
+A `0x10` is used as delimiter to differentiate between the messages and parts of the command message.
+
+[width="25%",cols="^,^"]
+|============
+|ACK | NAK
+
+|10 06 |10 15
+|============
+
+This is what a read command message looks like in full-duplex mode using CRC as checksum:
+[cols="^,^,^,^,^,^,^,^,^,^,^,^,^"]
+|===
+|Name | DLE | STX | DST | SRC | CMD | STS | TNS | ADDR | SIZE | DLE | ETX | CRC
+
+|Value | 10 | 02 | XX | XX | 01 | 00 | XX XX | XX XX | 02 | 10 | 03 | XX XX
+|===
+
+The according response with the requested byte data:
+[cols="^,^,^,^,^,^,^,^,^,^,^,^,^"]
+|===
+|Name | DLE | STX | DST | SRC | CMD | STS | TNS | DATA | SIZE | DLE | ETX | CRC
+
+|Value | 10 | 02 | XX | XX | 41 | 00 | XX XX | XX XX | 02 | 10 | 03 | XX XX
+|===
+
+== Code Generation
+
+As hand-writing code for a lot of drivers in multiple languages would be quite a nightmare, we have invested a very large amount of time into finding a way to automate this.
+
+So in the end we need 3 parts:
+
+1. Protocol definition
+2. Language template
+3. A maven plugin which generates the code
+
+This maven plugin uses a given protocol definition as well as a language template and generates code for reading/writing data in that protocol with the given language.
+
+[ditaa,code-generation-intro]
+....
+                  +------------+
+                  |c05A        |
+                  |  Language  |
+       +--------->|    Base    |------------+
+       |          |            |            |
+       |          +------------+            v
++------------+                       +------------+      +------------+
+|c05A        |                       |c05A        |      |            |
+|   Types    |                       |   PLC4X    |      |            |
+|    Base    |                       |   Maven    |----->|    Code    |
+|            |                       |   Plugin   |      |            |
++------------+                       +------------+      +------------+
+       |          +------------+            ^
+       |          |c05A        |            |
+       |          |  Protocol  |            |
+       +--------->|    Base    |------------+
+                  |            |
+                  +------------+
+....
+
+=== Building the PLC4X Website with Maven
+
+The PLC4X Website is also part of the same GIT repository that contains the code and it is built by Maven as well.
+
+In order to build the website the following command should be sufficient:
+
+    mvn site
+
+However this will generate the website for each module inside it's `target/site` directory.
+Opening this in a browser and navigating from pages of one module to another will not work as these links expect a different directory structure.
+In order to create a fully navigatable version of the Website, the following command should be sufficient:
+
+    mvn site site:stage
+
+This will generate an additional `target/staging` directory which contains the fully functional version.
+
+A lot of documentation on Maven suggests to use the `site:site` goal directly instead of calling the `site` phase, but in case of PLC4X there is more than just the site generation that has to be executed.
+
+This is just a quick-start version of the site generation, for a fully detailed documentation please read the http://plc4x.apache.org/developers/website.html[Website] documentation page.
+
+== Conferences & Events
+
+On this page we are listing options to attend talks and events around PLC4X.
+
+[width="100%",cols="2,^2,2,^2,^3",options="header"]
+|=========================================================
+|Date |Location |Type |Event | Title
+|18th June 2019 |Erfurt (GER) |Meetup |https://www.meetup.com/de-DE/iothde/events/260140057/[IoT Thüringen] |Industrie & IoT: Die perfekte Verbindung mit Flexibus & Apache PLC4X
+|24th May 2019  |Frankfurt (GER) |Meetup |https://www.meetup.com/de-DE/IoT-Hessen/events/261422034/[IoT Hessen] |Industrial IoT goes Open Source: Apache PLC4X Talks & Party
+|3th April 2019 |Cologne (GER) |Conference |https://www.buildingiot.de[Building IoT] |Apache PLC4X: Industry 4.0 done our way
+|8th March 2019 |Solingen (GER) |Conference |https://www.codecentric.de/2019/02/05/industrial-iot-day-solingen[Industrial IoT Day] |Apache PLC4X: Industry 4.0 done our way
+|21th February 2019 |Aachen (GER) |Meetup | http://www.euregjug.eu/2019/01/29/episode-iv-a-new-hope-industry-40-done-our-way[EURegJUG Maas-Rhine] |Episode IV - A New Hope: Industry 4.0 Done Our Way
+|15th February 2019 |Nürtingen (GER) |Meetup | PLC4X Meetup |Special Hackathon looking deeper into some new Protocols
+|15th November 2018 |Düsseldorf (GER) |Meetup |RheinJUG |http://www.rheinjug.de/rheinjug/event/2018/11/15/wie-wir-mit-apache-plc4x-die-silos-in-der-automatisierungsindustrie-aufbrechen.html[Wie wir mit Apache PLC4X die Silos in der Automatisierungsindustrie aufbrechen]
+|12th-13th November 2018 |Berlin (GER) |Conference |https://www.sv-veranstaltungen.de/fachbereiche/big-data-3/[3. Fachkonferenz: Industrial Analytics & Big Data in der Industrie] |Kommunikation mit Industrieanlagen ohne Umbau- und Lizenzkosten
+|22th-24th October 2018 |Edinburgh (GB) |Conference |https://events.linuxfoundation.org/events/open-source-summit-europe-2018/[Open-Source Summit Europe] |Revolutionizing the production industry with Apache PLC4X
+|24th-19th September 2018 |Montreal (CAN) |Conference |http://apachecon.com/acna18/?ref=apachecon.com[ApacheCon NA 2018] |https://apachecon.dukecon.org/acna/2018/#/scheduledEvent/51feeb6f55f250c39[Revolutionizing the Production Industry with Apache PLC4X (incubating)]
+|20th September 2018 |Nürtingen (GER) |Meetup |PLC4X Meetup |First general committer meetup
+|13th-14th June 2018 |Berlin (GER) |Conference |http://www.apachecon.com/euroadshow18/#[Apache EU Roadshow] |https://foss-backstage.de/session/revolutionizing-production-industry-apache-plc4x[Revolutionizing the production industry with Apache PLC4X]
+|4th June 2018 |Cologne (GER) |Conference |https://www.buildingiot.de/[Building IoT] |https://www.buildingiot.de/veranstaltung-6815-industrial-iot-und-edge-computing-mit-apache-plc4x-und-apache-edgent-%5Bsponsored-talk%5D.html?id=6815[Industrial IoT und Edge Computing mit Apache PLC4X und Apache Edgent]
+|5th April 2018 |Hamburg (GER) |Conference |https://techcamp.hamburg/[TechCamp Hamburg] |https://techcamp.hamburg/events/revolutionizing-industrial-iot-with-apache-plc4x/[Revolutionizing Industrial IoT with Apache PLC4X]
+|21th January 2018 |Hamburg (GER) |Conference |https://www.nortec-hamburg.de/[Nortec] |Mehr für Weniger? Aber Sicher!
+|4th-5th May 2019 |Brussels (BE) |Hackathon |https://eufossahackathon.bemyapp.com[EU FOSSA Apache Hackathon] | Co-creating the future of open source
+|=========================================================
+
+Looking forward to meeting you.
diff --git a/plc4x-site-skin/src/it/plc4x-website/src/site/site.xml b/plc4x-site-skin/src/it/plc4x-website/src/site/site.xml
index 03803cb..303fb88 100644
--- a/plc4x-site-skin/src/it/plc4x-website/src/site/site.xml
+++ b/plc4x-site-skin/src/it/plc4x-website/src/site/site.xml
@@ -48,6 +48,7 @@
   <body>
     <menu name="Users">
       <item name="Section Home" href="users/index.html"/>
+      <item name="Demo-Page" href="users/test.html"/>
       <item name="Download" href="users/download.html"/>
       <item name="Getting Started" href="users/gettingstarted.html">
         <item name="Java" href="users/plc4j/gettingstarted.html"/>
diff --git a/plc4x-site-skin/src/main/resources/META-INF/maven/site.vm b/plc4x-site-skin/src/main/resources/META-INF/maven/site.vm
index 29f7452..82e4f99 100644
--- a/plc4x-site-skin/src/main/resources/META-INF/maven/site.vm
+++ b/plc4x-site-skin/src/main/resources/META-INF/maven/site.vm
@@ -143,7 +143,7 @@
         #if ($showMenu)
             #set ( $mainStyles = "col-sm-pull col-md-9 col-lg-10")
         #else
-            #set ( $mainStyles = "")
+            #set ( $mainStyles = "w-100")
         #end
         <main role="main" class="ml-sm-auto px-4 $mainStyles">
             $bodyContent