Remote Access and Control for various Sensor Data and Output Devices Answered
I am working on a project that involves multiple sensors as well as a handful of output devices, and am looking for the best solution on how to collect data from the sensors, have certain actions occur based off of the sensor input, as well as be able to have a web-accessible page where the logged data could be viewed. Additionally, I would also like to be able to modify certain variables (such as changing thresholds for when output devices are activated, for how long they are activated, etc) on the webpage.
A very similar solution to a different situation that I am familiar with is OctoPrint. With OctoPrint, you can view your 3D printer live from the comfort of any machine on the network, as well as send custom commands to it, or even initiate prints. My application would be very similar to what OctoPrint offers, with the addition of being able to view collected data from sensors, as well as changing variables within scripts.
The current hardware I plan on using consists of an Arduino as an analog to digital converter for the analog sensors, as well as the controller for relays and other output devices. The Arduino would be plugged into a Raspberry Pi (or really any machine would work, I think), which is essentially how an OctoPrint setup works. Ideally, I would like to have the Raspberry Pi act as the webserver/host (I would be the only individual accessing the webpage, so a pi should be enough for that? If another computer would be needed to host the webpage, then Ideally I would like to omit the pi altogether.)
I would like the input data to be logged and displayed in a graphical manner, through graphs and charts. A friend recommended using a database, such as MySQL; is this a good option, or is there something that would be more efficient? The control/data page wouldn't necessarily need to be accessible to the world wide web, although that would be convenient (I would prefer not needing to pay for a domain though). So long as I could access it from the local network, that would suffice.
If there is some program/software that allows me to do all/most of this, that'd be great. Otherwise, I'm just looking for input on what would be the most optimal route going about this. Ideally the less complicated the better, but I'm not afraid of learning new things.