-
Notifications
You must be signed in to change notification settings - Fork 38
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
Integration with inventory management #57
Comments
Hey Alan - thanks for the feature request. Can you elaborate on when you'd want to print something indefinitely? I'm hesitant to add this as a feature as it has the potential to be quite wasteful. I also suspect an "infinite loop" setting might be a coarse way to specify something that could be better done with a specific signal (e.g. "print enough plastic beads to fill a WxHxD container" may be a better intent than "print plastic beads until the heat death of the universe"). |
Probably just what I'm most used to. We run thousands of parts for weeks at a time on many of our farm printers and I've just been using M808 for that up until now. Its obviously a nice to have but not critical. Frankly I don't see how it would be any more wasteful than just setting a really high number of copies. |
Ah, gotcha. What are some reasons for stopping your print run, after you've started? Is timing a factor, or is it more of a general sense of having enough inventory? (I'm also kind of curious - what kind of things are you printing thousands of?) |
It fully depends on product demand at any given time. We're still somewhat
unsophisticated on inventory control so yes a lot of it can be a guess or a
higher priority job comes in and bumps it.
Alan Puccinelli
Founder & Owner Repkord LLC
https://www.repkord.com
…On Fri, Apr 29, 2022 at 2:05 PM Scott Martin ***@***.***> wrote:
Ah, gotcha. What are some reasons for stopping your print run? Is timing a
factor, or is it more of a guess at having enough inventory?
—
Reply to this email directly, view it on GitHub
<#57 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAFI4FXWN6A75JURF7ESJQLVHRFIJANCNFSM5UTLKCBQ>
.
You are receiving this because you authored the thread.Message ID:
***@***.***>
|
Ah, I was wondering why your name sounded familiar - I was just watching the 3DPN youtube demo of your CR30 upgrades a couple days ago :) cool stuff. Now I'm imagining an integration with some (pre-existing) inventory management service that allows you to issue commands like "print until I have X amount in stock", with additional logic that adjusts the print priority based on whatever's currently the least in-stock. WDYT? I have some work ongoing that allows for multiple queues with different queue behaviors, which would open up the ability to have a "manual" linear/job-order queue and a separate "smart" queue such as above, where the printer can pull work from any of them based on some predetermined rules (e.g. "do stock replenishment, but preempt that with anything in the manual queue"). Also planning support for multiple printers managing these multiple queues (#35) in a many-to-many sort of way. This could be a potential extension/adaptation of that work. |
WDIT? I think that sounds incredible and incredibly useful to us here. Tell me how I can help.
… On Apr 29, 2022, at 2:20 PM, Scott Martin ***@***.***> wrote:
Ah, I was wondering why your name sounded familiar - I was just watching the 3DPN youtube demo of your CR30 upgrades a couple days ago :) cool stuff.
Now I'm imagining an integration with some (pre-existing) inventory management service that allows you to issue commands like "print until I have X amount in stock", with additional logic that adjusts the print priority based on whatever's currently the least in-stock. WDYT?
I have some work ongoing that allows for multiple queues with different queue behaviors, which would open up the ability to have a "manual" linear/job-order queue and a separate "smart" queue such as above, where the printer can pull work from any of them based on some predetermined rules (e.g. "do stock replenishment, but preempt that with anything in the manual queue"). Also planning support for multiple printers managing these multiple queues (#35) in a many-to-many sort of way. This could be a potential extension/adaptation of that work.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.
|
The first and best way for you to help is with the specifics - it appears you're using Shopify for the e-commerce part of your site, which I haven't used in the past. Do they have built-in inventory management? Is it sufficient, or do you think a third-party IMS would work better? (IMO it'd be great to have an option not tied to a specific sales service, but convenience trumps that) The overall design can be somewhat generic: a way to match SKUs to CPQ jobs, plus an extensible way to sync inventory state via polling/pushing with the IMS, in addition to the queue logic. But it's helpful to have an target integration in mind. It's probably going to be another month or so before I've worked through what's already planned for CPQ and start working on this. If you're interested in faster delivery or in helping further, we can chat about contribution / incentives. |
We do use shopify inventory management is minimal. I believe there is an
API but I haven't tried it out yet and frankly most of our stuff is parts
for larger kits so we wouldn't monitor specific stock parts for direct
sales on the eshop this way. Feel free to reach out to me via email to
discuss further when you're ready.
Alan
Alan Puccinelli
Founder & Owner Repkord LLC
https://www.repkord.com
…On Sat, Apr 30, 2022 at 9:58 AM Scott Martin ***@***.***> wrote:
The first and best way for you to help is with the specifics - it appears
you're using Shopify for the e-commerce part of your site, which I haven't
used in the past. Do they have built-in inventory management? Is it
sufficient, or do you think a third-party IMS would work better?
The overall design can be somewhat generic: a way to match SKUs to CPQ
jobs, plus an extensible way to sync inventory state via polling/pushing
with the IMS, in addition to the queue logic. But it's helpful to have an
target integration in mind.
It's probably going to be another month or so before I've worked through
what's already planned for CPQ and start working on this - if you're
interested in faster delivery or in helping further, we can chat about
contribution / incentives.
—
Reply to this email directly, view it on GitHub
<#57 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAFI4FUJROJWCGBGMC425S3VHVREJANCNFSM5UTLKCBQ>
.
You are receiving this because you authored the thread.Message ID:
***@***.***>
|
Hey Scott, question for you. How hard would it be to have an option for
continuous print to output the entirety of the queue as gcode at any given
point. Reason being if I wanted to create a loop sequence but don't have
enough pis for all my machines at the moment it would be super handy to
just copy that gcode to an SD card so "dumb" machines can match up what CP
is doing. Good idea? Want me to throw it in a feature request ticket?
Pooch
Alan Puccinelli
Founder & Owner Repkord LLC
https://www.repkord.com
…On Sat, Apr 30, 2022 at 9:58 AM Scott Martin ***@***.***> wrote:
The first and best way for you to help is with the specifics - it appears
you're using Shopify for the e-commerce part of your site, which I haven't
used in the past. Do they have built-in inventory management? Is it
sufficient, or do you think a third-party IMS would work better?
The overall design can be somewhat generic: a way to match SKUs to CPQ
jobs, plus an extensible way to sync inventory state via polling/pushing
with the IMS, in addition to the queue logic. But it's helpful to have an
target integration in mind.
It's probably going to be another month or so before I've worked through
what's already planned for CPQ and start working on this - if you're
interested in faster delivery or in helping further, we can chat about
contribution / incentives.
—
Reply to this email directly, view it on GitHub
<#57 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAFI4FUJROJWCGBGMC425S3VHVREJANCNFSM5UTLKCBQ>
.
You are receiving this because you authored the thread.Message ID:
***@***.***>
|
Hey, sorry for not handling your question earlier! I somehow lost it in the flow of things. That does sound interesting, sort of a legacy/compat option. Please do file a feature request and we can chat about what makes sense to implement there :) |
Hey @alanpuccinelli - I haven't forgotten about our conversation here. I sent a request via your contact form - we can follow up using the email I submitted there. |
High-level feedback
Ideas:
|
Weighing in as requested. We have 18 printers running 2 shifts a day. We use shopify for sales and orders. Shopify inventory management kind of sucks, so we use an in-house PostgreSQL database to handle inventory. Our tech stack also has an automation platform called N8N running in the shop. It's similar to a self-hosted IFTTT that does webhooks and http requests. It's currently used for file management when creating new listings, but we are trying to come up with a way to integrate that into the printing process as well. For clarity in the rest of the way I'm going to explain things, here's some more background. We refer to a sales unit as an "object." If it's for sale on the website, it's an object. There are also packages of multiple objects for sale. We treat that as a completely new object. Objects are made up of parts. An object can have 1 or more parts. Each part is 1 print file (either a .gcode if we print it with an FDM printer, or a .stl file if we print it with a resin printer). We don't track inventory on objects (which is why shopify's inventory management doesn't work for us). We do track inventory on parts. Our catalog is huge. We usually only have less than 10% of parts in stock at any given time. So, we are essentially a print-on-demand shop, but we need a check step to see if we happen to have one laying around first. Current thought process on a workflow is:
At this point, physical objects start printing. We would need to come up with a way to link those physical objects back to items on the "to be printed list" to indicate that they are finished, but we have to have a human QC point in there. Everything that comes out of the print room should be added to inventory, so orders would always be filled from inventory, instead of straight from production. Honestly, I don't know if any of this adds to the conversation or just muddies the water. |
Thanks, this is exactly what I was hoping for! Also hadn't heard of N8N before - that's a great alternative to IFTTT, Zapier etc.
This lines up perfectly with what I've heard about other inventory systems - that extra indirection between sale items and parts means a custom solution is needed every time. It'd be great if there was a "common" custom solution, which is where I get interested in the details :)
Although I'd initially thought about hosting inventory data in CPQ, I like the idea of an "authoritative" external DB that feeds CPQ. That means fewer integration points needed on the plugin side and less "util columns" for holding opaque user data.
#215 sounds like what you're looking for. I'd definitely want the same validation checks as with moving from local to network queues. Which slicer are you using? At this point, Kiri:Moto, Prusa slicer, and Simplify3D are supported. If your gcode files already have printer metadata, a new slicer can pretty easily be added in. On the flip side, you could always pass STL files around and slice them on the fly. That doesn't require profile inference, but does require a slicing service to be set up. Maybe not worth it if the files being printed don't change regularly, and there's no caching as of yet (see #225).
I've heard this request before, but I'm afraid to "defeat" the gcode validation step like that if it's not actively causing any problems. That being said... I don't think it's been done before, but
Does jneilliii/OctoPrint-BedReady#16 seem useful to you at all? Not saying it would eliminate all QC, but how much work do you think could be eliminated if you could auto-reject based on image differences? Re: linking back to the "to be printed list", I'm imagining a couple options:
WDYT? |
If there is a standard I've not found it.
Having it in CPQ I feel like that could get messy really fast, and would make it harder to integrate into anything else.
We use Prusa Slicer, but automatic detection doesn't work for a majority of our older gcode files. I've not really dug into why yet, because it looks from the code like it should.
I full intend to try passing it thru /set/add later today.
It might, but we don't run webcams. Actually, we don't run individual hardware for each printer. All 18 printers are connected via USB to an HP server and we run 19 different Octoprint docker containers. We leave one of them not connected to a printer and use it sort of like a master control to add new sets/files/etc. Adding USB webcams to that mix would tank the USB throughput and cause a host of other issues. Maybe when rpis aren't selling at black market prices.
Option 1 or 2 seems like the most immediately useful, however N8N is probably capable of doing Option 4 now with no changes. |
Agreed.
If you want to toss an example file my way, I could take a look and see where the soft matching breaks down :)
Makes sense.
Yeah, rpi's are quite expensive right now. I started thinking about a lower-cost option involving cheaper embedded devices. That's likely to be several months away. Do you have any special hardware on your HP server to handle 18 independent serial connections? I had another user on #213 experiencing bandwidth issues, and I wonder if there's enough info around that it'd be worth writing a guide in the docs for a single-host, many-printer hardware setup.
Agreed - between the two, I might tackle option 2 in the future as it has the most potential. If you find a good solution with option 4 in the meantime, I'd be interested in documenting it so others have a starting point for their integrations. |
I've split off the computer vision feature discussion to #229. May also work on option 2 as part of it. |
While one can always set an incredibly high number of copies might be nice to have a repeat till cancelled option. Maybe just setting a "-1" value for copies or a checkmark option?
The text was updated successfully, but these errors were encountered: