-
Notifications
You must be signed in to change notification settings - Fork 347
Add FACTOR Plugin #1401
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: gh-pages
Are you sure you want to change the base?
Add FACTOR Plugin #1401
Conversation
jneilliii
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I will be reviewing the plugin code in the next few days, but initial review of this PR needs a few changes, see comments.
|
@jacopotediosi since this is cloud based would love to get your review on this plugin's code as well for any security concerns. |
|
Also needs the commercial flag. Free tier or not, this is from a commercial entity. |
|
And for any cloud offerings we also require a link to the privacy policy to be part of the metadata. |
|
At first glance, this plugin conflicts with the MQTT plugin because of the
I'll perform a more detailed analysis over the weekend, thanks for involving me. |
Yes, I noticed this as well when I did a quick look. Also the class name should also match the plugin and logging statements should be in English.
Very much appreciated. |
|
I have not been able to get this plugin to work at all:
From what I can see, remote control is supposed to work via MQTT, but looking at the code, the There’s also some confusion in the imports: several of them appear unused, while others are in the middle of the code, whereas best practice would be to place them all at the top of the file whenever possible. The Is this plugin still a work in progress by any chance? The main security concern, in my view, is that the MQTT broker should always use TLS ( |
updated code comments to also include this and free-tier, because after registering on the site there is a pro tier and also enterprise best I can tell, hard to say since the site is not completely multi-lingual. |
Changes based on maintainer review feedback: Plugin ID Changes: - ID: factor_mqtt → octoprint_factor - Filename: factor_mqtt.md → octoprint_factor.md Metadata Updates: - Added cloud service attributes (cloud, commercial, free-tier) - Added privacy policy link (https://factor.io.kr/privacy) - Fixed release date to 2024-11-17 These changes resolve naming conflicts with the existing MQTT plugin and comply with OctoPrint plugin repository requirements.
Removed deprecated QR code setup feature references: - Removed QR code from tags - Removed screenshots section (images referenced non-existent files) - Removed featuredimage (logo.png reference) - Updated description to reflect current cloud-based setup - Updated feature list to describe actual setup process - Updated version info to v2.6.2 The plugin no longer includes QR code setup functionality, so all marketing materials and documentation have been updated to reflect the current web-based registration flow.
|
Hi @jneillii, @foosel and @jacopotediosi, Thank you again for all of your feedback on this plugin and for taking the time to review it so thoroughly. I’ve gone through your comments and made a number of changes to address the issues you raised. Here is a summary of what has been updated:
If you have the time, I would really appreciate another look from the security perspective as mentioned. Please let me know if you spot anything else that should be improved or if you’d like me to adjust the documentation further. Thank you again for helping me make this plugin safer and better integrated into the OctoPrint ecosystem. |
- Translated all Korean logging statements to English - Improved code readability for international users - Updated What's New section to highlight English logging feature
|
I’ve finished my review, based on the latest commit as of now: kangbyounggwan/octoprint-factor-plugin@2d607e1. After the implementation of the latest fixes, I was finally able to get the plugin working and successfully connect a printer to the cloud.
|
|
@jacopotediosi Thank you very much for the detailed review — it was extremely helpful. Regarding the frequent version changes in the commit history: I will also fix all of the issues you mentioned, including: I plan to push the fixes within today and will notify you once they are committed. |
I just sent it, you should have received it. |
- Update date to 2025-11-18 - Replace version-specific 'What's New in v2.6.3' with 'Key Features' - Address review feedback: avoid requiring PR for every release - Focus on high-level overview of main functionality
|
All requested changes have been addressed, including the attributes field. |
|
Hi @kangbyounggwan, I performed another round of review on the plugin code (up to commit kangbyounggwan/octoprint-factor-plugin@ee6fdb6). I noticed that there are still several unused I also noticed that you recently added a new function, # If value is 0-100, assume percentage and convert to 0-255
if 0 <= speed_value <= 100:
pwm_value = int((speed_value / 100.0) * 255)
elif 101 <= speed_value <= 255:
pwm_value = speed_value
else:
return {"error": "Fan speed must be between 0-255"}This logic is ambiguous. For example, it is not possible to indicate a PWM value below 100, because any value under 100 is always interpreted as a percentage. In addition, the function does not exhibit linear and monotonic behavior as one would expect: changing from |
|
Additionally, considering that you have already encountered a bug where the plugin mistakenly subscribed to From a security standpoint, it seems quite concerning that the plugin could accidentally subscribe all instances to the same incorrect topic, especially considering that topics are used in this plugin to receive remote commands from the cloud. |
What is the name of your plugin?
FACTOR Plugin
What does your plugin do?
FACTOR Plugin provides remote monitoring and control for OctoPrint via QR code setup. It enables users to access their 3D printer from anywhere with real-time monitoring, camera streaming (MJPEG, WebRTC, RTSP, HLS), and instant notifications (print completion, errors, status updates).
Key features:
Where can we find the source code of your plugin?
https://github.com/kangbyounggwan/octoprint-factor-plugin
Was any kind of genAI (ChatGPT, Copilot etc) involved in creating this plugin?
Yes, AI tools were used to assist with code development, documentation, and UI design. All code has been thoroughly reviewed and tested by the FACTOR team.
Is your plugin commercial in nature?
No, the plugin itself is fully open source (AGPLv3 license). The FACTOR service is free to use, though premium features may be offered in the future.
Does your plugin rely on some cloud services?
Yes, the plugin relies on the FACTOR cloud service (factor.io.kr) for:
All connections are encrypted via TLS/SSL and no OctoPrint credentials are stored remotely.
Further notes
This is the first official release to the OctoPrint Plugin Repository. The plugin has been redesigned in v2.0.0 to provide a simpler, more user-friendly setup experience compared to the previous version.