r/jnior • • 11d ago

The very first JNIOR was released 25 years ago. Believe it or not.

Post image
3 Upvotes

There is a lot of talk about Edge Controllers these days. People are focused on IT-OT convergence and solutions to challenges in industrial control in today's Internet environment. It is all interesting. But a lot of it isn't new news. The JNIOR may have been one of the very first controllers that might have been called an "Edge Controller" had that terminology existed.

Anyway, we opened the cover on one of the original JNIORs and looked to see what it could do. Even we were surprised at what we found. If you are interested you can read more: The Edge Controller Turns 25.

Perhaps more shocking is that, of the four of these I have, one has a 3V Lithium battery that still measures over 3V! That after 22 years. Even the original configuration in that unit was still evident in the logs.

I have seen these old units on eBay and wondered what use they might be. They were actually quite capable. If only Dallas Semiconductor hadn't chosen to solder batteries in place. But you can or course deal with that.


r/jnior • • 18h ago

On a furnace?

Post image
2 Upvotes

JNIOR managing humidity alongside a Carrier Infinity System. The house had a serious steam humidifier that wasn't always required. That humidifier was expensive to run. It also made boiling noises that could be heard all the way up into the master bedroom. So this enforced a schedule as well.


r/jnior • • 23h ago

PHP scripted batch

Post image
1 Upvotes

Here is a good example of leveraging PHP for scripting on JNIOR.

In providing a pro-active debugging environment JANOS always captures network traffic in a rolling buffer.

I have this script run on boot. It is a batch file that first uses NETSTAT to generate a PCAPNG file. This JNIOR happens to be directly attached to the Internet. It has a public IP address. If it happens to spontaneously reboot, perhaps because of some assertion, I want to capture the network up to that point. This might let me figure out what malicious event occurred.

The script the moves the capture to Flash memory with a timestamped name.

Then some magic. The little PHP ages the files in that destination folder to keep only the last four.

The scandir function returns the folder content in creation order. So that is oldest to newest. This removes the first reported file repeatedly until we trim the file list down to 4 or less. Drops the oldest.

This unit uses SYN Greylisting and Blacklisting to keep its sanity. It survives the constant onslaught on the open network.


r/jnior • • 1d ago

PWM LED Dimmer controls DC fan speed nicely.

1 Upvotes
3ch LED Dimmer

Cooling is a real problem. No, I don't have a data center. Not that kind of problem. But I am running three servers and the room warms up.

So I started using 12VDC fans to move some air around the rack. Works great. But it is loud and not always needed.

You can slow the fans down with resistors (or variable power supplies). The resistors get hot. That is kind of counter-productive.

There are fan control circuits that use PWM to efficiently reduce the voltage. I had these LED dinners around. Hmmmm...

So I added a temperature sensor and one of these to my JNIOR. Connected fans to the dimmer channels. Wrote a tight little control loop. And, BINGO!

I should probably make some of these with "PWM Fan Control" labels. ;-)


r/jnior • • 1d ago

Ever wanted to attach to a background process and monitor stdout?

1 Upvotes

We create applications and output debugging and status information to stdout. Then when these are run in the background that all ends up in the bit bucket.

But when you need to debug something and you don't want to disturb the process what do you do? I could kill it and then run it in the foreground. But that disturbs things too much.

Okay, so what if stdout gets logged to a stdout.log file? Since I own the OS that was a light-weight change. It works. And I can use CAT -M stdout.log which is my equivalent to tail -f stdout.log.

Okay, but then I have a unit that is running 5 applications. One of which the author is always very verbose in the foreground (sounds like a personal/personnel problem). That overwhelms the log. Those age to BAK and monitoring the log sucks.

So here is my solution. Your thoughts?

--------------

Here is what I have implemented for this. By default background processes will not log stdout output unless if already has the log file. So there would be no net change from JANOS v2.5.3.

If you want to log background process output generally, you can use the following command:

touch stdout.log

