<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
                            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <title>PLC4X &#x2013; </title>
    <script src="../../js/jquery.slim.min.js" type="text/javascript"></script>
    <!--script src="../../js/popper.min.js" type="javascript"></script-->
    <script src="../../js/bootstrap.bundle.min.js" type="text/javascript"></script>
    <!-- The tooling for adding images and links to Apache events -->
    <script src="https://www.apachecon.com/event-images/snippet.js" type="text/javascript"></script>
    <!-- FontAwesome -->
    <link rel="stylesheet" href="../../css/all.min.css" type="text/css"/>
    <!-- Bootstrap -->
    <link rel="stylesheet" href="../../css/bootstrap.min.css" type="text/css"/>
    <!-- Some Maven Site defaults -->
    <link rel="stylesheet" href="../../css/maven-base.css" type="text/css"/>
    <link rel="stylesheet" href="../../css/maven-theme.css" type="text/css"/>
    <!-- The PLC4X version of a bootstrap theme -->
    <link rel="stylesheet" href="../../css/themes/plc4x.css" type="text/css" id="pagestyle"/>
    <!-- A custom style for printing content -->
    <link rel="stylesheet" href="../../css/print.css" type="text/css" media="print"/>

            <meta http-equiv="Content-Language" content="en"/>
            
</head>
<body class="composite">
<nav class="navbar navbar-light navbar-expand-md bg-faded justify-content-center border-bottom">
    <!--a href="/" class="navbar-brand d-flex w-50 mr-auto">Navbar 3</a-->
    <a href="https://plc4x.apache.org/" id="bannerLeft"><img src="../../images/apache_plc4x_logo_small.png"  alt="Apache PLC4X"/></a>
    <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#collapsingNavbar3">
        <span class="navbar-toggler-icon"></span>
    </button>
    <div class="navbar-collapse collapse w-100" id="collapsingNavbar3">
        <ul class="navbar-nav w-100 justify-content-center">
                        <li class="nav-item">
                            <a class="nav-link" href="../../index.html">Home</a>
            </li>
                                                                                <li class="nav-item active">
                                    <a class="nav-link" href="../../users/index.html">Users</a>
                </li>
                                            <li class="nav-item">
                                    <a class="nav-link" href="../../developers/index.html">Developers</a>
                </li>
                                            <li class="nav-item">
                                    <a class="nav-link" href="../../apache/index.html">Apache</a>
                </li>
                    </ul>
        <ul class="nav navbar-nav ml-auto justify-content-end">
            <li class="nav-item row valign-middle">
                <a class="acevent" data-format="wide" data-mode="light" data-event="random" style="width:240px;height:60px;"></a>
            </li>
        </ul>
    </div>
</nav>
<div class="container-fluid">
    <div class="row h-100">
                                            
                                                                    
                                                                                                    <nav class="col-sm-push col-md-2 pt-3 sidebar">
                    <div class="sidebar-sticky">
                    <ul class="nav flex-column">
                                                            <li class="nav-item">
                            <a href="../../users/index.html" class="nav-link">Section Home</a>
                            </li>
                                
                                                                    
                                                                <li class="nav-item">
                            <a href="../../users/download.html" class="nav-link">Download</a>
                            </li>
                                
                                                                    
                                                                <li class="nav-item">
                            <a href="../../users/adopters.html" class="nav-link">Adopters</a>
                            </li>
                                
                                                                    
                                            
                                                                    
                                                                <li class="nav-item">
                            <a href="../../users/commercial-support.html" class="nav-link">Commercial support</a>
                            </li>
                                
                                                                    
                                                                <li class="nav-item">
                            <a href="../../users/gettingstarted.html" class="nav-link">Getting Started</a>
                                    <ul class="flex-column pl-4 nav">
                                            <li class="nav-item">
                            <a href="../../users/getting-started/plc4go.html" class="nav-link">Go</a>
                            </li>
                                            <li class="nav-item">
                            <a href="../../users/getting-started/plc4j.html" class="nav-link">Java</a>
                            </li>
                                            <li class="nav-item">
                            <a href="../../users/getting-started/using-snapshots.html" class="nav-link">Using SNAPSHOTS</a>
                            </li>
                                            <li class="nav-item">
                            <a href="../../users/getting-started/general-concepts.html" class="nav-link">General Concepts</a>
                            </li>
                                            <li class="nav-item">
                            <a href="../../users/getting-started/virtual-modbus.html" class="nav-link">Virtual Modbus</a>
                            </li>
                            </ul>
            </li>
                                
                                                                    
                                                                <li class="nav-item">
                            <a href="../../users/blogs-videos-and-slides.html" class="nav-link">Blogs, Videos and Slides</a>
                            </li>
                                
                                                                    
                                                                <li class="nav-item">
                            <a href="../../users/protocols/index.html" class="nav-link">Protocols</a>
                                    <ul class="flex-column pl-4 nav">
                                            <li class="nav-item">
                            <a href="../../users/protocols/ab-eth.html" class="nav-link">AB-ETH</a>
                            </li>
                                            <li class="nav-item">
                            <a href="../../users/protocols/ads.html" class="nav-link">ADS/AMS</a>
                            </li>
                                            <li class="nav-item">
                            <a href="../../users/protocols/bacnetip.html" class="nav-link">BACnet/IP</a>
                            </li>
                                            <li class="nav-item">
                            <a href="../../users/protocols/canopen.html" class="nav-link">CANopen</a>
                            </li>
                                            <li class="nav-item">
                            <a href="../../users/protocols/deltav.html" class="nav-link">DeltaV</a>
                            </li>
                                            <li class="nav-item">
                            <a href="../../users/protocols/df1.html" class="nav-link">DF1</a>
                            </li>
                                            <li class="nav-item">
                            <a href="../../users/protocols/ethernet-ip.html" class="nav-link">EtherNet/IP</a>
                            </li>
                                            <li class="nav-item">
                            <a href="../../users/protocols/firmata.html" class="nav-link">Firmata</a>
                            </li>
                                            <li class="nav-item">
                            <a href="../../users/protocols/knxnetip.html" class="nav-link">KNXnet/IP</a>
                            </li>
                                            <li class="nav-item">
                            <a href="../../users/protocols/modbus.html" class="nav-link">Modbus</a>
                            </li>
                                            <li class="nav-item">
                            <a href="../../users/protocols/opc-ua.html" class="nav-link">OPC UA</a>
                            </li>
                                            <li class="nav-item">
                            <a href="../../users/protocols/plc4x.html" class="nav-link">PLC4X (Proxy)</a>
                            </li>
                                            <li class="nav-item">
                            <a href="../../users/protocols/s7.html" class="nav-link">S7 (Step7)</a>
                            </li>
                                            <li class="nav-item">
                            <a href="../../users/protocols/simulated.html" class="nav-link">Simulated</a>
                            </li>
                            </ul>
            </li>
                                
                                                                    
                                                                <li class="nav-item">
                            <a href="../../users/transports/index.html" class="nav-link">Transports</a>
                                    <ul class="flex-column pl-4 nav">
                                            <li class="nav-item">
                            <a href="../../users/transports/tcp.html" class="nav-link">TCP</a>
                            </li>
                                            <li class="nav-item">
                            <a href="../../users/transports/udp.html" class="nav-link">UDP</a>
                            </li>
                                            <li class="nav-item">
                            <a href="../../users/transports/serial.html" class="nav-link">Serial</a>
                            </li>
                                            <li class="nav-item">
                            <a href="../../users/transports/socketcan.html" class="nav-link">SocketCAN</a>
                            </li>
                                            <li class="nav-item">
                            <a href="../../users/transports/raw-socket.html" class="nav-link">Raw Socket</a>
                            </li>
                                            <li class="nav-item">
                            <a href="../../users/transports/pcap-replay.html" class="nav-link">PCAP Replay</a>
                            </li>
                            </ul>
            </li>
                                
                                                                    
                                                                <li class="nav-item">
                            <a href="../../users/integrations/index.html" class="nav-link">Integrations</a>
                                    <ul class="flex-column pl-4 nav">
                                            <li class="nav-item">
                            <a href="../../users/integrations/apache-calcite.html" class="nav-link">Apache Calcite</a>
                            </li>
                                            <li class="nav-item">
                            <a href="../../users/integrations/apache-camel.html" class="nav-link">Apache Camel</a>
                            </li>
                                            <li class="nav-item">
                            <a href="../../users/integrations/apache-edgent.html" class="nav-link">Apache Edgent</a>
                            </li>
                                            <li class="nav-item">
                            <a href="../../users/integrations/apache-iotdb.html" class="nav-link">Apache IoTDB</a>
                            </li>
                                            <li class="nav-item">
                            <a href="../../users/integrations/apache-kafka.html" class="nav-link">Apache Kafka</a>
                            </li>
                                            <li class="nav-item">
                            <a href="../../users/integrations/apache-nifi.html" class="nav-link">Apache NiFi</a>
                            </li>
                                            <li class="nav-item">
                            <a href="../../users/integrations/apache-streampipes.html" class="nav-link">Apache StreamPipes</a>
                            </li>
                                            <li class="nav-item">
                            <a href="../../users/integrations/eclipse-ditto.html" class="nav-link">Eclipse Ditto</a>
                            </li>
                                            <li class="nav-item">
                            <a href="../../users/integrations/eclipse-milo.html" class="nav-link">Eclipse Milo OPC UA Server</a>
                            </li>
                            </ul>
            </li>
                                
                                                                    
                                                                <li class="nav-item">
                            <a href="../../users/tools/index.html" class="nav-link">Tools</a>
                                    <ul class="flex-column pl-4 nav">
                                            <li class="nav-item">
                            <a href="../../users/tools/capture-replay.html" class="nav-link">Capture Replay</a>
                            </li>
                                            <li class="nav-item">
                            <a href="../../users/tools/connection-pool.html" class="nav-link">Connection Pool</a>
                            </li>
                                            <li class="nav-item">
                            <a href="../../users/tools/connection-cache.html" class="nav-link">Connection Cache</a>
                            </li>
                                            <li class="nav-item">
                            <a href="../../users/tools/opm.html" class="nav-link">Object PLC Mapping (OPM)</a>
                            </li>
                                            <li class="nav-item">
                            <strong class="nav-link">Scraper</strong>
                            </li>
                                            <li class="nav-item">
                            <a href="../../users/tools/testing.html" class="nav-link">PLC4X without a PLC and Unit Testing</a>
                            </li>
                            </ul>
            </li>
                                
                                                                    
                                                                <li class="nav-item">
                            <a href="../../users/industry40.html" class="nav-link">Industry 4.0 with Apache</a>
                            </li>
                                
                                                                    
                                                                <li class="nav-item">
                            <a href="../../users/security.html" class="nav-link">Security</a>
                            </li>
                                                    
                                                                    
                                            
                                                                    
                                            
                                                                    
                                            
                                                                    
                                            
                                                                    
                                            
                                                                    
                                            
                                                                    
                                            
                                                                    
                                            
                                                                    
                                            
                                                                    
                                            
                                                                    
                                            
                                                                    
                                                                
                                    
                                            
                                    
                                            
                                    
                                            
                                    
                                            
                                    
                                                    </ul>
        </div>
        </nav>
                                            <main role="main" class="ml-sm-auto px-4 col-sm-pull col-md-9 col-lg-10 h-100">
            <div class="sect1">
