The Power of Community is Coming to a City Near You!
By Luan Taute
06 May 2026

INNOV8 – Building Dynamic, Temporary-Subscription Forms in Ignition Perspective

Share

INNOV8: Building Dynamic, Temporary-Subscription Forms in Ignition Perspective

Join us for a technical INNOV8 session where we move beyond static configurations to show you how to build forms that work on demand.

The Challenge: Permanent tag subscriptions are resource-heavy. When you’re monitoring hundreds of device events, keeping everything “always-on” can lead to unnecessary system strain and cluttered alert logs.

The Solution: Building what’s Next with Ignition, and that means moving toward smarter, more efficient architectures. 

In this hands-on webinar, we will walk through the logic to:

  • Deploy On-Demand Subscriptions: Trigger temporary connections to tags or device events only when a user initiates a monitoring window.

  • Automate Lifecycle Management: Build scripts that automatically clean up subscriptions the moment a timer expires, keeping your system lean without manual intervention.

  • Targeted Alerting: Enable operators to define their own monitoring parameters, ensuring they receive real-time updates only for the duration they actually care about.

  • Implementation Specs: Review the Perspective components and scripting required to make these forms production-ready.

Whether you’re a developer, integrator, or plant engineer, this session is designed to help you build what’s next for your facility by adding a repeatable, high-performance template to your toolkit.

SPEAKERS

Markus Oosthuizen
Application Engineer
Element8

00:00:12:03 – 00:00:35:07

Good morning everyone, and just want to check if your buddy can hear us.

 

00:00:35:09 – 00:01:11:00

Good day, everyone. Yeah, thank you for joining INNOV8, where we are going to build dynamic temporary subscription forms in Ignition Perspective. Yeah. Really excited to see what you’re going to show us today. Marcus. Cool, cool. Hi everyone. I’m from Element8. I’ll be taking you through a short, relatively short demonstration of building dynamic temporary subscription forms like in Ignition Perspective.

 

00:01:11:01 – 00:01:42:18

So let me start off by sharing my screen. Okay. And sorry if everybody has any questions, please feel free to ask. We will answer that during the session. And also just create a small space afterwards to answer, thanks to you. Yes, please. If we can have people ask questions during the session as we go. That would even be better.

 

00:01:42:23 – 00:02:20:10

If you see anything that doesn’t make sense. Please ask. While I’m on the focus point, I can answer for you. Okay, so I hope everyone can see my screen. What we’ve got here is normal. I’m saying normal. A small demonstration of a tank being filled. So what we’ll be doing today is we’ll choose any device on this tank and subscribe to its status or value for a certain amount of time.

 

00:02:20:16 – 00:02:43:07

Okay. So if you see, for example, we’ve got this as our header. So we’ve got a form here on this form. We can fill in a few things just to quickly show you. We can select all the devices here. And if you click on this device, there is also a form component where you can only choose the device and then the members of it.

 

00:02:43:08 – 00:03:10:15

So I’m quickly going to show you what the goal is here, what we’re going to do. And then I’ll go into the designer, where we’ll go and do a much deeper dive on how we got to this point, where we could actually make this work. Okay, so first off, well, maybe choose the high-level switch, the good 1 to 2 control.

 

00:03:10:17 – 00:03:34:24

So we’ll fill in our name. As you can see, there is an auto-complete function there. That’s also something I can quickly show you. When we get to the form, we’ll select email. And when I select email, it automatically gives me an auto full for email. Okay. If I take this on and we select Telegram, it will give me a number option.

 

00:03:35:04 – 00:04:06:04

Okay. Very cool functionality built into the form nation perspective. We’ll choose High Switch, and we’ll say the process value is okay. We’ll say if the process value changes, which is the PV, let’s say, for the next, what are we now, 24th. So let’s say I don’t want to get notifications forever. Let’s make this up until nine.

 

00:04:06:04 – 00:04:22:13

So this one is not plus two, which is why it looks like this. And then we say submit, and then we show a success notification: “Notification added successfully.” Okay. So I can actually.

 

00:04:22:15 – 00:05:01:02

Escape this, okay. And then I’ll open what we call my simulation SMTP server. And it will tell you that you get a notification telling you. Hi Marcus. West Asia new alert notification for the high switch or plant one. Tank one is scheduled to alert in a state. Change intervals for the process value, which means if we now go and we change this to one, we should get a notification telling us whoa!

 