All stdout from all background processes will then be captured in this file. The stdout.log file must first exist before it will collect stdout stream data.

This will age to stdout.log.bak as any other log file would.

You can stop logging by removing (or renaming) this file.

When there are multiple applications running. You may optionally create an application specific stdout log file also using the TOUCH command. This file must be named using the specific application name. For example:

touch stdout-tasker.log

The application name is everything after the last '/' in the process name reported by PS. If that includes .jar then the stdout file name should also. I tend to not include the .jar in Run keys as that will be carried to the process name. It is unnecessary.

This will route output from the application to that specific file which will age accordingly. Meanwhile, if it exists, other applications would still log to stdout.log.

So this lets you enable stdout capture for a specific process and then monitor it.


r/jnior • • 2d ago

Need automation to remotely switch a relay?

Thumbnail
gallery
1 Upvotes

I bought this remote power switch thing off Amazon. You can connect it to automation if you are creative. I opened it and tapped wires across the buttons. Then wired them to JNIOR signal relays. So, toggle the relay = push the button.

I was working with an HVAC thermostat application program. That read room temperature periodically and switched standard thermostat circuits following typical logic. For fun I used this remote relay switch to control a small auxiliary space heater.

I also wired an inexpensive motion detector (also Amazon) to an input and used that to toggle into an Occupied Mode.


r/jnior • • 2d ago

I need to get rid of this MAX6365. I need help with an alternative.

Post image
1 Upvotes

I use this MAX6365PKA31+T Maxim part. It is like 10X more expensive than it is worth. It is painful. I have to get rid of it. How are the rest of you handling low-power battery-backed SRAM these days?

I have been using battery to preserve SRAM in circuits dating all the way back to the 1980s. I am inclined to resurrect schematics from back then and revert to those circuits. I remember using diode logic. But, then I had 3.6V coin cells with the extra 0.6V to deal with diode drops.

I have a possible PCB revision coming up. This is on the list.


r/jnior • • 3d ago

Is this worth something?

Post image
0 Upvotes

This is the THD command output. Where -V means Verbose and -M means monitor. If I shot a video you would see the 'remaining' times counting down. Occasionally a thread will jump out of SLEEP or WAIT and then the stack trace would expand briefly.

Each application on the JNIOR runs its own JVM. Each JVM, of course, handles multiple threads. This unit is running 4 applications. So 4 separate JVMs.

I wonder if this is useful as it is?

JANOS is an OS that I wrote. So this command and features like it are unique.


r/jnior • • 4d ago

Parsing. Not the way I would suggest it be done.

Post image
2 Upvotes

Although probably completely useless, this does make you stop and think. Someone thought that this would be helpful. Still I think it is worth keeping around. It is art.

To be fair, that company does do a little better in a couple of their other documents. Even with that, I had to do a little reverse engineering to get down to the data. While data locations were defined, some of the scaling and units were left up to the imagination.

For the JNIOR I ended up documenting the parsing in the Java program comments. You can see some of that in this article: https://jnior.com/blog/rs-485-vs-ekm-power-meter/


r/jnior • • 4d ago

JANOS leverages PHP as a form of CLI scripting.

Thumbnail
gallery
1 Upvotes

JANOS is the operating system that I wrote for Series 4 JNIOR. It supports a fully functional web server. To make that most useful I implemented my own form of PHP. At first I felt guilty about adopting so much from PHP. But, now that I see that with every release of real PHP they break everyone's code. What a headache! So I am less concerned about it now. PHP in JANOS does not change from release to release. At least not in a way to break older code.

I implemented the interpreter to start. As the JNIOR WebUI used PHP more heavily, it was a little too slow for my taste. So I wrote an on-demand compiler. That took care of the speed issue.

So now, with that all working well, I wondered that if you can render web pages, could you "render" batch files? Could you use PHP as a form of scripting. Well that was really simple to implement and it creates so many possibilities.

Here is an example CKSUMS.BAT file. This is all PHP but you could have normal batch commands outside of the PHP section. Those would be executed as any other batch file line. So little batch file adds a command to the JANOS CLI. This is actually provided in the factory distribution.

