16 July 2025 - We are beginning a new sub-project in ep5BAS. With the cooperation of AutomationDirect, of Cumming, Georgia, we will be creating a demonstration of an entire small building automation system using the Protos X fieldbus I/O system. The full suite of ep5BAS modules in C# will connect with this industrial I/O technology and facilitate the implementation of a number of functionalities, including energy management.
To follow the progress on this work, please see
here. For the code, go to
Code Samples.
With immediate effect, all references to EtherCAT on this website should be considered invalid and no longer relevant. All such references are currently being removed...
Open Source · Open Minds · Open Automation
The ep5 Educational Broadcasting Foundation (est’d 1988) is a not-for-profit §501(c)(3) charitable institution dedicated to technology education for schools and public broadcasting. We have produced science and technology related audio and audio-video content for classrooms, local television (including several innovative documentaries which are still aired occasionally), and public radio (including an NPR series that ran for several years). The foundation is funded by public donations and staffed by volunteers. In line with its educational mission, the foundation has launched ep5BAS as a fully open-source coding project with no commercial objectives. The goal of ep5BAS is to create a programmer-friendly software development tool usable in all manner of automation applications and to encourage aspiring developers to learn sound programming practices through hands-on experience.
Modern industrial control room setups exemplify the complexity of automation tasks that ep5BAS is designed to manage. The ep5BAS open-source building automation system (BAS) is a general-purpose programming framework built on the C# .NET language. Unlike a traditional BAS tied to proprietary hardware or a single use-case, ep5BAS is offered as a collection of well-tested C# source code modules – including a wealth of full example applications – that serve as starting points for custom automation solutions. This modular design means there is essentially no limit to the number of ideas or features that can be added; the framework can grow and adapt as contributors create new modules, enabling broad participation from developers around the world.
tem′plāte, n., [Fr. templet, templette, dim. of temple, from L. templum, small timber, purlin.] a pattern from which subsequent examples of an object or contrivance are constructed, in similar but not necessarily identical form.
In very simplest terms, ep5BAS is the software template in modular source-code form from which the C# programmer can construct a general-purpose automation system utilizing state-of-the-art I/O technology.
Think of how useful to your programming really good code samples have been. Such is the human mind that it learns best from well-structured examples. Well, that is the entire purpose of ep5BAS: it provides the programmer with an extensive collection of carefully designed and tested program samples which can then be adapted as needed to a wide variety of control applications. These are not cryptic code fragments, but whole programs, showing the entire process.
Because the software is open-ended, ep5BAS is whatever the programmer wants it to become, allowing users to modify or extend the code to accomplish almost any automation task, limited only by their skill and goals. In practice, users can mix-and-match provided components like choosing from a menu, then adapt them as needed – making ep5BAS useful both as a learning environment and a production tool.
What about the software license under which contributions to the codebase are accepted and the source code is released? The underlying principle is to give users the greatest feasible freedom in using it. This means absence of downstream restrictions. Thus, we have chosen the BSD 3-clause license, as it imposes the fewest restrictions. The issue that matters most, the question of what users can and cannot do with the code, is manifestly clear. They can do with it as they choose.
ep5BAS is completely free to use: it will be released under the BSD 3-clause license for greatest freedom in usage and at no cost. (All software and services will be provided as-is.)
The various ep5BAS modules are available at no cost and with only the fewest feasible restrictions. Please see the ep5BAS license for details. Any software that you create using ep5BAS is yours to do with as you choose. This is the highest level of freedom in software, the “Libre” principle. Use it for your own purposes or build commercial programs on it, for sale to others. Your free choice - always.
Free software should be just that: free in all ways. It is open-source, with essentially no restrictions on how it is used, although we do request that you not use it for weapon systems, launch vehicles, or radiation therapy machines. It can be used at the hobby level or in industrial control systems or for anything in between. And, it is intended to fit into the real world, with as little doctrine and dogma as possible.
Please note that this kind of program is aimed primarily at and intended for use in the commercial and industrial worlds. While much of what is constructed by users of ep5BAS code will be for strictly in-house application, this will also include software written to be sold to others. To place restrictions on this is less freedom, not more. The ep5 Educational Broadcasting Foundation neither has nor wants the means of policing and enforcing license restrictions.
If creating additional and original value and selling it on, users will have a reasonable interest in protecting the commercial value of their own work. We recognize this reality and encourage it.
Please note that ep5BAS is intended for use on Windows 10, with the executables run on any hardware/OS platform with a fully-featured .NET run-time, as the user chooses. End-user software development on non-Windows environments is left to the individual programmer’s discretion. Currently, only the Windows 10 environment is supported.
Our experience has shown that keeping the entire process as simple and as straightforward as feasible is necessary to ensure that less expert programmers can derive full value from the software.
Almost all conventional open-source software is built by highly capable programmers with years of experience and an abundance of expertise. Their code is thus intimidating and impenetrable to neophyte programmers. ep5BAS is intended to be used by software developers without this advanced level of ability. Instead of being locked out by their inexperience, they can use the ep5BAS modules to create their own automation programming.
Therefore, to avoid the complexity that inevitably frustrates those not yet having the expertise that comes from years of coding, we are limiting the project to the Visual Studio 2022 solution format. Also, we ask that contributors of source code include with it such documentation as necessary for the inexperienced programmer to be able to use the code with as little frustration and difficulty as possible.
Built with C#, a high-level general-purpose programming language, ep5BAS leverages the full power and flexibility of modern software development. This means it can express almost any desired automation logic in code, linking that power to real-world control hardware. Using a language familiar to programmers worldwide also lowers the barrier for contributors to the project and for users of the available modules.
Originally, ep5BAS was intended to facilitate creating building automation programming for less demanding applications. Given the scope of functions that can be automated in buildings, it was immediately realized that ep5BAS lends itself to all manner of automation applications.
What kinds of uses does ep5BAS have? If your process demands reliable sequencing and timing of various functions, if sensors with standard industrial I/O appropriate to your task are available, if actuators and effectors can be connected to this I/O, and if you can describe the necessary operations in C# code, then ep5BAS may well be a viable tool for creating automation exactly suited to your requirements.
PLEASE TAKE NOTE: ep5BAS is a programmers’ tool. The modules that comprise ep5BAS are intended to be used as starting points for your own unique programming. This means that you will need to have at least a modest level of capability in writing C# code.
ep5BAS is totally modular by design. Its source is divided into components and example applications that can be used as-is or modified independently. This modularity encourages reuse and extension – contributors can add new functionality while all users will be able to tailor existing modules to new purposes without reinventing the whole system. In essence, ep5BAS provides a versatile framework or “cookbook” of code, rather than a fixed one-size-fits-all program, empowering users to build custom automation solutions by assembling and adapting pieces of the project.
The system is intended to run on a wide range of standard hardware platforms. Initially, it targets the 64-bit Windows 10 environment – from conventional desktop PCs (or their hardened industrial equivalents) to robust single-board computers – as the host for control programs. By not requiring exotic or vendor-specific controllers, ep5BAS can be deployed on readily available computers, and its open design invites the community to expand support to other operating systems and hardware as needed. This will eventually include GNU/Linux.
As building and process automation frequently incorporates widely distributed assets, sensors, and effectors, Ethernet will be used as the fieldbus communication medium. Running on their own reserved networks, control and automation programs created with ep5BAS will feature fast and reliable communication on readily available and inexpensive cabling.
Using both proprietary and Modbus fieldbus protocols, a variety of hardware can be selected by the user to connect the ep5BAS control program to the real world. Initially, we are accommodating basic discrete (digital) I/O using hardware from several manufacturers. The AutomationDirect Protos X system and others are under consideration. Modbus TCP will generally provide the connectivity, to industrial standards of capability and reliability.
Developing usable software from ep5BAS modules can be accomplished on any operating system which supports the .NET runtime. In-house, we work on Windows 10 and use Visual Studio 2022 Community. If you have something else that produces runnable .NET code, then that will work for creating end-user applications, too. The executable programs that you create with ep5BAS will run on any OS supporting the .NET run-time environment. It’s just that simple.
ep5BAS is a fully open-source initiative, offered pro bono publico. All source code will be openly available with only liability-disclaiming restrictions, ensuring that it remains free to use however one wishes. The project emphasizes clarity over cleverness: clean, readable, and maintainable code that any qualified developer can understand and improve. The architecture is data-driven, meaning configuration and behavior can be adjusted via data/settings rather than hard-coded logic, which improves flexibility and clarity.
To maximize interoperability, ep5BAS makes use of open and established protocols wherever feasible. It is being built to interface with industry-standard communication methods for sensors and actuators – where feasible, Modbus will be supported for connecting to fieldbus devices in both smaller and larger installations.
By embracing such standards, the system can connect to a wide variety of off-the-shelf sensors, controllers, and equipment. The design goal is to accommodate the widest possible range of input/output devices and systems under a single software framework.
But, wait! There's more! Interop capability means calling existing C and C++ code to accomplish operations and functions for which C# cannot provide the means of doing so. This becomes particularly relevant when technically specialized hardware must be controlled via its own proprietary driver code.
Originally, the ep5BAS modular automation system was conceived as a teaching project in a non-broadcast educational television series called “The Art of Programming”, aimed at giving high school students and online learners a real-world software project to build as their skills grew. Instead of the usual trivial exercises (like printing “Hello World”), students would collaborate on this tangible automation system, learning engineering practices along the way. The concept quickly took on a life of its own beyond the proposed television series, evolving into the comprehensive open-source initiative it is today. This educational heritage means that ep5BAS is not only a tool for automation, but also a platform for learning and improving programming techniques through practical application.
ep5BAS aims to make practical real-world automation easier to implement by bridging software and the physical world through widely accessible technology. Its capabilities scale from simple to complex scenarios. At the small end, one might use ep5BAS to automate home or classroom tasks – for instance, automatically turning lights on and off on a schedule – while at the high end, it can drive sophisticated processes like edge computing in a large industrial plant. The software imposes no arbitrary limits on application domain: it could just as well run a greenhouse’s climate control as coordinate machines on a factory floor. It can even be used for such creative applications as controlling stage and set lighting for theater, television, or film productions using the DMX512 lighting protocol over a serial link. In all cases, the user-written C# code (augmented by ep5BAS libraries) provides the logic, and ep5BAS handles the interfacing to real-world devices, giving programmers a powerful yet straightforward way to implement their automation ideas.
At its core, ep5BAS is about real-time control. The project emphasizes reliable, event-driven operation where software loops continuously monitor inputs and drive outputs with minimal latency. To achieve this, ep5BAS makes intimate use of industrial fieldbus technologies for communicating with sensors and actuators. Rather than inventing new hardware protocols, it utilizes the best of proven standards: for modest setups with just tens of digital I/O points, ep5BAS can operate through simple digital I/O boards using OPTOrack hardware attached to the PC via Ethernet. For larger, distributed systems requiring hundreds of I/O points (digital and analogue), ep5BAS integrates with networked fieldbus systems over high-performance Modbus. In particular, the software will support:
• Modbus – a client/server data communications protocol widely used in industry, suitable for serial or TCP/IP networks and ensuring backward compatibility with many existing devices. Modbus is popular in industrial environments because it is openly published and royalty-free. It was developed for industrial applications, is relatively easy to deploy and maintain compared to other standards, and places few restrictions on the format of the data to be transmitted between controlling device and controlled devices.
• Proprietary – [more to follow...]
By using these protocols, ep5BAS can connect a central control computer to decentralized fieldbus couplers and I/O modules spread throughout a building or industrial plant (even over fiber-optic links for long distances). In practical terms, this means a single ep5BAS application could monitor temperatures, switch relays, read analog sensors, and drive actuators across an entire facility by communicating through standard interfaces. The system calls out to device drivers (either provided by hardware manufacturers or written by the community) to handle the low-level communication with each type of I/O hardware. Ensuring an easy yet robust linkage between the high-level C# logic and these device drivers is a critical part of ep5BAS’s design for universality.
The developers stress that the solution must be reliable and flexible above all: it should work predictably 24/7 and accommodate various connection methods (direct USB, Ethernet networks, serial links, etc.) as needed. In short, ep5BAS’s technical focus is on providing a platform-independent, real-time automation engine that can talk to almost any hardware, using open standards and simple hardware interfaces to bring software “smarts” to the real world.
Futhermore, ep5BAS lends itself singularly well to distributed control, with control authority sited wherever it best suits the individual application.
It should be noted that ep5BAS is not a consumer-oriented plug-and-play gadget or a competitor to popular smart-home hubs. Unlike turnkey home automation systems (e.g. Home Assistant, OpenHAB, or similar packages), ep5BAS is a programmer-centric framework intended for those who want to write code and craft custom solutions from the ground up. This offers far greater flexibility and power, at the cost of requiring programming effort. In essence, ep5BAS serves as a toolkit or automation operating system for engineers and hobbyists who desire fine-grained control, rather than a pre-configured appliance. This distinction aligns with its educational roots and open-source ethos, focusing on empowerment through coding rather than out-of-the-box convenience.
ep5BAS is fundamentally a community-driven project. The entire development effort is built on the contributions of volunteers, and the project welcomes participation by individuals with a variety of skill sets. Contributors are appreciated not only by the ep5 team but by everyone who will eventually use the software to automate something useful in their lives or businesses. Volunteer involvement is handled in a flexible and informal manner – interested contributors simply reach out with their area of expertise, and the project coordinators match them with tasks that need doing, allowing people to work at their own pace (with provided test suites to validate contributions).
Because ep5BAS spans many technical domains, the project seeks a broad range of expertise. While proficiency in C# programming is a baseline requirement for those writing code (since the project is implemented in C#/.NET), there are numerous other areas where help is valuable. These include industrial control protocols (for example, integrating Modbus and optimizing its performance in C#), hardware interfacing, backup and deployment management, user interface design for control panels, database management for logging and recipe handling, network security, documentation, and even community management (such as running forums or coordinating on GitHub). This wide skill set reflects the ambitious scope of ep5BAS – it touches on everything from low-level bit manipulation to high-level application design – and provides volunteers an opportunity to apply or grow their skills in a real project setting. The project also explicitly encourages domain experts (in fields that could benefit from automation, like energy management or manufacturing) to get involved and help guide features relevant to those domains.
The ep5BAS initiative is backed by The ep5 Educational Broadcasting Foundation, which is headquartered in Scottsville, New York. The foundation’s long history in educational media and outreach forms a supportive backdrop for the project’s non-profit, public-interest character. Over decades, ep5 has sought to build a bridge between science and the public, and ep5BAS extends that mission into the realm of hands-on technology and coding. By developing an open automation system and freely sharing it, the foundation hopes to empower schools, hobbyists, and the vastly diverse interests of commerce to experiment with automation and improve efficiency in various environments. As the project matures, there is also an expectation of fostering collaboration with industry: for instance, as ep5BAS gains traction, hardware manufacturers may be more willing to assist by providing device drivers or technical information to ensure their sensors and controllers work seamlessly with the platform. This kind of partnership would amplify ep5BAS’s reach while still keeping it vendor-neutral and broadly compatible.
In summary, ep5BAS’s core purpose is to provide an accessible, flexible, and powerful automation framework that serves both educational and practical needs. It merges a charitable educational mission with ambitious technical goals: teaching newcomers how to program “the right way” by engaging them in a meaningful project, and simultaneously delivering a general-purpose automation system that can be applied to countless real-world tasks. By harnessing open-source collaboration and focusing on widely used technologies, ep5BAS strives to make real-world automation far more accessible and usable – allowing anyone with a vigorous interest in programming to control “all the things” in a building or process, using a common software platform and knowledge base. This initiative stands at the intersection of software engineering, industrial control, and community learning, aiming to benefit the public through shared innovation in automation. Each new contributor and each new use-case integrated into ep5BAS further advance its goal of making automation available to all, in the true spirit of open-source development and education.
Go to top of page
For a more detailed explanation of the ep5BAS project, please see What It Does & How It Does It.
It’s pretty simple: we do not collect any information from you. In any form. At all. In fact, we don’t even notice that you were here.
This, too, is pretty simple: we don’t have any. We’re so busy trying to get software written that we haven’t the time to waste on make-believe.
Website by The Magick Toade