00:05:01:04 – 00:05:36:14

The high switch changes from false to true. Okay, very cool functionality. We can now basically change it back, put it back into auto, and we should have gotten another notification because it changed back there. You see changed from true to fault. So what this is useful for is think of it as a way to get alerted without you actually having to monitor or write any custom scripts for a specific device or a specific action or event that happens in your plan, right?

 

00:05:36:16 – 00:06:00:03

A technician may just fix a level switch, or they fix the valve; they want to know for the next shift or the next day if this device fails or if it goes into alarm. We obviously subscribe to the now, but you could subscribe to the alarm as well. If you go to High Switch, you can subscribe to the alarm.

 

00:06:00:03 – 00:06:21:08

You can subscribe to the interlock if there is an internal clock. So this is a nice way to get notified for a certain amount of time when for a certain state that you want monitored, we can obviously also do hourly, where it can send your hourly notifications for the tech and value you subscribe to, or you can do daily, where it sends you.

 

00:06:21:08 – 00:06:48:01

At a certain point in time, it will send you a notification that could be useful for a lot of the plants, which have their own built-in water treatment plants, and which means you’ve got water reservoirs getting water from the municipality. So you might want to know if there are water restrictions. What is the level of your water every hour on a daily basis for the next, I don’t know, week or weekend?

 

00:06:48:03 – 00:07:17:13

There’s also a nice thing for the more team leads or managerial positions on a plant without having to bother the engineers to go around custom scripts for them for certain things, or build a custom dashboard. Okay, so let’s dive deeper into how we built this. So the only thing on the gateway is that we’ve got a sequel, ITV, which is just the way we store who the users are that are subscribing.

 

00:07:17:13 – 00:07:50:04

And then we’ve got another table, which is the log every time it sends the notification. And then we also have a small SMTP server called Papercut, which is the one you guys saw here. This is just a local simulation, it’s not a service that’s running on my Docker for 25. Very secure, no password. Okay, let’s go to the fun part because I’m quickly going to take you through forms.

 

00:07:50:07 – 00:08:11:17

And just so everyone’s got an idea of how the forms work, why it’s so dynamic and why it’s so great. And then I’m going to take you to the more complicated script. Okay. So we’ve got a form. The cool thing about the forms component, for those that don’t know, forms was released in Ignition 8.3 as part of the update.

 

00:08:11:19 – 00:08:38:12

So the cool thing about it, the way inductive built these fires, is that it’s already responsive. Meaning if I change the form, it will respond to the screen size automatically. It’s also got a bunch of people widgets there for you that you can just choose from. So there is no custom building or anything like that. You can still customise your styles that you would have always wanted to.

 

00:08:38:13 – 00:09:08:00

As you can see here, we’ve got six widgets. So it’s one, two, three, four, five, six. And the submit button is there by default. So this would be our header. That’s not important. Then we can see it is important, but it’s not a point for us to look at now. So this is just our name and surname. As you see, I chose the autocomplete name okay.

 

00:09:08:02 – 00:09:53:12

So that is why when I clicked on the name in the form, as you can see here, it also filled in my name. So, we can then go to the notification type. So this one is also quite easy. It’s two basic ones, email and Telegram, okay. We’ve only got email configured, so we won’t be doing Telegram. So the cool thing about this is that on this contact info, you can look at what was selected for the notification time.

 

00:09:53:15 – 00:10:26:08

So, what we do, for example, is we go check what the value of the dropdown that was selected in the notification type is. And that will determine whether we are going to be email or telephone for the autofill, which is why we changed. So this is another cool thing about the forms: you can do bindings pretty much as much as you want to, and it really gets quite integrated.

 

00:10:26:08 – 00:10:51:10

You can always do too much. Now, one thing you’ll see every time we’ve got an ID here, which is called an alert. So after I went through this, I’ll show you why it’s so important to have an ID. By the way, you can’t have an ID if you take it away. So does the widget. So they do force you to have an ID, because it’s very integral for the data that’s being sent when you submit the form.

 

00:10:51:12 – 00:11:17:08

