Building Industry 4.0 logistics applications with MicroPython and ESP32 MCUs
This is a modal window.
The media could not be loaded, either because the server or network failed or because the format is not supported.
Formal Metadata
Title |
| |
Subtitle |
| |
Title of Series | ||
Number of Parts | 118 | |
Author | ||
License | CC Attribution - NonCommercial - ShareAlike 3.0 Unported: You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal and non-commercial purpose as long as the work is attributed to the author in the manner specified by the author or licensor and the work or content is shared also in adapted form only under the conditions of this | |
Identifiers | 10.5446/44858 (DOI) | |
Publisher | ||
Release Date | ||
Language |
Content Metadata
Subject Area | ||
Genre | ||
Abstract |
|
EuroPython 201913 / 118
2
7
8
15
20
30
33
36
39
40
45
49
51
55
57
58
63
64
66
68
69
71
74
77
78
80
82
96
98
105
107
108
110
113
115
00:00
BuildingPoint cloudGoogolSoftwareCartesian coordinate systemRapid PrototypingProjective planeBoss CorporationLecture/ConferenceComputer animation
00:34
Open sourceCollisionMenu (computing)Virtual machineMereologyStack (abstract data type)InjektivitätOnline helpCase moddingEntire functionTelecommunicationProduct (business)TouchscreenMemory managementState of matterMicrocontrollerLogistic distributionDevice driverFormal languageComputerNumberMagnetic stripe cardMultiplication signSelf-organizationBuildingData storage deviceStandard deviationCommunications protocolOpen sourceSoftwarePhysical systemCuboidPlanningComputing platformProjective planeShift operatorSmartphoneCore dumpMessage passingWebsiteComputer hardwareVideoconferencingBoris (given name)Monster groupDecision theoryServer (computing)CASE <Informatik>Service (economics)InternetworkingSystem callPower (physics)Machine codeDisk read-and-write headUltraviolet photoelectron spectroscopyPlastikkarteCartesian coordinate systemRight angleBoss CorporationProcess (computing)Time zoneService-oriented architectureStructural loadIntegrated development environmentQuality of serviceInternet der DingeWeb 2.0Graphical user interfaceFirmwareSheaf (mathematics)Flash memoryRevision controlFlagLibrary (computing)Web applicationComputer architectureMobile appScanning tunneling microscopeEmailEnergy conversion efficiencyDefault (computer science)Android (robot)Client (computing)Logical constantOperator (mathematics)CollisionComputer animation
07:57
Service-oriented architectureSummierbarkeitSoftware testingImplementationPrototypeComputerComputer hardwareLibrary (computing)Virtual machineMenu (computing)Revision controlDisk read-and-write headBitMessage passingVirtual machineEmailPhysical systemProcess (computing)MathematicsService (economics)Electronic mailing listYouTubeFeedbackOpen setInformationCuboidService-oriented architectureWebsitePixelNP-hardLibrary (computing)GoogolRight anglePower (physics)Zoom lensOperator (mathematics)Dressing (medical)Clifford algebraNumberDevice driverMultiplication signOrder (biology)Regulator geneSoftware testingData managementSoftware developerSuite (music)CodecWhiteboardPlanningBit ratePrototypeContrast (vision)Descriptive statisticsFactory (trading post)Sound effectAlgorithmMereologyCubeMoment (mathematics)Complete metric spaceMobile WebSoftwareFront and back endsBoss CorporationSpecial unitary groupConnectivity (graph theory)Functional (mathematics)System administratorDifferent (Kate Ryan album)Slide ruleSpectrum (functional analysis)Software repositoryGraphical user interfaceFirmwareScheduling (computing)Focus (optics)Greatest elementMachine codeQueue (abstract data type)QuicksortTrailTime zoneRegular graphTask (computing)Representation (politics)GUI widgetIntegerDemo (music)Graph coloringComputer simulationComputer hardwareLaptop
15:01
UsabilityScalable Coherent InterfaceImplementationStack (abstract data type)Greatest elementVirtual machineStatisticsMessage passingProcess (computing)Graphical user interfaceInternetworkingObject (grammar)State of matterSoftwareHydraulic jumpHome pageGreatest elementDevice driverVirtual machineEndliche ModelltheorieView (database)Game controllerSource codeJSON
15:47
Client (computing)Computer fontInstance (computer science)State of matterProcess (computing)Device driverRight angleDemo (music)Source codeJSONXMLComputer animation
16:20
Computer simulationMusical ensembleTerm (mathematics)Computer animation
16:56
Virtual machineDefault (computer science)Time zoneVirtual machineDot productComputer simulationSystem administratorRepresentation (politics)Process (computing)ChainPresentation of a group
17:42
Default (computer science)Virtual machineDrum memoryBitDevice driverGame controllerProcess (computing)Computer hardwarePhysical systemTime zoneSoftware testingInformationWeb 2.0Computer simulationLibrary (computing)Graphical user interfaceVirtual machinePoint (geometry)NumberLoop (music)Moment (mathematics)Exception handlingGreatest elementRight angleDot productData managementFactory (trading post)CASE <Informatik>Medical imagingVideoconferencingState of matterMathematicsMetreCubeServer (computing)Software developer
21:23
ImplementationSoftware testingPrototypeComputer hardwareComputerMathematicsComputer-generated imageryMachine codeBuildingSimulationMathematicsGraphical user interfaceProjective planeLibrary (computing)Multiplication signSerial communicationComputer simulationLaptopEntire functionIntegrated development environmentPower (physics)File systemWhiteboardExecution unitQuicksortSoftware developerFunctional (mathematics)MultiplicationPhysical systemInterpreter (computing)Type theorySoftware testingComputer hardwareMachine codeFrequencyMoving averageSingle-precision floating-point formatSystem callMedical imagingVirtual machinePhase transitionFactory (trading post)Flash memory2 (number)Wage labourEmulatorMusical ensembleInverter (logic gate)SmartphoneLetterpress printingAuthorizationLocal ringFile Transfer ProtocolForestHypermediaWaveSurfaceMixed realityLevel (video gaming)Electronic visual displayMaxima and minimaJames Waddell Alexander IIProcess (computing)SoftwareComputer animation
25:18
Software maintenanceVirtual machineAlgorithmSoftware testingWhiteboardWorkloadPredictionPlanningTwitterVirtual machineMultiplication signHistogramMobile appDevice driverPhysical systemPattern languagePhase transitionProjective planeBuildingElectronic program guideBitOperator (mathematics)Electronic visual displayWave packetArithmetic meanProcess (computing)Cycle (graph theory)CASE <Informatik>MathematicsAndroid (robot)WhiteboardComplete metric spaceTable (information)Musical ensembleRow (database)Subject indexingInternet service providerSoftware developerVideo gameCumulantService (economics)NewsletterLevel (video gaming)Computer animation
27:13
TwitterArtificial intelligenceMultiplication signComputer hardwareTime zoneWeb applicationSlide ruleVirtual machineSmartphoneTouchscreenDevice driverWeb 2.0Operator (mathematics)Revision controlServer (computing)SurfaceFingerprintPhysical systemCuboidData storage deviceMereologyData managementSoftwarePermianImplementationOffice suiteSuite (music)Electronic visual displayMusical ensembleWordMedical imagingLecture/Conference
29:27
CurvatureLibrary catalogMusical ensembleVirtual machineProcess (computing)Multiplication signControl flowComputer animation
Transcript: English(auto-generated)
00:04
Hi, thanks for the introduction. I'm quite delighted to talk here today about Yeah, in this building industry 4.0 applications and rapid prototyping with micro Python So last year I saw a nice talk on micro Python and after that I was
00:23
kind of curious when the next project would come along where I could Yeah, convince my boss that we need to invest in that and get started with it So we had a company that That makes injection molded parts contact us and basically they said hey
00:42
we need we need your help with intra logistics, so they have these machines that produce plastic parts for the auto industry using injection molding and Then at every machine. There's a worker that basically takes the parts and stacks them into these boxes here and
01:02
Then the boxes get picked up by a forklift and then stored in the storage facility and There they they work around the clock so in three shifts, and they have 40 machines in there in the production facility and it's all in one big building and
01:22
Right now they just split the production facility to five zones And then they have five forklift drivers in every shift and they drive around until they find a full box And they take it to the storage facility, so there's like no Communication or organization other than Dedicating one driver to a certain zone right and that's very inefficient obviously and
01:45
they wanted us to help with that because they have trouble finding new forklift drivers and So the goal was that instead of yeah Dedicating in a static way the drivers to the zones there should be some dynamic allocation
02:01
and it should also the Drivers the number of empty runs should be reduced right because these forklifts are quite expensive so if they drive around a lot like with no load and They waste time right This should change, and they should it should be like a uber for forklift right it should it should be on demand only
02:25
and So yeah, we first talked with them. I convinced my boss that this is going to be our first micro button project and Then we said okay. What what is the logistic process right so how does it work so basically? The forklift driver is free, then he should
02:42
The machine operator has a full box. He should push a button and basically the forklift should appear at a machine Pick up the full box bring that into the storage facility And then pick up an empty box and return that to the machine because of course they need a constant inflow of new empty boxes
03:00
as well And yeah, we we then looked at what what hardware should we use right because micro Python We need some hardware for that of course and at in the beginning we thought oh this would be like an Android project rights where we build like some kind of smartphone app and and
03:20
Then we can do that with an app But the thing is that the machine operators they wear gloves so they cannot use capacitive touch screens So you might know that from the winter depending on where you live there when you wear gloves you cannot you read your mail right outside and So we looked around for micro Python hardware, and we found the m5 stack platform
03:45
It's somewhere from Asia, and they open source the hardware So we thought oh, this is good because if we start building that and later It turns out that we need like a thousand of those devices Then we can just take this open source plan adapt it to our needs and build our own hardware
04:04
We could also use the facility Wi-Fi network, so that was quite helpful because Otherwise we would have to install a Wi-Fi network there, but the m5 stack has Wi-Fi is STM 32 So it's like one of the really Yeah default
04:21
microcontrollers for micro Python stuff It has yeah, it's powered through USB. In fact. I have one here and It also has a small battery for When the power goes out it will last maybe five or ten minutes depending on how much your code uses the screen and how energy
04:41
Efficient you implement it It has Bluetooth so We thought that might be interesting because The customers warned us that they didn't want two drivers in the same zone at the same time because they have narrow hallways and They are worried that the number of accidents will go through the roof if this
05:02
Yeah, forklift drivers start meeting in the narrow parts of the of the place, so we thought okay Maybe that's cool with Bluetooth later on we could build some kind of collision avoidance system or use these Bluetooth smart tags to to figure out if
05:21
If there is a driver in a certain section of the course and the best thing is that yeah, they're only like 50 euros They also run by default they run like Arduino C this Arduino C flavor, but you can flash micro Python on them and they they provide you with a version of micro Python, but
05:43
In that version you have to yeah write your code online in their online IDE and obviously we didn't want to do that right because We thought we had maybe some commercial opportunity there later on so we were not really keen on developing this in some like web GUI Where the servers are hosted in China writer?
06:03
so in the end We went with just as this guy on github. I don't know maybe some also here called laboris, and he has a really nice Micro Python firmware for this stm32 base ports, and we use that and that worked out of the box
06:20
So now that we had the hardware right we also needed some kind of message protocol And we decided to go with MQTT so who here has used MQTT before Okay, it's pretty good So it's very famous. They are published describe architecture based
06:42
Message protocol, it's very lightweight, and it's quite common in iot applications so Here's an example with a with a temperature sensor where basically The the sensor publishes this and then there's a server called a broker that will hold on to the message and until someone subscribes to the topic so the channels are called topics in MQTT language and
07:06
The messages have this quality of service flag that basically says delivered a message at most once at least once or exactly once That's quite good because in our case we wanted to make sure that only one forklift shows up when there's a box to be
07:22
picked up right and Other thing is that there's MQTT libraries for kind of every Language so if we wanted to later on build a web app we could do that because we could just Send the messages that is needed to trigger like the forklift pickup
07:42
through HTTP MQTT client So the system looks as follows so basically we have these machines right that produce parts And they all get one M5 stacks mounted to them and then on the other hand we have the forklift drivers
08:00
That also they all get the M5 stack if you are thinking about how did they power this in the forklift? So the forklift like cars have the cigarette lighter Plucks so it's really easy to to power stuff there And then we need something in the middle right and we decided to go with a Raspberry Pi
08:21
So that runs the MQTT broker that basically is the message Exchange place and then on top of that broker we build a couple of services So we build something called the dispatcher Which basically? takes the messages from both sides and then creates jobs and then
08:41
Assigns a forklift to a job, and it keeps track of the jobs that are currently running and so on And it does the scheduling so We implemented basically first in first out, but you could Later on implement more fancy scheduling algorithms, right? Then we had a locker component because we wanted to know what was going on so that was a good hint in the
09:05
previous talk actually and We built an admin panel Basically for the the manager of the plant should be able to see What is going on in his plant right so there you can see like which machines are producing which how many open?
09:24
jobs there are at the moment and so on and He can assign the forklifts to machines there. I will show that later in a demo and all these Orange boxes we we put into micro services of course
09:40
So then we went off to to start a development, and we were thinking about okay, how should we Have a go at this because Yeah, I guess if you do something better development You know that if you have to upload a firmware every time for testing it's quite a tedious process and in the beginning Maybe you make bigger steps, but then in the end you make a lot of small steps
10:03
And then if you have to test after every step It becomes quite time-consuming and annoying so we thought the following let's implement a prototype in Python like regular Python Test that and then basically later We just copy it over to the hardware because it's micro Python right should be sort of the same thing and we're done and
10:25
Today, I will tell you about the learnings that we had from that So first of all it started that we needed some kind of GUI library But at so the the micro patent firmware There's basically functions where you can like activate single pixels you can write text
10:44
And you can draw boxes and so on but there's nothing that's really like an organized GUI library So we part is something that we found from one of the Arduino examples And we also wrote a simulator for for TK so that we could test on our laptop
11:03
It looks like this so basically we have a top bar for like showing the date or the version Do you have to send a widget where there's that information for the user and on the bottom we have just like Yeah, basically the button labels because here you can see the buttons are on the bottom, right?
11:22
And yeah might be nice if the user knows what what he's doing when he pushes a button So we put a git version on top So this is something that I could really recommend everyone to do because sometimes Yeah things go wrong and you have the wrong version on your device, and you're wondering why the change that you made is not showing
11:44
So this is really a good hint and We put something called a Wi-Fi bar So you know that from your phone just to show whether we are connected to Wi-Fi or not because we figured in the end when we drive to the factory to deploy the thing and
12:01
There's Wi-Fi problems Then yeah, we want to know and not like yeah search for the problem in the in the dark And Then yeah, just button labels Basically, so what happens now when the machine operator pushes the button so I have the code examples here Just more for the sake of completeness
12:21
And I will upload the slides to the gitlab repo that's in the in the description of the talk So you can find them there in the next couple of days so Basically at first we we just said the text for the bottom bars And then when the operator pushes the button the following thing happens So there's a function called announce packet and then basically sends MQTT message to the broker saying like hey
12:47
I'm a machine number one, and I also have like an integer ID one and There's a new job and then The dispatcher
13:01
Sorry, and then basically there's also this packet showing up there That's quite important because the people that operate the machines If if they push the button and yeah, it takes like a little bit of time to draw the box But if you don't show them any feedback, right? They might get impatient and
13:21
Then you have like a hundred packets that need to be picked up in your system because they keep pushing the button So we did some visual representation of how many packets are waiting So then the dispatcher receives that request and the first thing it does is it just says okay? you need to put this into the into the queue and
13:44
then in the next step basically it looks at It it Sorts it so in this acute job method basically it sorts the Job into the right queue because we said that there's this zone system, right? So right now they have five songs, but maybe later we can reduce that gradually
14:04
So there's one one task queue for every Zone, so it sorts that in there and then in the next step It looks at the available forklifts in that zone and it assigns a forklift, right? So it schedules the job basically and then it lets
14:21
It lets the machine side now and the focus right now by by publishing messages right and Then the following thing happens so on the machine it will say the I'm sorry This is in German all the text because German company so but it basically this means that the forklift is coming soon
14:41
so and then the machine operator also knows that okay like There was the packet waiting, but now our forklift has has been assigned and then on the forklift side Yeah, I'm sorry for the bad contrast, but we did the two different spectrum colors It still says like oh, there's there's no
15:02
No job. So the message has arrived but the GUI has not been updated right? So the forklift basically we did a model view controller there and It It first it there's a job object that has that describes the state so it could be like pickup requested
15:22
Job is scheduled job is picked up and so on and so first it updates the state of the job And then it it beeps so that the forklift driver gets audio Feedback and then in the next step it updates the GUI and so first it will update the text saying like, okay
15:43
You have to pick up a package at machine one And then it also it has to it has to also update in the next step the bottom Button text right because then it should not say pause, but it should say like, okay. I loaded the job
16:00
And then a forklift driver can confirm that he loaded a job, right? so he pushes the button and then basically yeah, we again update the GUI and we let Dispatcher know and I think the rest is quite clear, right? So this goes on and for some more iterations like but I will show this now in a demo anyway, so
16:23
We build a simulator which is quite nice because that allows me to let me see so I can do this And then I can now put these guys
16:46
Sorry But Also, I have this So first maybe There's the admin panel here, right? So the left side you can ignore. This is basically just a representation of
17:08
How the place looks like and that there's the four machines on the top and the red dots basically They indicate whether that machine is producing or not, but in the simulator that doesn't work
17:21
But here on that side you can see that there is There's two machines not know three machines and one forklift. So the cool thing is that With the simulator
17:50
so with the simulator we can just start multiple instances and But also because yeah, well I brought my own Wi-Fi access point
18:01
I could connect to one of the actual devices so you can see that it allows you to do this hardware in a loop testing Right. So in the beginning you simulate everything and then step by step you go you go more towards running things on actual hardware and now Basically you can make like new zones here. So I made this zone two and you could put the machines
18:25
in here Right by dragging and dropping and you can just say okay I just want machine number five to receive the so to communicate with forklift one you can also rename the devices if that's interesting to you and
18:44
and That way basically they the company that we did this for they had the opportunity that way to to still control being control of Who drives where and so in the beginning they could start with their five zone system and then slowly as they begin to develop trust towards the system they could relax the
19:04
zoning yeah, and Then so, okay. I put them back now just to and so basically there you can also see that Disadvantage of the advantage of using MQTT because so also this web GUI it uses JavaScript and it communicates with MQTT
19:26
With the dispatcher, right? And so now maybe you want to see how it actually works so So basically the buttons are emulated by key presses So you have to trust me that so I I now I'm on this machine there on the top
19:45
so machine number one and I push the Q button and then Yeah, it says the forklift is coming because at that moment there was no other forklift. It goes quite fast and then Basically here you have this like red notification dots that count how many packets are waiting at that machine. So
20:04
The manager has at one glance He knows what's going on in his factory right and on the bottom. You see a bit more text information It basically says okay. There's a new job. It's it has been assigned to this forklift and so on so now the forklift driver drives there and he pushes the middle button and
20:23
Then basically it says okay. He loaded it it immediately updates and then He does all that and then he brings the replacement and so on and then he's done and the job disappears And so now I can actually on that hardware push the button That takes a bit longer, but it also works. I can push the button again
20:42
Now I have two jobs and then maybe I also Make some jobs here. So there's some stuff going on. So now this poor forklift driver, right you can I Mean you can come up after the talk and try it out yourself. Maybe it's more fun But basically the nice thing here is that the simulator works together quite well with a real product, right?
21:05
So they share most of the code except for the GUI library So basically on the one hand you you import TK and in the other case you import this Micro Python GUI library that we wrote okay, so
21:26
So did our workflow work as intended yeah Not completely. Yeah, so we made some really Bad mistakes in the beginning and I want to share with you the lessons that we learned so
21:42
the first thing is that Micro Python has no type hinting support. So in the beginning when we started a project we wanted to be really good Yeah developers and we we wrote all the code with type hinting and Then after this long period of developing when we first like copied it to the hardware, right? So like
22:03
Yeah, we figured out. Okay crap. There's no type hinting and then we spent like one day Removing our mess The other thing is that you can upload code in multiple ways. So one way is is to
22:22
To Use the serial interface just like file system emulator, but that's quite slow So that's fine when you want to replace like one file, but when you want to upload the entire code Completely and we always did that because we wanted to make sure that we don't mess up there and make some mistakes
22:41
We found out that it so for our code it took I think like three minutes for one board So that's quite a long time if you want to test out a small in a small change, right? So that's what really paid off to to test on the laptop But then later we found out that you can actually like include your code in the micro patent image
23:00
And then you can just flash the entire flash storage in one go and that takes like three seconds No matter how or four seconds no matter how big your code is. So That's something I would really recommend you also Especially it helps you in that phase where you need to roll out so once we went to that factory and we had to like
23:20
Roll the system out there. So we tested it there and it actually ran like for four weeks without a single support call So that that was quite nice We needed like a lot of units to To update a lot of units at once right and then this flashing really paid off and the other
23:40
Yeah hint is before you begin your development Make sure that the libraries you plan on using Are available in micro Python because it's also something that we didn't consider at all We said oh, yeah, you know on the laptop. We have pip and pip has sort of everything and But then in the end we had to either like write a functionality ourselves or like find a different library
24:05
so there is something called micro pip and And There you can see whether the packages are available The other thing is that you can run the micro Python interpreter also on your on your local machine So if you have something where there is no graphic user interface, that might be quite smart for local testing
24:24
But I think for us it didn't work because of the of the GUI Because then there was no way to simulate the display or at least no easy way And so I would say the workflow should look like this First check the dependencies for your project. So like this libraries that they are available build a simulator implement it
24:46
And then simulate as much as you can test as much as you can on the laptop because there's just really fast and then later if there's Problems that you tested for on your laptop that show up later You know that in the end is a hardware issue maybe on
25:04
and then profit And so in deployment it yeah, it looked like this So there's quite a rough environment But these things are super cool because we just used the teaser power strips and we glued them to the machines In the end we made a
25:20
Android app for the forklift drivers because they didn't like the small display. They wanted a bigger display and Now you might ask yourself that but you said you're a data scientist, right? So what does all this stuff have to do with data science? So one I'm embedded systems guide by training and then in the PhD, I started data science, but
25:43
Yeah, secondly if you want to do data science, but you have no data, right? You need to like develop your own means to record data first and I'm running out of time So I will skip to the interesting bit So in the end because we we always Notify the dispatcher when the job state changes we could like make this
26:04
Histogram, for example is a cumulative histogram of the waiting time. So the time between the machine operator pushing the button and The forklift showing up and then you can derive that Yeah for 80% of the of the packages basically
26:21
It takes less than two and a half minutes for some guy to show up and and take the package Then you can do the same thing for the turnaround time and you can see that the turnaround So the complete cycle from picking it up to delivering the empty case Yeah, it's also below five minutes for 80% of the packages
26:40
So that's where now the interesting stuff for me as a data scientist starts But in the beginning there was no data to analyze right? So Yeah, that's that's why we why we invested the time in building this and also it's a lot of fun So, um, I hope I could maybe motivate you to start your own
27:00
Your own micro pattern project with this and I'm happy to look forward looking forward to your questions No, so. Thanks Thank you very much. So we have time for a couple of questions. I can see that how the people perfect, please
27:24
Thank You Florian for the presentation. It was really interesting. I have actually two questions so at the beginning you mentioned that You are not going to use phones because of gloves, but at the end you used phones. So that's Yes, the rational behind it. The second question is
27:43
How does the dispatcher server? Assigns a machine to a full plate So, how does it work? Is it like you put like already a machine and the full plate? In one zone and then it's automatic or or there is like
28:02
Logic in the server. Okay. So, um, so the first thing with the smartphones They told us that all machine operators wear gloves But that's due to that some of the parts that they make they have glossy surfaces So you don't want like fingerprints and grease them
28:20
but the forklift drivers They don't wear gloves and also it turns out that many of the of the machine operators actually didn't wear gloves so that's something that the executives think think happens, but then like You know So in the end, we also build a web version for calling the forklift. You can see it here
28:41
Because they had this touch screen displays, right? So they could choose between and like using the hardware and a touch screen For this the rational was just the bigger screen size and also they wanted I Have the high slides here. So they wanted something where they could Make the system memorize where the where the box from that machine was stored and what storage place and
29:06
That was much easier to implement in a web app than in micro I mean just the amount of time to Invest so we did it in Two days or something. Yeah, this that's where the MQTT stuff really paid off because you can just switch
29:20
It doesn't it doesn't matter and then the dispatcher it works with you have the zones and basically the manager decides what forklift drives for which machines and then The dispatcher looks for the next free forklift and just assigns that but you could do that Could do better than that. For example, you could when you know that forklift a deliver something to machine one
29:48
And you have two jobs waiting like from one from machine two and one from machine 25, right? Then maybe you wanted to work on the job for machine two because it's closer so you could do that
30:00
Thank you. Sorry, that was long answer Thank you very much. I'm sorry. We have questions, but unfortunately we are running out of time But the good news is we have a coffee break so there's time for More. Yes, so you can come here for me. It's fine. I can stay here also So let's give a last one of applause for Florian Pace