My idea was to have a network monitor showing whether or not a device is reachable or down. I wanted to ping the network elements in various networks in my house and show it on some kind of dashboard. As I was not able to able to really ping devices with a PICO (out of the box), I needed to write some own code to measure response times…
Ironically, I am not able to ping my own network elements (due to the fact that real ICMP echo requests cannot be fired - as per my knowledge), so I connect to public addresses and ping port 80 to receive their pong. The time between ping and pong I interpret as rtt, which is not exactly what I wanted, but it gives a good indication and is more or less just a PoC.
As for now I fire my signals to half a dozen webservices and log the response times. This is how it looks like on a 128x64 matrix. Every service I ping has its own color.
If it needs more space for a longer time frame, I will extend this to a multiply of 128 horizontally for a larger dashboard.
My question though is: Does anybody know how to get the same for any of my network elements, such as computers, IoT devices, routers, etc. as they do not run a webservice on port 80, they will not answer…
Is there a micropython library for PICO which shoots out real ICMP for any network element?
In principle, I would like to realize something like this project I just discovered from 2017. As he uses a Raspberry Zero (microprocessor), it can handle real ICMP requests, but the Raspberry Pico (microcontroller) does not - as per my knowledge.
My project (the linked one) is still running well, and sitting nicely below my monitor here.
Indeed it’s been duplicated and expanded a bit with an old Unicorn pHat to allow more entities to be monitored, but using much the same codebase.
I did ponder looking at something similar using a pico, but as the other one works fine I never really progressed it. So will watch your progress back with interest!
What you did was also my idea. To simply ping devices and receive their pongs…I just learned that pings are not possible by standard measures (with a PICO)…
As soon as I find a solution to firing up real ICMP echo requests from the PICO, I will adjust my code base accordingly, as I primarily want to monitor my own network rather than internet serives.
My latest internet research just brought up the inavailability of PICO socket requests (by standard library measures), but maybe there is a clever library out there I am not aware of…
hope, someone possibly point me into the right direction… ;)
CircuitPython (for me) is too HW specific for Adafruit stuff…I successfully avoided this until now and was happy to stay with the original Raspberry stuff and Pimoroni. Together, they get the most out of the HW - nice, easy and reliable…