<h2 id="scraper">Scraper</h2>
<div class="sectionbody">
<div class="paragraph">
<p>While the Apache PLC4X API allows simple access to PLC resources, if you want to continuously monitor some values and have them retrieved in a pre-defined interval, the core PLC4X API method is a little bit uncomfortable.</p>
</div>
<div class="paragraph">
<p>Especially when you have multiple batches of data you want to have refreshed in different intervals.</p>
</div>
<div class="paragraph">
<p>In this case you need to take care of the scheduling of queries, need to manage the connection state (Check if the connection is still available and to apply countermeasures, if there are problems)</p>
</div>
<div class="paragraph">
<p>As we have encountered exactly the same problem for about every integration module we created, the Apache PLC4X team has created a tool called the <code>Scraper</code>.</p>
</div>
<div class="paragraph">
<p>This tool automatically handles all of the tasks mentioned above.</p>
</div>
<div class="sect2">
<h3 id="getting_started_with_the_scraper">Getting started with the <code>Scraper</code></h3>
<div class="paragraph">
<p>In general, you need 3 parts to work with the <code>Scraper</code>:</p>
</div>
<div class="paragraph">
<p>1) A <code>Scraper</code> Configuration
2) A <code>Scraper</code> Implementation
3) A Handler to handle the results of <code>Scraper</code> jobs</p>
</div>
<div class="paragraph">
<p>In the <code>Scraper</code> Configuration you define the so-called <code>jobs</code>.</p>
</div>
<div class="sect3">
<h4 id="sources">Sources</h4>
<div class="paragraph">
<p>Sources define connections to PLCs using PLC4X drivers.</p>
</div>
<div class="paragraph">
<p>Generally you can think of a <code>Source</code> as a PLC4X connection string, given an alias name.</p>
</div>
</div>
<div class="sect3">
<h4 id="jobs">Jobs</h4>
<div class="paragraph">
<p>A <code>Job</code> defines which resources (PLC Addresses) should be collected from which <code>Sources</code> with a given <code>Trigger</code>.</p>
</div>
<div class="paragraph">
<p>All resources in a job will be collected as a batch.</p>
</div>
<div class="paragraph">
<p>Generally multiple types of triggers could theoretically be supported, but for now only a time triggered job (Aka <code>SCHEDULED</code>) is actually supported.</p>
</div>
<div class="paragraph">
<p>In the near future we&#8217;re hoping that we will be able to support:
- External triggers
- Triggering collection based upon PLC-values</p>
</div>
<div class="paragraph">
<p>But, as to now, this has not been implemented yet.</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="configuration_using_the_java_api">Configuration using the Java API</h3>
<div class="paragraph">
<p>The core of the Scraper configuration is the <code>ScraperConfigurationTriggeredImplBuilder</code> class.
Use this to build the configuration objects used to bootstrap the Scraper.</p>
</div>
<div class="listingblock">
<div class="content">
<pre>ScraperConfigurationTriggeredImplBuilder builder = new ScraperConfigurationTriggeredImplBuilder();</pre>
</div>
</div>
<div class="paragraph">
<p>As soon as you have your <code>builder</code> instance, you should add at least one <code>source</code> to it.</p>
</div>
<div class="listingblock">
<div class="content">
<pre>builder.addSource({connectionName}, {plc4xConnectionString});</pre>
</div>
</div>
<div class="paragraph">
<p>The <code>connectionName</code> will be what we use when configuring the job to reference which source it should use to collect.</p>
</div>
<div class="paragraph">
<p>In order to configure a <code>job</code> we have to get an instance of a <code>JobConfigurationTriggeredImplBuilder</code>.</p>
</div>
<div class="listingblock">
<div class="content">
<pre>JobConfigurationTriggeredImplBuilder jobBuilder = builder.job({jobName}, {triggerCommand});</pre>
</div>
</div>
<div class="paragraph">
<p>This creates a new <code>job</code> with a given name which is executed based on the information in the <code>triggerCommand</code>.</p>
</div>
<div class="paragraph">
<p>As mentioned above, we currently only support a time-scheduled collection.</p>
</div>
<div class="paragraph">
<p>This genrally just requires one parameter: The number of <code>milliseconds</code> between each collection.</p>
</div>
<div class="listingblock">
<div class="content">
<pre>SCHEDULED:1000</pre>
</div>
</div>
<div class="paragraph">
<p>Above would schedule a collection every 1000ms - so once every second.</p>
</div>
<div class="paragraph">
<p>Up to now this job would not be run anywhere, and it would also not collect anything.
So in order to have the job actually do something, we should assign it a <code>source</code> to collect from.</p>
</div>
<div class="listingblock">
<div class="content">
<pre>jobBuilder.source({connectionName});</pre>
</div>
</div>
<div class="paragraph">
<p>Here we could theoretically collect on multiple sources, by simply calling the <code>source()</code> method multiple times.</p>
</div>
<div class="paragraph">
<p>All sources would be collected at the same time, whenever the trigger tells it to.</p>
</div>
<div class="paragraph">
<p>So the last thing we need to configure our first <code>Scraper</code> job, is to add a few fields for it to collect.</p>
</div>
<div class="listingblock">
<div class="content">
<pre>jobBuilder.field({fieldName}, {fieldAddress});</pre>
</div>
</div>
<div class="paragraph">
<p>The <code>field</code> method has to be called for every field we want to add to the current job configuration.
It gives a PLC4X address string an easy to understand string name, just like when using the core PLC4X API.</p>
</div>
<div class="paragraph">
<p>As soon as we&#8217;re done adding fields, we configure the job by calling the <code>build</code> method.</p>
</div>
<div class="listingblock">
<div class="content">
<pre>jobBuilder.build();</pre>
</div>
</div>
<div class="paragraph">
<p>This configures the finished job and attaches that to the overall <code>Scraper</code> configuration of the scraper configuration.</p>
</div>
<div class="paragraph">
<p>As soon as we&#8217;re done configuring jobs, we need to create the <code>Scraper</code> configuration by calling the <code>buiold</code> method on the <code>builder</code>:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>ScraperConfigurationTriggeredImpl scraperConfig = builder.build();</pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="running_the_scraper">Running the <code>Scraper</code></h3>
<div class="paragraph">
<p>In order to run the <code>Scraper</code>, the following boilerplate code is needed.</p>
</div>
<div class="listingblock">
<div class="content">
<pre>       try {
            PlcDriverManager plcDriverManager = new PooledPlcDriverManager();
            TriggerCollector triggerCollector = new TriggerCollectorImpl(plcDriverManager);
            TriggeredScraperImpl scraper = new TriggeredScraperImpl(scraperConfig, (jobName, sourceName, results) -&gt; {

                ...

            }, triggerCollector);
            scraper.start();
            triggerCollector.start();
        } catch (ScraperException e) {
            log.error("Error starting the scraper", e);
        }</pre>