So what we’ve got here is a binding. And then this binding uses the view parameter that we’ve got on our form or on our component. And this view, for now, is the agitator. So what we’ll do is we can take this up, just go to the tank, and then we’ll say, Area. So tank one is an area.

 

00:11:17:10 – 00:11:26:14

When we go back to the form of our widget.

 

00:11:26:16 – 00:11:30:24

You’ll see.

 

00:11:31:01 – 00:11:58:03

We’ve got it, and I’m going to talk you through this. It’s actually not that impressive. So all it does is look at our data as it comes in. It will then look at our type that’s also coming in. Then it will say if that type is an area to execute this. If not, execute this. So this is an area. So we’ve got an empty array here called tags.

 

00:11:58:04 – 00:12:23:05

This is what we want to return in our dropdown. Then what we do is we browse our value. The value is the tag that we just put in, which is plant one and tank one. And then for each member that it returns in this tag paths variable here, it will then put it into a dictionary force where the value would be the full part of that tag part.

 

00:12:23:06 – 00:12:50:13

And the label will just be the name, okay. And then we add it to the tags, and then we run all the way through. So if you know. So, okay, you’ll see we’ve got the agitator, we’ve got the flow. And if you look here got the exact same. So this is how we can get. So it looks at your, at your text structure, which is why it’s so important to have a very good tag structure as well.

 

00:12:50:15 – 00:13:13:24

Okay. So then, once again, based on what we select in this drop-down, the binding here we’ll look at what we select here. So we look at the data of the alert, which is the idea I showed you earlier, of what it will do. Now it’s going to make sure that it’s of good value and return it for us.

 

00:13:1401 – 00:13:38:06

Otherwise, if it’s unavailable, it will say “not found.” This is just to make sure that it only executes when something is selected. So as long as the value is not found, we’ll browse it again. And it’s the same thing. We’ll just look at the tech bot, find the recursive elements, and then run through them to return this for us.

 

00:13:38:08 – 00:14:14:24

So if we play and we select the agitator, we can now see we’ve got amps for the agitator, we’ve got the long property. And once again, it returns the full tag part. Now, the reason why the ID is so important is for this project. So this is your data attribute in your form. So everything you type gets stored in this property, okay.

 

00:14:15:01 – 00:14:44:20

Not that it will make a difference, okay. Everything you type gets stored here. So the entire form data is built from this attribute. Meaning even if I change it here, it will change in the form as well. So the entire form is linked to this data property, which actually makes it so much easier to get data from. If you’re making bindings, you have to remember which widget it is, or even if you move the widget, the location of the widget.

 

00:14:44:22 – 00:15:03:10

As long as you keep the ID the same, and you call it an alert tag, which this one is. Now you can always point to this and always know you’re getting the value of the correct one that you want. Okay. So then, okay, we’ll select state change hourly. This just as you see gets added. This is on a notification trigger.

 

00:15:03:10 – 00:15:27:17

And then we’ll select an end time, okay. Now, another cool thing that you can add to the form, which I didn’t do in this case. This is a quick rundown on the forms for those who want to play with it a bit deeper later. We’ve got a validation section, we’ve got constraints, and you can make it quiet.

 

00:15:27:17 – 00:15:52:13

For example, the cool thing about the required field is that if it’s not filled in, your submit button will be greyed out automatically. So there’s no custom scripting or anything you have to do. It’s built into the form. Okay, so we’ve got our data now, and we want to submit, but when we submit, something needs to happen to this data. Something needs to use this data and do what we wanted to do right.

 

00:15:52:14 – 00:16:21:21

Write it into a database, and make sure you get subscribed. Make sure you get your emails. So we’ve got a submit section here which is not disabled. Then we’ve got two event sections. So you’ve got five component events and five submission events. A five-component event occurs when you right-click the form and select Configure Events. You’ll see an “Unsupported action performed” section.

 

00:16:22:01 – 00:16:48:05

That would be the file component event. And this would work like any other component in perspective, where you can just add any action and do anything right. But then we also have something called a file submission event. Now, the file submission event is very important for what you want to do offline. It’s also functionality of the form that is offline forms and offline forms will always write to the submission handler.

 

00:16:48:05 – 00:17:13:11

When it gets connected back to the gateway. We’re going to go deep into offline right now. But it is something cool to research further. So what we’ve got here is a submission handler, which is alert notifications for now. What happens here is that, in 8.3, we’ve got a gateway event called Form Submission and Perspective.

 

