Regarding the UMH core stack, I updated
# general
l
Regarding the UMH core stack, I updated my 'starterkit' fully last week with some examples for ERP data, OPC-UA and included pgbouncer. Let me know if you have questions πŸ‘
It should be nearly one-click deploy, just add auth, paste in the flows in the UI and it should work out of the box
Slightly related, I also released a UNS simulator using PackML and some tweaks for metalworking simulation https://github.com/SheetMetalConnect/metalfab-uns-simulator
Both integrate btw. So you can send _raw to UNS and it should end up in historian. And if I haven't said it: Just as a educational template πŸ™‚ Took me some hours to figure this out and I think that starters would love it
j
There is a project β€œUMH-factory-demo” by @DanielH which we use internally for testing. Will check yours out as well
d
ah, yes. https://github.com/united-manufacturing-hub/umh-factory-demo it is a fully automated script for setting up umh-core, timescale, nginx, pgbouncer, a machine simulator that generates upc-ua data, pre-generated flows, data-models, sql-functions/views. Not meant for production use. Works fine for playing around, testing functions etc.
l
Wow did not know about this one. Thanks
d
It is quite new. I have rewritten it a couple of times, but now it is stable. It is very quick to setup a demo and play around.
l
@DanielH as someone specialised in the sheet metal industry, I'm impressed with your accuracy of the demo setup! I would maybe adjust a few things regarding the laser data points, but got the fabrication demo up now. Super done!
d
@Luke van Enkhuizen Thanks. I have been in the industry for many years my self, so i have quite good understanding of different processes. πŸ˜€ I also did some research for the machine simulator to be as accurate as possible.
@Luke van Enkhuizen Any suggestions/wishes for machines/lines to include in the future?
l
Hey @DanielH yes, for both the repo itself as well as some use cases i will create a few issues. I found some bugs with the stop detector, erp-receiver and some enhancement to stop reasons (e.g. have them in the simulator dashboard instead of grafana)
Draft below, I still need to tidy up, but gladly will contribute v1.3.11 release exactly as we found them: - Issue #1 (stop-detector): Line 116 has else { 2 } and no null guard in determine_action β€” confirmed upstream bug. - Issue #2 (erp-receiver): lineId is passed raw to target_line in all 3 places, no suffix stripping β€” confirmed upstream bug.
d
Nice. i am currently working with erp-receiver and stop-detector, so hopefully it will be fixed today. also pushed some minor changes in the machine simulator since it was causing deadlocks.
l
some could be my own creations, like #2 but on it πŸ™‚
d
this is super helpful. I have also fixed some hypertable errors which should greatly improve the performance in grafana.
biggest challenge is to make everything work when having a dynamic deployment since nothing can be hardcoded.
l
Yea, I see the challenge. I was trying to integrate a powdercoating line example like I integrated it myself for client. Quite tricky to not break other things
But if I fixed it on my end, I will add a PR / issue πŸ˜‰
d
Issue #1: Stop-detector default state & null guard - else { 2 } default β€” acceptable design choice (assumes RUNNING on first boot; only creates a duplicate stop on restart if machine is already stopped). - Cache key fix confirmed: both GET/SET use meta("umh_topic") (not the broken json("asset_id")). - Cache SET value fix confirmed: uses content() (not the broken json("current_state").string()). - Added missing filter_no_asset guard β€” drops messages with null asset_id before determine_action, preventing the NOT NULL constraint error we saw on the VM. Issue #2: ERP-receiver lineId suffix stripping - Fixed: lineId now strips the -N suffix via rawLineId.replace(/-\d+$/, '') so automotive-welding-1 becomes automotive-welding. - The get_output_vs_planned LIKE fallback at line 1567 handles existing data with the old suffixed names.
fixes implemented, added also a automatic stop classifier to simulate operator inputs, and not leaving thousands of unclassified stops in the database.
5 Views