# Anyone able and willing to give me a quick video-call intro into Ignition? (Willing to promise to work an Open-Source Apache PLC4X driver package in exchange)

**URL:** <https://forum.inductiveautomation.com/t/anyone-able-and-willing-to-give-me-a-quick-video-call-intro-into-ignition-willing-to-promise-to-work-an-open-source-apache-plc4x-driver-package-in-exchange/85623>\
**Category:** Ignition\
**Created:** [February 13, 2024, 12:51pm UTC](https://forum.inductiveautomation.com/t/anyone-able-and-willing-to-give-me-a-quick-video-call-intro-into-ignition-willing-to-promise-to-work-an-open-source-apache-plc4x-driver-package-in-exchange/85623 "2024-02-13T12:51:07Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![christofer.dutz](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/christofer.dutz/32/76634_2.png) [@christofer.dutz](https://forum.inductiveautomation.com/u/christofer.dutz)\
**Post date:** [February 13, 2024, 12:51pm UTC](https://forum.inductiveautomation.com/t/anyone-able-and-willing-to-give-me-a-quick-video-call-intro-into-ignition-willing-to-promise-to-work-an-open-source-apache-plc4x-driver-package-in-exchange/85623/1 "2024-02-13T12:51:07Z")

</div>

Hi all,

I am currently working on building a module for an Apache IoTDB-based Tag-Historian module. However I am completely new to Ignition and struggling a bit with some of the concepts (Like I have to add my S7 devices in the OPC-UA server etc.)

Now I thought: I think I have something to bring to the table: Drivers  
Apache PLC4X we currently have drivers I couldn't see in the default installation:

- ADS/AMS (Beckhoff)
- CAN
- CtrlX (WIP)
- EIP
- Firmata
- IEC-60870
- KNXNet/IP
- Profinet (WIP)
- Umas (WIP)  
I think there would be quite some benefit if I porvided an open-source PLC4X module.

So would someone here be willing (within the next 2-3 days) to give me a quick walk-through and help with the questions I have? Ideally that person should not only be proficient with Ignition as a user, but also as a developer for developing modules.

Chris

---

<div class="post-metadata">

**Author:** ![Transistor](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/transistor/32/3380_2.png) [@Transistor](https://forum.inductiveautomation.com/u/Transistor)\
**Post date:** [February 13, 2024, 1:38pm UTC](https://forum.inductiveautomation.com/t/anyone-able-and-willing-to-give-me-a-quick-video-call-intro-into-ignition-willing-to-promise-to-work-an-open-source-apache-plc4x-driver-package-in-exchange/85623/2 "2024-02-13T13:38:10Z")

</div>

Are you aware of the Inductive University online video tutorials. Each is only a few minutes long.

> **[Learn Ignition at Your Own Pace](https://inductiveuniversity.com/)**
>
> Inductive University is a completely free online learning platform
> to help you learn Ignition by Inductive Automation®, the most powerful SCADA software in the world

---

<div class="post-metadata">

**Author:** ![christofer.dutz](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/christofer.dutz/32/76634_2.png) [@christofer.dutz](https://forum.inductiveautomation.com/u/christofer.dutz)\
**Post date:** [February 13, 2024, 1:41pm UTC](https://forum.inductiveautomation.com/t/anyone-able-and-willing-to-give-me-a-quick-video-call-intro-into-ignition-willing-to-promise-to-work-an-open-source-apache-plc4x-driver-package-in-exchange/85623/3 "2024-02-13T13:41:14Z")

</div>

Haven't heard of that, will have a look, but I doubt it will help too much, as I'm currently struggling with code-level problems ... trying to build a custom Historian Module based on the existing one ...

---

<div class="post-metadata">

**Author:** ![Matrix\_Engineering](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/matrix_engineering/32/19781_2.png) [@Matrix\_Engineering](https://forum.inductiveautomation.com/u/Matrix_Engineering)\
**Post date:** [February 13, 2024, 3:12pm UTC](https://forum.inductiveautomation.com/t/anyone-able-and-willing-to-give-me-a-quick-video-call-intro-into-ignition-willing-to-promise-to-work-an-open-source-apache-plc4x-driver-package-in-exchange/85623/4 "2024-02-13T15:12:31Z")

</div>

There is a video on module building here:

> **[Module Development with the Ignition SDK Course at Inductive University](https://www.inductiveuniversity.com/courses/elective-studies/module-development-with-the-ignition-sdk)**
>
> The Ignition SDK opens up Ignition to all kinds of user/organization extensions and customizations. This course will introduce you to the basic foundations of Ignition SDK module development, from ground zero upward.

---

<div class="post-metadata">

**Author:** ![mazeyrat](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/mazeyrat/32/10955_2.png) [@mazeyrat](https://forum.inductiveautomation.com/u/mazeyrat)\
**Post date:** [February 13, 2024, 3:43pm UTC](https://forum.inductiveautomation.com/t/anyone-able-and-willing-to-give-me-a-quick-video-call-intro-into-ignition-willing-to-promise-to-work-an-open-source-apache-plc4x-driver-package-in-exchange/85623/5 "2024-02-13T15:43:15Z")

</div>

Ignition PLC driver guru is @Kevin.Herron of Inductive Automation.

From an integrator point of view outside IA, @pturmel has developed multiples PLC drivers: [https://www.automation-pros.com/modulesales.html](https://www.automation-pros.com/modulesales.html)  
and share some very valuable informations thru this forum.

Since Ignition 8, drivers interact with opcua milo stack:

> **[GitHub - eclipse/milo: Eclipse Milo™ - an open source implementation of OPC...](https://github.com/eclipse/milo)**
>
> Eclipse Milo™ - an open source implementation of OPC UA (IEC 62541). - eclipse/milo

Public example of a basic driver can be found here:

> <https://github.com/inductiveautomation/ignition-sdk-examples/tree/master/opc-ua-device>
>
> //github.com/inductiveautomation/ignition-sdk-examples/tree/master/opc-ua-device

The PLC data collected by the driver module are exposed in Ignition opcua server.

---

<div class="post-metadata">

**Author:** ![christofer.dutz](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/christofer.dutz/32/76634_2.png) [@christofer.dutz](https://forum.inductiveautomation.com/u/christofer.dutz)\
**Post date:** [February 13, 2024, 4:07pm UTC](https://forum.inductiveautomation.com/t/anyone-able-and-willing-to-give-me-a-quick-video-call-intro-into-ignition-willing-to-promise-to-work-an-open-source-apache-plc4x-driver-package-in-exchange/85623/6 "2024-02-13T16:07:00Z")

</div>

Hi all,

I'm currently not trying to build a driver integration module ... that's on my todo list 😉  
I'm trying to build a Tag-Historian module that allows sending data to Apache IoTDB.

In order to do so, I've setup a maven project and build that correctly builds and even signs my artifacts and I can easily deploy them to Ignition.

I'm struggling a bit with what makes a Tag-Historian module a Tag-Historian. At first I simply included the ignition TagHistorian in my own one and started with my own classes referencing some of the tag-historian-4.1.18.jar types ... however this module seems to contain various different implementations of a tag-historian which however share some concepts and some code.

I would like my module to not have this dependency, but to implement the parts needed myself. Unfortuantely, I'm totally lost as stuff like this:

- How do I tell Ignition that I have a tag-historian module, so it's listed in the Tags/History section?
- How do I set things up that I am able to have data sent to my historian?

I guess none of this is covered in the training videos.

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [February 13, 2024, 4:17pm UTC](https://forum.inductiveautomation.com/t/anyone-able-and-willing-to-give-me-a-quick-video-call-intro-into-ignition-willing-to-promise-to-work-an-open-source-apache-plc4x-driver-package-in-exchange/85623/7 "2024-02-13T16:17:03Z")

</div>

Your gateway hook class is handed a `GatewayContext` object during its `setup()` call. You need to capture this object for later use, but also immediately use it to tell the gateway was services (extension points) you wish to provide. In this case, you will need to register your historian via `context.getTagHistoryManager().addTagHistoryProviderType(...)`. Your provider type will then supply critical information about its capabilities, and will identify the persistent record type you will use to carry your implementation-specific configuration information (target IoTDB urls, whatever).

As you dig around, you will discover the need to also register a HistorySink when your provider is created.

(I've been poking around at this. Parts of it are fairly opaque, still.)

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [February 13, 2024, 4:25pm UTC](https://forum.inductiveautomation.com/t/anyone-able-and-willing-to-give-me-a-quick-video-call-intro-into-ignition-willing-to-promise-to-work-an-open-source-apache-plc4x-driver-package-in-exchange/85623/8 "2024-02-13T16:25:58Z")

</div>

> [@pturmel](#):
>
> In this case, you will need to register your historian via

N.B: This is an instance of the "extension point" pattern we use a lot, covered briefly here:

> **[Extending Ignition with Extension Points | Ignition SDK Programmer's Guide](https://www.sdk-docs.inductiveautomation.com/docs/programming-for-the-gateway/extending-ignition-with-extension-points/)**
>
> As described in the Extension Points section, extension points are hooks that allow modules to implement new versions of abstract ideas, such as a new type of authentication profile or a new alarm journal.

Note also that while the concept of extension points will stick around in 8.3.0, the entire implementation of them is going to be totally different. I'm going to be saying that a lot - much of what's happening in 8.3.0 is going to be totally different "under the hood" and less visible to end users.

As for your actual historian implementation, it's going to be complicated.  
I really can't stress this enough - this whole subsystem is rife with technical debt and is (in my opinion) overengineered. It's in the process of being rewritten dramatically (for 8.3.0) with the explicit goal of ease of maintenance and implementation by third parties.

Many things you might want to do with a custom historian are essentially _impossible_ right now. For instance (as far as I know), all aggregation functions are performed _by the gateway_ - you can't delegate them out to the probably much-more-efficient timeseries DB you might want to connect to.

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [February 13, 2024, 4:37pm UTC](https://forum.inductiveautomation.com/t/anyone-able-and-willing-to-give-me-a-quick-video-call-intro-into-ignition-willing-to-promise-to-work-an-open-source-apache-plc4x-driver-package-in-exchange/85623/9 "2024-02-13T16:37:30Z")

</div>

> [@paul-griffith](#):
>
> process of being rewritten dramatically

Yay!

---

<div class="post-metadata">

**Author:** ![christofer.dutz](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/christofer.dutz/32/76634_2.png) [@christofer.dutz](https://forum.inductiveautomation.com/u/christofer.dutz)\
**Post date:** [February 14, 2024, 8:05am UTC](https://forum.inductiveautomation.com/t/anyone-able-and-willing-to-give-me-a-quick-video-call-intro-into-ignition-willing-to-promise-to-work-an-open-source-apache-plc4x-driver-package-in-exchange/85623/10 "2024-02-14T08:05:43Z")

</div>

Hi Paul and Phil,

thanks for this info ... it confirms, partially what I have already seen, so that's at least partially good 😉  
I just took a step back and trying to implement something with a clean project with no relation to the tag-historian.jar. Also just installed a fresh and new Ignition instance with minimal installation ... trying to add back stuff (I think I completely ruined my installation with my first approach).  
I forwarded your concerns to my boss ... but when I first did that, he just said: But our customer uses Ignition 8.1. So I guess I'll continue learning things and hope that I'll manage to get at least something sort of working.

Right now I noticed with simply registering the historian history provider ... where would I then see anything added to Ignition? I was sort of expecting the "Settings/Tags/Historic Tags" (Not quite sure what it was named, as it's now not being displayed) to come back, but I guess there'll have to be a bit more happening for that to work, right?

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [February 14, 2024, 12:57pm UTC](https://forum.inductiveautomation.com/t/anyone-able-and-willing-to-give-me-a-quick-video-call-intro-into-ignition-willing-to-promise-to-work-an-open-source-apache-plc4x-driver-package-in-exchange/85623/11 "2024-02-14T12:57:53Z")

</div>

If you used my code snip, you would then have your custom historian available in the list of historian types when creating a new historian through the web interface. The web interface would include your persistent record's fields in the following configuration page automagically.

---

<div class="post-metadata">

**Author:** ![christofer.dutz](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/christofer.dutz/32/76634_2.png) [@christofer.dutz](https://forum.inductiveautomation.com/u/christofer.dutz)\
**Post date:** [February 14, 2024, 1:10pm UTC](https://forum.inductiveautomation.com/t/anyone-able-and-willing-to-give-me-a-quick-video-call-intro-into-ignition-willing-to-promise-to-work-an-open-source-apache-plc4x-driver-package-in-exchange/85623/12 "2024-02-14T13:10:19Z")

</div>

I seem to have missed your code snip ... where did you post that?

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [February 14, 2024, 1:11pm UTC](https://forum.inductiveautomation.com/t/anyone-able-and-willing-to-give-me-a-quick-video-call-intro-into-ignition-willing-to-promise-to-work-an-open-source-apache-plc4x-driver-package-in-exchange/85623/13 "2024-02-14T13:11:51Z")

</div>

The code-formatted one-liner, yesterday morning.

---

<div class="post-metadata">

**Author:** ![christofer.dutz](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/christofer.dutz/32/76634_2.png) [@christofer.dutz](https://forum.inductiveautomation.com/u/christofer.dutz)\
**Post date:** [February 14, 2024, 1:18pm UTC](https://forum.inductiveautomation.com/t/anyone-able-and-willing-to-give-me-a-quick-video-call-intro-into-ignition-willing-to-promise-to-work-an-open-source-apache-plc4x-driver-package-in-exchange/85623/14 "2024-02-14T13:18:18Z")

</div>

Ok ... so I guess I was on the right track ... just I did one thing wrong:  
I thought the "Tag Historian-module.modl" was the implementation of the In-Memory and the SQL Historian and in order to work with a clean installation, I didn't add that module. Turns out it seem to contain not only some implementations, but also the core framework for historians. As soon as I added the module back, I got the Tags/History and inside that I could see my provider.

Hope I'll be able to continue from here 🙂  
Chris

---

<div class="post-metadata">

**Author:** ![christofer.dutz](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/christofer.dutz/32/76634_2.png) [@christofer.dutz](https://forum.inductiveautomation.com/u/christofer.dutz)\
**Post date:** [February 14, 2024, 2:00pm UTC](https://forum.inductiveautomation.com/t/anyone-able-and-willing-to-give-me-a-quick-video-call-intro-into-ignition-willing-to-promise-to-work-an-open-source-apache-plc4x-driver-package-in-exchange/85623/15 "2024-02-14T14:00:16Z")

</div>

Yup ... also had the "systemManaged" set to true, which had the element disabled in the dialog, but now I see my new type and hope I'll be able to continune.

Thanks and sorry for the stupid questions ☹

Chris

---

<div class="post-metadata">

**Author:** ![lrose](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/lrose/32/62724_2.png) [@lrose](https://forum.inductiveautomation.com/u/lrose)\
**Post date:** [February 14, 2024, 3:12pm UTC](https://forum.inductiveautomation.com/t/anyone-able-and-willing-to-give-me-a-quick-video-call-intro-into-ignition-willing-to-promise-to-work-an-open-source-apache-plc4x-driver-package-in-exchange/85623/16 "2024-02-14T15:12:04Z")

</div>

> [@christofer.dutz](#):
>
> sorry for the stupid questions

These questions aren't stupid at all. In fact, since Module Development isn't officially supported by IA, and digging through the SDK can be....overwhelming and sometimes convoluted...posts like this are a top tier resource.

---

<div class="post-metadata">

**Author:** ![pascal.fragnoud](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pascal.fragnoud/32/24728_2.png) [@pascal.fragnoud](https://forum.inductiveautomation.com/u/pascal.fragnoud)\
**Post date:** [February 14, 2024, 3:44pm UTC](https://forum.inductiveautomation.com/t/anyone-able-and-willing-to-give-me-a-quick-video-call-intro-into-ignition-willing-to-promise-to-work-an-open-source-apache-plc4x-driver-package-in-exchange/85623/17 "2024-02-14T15:44:20Z")

</div>

I was about to say. It's a refreshing change from the usual "how do I make my label red".

---

<div class="post-metadata">

**Author:** ![victordcq](https://avatars.discourse-cdn.com/v4/letter/v/f6c823/32.png) [@victordcq](https://forum.inductiveautomation.com/u/victordcq)\
**Post date:** [February 15, 2024, 7:42am UTC](https://forum.inductiveautomation.com/t/anyone-able-and-willing-to-give-me-a-quick-video-call-intro-into-ignition-willing-to-promise-to-work-an-open-source-apache-plc4x-driver-package-in-exchange/85623/18 "2024-02-15T07:42:42Z")

</div>

Much much better than some others!

like...  
"Help my code gives an error" _does not not show the code or the error_

---

<div class="post-metadata">

**Author:** ![christofer.dutz](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/christofer.dutz/32/76634_2.png) [@christofer.dutz](https://forum.inductiveautomation.com/u/christofer.dutz)\
**Post date:** [February 15, 2024, 9:00am UTC](https://forum.inductiveautomation.com/t/anyone-able-and-willing-to-give-me-a-quick-video-call-intro-into-ignition-willing-to-promise-to-work-an-open-source-apache-plc4x-driver-package-in-exchange/85623/19 "2024-02-15T09:00:28Z")

</div>

My favorite ones in giving support for open-source are of this type:

"If I want to do X this code should do that, however if I want to do something else it should do something else"

---

<div class="post-metadata">

**Author:** ![mazeyrat](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/mazeyrat/32/10955_2.png) [@mazeyrat](https://forum.inductiveautomation.com/u/mazeyrat)\
**Post date:** [February 15, 2024, 9:59am UTC](https://forum.inductiveautomation.com/t/anyone-able-and-willing-to-give-me-a-quick-video-call-intro-into-ignition-willing-to-promise-to-work-an-open-source-apache-plc4x-driver-package-in-exchange/85623/20 "2024-02-15T09:59:36Z")

</div>

A quite old example of tag historian provider for Ignition 7.9,  
not sure it could be the same for 8, but perhaps it could be helpful.

> **[GitHub - IgnitionModuleDevelopmentCommunity/simpletaghistoryprovider: Tag...](https://github.com/IgnitionModuleDevelopmentCommunity/simpletaghistoryprovider)**
>
> Tag History Provider Example. Contribute to IgnitionModuleDevelopmentCommunity/simpletaghistoryprovider development by creating an account on GitHub.

[Next page](https://forum.inductiveautomation.com/t/anyone-able-and-willing-to-give-me-a-quick-video-call-intro-into-ignition-willing-to-promise-to-work-an-open-source-apache-plc4x-driver-package-in-exchange/85623.md?page=2)