00:17:13:14 – 00:17:54:03

And here you can create as many scripts as you want. Okay. These scripts are the handlers that they are talking about. So when we go back to the form, we just make sure we submit to the load notifications form. So this is what happens. You click submit, and your data is sent to the alert notification.

 

00:17:54:05 – 00:18:30:08

Did you disconnect? Yeah. Sorry. I had a small disconnection. Okay, I’m going to continue. Not sure why everyone lost me. But it’s okay. Yeah. Everything looks fine. Okay, cool. So just to quickly run back. So we’ve got the gateway now has a perspective. It’s got a form submission handler. You can create as many scripts as you want there.

 

00:18:30:10 – 00:19:00:24

And then you can. This, for example, would be the script that we are going to be using. And then on this script, we just need to make sure that it is the one we specify here. Okay. So let’s open this script because this is where the magic starts happening. So here we’ve got our script. We’ve got a parameter called data.

 

00:19:01:00 – 00:19:28:24

That is the exact same parameter you saw in the form. Data is data, okay. So it’s quite easy. You can just use the data parameter to work with. And then I did call it payload here. I don’t know why I did that. Probably because I was used to perceiving the same message component. But I still did rename it back to data anyway, so it’s a bit of a waste.

 

00:19:29:00 – 00:19:52:10

Okay. So we’ve got a logger just to make sure we can log our events. That’s happening. Then we get all the information we can, get our header property, and get the drop-down value. We check if it’s an email. If it’s an email, we get the contact info, and we get our load tag, which would be the first part.

 

00:19:52:13 – 00:20:16:16

And then we get our load trigger, which is the full part that we want to fire on. And then we’ve got the notification trigger. This is the one that said state changed or hourly or daily, right? So we can get the start and end times. This is obviously very important because we want identification to end automatically.

 

00:20:16:16 – 00:20:36:01

So if you subscribe for three days, you don’t want to go in, and it just wants to. You want to know that that’s just the last notification. We’re not going to fire again. And then it’s done, okay. Yeah. We just convert the formats of the date and time, we log what we found, and then we’ve got our trigger type.

 

00:20:36:03 – 00:20:45:15

Then what we do is we add this notification, okay. So what we’ll do is we’ll go to the query browser.

 

00:20:45:17 – 00:20:54:15

And we’ll say this is our user notifications. And as you see, this is the example we did earlier.

 

00:20:54:17 – 00:21:31:20

Where we subscribe and trigger type in the start time of the alert value tag. And then we can also go to the notification log just to quickly show you. And this is the number of times it’s been so far. Okay. So this is the identification. This will add you to the user notifications table, okay. You will then get. So just to go through that quickly, we’ve got our normal scripts where it’s add notification, okay.

 

00:21:31:22 – 00:22:08:19

This is just a query into the DB, and that is it. The important part is the section here where we say if the condition that we wanted to file an estate changed, we fire the script. Now, what this script does, and we’ll go through it now, is it changes, it adds a part to our tag chain script.

 

00:22:08:21 – 00:22:33:15

Now, for those of you who don’t know or haven’t seen it yet. So as a gateway event, scripting where you can do scheduled scripting. So we’ve got, for example, daily notification, this is the same one you would subscribe to in the form, it runs every day at 7 a.m., it checks if you subscribe to daily notifications. It will then check which tags you are subscribed to.

 

00:22:33:19 – 00:22:52:06

Go get the value of the tag, and they’ll say hi, this is your tag value, and then you’ll get your next one. The next day, I will leave the exact same thing, except it files every hour. Now, the tag change is a bit different. The reason why the tag change is a bit different is okay, we’ve got our triggers for this.

 

00:22:52:06 – 00:23:16:22

For us, it will only be value, but you need to manually put in the tag paths that you want this to fire on. Now, of course, you can go and add the entire tank to one folder and then use an asterisk as a wildcard. The problem is, every single tag or value that changes, even the team members, will fire the script.

 

00:23:16:22 – 00:23:40:22

So that’s just going to put a massive unnecessary overload on your system. Okay? Resource-wise. So what we want to do is we want to dynamically and automatically add values in here, but we also want them to get removed when we are done subscribing or when there’s no one subscribed to the tag value anymore. So how do we do that?

 

