- User Since
- Jul 16 2018, 6:19 AM (44 w, 3 d)
Action check box for stopping the scheduler added (not implemented)
Observatory windows title set to Observatory
Execute actions for weather warnings and alerts
Taking actions due to weather warnings or alerts implemented
Mon, May 20
- Handling disconnects for weather and dome added
- UI elements for observatory actions and status added - not implemented yet
Currently, the interference with with other modules isn't that heavy, so technically it is not necessary. Nevertheless, I would prefer a feature branch so that we can launch the module with a mature set of functionality.
Sun, May 19
Tool tips added to the Observatory module
D-Bus interface added.
Wed, May 15
Tue, May 7
Sun, May 5
Thu, May 2
We follow another path with D20068 - closed.
Wed, May 1
Solved in D19456.
Solved in another diff.
Seems like this is not merged into master.
I think this diff has not been merged yet.
Update diff after rebase (second try)
Damn, that was wrong! Please wait for another update...
Rebased upon latest master version.
I'm waiting for Eric's review. I can post a rebased version later if required.
Apr 21 2019
Apr 19 2019
Apr 13 2019
I would opt for 3.2. The behavior is better than without the fix.
Apr 11 2019
When a scheduler job aborts, it does not change the completed frame count. So probably an in-sequence focus failing might do the job?
Aborting, right, but restarting resets the counters to zero.
Back to the original question, how to proceed. I tried to construct a situation where the calculation of captured frames is call after the partial completion of a scheduler job where exactly that problem occurs we discussed above - I failed, I could not bring kstars into such a state. So maybe we have a theoretical discussion here.
Apr 10 2019
With the latest information posted - YES. It's exactly the situation with a capture job of 18*L+3*R+3*G+3*B.
Turned out meanwhile that it is not related. It is simply missing awareness of the option "Remember job progress". Maybe we should consider moving this option directly to the scheduler tab - or show at least there, that the option is active.
With the latest information posted - YES. It's exactly the situation with a capture job of 18*L+3*R+3*G+3*B.
It's unclear, but maybe, yes.
Agreed, the issue we are working here is a good hint. I asked for more details on the forum.
Could I offer my own implementation on the two fixes that are in this differential? I'd like to first fix the FindNextJob issue, then in another diff the frame counting via messages from the capture module.
Absolutely fine, I do not have the ambition that I fix it. I simply want it to be fixed asap. :-)
My previous message is about the calculation : the order of operators produces 1 when less than a full sequence is executed. It also considers sequences are distributed equally between jobs, which I disagree with as the code, in remember mode, is trying to gather frames to complete sequences in order, then schedule remaining ones.
You are right, the calculation of captured frames of a certain sequence job is only correct as long as the entire capture job has completed. If it does not run completely, the frames taken in the last cycle are not counted correctly.
Let's take an example with a LLLRGB sequence that completes twice and terminates after two L frames. In the calculation, we have schedJob->getCompletedCount() = 14, capturesPerRepeat=6 and seqJob->getCount() = 3. As a result we get 14/6*3 = 6 - which is wrong, it should be 8.
Apr 7 2019
That's a good idea, but weeell I have two disagreements : first this is integer calculation and you probably need to reorder your operators, and second, if I understand correctly, you are considering the amount of captures to get equiprobable scattering over all sequence jobs.
I'll nonetheless test this asap.
Could you please be more specific? To be honest, I do not understand what you mean.
Apr 6 2019
Update: There was an another bug in calculating whether light frames are required by a schedule job. In the case that "Repeat for x runs" is selected and one sequence has more captures than required and another one has less, the scheduler job assumes than no light frames are required - which is wrong.
Can you please check this?
Resolved with D20150
Mar 31 2019
Mar 29 2019
Hm, maybe, but I think it's a different issue. But thanks for the hint, I will try to reproduce it.
Mar 28 2019
OK, but I checked for the reordering problem:
- It's possible to sort jobs while the Scheduler is running using the "Reset state and sort observations" button. That is not a regression, that is an existing bug.
- It's possible to reorder and reset jobs while the Scheduler is running using the "Reset state and force reevaluation" button. That is a regression in this differential.
Eric, I cannot reproduce it. When I start the scheduler, all buttons on the top left side of the queue are deactivated.
Mar 27 2019
I think I found a way to correct the counting of frames for the case that remembering is ticked off.
As mentioned above, right, this is an existing problem, but this diff neither addresses it nor makes it worse. Should be fixed separately.
Well, filling the map in any cases will not help, because the intention of not ticking "Remember progress" is exactly, that we start counting from zero - no matter how many are in the file system.
Your comment about capture_completed is right, I'm trying to fix it. The problem is, that captures_completed = schedJob->getCompletedCount() is called for each sequence job entry and added to totalCompletedCount, i.e. the total amount of the entire capture run is added multiply.
@TallFurryMan: Absolutely not, that's the nature of discussion. And I appreciate the ambition of making a sports car out of it :-)
Mar 26 2019
Removal of table dis-/enabling completed.
Active job selected, enabling/disabling queue tables removed.
By the way: I found out that the null pointer exception occurs also when there is only one scheduler entry. So I think it's quite urgent that we at least fix this issue...
Better than the rather arbitrary limit of 15. But why -15 and not -90? And what about changing the maximum to 90 instead of 89.9?
Currently I am reluctant interfering directly since I am not really familiar with style sheets. I understand that it follows the CSS syntax, but I do not want to override a single place with fixed values.
Mar 25 2019
Now rows might only be selected when capture or scheduler are idle.
Job table disabled when capture or scheduler are running
Please check my comments, from my point of view everything should be fine.
Mar 24 2019
Right, that's what I first thought. But does it really make sense that a scheduler job rates its own score? Shouldn't be the rating of a job something that we would like to keep outside of a single job? That's why I came up with the idea to shift it to a separate class being associated with the Scheduler keeping the scoring logic.
Hm, seems like both changing it and leaving it have good arguments. What about if we freeze the scheduler, leave it currently as it is and concentrate on refactoring as begun in D20001? Doing both in parallel might be too much...
Ouch, that's embarrassing to admit, but I simply forgot to test this case :(
I'm afraid, scheduler and capture take the values at least partially directly from the UI and not from the model.
I have done both. But relocating the functionality to SchedulerJob has the problem, that calculations for weather and darkness are not specific to a scheduler job. In fact, weather and darkness are properties of the entire schedule, not of the single scheduler job.
And yes, the idea points exactly in that direction that we may have several ones. In fact we have two: one where the sequence is set manually and one where the sequence is sorted by altitude. But both use the same scoring strategy. See ScheduleStrategy as base class.
Mar 23 2019
This does not work with multi-night setup. Suppose I have a scheduler list with Light + Calibration frames at the end. When I run it daily, I expect it to finish whatever is left. If only calibration frames are left what happens? It tracks and focus and guide on what? What if I only had dark frames left?
What type of setup do you have in mind? In case that there is a separate scheduler job for the calibration frames, it simply depends, whether guiding etc. is selected in the scheduler job. If it is not selected, no guiding will happen, right?
Rebased on the current head. From my perspective, it is mature enough to be merged into master.
Makes sense, it's more obvious this way. If somebody enforces guiding while capturing flats etc - he should know what he is doing.
Mar 17 2019
This diff contains a severe bug. Please apply D19840 to resolve it.
At any rate, is this good to go now and reliable?
From my perspective, yes.
Value changes to meridian flip setup exposed to D-Bus
Now the activation of buttons should prevent moving list entries when the scheduler is running. But in both the scheduler and in the capture module, enabling/disabling buttons is distributed. Should be cleaned up somewhen...
- Moving sequences enabled only if state is idle
- Typo in job selection corrected
OK, understood. I will change the signal handling such that they are using the D-Bus.
Good point, I will check enabling/disabling for capture and scheduler. At least I did not change anything intentionally, so I would expect it has been before. But nevertheless, let's clean it up here.
Whom do you mean with we? Generally spoken, yes, makes sense.
Bugfix for emptying queues in scheduler and capture
Created an index violation in clearSequenceQueue() - needs to be corrected.
Mar 16 2019
setMeridianFlipValues is not a DBus function? doesn't need to be added to the Mount.xml file?
No, I changed based the implementation on slots and signals. Changing a value in either capture or mount sends out a signal and the other side receives it and sets the values accordingly. This seems to me a more elegant way than using calls via DBus.
Mar 15 2019
Mar 10 2019
Shall I give it a try?
Sure, and I have suggestions :) let's do this really step by step. At the extreme, because the source is so complex, I'd say let's go function by function, ensuring that they match features.
Fully agreed! Wouldn't it better if we lead this discussion in a separate thread or on the kstars forum?
Weather check GUI update shifted to syncGUIToJob
Mar 9 2019
Well, horrible is such a strong word :-P Fully agree! Remember, the idea was making the scheduler job more intelligent. Shall I give it a try?
Mar 8 2019
Looks good, both restarting aborted jobs and the cutoff limit work fine. If I am the only one who doubts the necessity of a cutoff for the altitude limit, let's go. Maybe a hint in the hover help about the existence of the parameter might be helpful.
Mar 7 2019
Hm, I am not so sure whether such a cut-off makes it better. At the end we have two parameters that describe the same limit. For me it was confusing, because I was not aware of the additional cut-off parameter.
Regarding re-sorting completed/error/invalid jobs, I would vote against. We have two modes for the scheduler: either manual sequence or automatically sorted. In the manual sort, I would prefer no change of the order at all. With the automatic sort, that's another story, there it makes sense.
Mar 6 2019
I would have expected abort of the first job and continuing the second one. What type of restriction do you use?
I tested it with the first job with an Alt restriction of 15deg, but it seems not to work. The scheduler changes to sleeping mode when Alt reaches approx. 18deg. Bug or feature?
Restricted to handling aborted guiding.
I think I could easily separate restarting of aborted jobs from the rest quite easily. Just give me 1-2 h to check it...
I propose you keep your differential focused on restoring functionality after a guiding failure, even if the aborted job isn't managed that well afterwards (that means not bypassing of aborted jobs at the beginning of evaluation).
I will rebase D19393 on yours, and add a fix to the block removing jobs that are not to be evaluated, so that aborted jobs are kept in place and not touched until they are the only ones remaining.
In this context, I will tackle both the re-evaluation without order change and possible state instabilities like the altitude restriction causing the job to repeatedly abort and reschedule.
What do you think?
Agreed. James should keep in mind, that your fix should be landed shortly after mine is merged. Without fixing handling of aborted jobs, capture first tries to restart guiding five times, then aborts the job and as a next step restarts it again. That's not nice, but we can live with if for a short timeframe.
Mar 5 2019
Nope. Maybe you should add me as a reviewer? :-)
I need some time to examine the part about guiding : we need the suspension feature to be usable both with and without scheduler, and reading this I don't readily understand if that's OK.
Suspending works in both modes. If used with the scheduler, the scheduler thinks simply that capturing is running although capturing is suspended. Restarting a suspended guiding is handled by the capture module.
About aborted jobs set for restart, the approach here is slightly different from D19393. D19393 is not trying to restart aborted jobs, only making sure they don't interfere with other jobs, specifically when the scheduler is running. I needed to include the scheduler running/not running part, but I don't recall why now (I'm in business trip).
Ah, interesting, I have to take a closer look at it.
So that's cool, but needs careful tests. I'll try to do that beginning of this week with the simulators.
Fully agreed! One thing with aborted jobs is not so nice currently: They are put at the end of the list, i.e. sorting of targets is changed, when aborted jobs get restarted.
Good to know that I'm not alone :-)
What about when internal guider loses a star and reacquires it? I don't believe that's registered as an aborted guiding, right?
I haven't found a way hot to test lost guiding star directly. As far as I know at least PHD2 tries to re-aquire a guiding star. If this fails within a certain amount of time, it aborts.
Mar 4 2019
Updated to latest master version.
Mar 1 2019
Posted the remaining in D19456.