Show HN: PJON v11.1 an independent, decentralized, open-source protocol
github.com
github.com
I definitely recommend it for most use cases, if you don't need a very high speed bus.
This is an abstract network stack for raspberry pi- type devices so they can talk to each other while sheltered from the underlying network interface (wifi, radio, wire, light impulses, etc) and sits on top of whatever transport protocol (UDP, TCP, Serial). By "multi-media" he means the physical layer, "media like electricity, radio and light"
It does data logging and storage to a database for trending and/or analysis, as well as configuration in a web page.
It uses PJON as transport, so it can run on one or multiple of the supported media, for example a SoftwareBitBang bus between worker devices, with a router that connects them via UDP to a master process on Linux. Or any other combination.
Atm I'm developing my own bus protocol since PJON was having some problems with the optocouplers I have (the line I need has almost a millisecond of lag and doesn't allow for a frequency beyond a couple kilohertz as it needs to get to several devices at different logic levels and has some longer lines with higher voltages that limit response times). Surprisingly there isn't a good bus protocol that can deal with symbolrates below 1000 per second, multi master and really bad line conditions and long timeouts.
I use token bus for media access control since it's fairly simple to implement and I don't need jam detection in any components.
Token passing enables a far more simpler software for simply being a passive client (ie, a sensor doesn't need to be able to control the bus, it only needs to respond while someone else is controlling the bus) and the active masters (which can cleanly pass control of the bus).
I don't mean any of this as offense to PJON either, it's an amazing protocol, the problems I have aren't solved by any product on the market.
It's also a good engineering challenge.
However, this looks just like the thing I’ve been looking for. Serial communication and TCP and CRC checking!
Also, what the heck does it do? Neither README nor title says anything about that. The closest thing to such description is mentioning that it "supports multimedia", whatever that means.
The project proposes both an independent research in defining a specification, and also an open-source implementation based on that specification.
If you want to know what it does, read the specifications or at least the first sentences of the README :)
"PJON® (Padded Jittering Operative Network) is an Arduino compatible, multi-master, multi-media network protocol. It proposes a Standard, it is designed as a framework and implements a totally software emulated network protocol stack that can be easily cross-compiled on many architectures like ATtiny, ATmega, ESP8266, ESP32, STM32, Teensy, Raspberry Pi, Linux, Windows x86 and Apple machines. It is a valid tool to quickly and comprehensibly build a network of devices. Visit wiki and documentation to know more about the PJON Standard."
Keep the proper terminology. If you omit words left and right, it becomes incomprehensible garbage.
> If you want to know what it does, read the specifications
The whole point of README is to say what it does so I don't need to read specification that will be useless to me.
> or at least the first sentences of the README :)
I read it. The wall of words you cited says nothing about what it does and what purpose it serves.
Your README is needlessly abstract. It’s tantamount to saying you’ve invented a new wheel.
Well, wheels have all sorts of specifications, they're made of various materials, can have different weights, etc. They also have all sorts of use cases. From plastic wheels used in toys, rubber wheels used in cars, all the way to various wheels used for the construction of a rocket.
Although conceptually the wheel is an object that allows for easy rotation, you wouldn't use a plastic toy wheel for the construction, say of an automobile, would you? Also, not all wheels are used as rotary devices. Some can be used for just support.
Going back to your network protocol. What does this protocol allow one to do? What can it be used for? Be specific!
Probably for this reason the README seems too general and not specific. The protocol is made NOT to be specific and its implementation is done to be executed (the same codebase) everywhere being 100% software "defined" or "emulated".
But I too was confused by what this PJON thing was supposed to do, until I looked up i2c, because of this line early in the README: "It was originally developed as an open-source alternative to i2c and 1-Wire"
"The Inter-integrated Circuit (I2C) Protocol is a protocol intended to allow multiple “slave” digital integrated circuits (“chips”) to communicate with one or more “master” chips. Like the Serial Peripheral Interface (SPI), it is only intended for short distance communications within a single device. Like Asynchronous Serial Interfaces (such as RS-232 or UARTs), it only requires two signal wires to exchange information."
So it's a very low level, _literal_ wire protocol, I guess. I don't know much about hardware.
https://learn.sparkfun.com/tutorials/i2c https://learn.sparkfun.com/tutorials/i2c#protocol
Please don't go into attack mode here. The last thing someone needs when they take the risk of sharing their work on a large public forum is someone pettily berating them and then hounding them when they try to reply. If you were genuinely interested in getting information or providing feedback, there are lots of ways to do it that don't come across as just wanting to pound something.
Edit: it looks like we've already had to warn you about not being a bully on Hacker News. Moreover, it looks like you've been posting like this a lot. This is something we ban accounts for if people keep doing it, so please take the spirit of this site to heart and treat your fellow community members better from now on.
> Edit: it looks like we've already had to warn you about not being a bully on Hacker News. Moreover, it looks like you've been posting like this a lot.
OK then, please be more specific here. You're being so generic that I can't tell what exactly is wrong with my posts (apart from being disliked) and what should I change to keep me from being banned. The only thing I can think of is to stay away from any commenting at all. If you criticise from your high horse of being a moderator and wielding the power to ban people, at least be constructive in doing so.