00:23:40:23 – 00:24:11:22

We’ll go back, go to the notifications form. We’ll say it’s notifications due to the edit tag change pop-up. And we wanted to add. So we’ll go here to look for the part about the edit tag change. That’s the section, okay. This is probably what most of this demo is about, the section here.

 

00:24:11:24 – 00:24:39:08

So we import a few things. One very important thing we import is we import the ignition gateway. The reason for this is so that we can get the gateway context. Now the gateway context just gives us a bunch of functions to access on the gateway. One of them that we actually want is the data directory. The reason why we’re getting it like this is that it just makes it so much easier if someone installs it in a weird place.

 

00:24:39:10 – 00:25:15:16

But it also makes it easier for Ignition to run on different operating systems. So this way we know we’ve always got the true data directory. Okay, so we get the ignition gateway context. We say context that gets us the manager, get the data directory, and get the part. Then we get our project name, and then we join it. The reason we joined them is that, for those who don’t know, 8.3 is now file-based, meaning everything we do in our project is accessible in a file.

 

00:25:15:16 – 00:25:40:09

So if you go to your data directory, projects, and go to this project, you can see your views, right? You’ve got forms. This is our actual form. You can also go back. You can see the script. This is our script handle submission.

 

00:25:40:11 – 00:26:07:22

You can go back and turn it in. Yeah. For example, we’ve got scheduled, then we’ve got our daily notifications, like we just saw. You can see these actual scripts here. You can edit them. But the important one is the tag change. So this is our new script path. So this is the actual script. So if you were to open this, you would see the exact same script.

 

00:26:07:23 – 00:26:18:07

We see that. Sign up, okay. Now, if you open the resource.

 

00:26:18:09 – 00:26:45:20

You would see that it’s the same thing. It’s those trigger types which is ours is just a value change. It was created by me. This is the last modification signature, then path this empty, and the file that needs to fire is this okay. And override will restrict that. The scope is the gateway. So this is the one we want to be adding to and removing as we go.

 

00:26:45:21 – 00:27:13:05

Now, there are a few things to it, but I’m going to talk you through it. So what we then do is we join our paths. We edit the resource JSON file, or we get the resource JSON file first. Okay. Here are some functions we’ll go through one by one. So let me also close these so we can just focus on our important one, okay.

 

00:27:13:10 – 00:27:38:17

So then what we’ll do is we’ll get the input, which is the tag part, okay. Also look at remember we said tag button. We said add. If it’s added, we’ll add, and we’ll go there now. Otherwise, if it’s removal, they do the same thing; one adds, one removes. Okay, pretty simple. So we’ll go to add a path, which is the section here on Add Path.

 

00:27:38:18 – 00:28:07:07

What we do is we look at our data, and we say load JSON first, okay. So, in load JSON, we read the file as a string. And then we’ll just pass it so that we can actually use this data, and then return okay. So we can actually read. So then what we do is we go look in this data if attributes are available and if the path is in the data attributes.

 

00:28:07:11 – 00:28:38:04

So if we go back, we open. You’ll see there is a section in the JSON called attributes, and paths are in attributes. So we just want to make sure this is available there before we do anything. If it’s not available, we won’t be doing anything, okay. So if it’s available, we get the pass that’s currently there. And then as long as the one that we selected is not in them already, then we’ll add okay.

 

00:28:38:05 – 00:29:03:16

So if it’s already there, it’ll just exit and continue. You’ll just be added as a new user to the notification for that tag, okay. So if it’s not, it will add it to the path, and then we’ll save the JSON. Now I’m not going to go too deep into saving the JSON. One important thing when we do save is so let me open is that we compute a new signature.

 

00:29:03:16 – 00:29:33:00

And this is the modification signature that it creates. That is quite important. Well, for me, it didn’t want to actually pick it up if I don’t change the modification signature. So we did compute a new signature. And it seems to be quite okay whether this is a good thing or not, I can’t tell you. I’ve actually never shown this, but it computes new H25664, and then it saves it for you, and then after it saves it for you.

 

00:29:33:01 – 00:29:50:21

You’ve now basically added a new file to this. So if we close our hearts, let’s just go to the gateway. Then we set our trial.

 

