Let me start by saying, i am not a programer ... so i am sorry in adv
i made this python script ( with the help of a LLM) and it works perfectly
The intent is to create a Timelaps option for SLA printers using a LDR.
In the terminal using ´´ python timelapse.py´´ it works perfectly and does what is intended.
The way it works is:
LDR is activated by the UV light of the printer
UV light turns off and the code waits 5 sec and snaps a pic from the raspberry pi cam and stores it in a specific folder.
the code will stop if the LDR is not turned back ON with in 25 sec.
When code ends, it ZIP's the folder content and deletes all jpgs and keeps a zip
All works great, however i am trying to implement this script into a octoprint plugin.
The 1st part of the plugin is done:
Plugin is creates and install's without any errors and i can see it installed in plugin manager and also my "settings" page (empty for now).
This is my atempt to merge the script into init.py
Aldo i dont have any template gui done, i "think" the plugin should be working on the background. in the logs i have no errors regarding my plugin.
The thing is, when the cicle of the LDR is done it doesn't create any files in the directory and if i reboot the pi then the end of the code runs, it creates a zip but it's empty.
So it would be a huge help to change any of your print statements to self._logger.debug("this is my message") lines, then in OctoPrint's logging section set your plugin's logging level to debug.
self._logger.debug(f"{message}")
print statements are more for running from the command line in general.
Just activated as you sujested and this was the output of the log
2024-02-04 10:56:15,258 - py.warnings - WARNING - /home/pi/oprint/lib/python3.9/site-packages/gpiozero/devices.py:295: PinFactoryFallback: Falling back from lgpio: No module named 'lgpio'
warnings.warn(
2024-02-04 10:56:40,314 - octoprint.plugins.Sla_Timelapse - DEBUG - Inactive for too long. Ending the script...
2024-02-04 10:56:40,317 - octoprint.plugins.Sla_Timelapse - DEBUG -
Zipped the contents of /home/pi/timelapse/timelapse_04-02-2024_Job2.
2024-02-04 10:56:40,319 - octoprint.plugins.Sla_Timelapse - DEBUG - The original folder /home/pi/timelapse/timelapse_04-02-2024_Job2 has been deleted.
2024-02-04 10:56:40,320 - octoprint.plugins.Sla_Timelapse - DEBUG -
Exiting... The script ran for 24.99864387512207 seconds.
the plugin is working however it is not recognizing the GPIO for some reason
Ok so when you first setup the script to run prior to converting it to a plugin in assuming there were some pip install commands for required dependencies? Those same friendships need to be installed into OctoPrint's venv.
source ~/oprint/bin/activate
pip install lgpio
The path listed above to activate is where a default OctoPi image has the venv. I'm normal circumstances with a plugin these dependencies would be listed in setup py which you haven't got to yet.
no php support, not natively. there are some things I would change in where you are saving the files to begin with. Instead of self.home_dir = os.path.expanduser('~') you should use self.home_dir = self.get_plugin_data_folder(). this will allow for your timelapses to be backed up as well. The other option would be to just put them in OctoPrint's timelapse folder and use the default file listing available on the timelapse tab with self.home_dir = self._settings.getBaseFolder("timelapse").
I didn't read the code to actually understand what it's doing but the default timelapse plugin saves individual images into self._settings.getBaseFolder("timelapse_tmp") and then after print completion uses ffmpeg to stitch all the images together. Maybe you do the same with whatever process you are doing and only put the final output in the timelapse folder?
when done zip them and delete the original to save space
but i like your idea better but is it possible to get a way of octoprint timelapse be activated by a gpio "short" ... we are talking about resin printers ... because once the uv light goes off it takes about +-5sec for the Z to reach peak before comming back down for the next layer.
because i am not python progremmer ( more like a n00b) there a things i don't get but i am trying to get there.
personally I would probably just make a single file plugin to monitor your "button" for taking a picture and use OctoLapse to do all the work utilizing @OCTOLAPSE TAKE-SNAPSHOT via self._printer.commands(["@OCTOLAPSE TAKE-SNAPSHOT"])
hello mate...
Sorry for the late reply but it has been a crazy week but i am back... again... with more dumb questions
i have try to make a new plugin but still ... nothing
can you please take a look to my git and seen what i am doing wrong?
Note: this is a mix of "home-made" code, bit's from other exemples and a dab of LLM's and.... lol... doen's work.
It install's, it does show in the plugin manager as Enabled and no error but in the octopring log i have issues with the gpio aldo i have lgpio installed.
Log error:
File "/home/pi/oprint/lib/python3.9/site-packages/octoprint_Sla_Timelapse/init.py", line 10, in on_after_startup
self._setup_gpio()
File "/home/pi/oprint/lib/python3.9/site-packages/octoprint_Sla_Timelapse/init.py", line 13, in _setup_gpio
gpio_pin = self._settings.get_int(["gpio_pin"])
Also i hate tryed in a lame way to create a config settings template but also it does not show.
would you give me a had ?
ty for the hint... no i get no errors on the logs however my settings jinga2 is not loading
and
by looking at the code do you think it could work with octolaps and repect the delay ?
when i activate the gpio i get in the log LDR Activated but that's it ....