Show HN: PJON – Digital communication framework for IOT
github.com
github.com
https://news.ycombinator.com/item?id=13671587
https://news.ycombinator.com/item?id=10283028
A couple of questions:
* How does it compare to Modbus
* You mention in a previous post some data rates, what cable lengths are being used for those?
Being the data link level handled "agnostically" PJON protocol layer is able to run over Serial, RS485, TCP and UDP (with the necessary hardware additions).
PJDL (Padded Jittering Data Link) https://github.com/gioblu/PJON/blob/master/strategies/Softwa..., that is the default data-link we propose for PJON procedure, it is generally tested with 50 meters cable, working fine. We actually still haven't find a range limit, and maximum devices limit.
Here instead using AnalogSampling PJON can communicate wirelessly using only 2 visible light LEDs, used both as transmitters and photodiodes on the same pin :) https://github.com/gioblu/PJON/tree/master/strategies/Analog...
PJON has a number of data/physical link layers: a network running on a single arduino pin, link over LEDs, TCP, UDP, supercheap radio modules, RS485 serial.
Compared to that, Modbus defines things up to application layer (layer 7). You tell it, "read input 1" or "write 75 to register 33" and it does it for you. You can also send arbitrary packets like PJON, but this is rarely done.
Modbus also has number of physical layers: serial (usually used with RS485 or RS232), TCP, UDP, and high-speed proprietary links. It is not designed for low speed links, so it would not work well over LED link, supercheap radio modules, or a single arduino pin link.
PJON protocol layer contains many features not present in the i2c specification, and also its physical layer runs over only one wire and doesnt need precise clocking as i2c does. Infact with i2c you can have unreliable communication with a meter long wire, and it is designed to connect integrated circuits over a board and not to connect many arduinos around a house, it stricly depends on the requirements you impose for your application.
I appreciate it is software-only, but if your hardware uses a different bus already using this seems like it would be futile. If you've got control over both ends, otherwise, and you're not constrained by any existing bus why would you just PJON over TCP/IP, UDP, or some other similar standard?
Struggling to see how this could be useful - what problem does it solve, exactly?