00:29:50:23 – 00:30:13:01

So if we close and just put everything, as you can see, this was added. We didn’t type this email correctly. We didn’t do anything. So all I did was pull changes from the gateway, and the tag was here. So in an hour. It will also be removed automatically. And then you can pull it again, and it will be removed.

 

00:30:13:03 – 00:30:44:08

Obviously, a thing to consider is that we are busy changing an actual file on the system. So yeah. So what happens? A lot of sorry, what happens if three people make a change to the file at the same time? That is actually. Yeah, that’s exactly it. So we are busy changing our file. You know it’s cool. It’s nice if three people submit a form at exactly the same time.

 

00:30:44:10 – 00:31:14:08

It’s at the moment, the way my system is set up, it’s definitely going to be a thing of, you know, the first one wins or the last one wins, actually, depending on which one comes through first. So a better way to actually do this is to add a notifications form. Instead of having your script, go straight to the edit tag change path.

 

00:31:14:10 – 00:31:39:23

The section here you would actually rather create an event in an event stream. If you look at the Event stream and you say from okay, this is not a complete class. But the cool thing about the event streams is that it’s got a buffer. So in this way, we can make sure that all the events come in. If it’s multiple events at the same time, we can have them till here.

 

00:31:40:00 – 00:32:07:12

Let’s say a maximum of ten. Right. And you can make them wait for three seconds, but you can have them wait. And then after that, we can have them do the exact same thing, right, to a database and a script as well. And you can also put your script. Yeah. This is something I actually realised later on, but it would be a much better way to handle concurrent users, and especially in a plant environment, to have current people submit at the exact same time.

 

00:32:07:14 – 00:32:39:04

I would definitely look at event streams. So yeah, then we’ve got our gateway event, we’ve added it, we’ve added a new tag. Now, what it does is it goes, and it looks at what time we’re getting, and we get our tag part. So what happens is when this fires, you’ve got a fixed ball. Let’s say by that time you’ve got a ten-tag policy in each tag pod, which will create its own or fire the script on its own.

 

00:32:39:06 – 00:33:08:09

Okay, so every time it changes your tag part, you can access it from this event object here. Which is why, say, get part. This gives us the tag part that fights the event. What we then do is we query the database user notifications to see who is assigned to this tag pod at our current time. Okay, so obviously hiding the start date and time, but still, before the end time should be now.

 

00:33:08:11 – 00:33:40:11

Then it looks to see if it finds anyone. If there’s no one subscribed to this tag part, it will go ahead and remove it anyway. Which is the same thing we saw earlier. To remove it. Then, if it’s returned more than one person, it finds all the contact details for that person, finds the value of our tag, currently sends an email, which we saw multiple times coming through, and it seems like a notification.

 

00:33:40:13 – 00:34:26:03

Now for a quick overview. This is. Yes. Sorry, Marcus. Yeah. We’ve got a question here from CJ Bernard. He says many ways to skin a cat. But it is also possible to programmatically use the alarm notification module to dynamically create a new pipeline for the user submitting the form. Yes. Now that is a very good point. So, depending on where you want to use it, for example, if we use the event stream, especially for multiple submissions, you can fire in a gateway event.

 

00:34:26:03 – 00:34:55:19

But this gateway event can then trigger your alarm notification module alarm notification pipeline, depending on which one it is. You can also have it go through the alarm notification pipeline first to an event stream, and then to the same event stream. So, as you say, I see you say many ways to skin a cat. So for me, this was easier to consider, as I wanted to show a way to do it for people who don’t have the normal.

 

00:34:55:21 – 00:35:19:24

But the notification module is a cleaner way to standardise, and I have templates that make sure it always follows the same thing, especially if it fails. Anyone else retry? It’s a perfect way to do that. Thanks for the question. Cool. So let’s quickly go here. So what we’ve got is the user pulls the form, okay.

 

00:35:20:00 – 00:35:46:01

We work with JSON. We extract our fields. We get our date times. We write to the database, okay. So we’ve got user notifications. The user notifications will be the ones that get accessed from our daily scheduled hourly and our state change scheduled. And depending on which one is the one that’s firing, get the data and send an email, in our case, well then, right.

 

00:35:46:02 – 00:36:11:12

