Connect with KAASM for news, updates, company culture, and technology trends.
Most likely you are working from home just like the rest of us. Considering your disposition as a social animal and the potential onset of cabin fever. We wanted to do something cool for the remote working community. Join us for a St. Paddy’s Day happy half-hour (virtual). No frills, just the best half-hour of your life at the virtual pub. Public message chat will be available. And music, too!
Here is the link to our virtual happy hour – Starts at 3:00 PM PST
Sadly. This event has ended. Cheers!Read More
Do you drink water? Do you take showers? Have you turned the lights on in your house? Chances are you’ve indirectly touched an industrial control system. Industrial control systems power our daily lives, and these systems must be protected from cyber-attacks. Over the past 10 years, I’ve been fortunate to bear witness to the increased complexity of control systems and the ever-evolving nature of Industrial Automation Control Systems (IACS). As part of the industrial automation community, I wanted to share with you a few cybersecurity resources that I’ve employed over the years as a contribution to strengthening industrial cybersecurity awareness, education, and resilience.
Control System Modernization
As time passes programmable logic controllers, remote terminal units, intelligent electronic devices, and SCADA systems are continuing to modernize, evolve, and adapt. Many of today’s modern devices and software are delivered with the ability to connect to the internet via various technologies i.e. ethernet ports, embedded webservers, and wireless functionality. These common examples aide in widespread internet connectivity and allow for greater transparency and cost savings. However, they also increase cybersecurity risks.
“It is not an if, it is a when statement.”-Cybersecurity Community
What is the Cybersecurity Threat?
I have heard this comment time and time again amongst the cybersecurity community with good reason. According to Business Advantage State of Industrial Cybersecurity (2017), 54% of companies experienced an industrial control system security incident within the past 12 months, and 16% had experienced three or more. All an attacker needs to compromise a system is one access point. Even if your system is completely disconnected from the internet, attackers can gain access to your local area network and wreak havoc in a number of different ways. The following list of common vulnerabilities was compiled by Idaho National Laboratories. These vulnerabilities were routinely discovered during testing at their National SCADA Test Bed.
Understanding and having an awareness of the threat is the first step and the beginning of educating yourself on how to protect your IACS system. Where do we go from here?
Cybersecurity Action Driven by Regulation
I still to this day see common vulnerabilities every time I am on a customer’s site. Simple things like SCADA servers not under lock and key, unmanned HMI terminals that are logged into, and generic username/passwords (operator/operator). The threat is very real, just google search “ICS attack” to see any number of attacks on major industrial automation control systems. Recently, the threat hit home with the WannaCry ransomware virus taking one of our automotive customer’s production factories offline. For years cybersecurity has been talked about in our industry and it never really seemed to drive action, however, with cyber-attacks growing at an exponential rate, there have been two key events that I’ve taken mental note of because I believe they are going to drive cybersecurity change through regulation.
Department of Homeland Security Executive Order
This is directly from the DHS website. In May 2009, President Obama declared our digital infrastructure a strategic national asset, recognizing that protecting the networks and computers that deliver essential services such as our oil and gas, power, and water is a national security priority. President Obama is committed to doing everything in his power to protect these systems from cyber-threats. In May 2011, the Obama Administration sent Congress a cybersecurity legislative proposal. Today the President signed an Executive Order (EO) on Cybersecurity and a Presidential Policy Directive (PPD) on Critical Infrastructure Security and Resilience. These actions will strengthen the security and resilience of critical infrastructure against evolving threats through an updated and overarching national framework that acknowledges the increased role of cybersecurity in securing physical assets.
State-Mandated Cybersecurity Requirements
Our industry has a track record of being “behind the times”, however, to my surprise in 2016 the New Jersey Board of Public Utilities created, to the best of my knowledge, the first state-mandated Utility Cybersecurity Program requirements. This excerpt is from the State of New Jersey:
“The New Jersey Board of Public Utilities (“Board”) initiated this matter in order to establish requirements to mitigate cyber risks to critical systems of electric, natural gas, and water/wastewater utilities (“Utilities”). As technology advances, Utilities’ computerized systems are increasingly susceptible to cybersecurity attacks, including data breaches, corporate theft, and sabotage perpetrated by actors throughout the world. Due to the critical nature of the Utilities’ services, the Board recognizes that action is necessary to mitigate cybersecurity risks to Utilities’ computerized systems. In addition, to the extent information is shared and provided by the Utilities; the Board recognizes that such information is confidential and sensitive and requires appropriate confidentiality protections.”
With the US government creating critical infrastructure oversight, it is just a matter of time before IACS systems need to adhere to fully adopted state and federal cybersecurity regulations.
How long until cybersecurity regulation is adopted by other utility districts? Could this regulation be the cybersecurity trend to drive vendors to improve their products, IT managers to become more familiar with IACS, and OT systems engineers to comply with cybersecurity requirements? Only time will tell, but in the meantime, you can prepare yourself for a future that sees no end in sight to cybersecurity threats.
Getting Started with Cybersecurity Standards
First and foremost, if you are an industrial automation control systems professional, utilizing cybersecurity standards for system deployment and maintenance is beneficial. Both the industrial and commercial markets have established cybersecurity groups with focused committees that organize best practices and standards. There are two authorities worth noting that I recommend familiarizing yourself with. The first is the National Institute of Standards and Framework (NIST). The NIST Cybersecurity Framework is now used by 30 percent of U.S. organizations, according to the information technology research company Gartner and they are considered the cybersecurity authority.
NIST standard 800-82 is where you can find Industrial Automation Control System information. This particular standard has branched off and is mirrored by ISA/IEC 62443 (Formerly ISA 99), which is the second cybersecurity resource worth noting. Information Technology (IT) professionals are typically more familiar with NIST and Operations Technology professionals (OT) typically reference ISA/IEC 62443 industrial automation control system cybersecurity standards. Both NIST and ISA/IEC 62443 are valuable resources to leverage. Here is an ISA/IEC 62443 graphical reference model that depicts the status of the work in progress cybersecurity standard.
Free Virtual Training
If you are part of an IACS operations team, IT professional, or OT professional there is a fantastic virtual learning program provided by Idaho National Laboratories and available for free. This free virtual learning covers a range of cybersecurity topics from operational security to defense in depth. The content is accredited by the International Association for Continuing Education and Training (IACET) and is accredited to issue IACET Continuing Education Units (CEUs).
If you’re into documentaries, I highly suggest Zero-Day. It focuses on the self-replicating malware Stuxnet and is both insightful and entertaining.
At a glance, I hope these resources help improve your overall cybersecurity awareness and knowledge. What cybersecurity resources do you use? Please share them with us in the comment section below.Read More
Why DevOps with WinCC OA is cool!
In the IT world, you would NEVER, EVER, make edits to a production system without going through proper quality assurance change acceptance. However, in the industrial world, for some reason, it has been acceptable to test and commit changes on production systems without the need for isolated development testing prior to deployment. Shouldn’t we be asking, why?
Is it because…
- There is not enough time to set up this type of development environment;
- IT tools are not readily available for use;
- There is no awareness of DevOps tools or how to use them (know-how);
Understanding that IT and OT worlds are converging at an exponential pace, we need to help educate our industry about DevOps practices and the tools that are readily available in modern SCADA packages like WinCC Open Architecture. In our previous DevOps blog posts, we showed you how to integrate Jenkins and Git into your WinCC OA projects to facilitate automated unit testing.
In this blog post, we are going to bring it all together by setting up Continuous Deployment utilizing WinCC OA, Git, and Jenkins. This tutorial expects you to have the same set up as in the previous blogs and to have followed the previous tutorials to set up both your Git and Jenkins integration.
- Git must be integrated into your WinCC OA environment (see: DevOps: 6 Steps to Integrate Git into WinCC OA)
- This tutorial uses a GitHub repo. You must have a GitHub account setup.
- Jenkins must be downloaded and installed on your development machine (see: DevOps: Integrating Jenkins into WinCC OA).
- Your Jenkins server and production WinCC OA server should be on the same computer.
Step 1: Create a class to hold your Unit Tests
WinCC OA does not natively interact with an outside system like Jenkins to manage development deployments and it is good practice to use something like Unit Tests to determine if your code should be deployed to a production system. I have modified the code from our previous blog post and created a new class to accomplish this. The major changes from this file to the automatically generated one from the High-Speed Programming module is that I am using the base level function of oaAssertEqual() to get the result of pass or fail instead of writing it to the project UI. I have two tests in this file and both are very simple and I know they will pass, in a real project these would need to be written in a way so that they would help prevent errors.
Step 2: Create a WinCC OA Web Server for Jenkins to hook into
We need some way for Jenkins to integrate into WinCC OA and a webhook is the easiest way to accomplish this. The following script will start a web server, make a single endpoint available, create an instance of the TstUnitTestDemo class from before, runs the two tests, and return a result.
Step 3: Add your server to your console
The easiest way to do this is to drag the file onto the Console and it will automatically add it. Make sure that you start the Control Manager.
Step 4: Update your Jenkins file
This Jenkins file has a little bit of logic in it mostly checking if the tests from WinCC OA pass or fail and if they do pass to run a git pull command.
Step 5: Set up a development environment
This is a little bit of a chore because not every file is stored in the Git repository, however, what worked for me was to copy the project to a different computer, deleting the .git folder, git cloning my repository, and then copying those files into my project. Git cloning will link your repository to your local project.
Step 6: Makes changes and push them to the repository
If everything is set up correctly when you make a push to your git repository Jenkins will recognize the change and execute your scripts. After Jenkins has run the scripts, if you look at your production system you will notice the changes to Scripts or Panels are now live on your production server.
Note(s) and Limitations
This set up is very limiting but exposes the power of these tools working together. I would also connect something like Slack to your Jenkins to notify your other developers that changes have been made. Also, this type of Continuous Delivery is only as good as the guidelines in your development team’s practices. If the team is lax on the Unit Tests this will not do you much good. Another thing to keep in mind is that the git version control set up inside of WinCC OA is built to track changes in panels, pictures, and scripts.Read More
Over the past few weeks, we have been showing how to use DevOps practices and tools inside of WinCC OA. If you are new to this DevOps series of posts, feel free to check out these additional blogs:
Today we will take a big step further and integrate Jenkins into the development process. This tutorial expects you to have a few things setup and to understand a few others:
- Git must be integrated into your WinCC OA environment (see: Git integration)
- This tutorial uses GitHub. You must have a GitHub account setup.
- Jenkins must be downloaded and installed on your development machine (https://jenkins.io/download/).
- You must have written a unit test utilizing the High-Speed programming method inside of WinCC OA.
Step 1: Setup Jenkins to Connect to GitHub
The first thing you will need to do is generate a token for Jenkins to use. To do this, you will need to navigate to GitHub to generate a token at https://github.com/settings/tokens/. Create a new token and give it the rights (at minimum) to read the repository.
Once you have completed this setup, you will get a key that looks like this one:
Do not lose this key. You will not be able to get it again.
Step 2: Connect Jenkins to GitHub
Next, you will need to go into your Jenkins server and allow communication from Jenkins to GitHub. Inside the credentials options, you will need to add two new global credentials. One will be a Secret text and the other will be a Username and password.
For the Secret text credential, place the generated key from GitHub into the Secret input field and give it an ID of GitHubToken and hit OK.
Now complete this process again, but this time make it a Username with a password. In this one, you will enter your GitHub username and password.
Once this is done, restart your Jenkins server. Finally, we will establish a connection between GitHub and Jenkins. Click the Configure System from the Manage Jenkins menu option.
Scroll down the screen and find the GitHub server option. Select the Add GitHub Server dropdown, give it a name, and select the GitHubToken we created earlier.
Test the connection and then click Save on the bottom of the page.
Step 3: HTTP Request Plugin
We will be using REST calls to communicate with our WinCC OA instance. Adding in the HTTP Request Plugin makes it very easy to do this. Navigate back to the Manage Jenkins screen and click the Manage Plugins link.
Click on the Available tab and search for HTTP Request Plugin. I already have it installed so I am on the Installed tab.
Step 4: Open WinCC OA and Create a Server to Hook into Jenkins
For ease of use, a file will be included to make this step easier. What UnitTestServer.ctl does is creates a simple HTTP server inside of WinCC OA and open an endpoint for Jenkins to hit. The startTestsRecursive() function is a built-in WinCC OA function that is used to run the Unit Testing for the High-Speed Programming module. One note is that you will need to change the directory in the startTests() function to your own project name where your tests live.
You can download the file here: UnitTestServer.ctl
Next, take this script and add it to your WinCC OA console so it can be started.
If you are successful you should get the following message from the WinCC OA Log Viewer.
Step 5: Make a Jenkinsfile
In your Git repo make a new file called Jenkinsfile. It cannot have an extension. Place it at the same level as your .git folder. I make my Jenkins with two commands that do the exact same thing, but gives an example of how different things can be done at different build processes. Below is the code for a base Jenkinsfile.
Step 6: Create your Jenkins Pipeline
From your Jenkins server select New Item, then select MultiBranch Pipeline on the next screen.
Inside the Pipeline configuration, add the Branch Source GitHub. Select the credential dropdown to be your GitHub login credentials and enter in the repository that you added the Jenkinsfile to int he URL field.
Finally, change your Scan Multibranch Pipeline Triggers to run periodically and click Save at the bottom of the page.
Step 7: Make a Change and Test it Out
With both the Jenkins Pipeline and the UnitTestServer.ctl in WinCC OA running, make a change in your project and push the changes to your GitHub repo. In Jenkins you will see something like this:
In WinCC OA your Log Viewer will show this:
This is a simple example and one of the many things that can be done with WinCC Open Architecture, Git, and Jenkins. There are possible ways to streamline this even more with additional plugins and other ways to accomplish the exact same result. Think of this as a starting block that you can use to automate your process even more.Read More
Enterprises throughout the world are rapidly starting to adopt DevOps strategies, but what does that mean? DevOps stands for Development Operations, and basically means the convergence of the Dev team, the folks creating the code, and the Operations team, those using the code. Historically, these two business units operate as silos, which has a negative impact on many factors within the organization. Some of these include slower dev times, slower time to fix security issues, and lack of collaboration between developers and users.
DevOps is really about creating a culture of collaboration and productivity by automating as much as possible, resulting in a faster time to market or more frequent releases. Enterprises that already have a DevOps mindset have a huge competitive advantage because of their ability to innovate faster, respond to business needs, and collaborate throughout the organization.
Optimal DevOps Flow Chart
There are many tools out there to help support an organization’s DevOps strategy. Below are the most commonly used DevOps management tools and a few programs within each category.
- CI/CD Management: Jenkins, Bamboo, TeamCity
- Source Code Management: GitHub, Bitbucket
- Configuration Management: Chef, Puppet, SaltStack
- Container Management: Docker, Kubernetes, Amazon ECS
- Development Environment Management: Vagrant, VirtualBox
- Code Performance Management: New Relic, Splunk
We’ll cover more of the above in future blog posts. What are some of your favorite DevOps tools?Read More
As the role of DevOps becomes more and more prevalent in the world of automation and industrial SCADA/MES/IIoT software, one of the first steps that should be taken into consideration is setting up different levels of environments for your developers to utilize.
The easiest answer to this question is to prevent downtime from a poor deployment to production. Each level will add testing confirmation and check-offs that should be completed prior to the next step. The goal is to eliminate as many bugs or defects before your development is deployed into the actual production environment. If a bug is found in your test environment, the code can simply be sent back to the developers to fix it before letting it move on.
DevOps tools that can help
Automated Unit Testing
Make sure your industrial software supports automated unit testing in some way, this will help catch some bugs before it even reaches the next environment. An example of unit testing can be found in this blog: High-Speed Programming
Vagrant is a software that is used to create and reproduce identical environments so that you don’t run into the issue of ‘Works on My Machine’. There are two benefits of utilizing Vagrant:
- All the developers are running the exact same ‘stack’ of software
- Your DEV, TEST, PROD environments can be configured to be 100% identical
Git is valuable in this set up to make sure that the code that is in one environment is in all the environments. When a developer makes a change and pushes it to a repository, all other developers can be notified of this change and can then pull down the code. This will help prevent two developers from having different code when trying to deploy it PROD.
BONUS: Version control!!
Jenkins or similar
Jenkins is an open-source automation server that can be used to help automate projects. Jenkins’ main purpose is to eliminate manual processes, consequently preventing errors from occurring, think of it as Automating your Automation. Below is a possible workflow using Jenkins and GitHub.
The cost could be the major player in deciding not to use separate environments. Every environment will cost additional money to configure and implement, along with the development cost to run a proper process. On the flip side, depending on the critical nature or the scale of your project, this DevOps set up could prove to be invaluable.
Culture will be another major factor in setting up multiple environments. To keep these systems separate, gatekeepers need to be put in place to make sure a process is followed. Following a development process may pose its adoption challenges.
Even with these downsides, the benefit of preventing many downtimes should outweigh any possible complaints. To learn more about other DevOps topics check out our other blog posts:
If you’re interested in KAASM setting up a test environment for you? Contact us for a Digital Transformation engagement.Read More
WinCC Open Architecture (OA) has supported Unit Tests for quite a while now, however, when Siemens released version 3.16, one of the new features was High-Speed Programming. This new feature set included a tool for project documentation and the ability to auto-generate templates for faster creation of code. In this blog, we are going to look deeper at the new way to run and write Unit Tests inside of the graphical editor (GEDI).
Step 1: Create a Script
The first thing we need to do is create a script, or class, that we would like to unit test. I made a very simple script with two functions inside of it. If we were using a Test-Driven Development (TDD) methodology writing the functions would come later. Learn more about TDD
Step 2: Auto-generating Testing Script
Once you have the script created, all you will need to do is right-click that script and select the Open Unit Test option. This will autogenerate a WinCC OA Test class which is used to run the unit tests.
Here you can see the created script and libs.
Step 3: Define your Tests
When you open the autogenerated script you will see a group of code already written. The parts that will need to be added to are on line 28 and inside the startTestCase() function. Inside the makeDynString on line 28 you will need to add in names of the tests you would like to run. These tests should be small and only test a small unit of your code. I’ve added “add” and “getDataPoint”.
Step 4: Write the Tests
Now that the tests are defined it’s time to actually write them. Because we’ve added two entries above we need to add two cases to the switch statement. Inside of the “add” case, I did a simple assertEqual(6,result); . This means I am testing that 6 equals the result of 2 plus 3. This test will fail because this is not true. I also wrote a simple test that reads a datapoint and asserts that the value is what I expect it to be.
Here is the entire script.
Step 5: Run the Test
Now that the tests are written we can now run them by right-clicking the test script and selecting Start Tests from the options. This will cause the script and tests to run and display the results.
Step 6: View the Results
After we ran the test, from inside the GEDI we can see the results. We have two fail and one success judging by the thumbs up or thumbs down. The two that failed were the “add” and the “UnitTestDemo_”, which is a default autogenerated test that can be deleted.
For those that have been using Unit Tests inside of WinCC OA, none of this is to new because of the long support of Unit Tests in the platform but the new High-Speed Programming set of tools will make it easier for others to begin seeing the benefits of Unit Testing.Read More
As SCADA, MES, and HMI projects become larger, more complicated, and interact with many different systems, the time has come to start thinking about adopting TDD and Unit Tests into your development lifecycle.
What is a Unit Test?
A Unit Test is simply a set of code that tests another set of code. Usually, Unit Tests are used in pair with additional DevOps tools to automate the running of these tests and to prevent deployments if one or more of the tests are unsuccessful.
What is TDD?
Test-Driven Development or TDD is a programming concept in which you write the Unit Tests for your project before you write the code that is needed to run them. An example of this would be, knowing that you need to add two numbers in your program. So you would write a test named something like test_add().
You would then run this test, and it would fail because you haven’t written code for it yet. Your next step would be to write the minimum amount of code needed to make this test succeed.
If you were to now run that same test above, you would get a successful test result. You can now go back into your add() function and refactor it by any means necessary but to still fall into good coding practices.
Downsides to Unit Tests and TDD
More time is usually needed to write good tests. This is one of the biggest arguments against Unit Tests and TDD but it should not be. Yes, more time is being spent upfront with the design of tests and functions but it also allows you to easily test if new code that is added breaks existing code by simply running a test. This makes it great for entry-level developers because it is easier for an upper-level developer to know at a moment’s notice if code is not working correctly.
Culture change. TDD is not a one developer task, the entire team must utilize this method for it to be completely successful. This is usually a problem because most developers just want to code and worry about “testing” later. This type of attitude will make this methodology pointless.
These examples were very simple and most likely not applicable to a real-world environment, but the concepts are very important, especially with SCADA/MES systems interacting with other systems in the IT realm. One thing you should ask yourself; if your IT level systems are expected to have automated testing attached to them, then why not your SCADA/MES system?Read More
The “Roaring Twenties V2.0″ has begun, and with that, we must say farewell to Windows 7. This is a scary thought, knowing how many organizations are still standardized on Windows 7. Aside from Internet Backgammon and Checkers, we can also say goodbye to security updates and Microsoft technical support.
Here is What you Need to Know
- Microsoft’s 10 year support period has ended, effective January 14th, 2020.
- Technical support and software updates are no longer available.
- Microsoft strongly recommends that you move to Windows 10.
Is there a free Windows 10 upgrade?
Unfortunately the last date Microsoft offered a free upgrade ended on July 26th, 2016. We recommend that you don’t install Windows 10 on an older device, as some Windows 7 devices are not compatible with Windows 10 or could experience reduced feature availability.
Can I still use Windows 7?
Of course. However, keep in mind that you will be more vulnerable to security risks and viruses. When considering the management of Industrial Automation Control Systems (IACS), it is important to maintain supported software and hardware to reduce cybersecurity risk.
Top 3 Ways KAASM can Help
- Digital Transformation (DX) Consulting Are you looking to modernize your industrial technology stack? Do you need help identifying and planning an execution strategy for your technology initiatives? Would you like to consolidate applications and reduce your IT footprint? Our DX engagement is designed to help your organization achieve results.
- Hardware Refresh We have access to world-class industrial computers that deliver a minimum 10-year lifecycle. Our portfolio includes ruggedized edge devices, box PC’s, Panel Panel PC’s, and server-class machines.
- Software Updates Are you looking to modernize your existing SCADA, MES, Alarm Notification, or Automation software? Our software portfolio is built for scale, supporting single instance micro applications up to enterprise-wide deployments. IT DevOps tools are now supported throughout our entire industrial software portfolio.
The time has come to modernize your system, and refresh your platforms. Contact us for more information.
Microsoft’s Windows 7 end of support web page: Learn moreRead More
With the release of WinCC OA 3.17, one of the newest and biggest changes is the addition of the NextGen Archiver. The NextGen Archiver runs on an InfluxDB database and is a great way to store your data. InfluxDB is one of the fastest-growing time-series databases in the market, which means there are already some fantastic tools that can be used to visualize your data coming out of WinCC OA. The tool we are going to show today is Chronograf. Chronograf is the user interface for stand-alone instances of InfluxDB, but can also be used inside of OA.
Note: This tutorial is being done on a Windows machine, if you are using a Mac or Linux the steps may be a bit different.
Create a new project inside of WinCC OA. Choose any type of project you want, I used “Legacy”, but make sure you choose the Use NextGenArchiver checkbox.
Go to https://portal.influxdata.com/downloads/ and download the latest stable build of Chronograf, currently v1.7.17.
Take the two .exe files that get downloaded, place them in a drive that is easy to find and remember, I use C:\Chronograf. The chronograf.exe will need to be used to start up the server. Double click the chronograf.exe file to start up the server or you can use the script: DebugN(system(“C:\\Chronograf\\chronograf.exe”)); on an Initialize function, or where you would like to launch the server inside of OA. The inside of OA option only works if you run the project as an Administrator.
Once the Chronograf server is running you can open up a web browser and navigate to http://localhost:8888.
Click get started to get to this screen. Enter in a Connection URL of http://localhost:8086 (this is the default if you changed it update this field). The username is etm with a password of etm#123 (again this is the default). Enter a Telegraf DB if you would like.
You can press the Skip button on the next two screens. If everything worked, you should have something like the below image. You can now use Chronograf to explore your data from inside WinCC OA to visualize it in any way you can think of.
Chronograf is a web-based tool we can directly embed it into OA using a WebView object.
- If Chronograf server is embedded into OA:
- Point the URL to the http://localhost:8888/sources/new?redirectPath=/ endpoint. This endpoint is needed because OA will sometimes not auto-redirect to the make a connection page which will cause a lock. Also, keep in mind that the server is running in the background.
- If Chronograf server is running by just clicking the chronograf.exe
About WinCC OA
SIMATIC WinCC OA (OA) is a powerful, flexible, and diverse SCADA/HMI/MES/IIoT platform used to control and monitor industrial applications. The object-oriented platform is able to handle network complexity with ease, allowing for anywhere from 2 to 2,048 distributed control systems to be connected on a single network. Highly customizable, each individual system can be calibrated as a redundant or non-redundant, single, or multi-user system. The software supports a number of device connectivity options that include but not limited to Siemens, Rockwell, Schneider Electric, OPC/OPC UA Standards, MQTT, Web Services, Node-RED, and allows for customized distributions and branding, making it a great platform for software OEMs in addition to end-users.
InfluxData, the creators of InfluxDB, delivers a modern Open Source Platform built from the ground up for analyzing metrics and events (time-series data) for DevOps and IoT applications. Whether the data comes from humans, sensors, or machines, InfluxData empowers developers to build next-generation monitoring, analytics, and IoT applications faster, easier, and to scale delivering real business value quickly. Based in San Francisco, InfluxData customers include Autodesk, Cisco, eBay, and Coupa. Visit https://www.influxdata.com/. Twitter: @influxdb.Read More