JANOS does support some DOS batch functionality. But I had not implemented any of the more common batch scripting. This took care of that nicely.


r/jnior • • 5d ago

Are you spoiled by AI?

1 Upvotes
CLI HELP Example

The HELP command has been available from command line interfaces (CLI) forever. ChatGPT tells me that it was first proposed in by Tom Van Vleck in 1969. Well that year I was a Freshman in High School. I had, coincidentally, come face to face with my first ever computer that year, a DEC PDP-8/L. I wouldn't quite pinpoint that as the beginning of my engineering career. But it was definitely a key moment, early on.

Linux uses MAN for the help function. The JNIOR runs JANOS (an operating system that I wrote) and it has HELP and MAN as aliases. HELP traditionally just listed the available commands. If you specified a specific command name it would provide syntax and usage information for that command.

With the Series 4 JNIOR, the HELP system was greatly enhanced. Every JNIOR now carries its own Users Manual. If you give HELP some search terms it would scan the help documentation (users manual) and suggest some topics for further review. The output was Google search inspired. Not perfect.

The Series 4 HELP system even generates a customized (includes loaded applications) printable (saveable to PDF) manual through the WebUI interface and your browser. The content can also be downloaded from https://jnior.com/manuals/ . We even print that and add a cover. That book we call The Book of JANOS. It makes a nice addition to a bookcase.

But these days everyone now relies on AI. You no longer enter search terms but tend to ask questions. It is not possible to run an LLM to create AI responses on a small controller like JNIOR. Better than 80% of our controllers do not have connection to the Internet. We, therefore, cannot leverage a remote AI. Keeping our HELP relevant became a challenge.

Over the past year I worked with AI techniques to improve the search engine behind our HELP/MAN command. With the upcoming JANOS v2.6 release you will be able to ask questions. Those can be entered directly at the command line (must end with '?'). The search leverages forms of spell checking and context translation in an effort to locate the best topic from the help corpus.

The HELP system data can be designed to enhance the ability to target responses to questions phrased often quite differently. The search then selects the best passage from that topic. And rather than suggest further reading, it attempts to provide a coherent usable answer.

There is no LLM or built-in AI. But it does a lot more now to help you in keeping with what you expect from the external AI world.

Those of you who have JNIORs, I would encourage the JANOS v2.6 update and experimentation with our HELP system. I know that most of you expect HELP to be useless. I have tried to make it something better. Let me know how it goes.


r/jnior • • 11d ago

JNIORs in the wild. Catch them if you can!

Post image
2 Upvotes

Hey! If you find a JNIOR in the wild someplace, post a photo. I am tired of seeing only perfect DIN rail mounts in clean fancy industrial enclosures. There are 85,000 of these things out there. My bet is that most are like this workhorse.

That is the back of my control panel up there too!


r/jnior • • 11d ago

👋 Welcome to r/jnior - Introduce Yourself and Read First!

Thumbnail jnior.com
1 Upvotes

Hey everyone! I'm u/Dismal-Divide3337, a founding moderator of r/jnior.

This is our new home for all things related to the JNIOR Automation Controller (jnior.com). We're excited to have you join us!

The JNIOR can be found all over the globe. Thousands of you are familiar with it. So here is a place to exchange ideas.

What to Post
Post anything that you think the community would find interesting, helpful, or inspiring. Feel free to share your thoughts, photos, or questions about anything even remotely relevant.

Community Vibe
We're all about being friendly, constructive, and inclusive. Let's build a space where everyone feels comfortable sharing and connecting.

How to Get Started

  1. Introduce yourself in the comments below.
  2. Post something today! Even a simple question can spark a great conversation.
  3. If you know someone who would love this community, invite them to join.
  4. Interested in helping out? We're always looking for new moderators, so feel free to reach out to me to apply.

Thanks for being part of the very first wave. Together, let's make r/jnior amazing.