Do the tag change listener, edit the tag, change pop singer confirmation email, and it returns true. Okay, so on the notifications, there’s one I usually don’t even test or show. The reason is that there’s no, you know, you can do in these scripts that you want. You can have these be named queries. I wrote them here.

 

00:36:11:14 – 00:36:38:10

But all this does is run every day at seven, get our users, and then send our email. So if you go look, just the last time, something very important to consider. And even for me, it was quite the change in the way that the tag changed parts.

 

00:36:38:12 – 00:37:08:09

The compute signature is very important. And these scripts, this project actually will share with anyone who requests it. We can actually I guess the one we can actually put it on the ignition exchange as well, which makes it actually so much easier. But before that, if anyone wants this, the project, the entire project, you are more than welcome to have it.

 

00:37:08:11 – 00:37:44:22

I really hope this is something that’s useful, even if it’s not to the exact degree that we implemented it. It’s hopefully useful for maybe giving you an idea of how to implement something or anything. So one thing that I would just like to also think about is what I didn’t consider, which is, for example, how you would want to cancel.

 

00:37:44:22 – 00:38:20:24

So it might be a good idea to have the user have a cancel button. You know, if they want to opt out of the notifications ahead of time, it will basically just send an email or a request through, telling them to remove that so they can be removed early on. So what we did was, after we created the form, because we created the form in such a dynamic way, just looking at the tag paths when we added it to our main view.

 

00:38:21:01 – 00:38:57:01

Which is 91 tank one, which is our main tank plant; it was quite easy. We could just add the view, but then what we did was on our face plate. You usually have your path anyway coming into your drop configuration. So it’s already connected to a Udit. So what we then do is we just use that on our form and show you.

 

00:38:57:03 – 00:39:01:19

Nope, not this one.

 

00:39:01:21 – 00:39:26:16

So we’ve got a forms button. And then all it did was we said we needed to click this button. We’ll open the form and use the path of the page split that it’s already using for all the other values. And this way, we can pretty much click on anything and have the form available for that device.

 

00:39:26:18 – 00:39:51:08

And that is what we have to show you today. That’s a that’s really awesome, Marcus. It’s like a form is no longer just a form capturing data. It’s becoming a full application on its own. Yeah. Yeah. The forms are really powerful. And I wish we could go offline a bit at some point. We went offline a while ago.

 

00:39:51:14 – 00:40:24:14

For the people who attended this with engineers, for example, this form that we built today will not work the way you want it to in offline mode. The reason for that is the bindings that we’ve got on the form, especially these ones, the ones that do the text. Unfortunately, bindings do not fire offline at all because bindings fire on the gateway, so you cannot see the bindings, or the bindings cannot talk to the gateway for the current fire.

 

00:40:24:16 – 00:40:55:20

But if you are interested in offline forms, please reach out to us. We do have some workarounds for creating pre-filled forms, especially using the ones that have bindings to prefer them. Prefer the form for you. So you’ve only got a static JSON form offline that’s already filled with the dynamic values for you. There are obviously different risks to that, but we are more than happy to talk you through it and chat with you about it.

 

00:40:55:22 – 00:41:12:06

Any questions from anyone on the call on the way? But not, yeah. Before we end this session.

 

00:41:12:08 – 00:41:16:03

Looks like there are more questions.

 

00:41:16:05 – 00:41:47:04

Okay. Cool. Okay. Thank you, everyone. Yeah. Thank you for joining us today. Obviously this one. So it’s actually ready for the exchange. I can submit it. Maybe I can just clean it up a bit and submit it for the weekend. But if you want the project ahead of time, you can reach out to me or Luan or anyone on LinkedIn, on our emails, or on our website.

 

00:41:47:06 – 00:42:09:20

Please do reach out to us, and I can get you the project at your time. But on the exchange. The exchange. Unfortunately, even after you submit, it takes a while for them to approve it. So it takes like three weeks, I think, on average, but I can definitely send it to you earlier if you want it. Yes.

 

00:42:09:22 – 00:42:31:11

Okay. I’m also dropping Marcus’s email in the chat so everybody can just contact them. Yes. Please do. Awesome. Okay, everyone, have a wonderful Friday. And yeah. Thank you for joining us. Awesome. Thanks, guys. Cheers.

 

You might also like