</div>
</div>
<div class="paragraph">
<p>At first a new <code>PooledPlcDriverManager</code> is created (It actually doesn&#8217;t have to be the pooled version, but we strongly suggest you use it as for some protocols the connection process is stressfull for the connected PLC).</p>
</div>
<div class="paragraph">
<p>With this <code>plcDriverManager</code> we can then create a so-called <code>TriggerCollector</code>, which we pass in the driver manager as argument.</p>
</div>
<div class="paragraph">
<p>Next comes the probably most important part: We configure the scraper, by binding a <code>Scraper Configuration</code>, a <code>ResultHandler</code> and a <code>TriggerCollector</code> together.</p>
</div>
<div class="paragraph">
<p>After this, the scraper is ready to start, which is then done by calling <code>start</code> on the <code>scraper</code> as well as the <code>triggerCollector</code>.</p>
</div>
<div class="paragraph">
<p>For the sake of clarity, here comes the definition of the <code>ResultHandler</code> interface:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>@FunctionalInterface
public interface ResultHandler {

    /**
     * Callback handler.
     * @param jobName name of the job (from config)
     * @param connectionName alias of the connection (&lt;b&gt;not&lt;/b&gt; connection String)
     * @param results Results in the form alias to result value
     */
    void handle(String jobName, String connectionName, Map&lt;String, Object&gt; results);

}</pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="configuration_using_a_json_or_yaml_file">Configuration using a <code>JSON</code> or <code>YAML</code> file</h3>
<div class="paragraph">
<p>As an alternative to using the Java API, the Scraper Configuration can also be read from a <code>JSON</code> or <code>YAML</code> document.</p>
</div>
<div class="paragraph">
<p>Here come some examples:</p>
</div>
<div class="paragraph">
<p>JSON:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>{
    "sources": {
        "connectionName": "connectionString"
    },
    "jobs": [
        {
            "name": "jobName",
            "triggerConfig": (SCHEDULED,10000)
            "sources": [
                "connectionName"
            ],
            "fields": {
                "a": "{address-a}",
                "b": "{address-b}"
            }
        }
    ]
}</pre>
</div>
</div>
<div class="paragraph">
<p>YAML:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>---
sources:
  connectionName: connectionString
jobs:
  - name: jobName
    triggerConfig: (SCHEDULED,10000)
    sources:
      - connectionName
    fields:
      a: {address-a}
      b: {address-b}</pre>
</div>
</div>
<div class="paragraph">
<p>In both cases, you can create the <code>ScraperConfiguration</code> with the following code:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>ScraperConfiguration conf = ScraperConfiguration.fromFile("{path to the JSON or YAML file}", ScraperConfigurationTriggeredImpl.class);</pre>
</div>
</div>
</div>
</div>
</div>
        </main>
        <footer class="pt-4 my-md-5 pt-md-5 w-100 border-top">
            <div class="row justify-content-md-center" style="font-size: 13px">
                <div class="col col-6 text-center">
                                    Copyright &#169;      2017&#x2013;2022 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
All rights reserved.<br/>
                    Apache PLC4X, PLC4X, Apache, the Apache feather logo, and the Apache PLC4X project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries. All other marks mentioned may be trademarks or registered trademarks of their respective owners.
                                        <br/><div style="text-align:center;">Home screen image taken from <a
                        href="https://flic.kr/p/chEftd">Flickr</a>, "Tesla Robot Dance" by Steve Jurvetson, licensed
                    under <a href="https://creativecommons.org/licenses/by/2.0/">CC BY 2.0 Generic</a>, image cropped
                    and blur effect added.</div>
                                </div>
            </div>
        </footer>
    </div>
</div>

<!-- Bootstrap core JavaScript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script src="../../js/jquery.slim.min.js"></script>
<script src="../../js/popper.min.js"></script>
<script src="../../js/bootstrap.min.js"></script>
<script type="text/javascript">
    $('.carousel .carousel-item').each(function(){
        var next = $(this).next();
        if (!next.length) {
            next = $(this).siblings(':first');
        }
        next.children(':first-child').clone().appendTo($(this));

        for (let i = 0; i < 3; i++) {
            next=next.next();
            if (!next.length) {
                next = $(this).siblings(':first');
            }
            next.children(':first-child').clone().appendTo($(this));
        }
    });
</script>
</body>
</html>