Termineintrag / Abfrage

OOmatrixOO

OOmatrixOO

Dauergast
280
Hallo.
Ich habe mir einen Kalendereintrag erstellt, der ist die ganze Woche und ganztägig (Frühschicht / Spätschicht). Den lasse ich per If abfragen und lasse mir dann den Wecker stellen.


Leider funktioniert das nur, wenn kein weiterer Termin an dem Tag ist. Sobald ein weiterer Termin eingetragen ist, funktioniert die Abfrage nicht mehr.

Hat jemand eine Idee für das Problem?

MfG
 
Das habe ich eben probiert:
Termin "Schicht" ganztägig
Termin "Treffen" 22:00 - 22:05

Frage ich vor 22:00 %CALTITLE ab, hat es den Inhalt "Schicht", frage ich zwischen 22:00 und 22:05 ab dann "Treffen", nach 22:05 wieder "Schicht".

Dann habe ich einen weiteren ganztätigen Termin "Geburtstag" zugefügt, nun wird "Geburtstag" statt "Schicht" angezeigt -- vermutlich ist das aber eher Zufall welcher der beiden dann in %CALTITLE steht!?

D.h. es wird immer der zurzeit aktive Termin angezeigt und du kommst letztlich nicht zum Ziel.

Zwar könntest du ein Profil mit Kontext State=>App=>CalendarEntry erstellen und zulassen, dass die Enter-Task bei parallelen/überlappenden Terminen mehrfach aktiv wird, aber das löst nur aus, wenn der Termin beginnt (OK, ganztägiger Termin "Frühschicht" würde um Mitternacht auslösen und dir vielleicht ausreichen).........
 
Schade sowas dachte ich mir schon. Dann muss ich mir was anderes überlegen. ;-)


MfG
 
Frag mal Chillmann. Er hat etwas ähnliches erstellt. Ansatz ist: Termine über Scene erfassen und dann in Kalender eintragen, ggf. Wecker stellen.
 
Ich glaube mein Kalender ist da wohl fehl am Platz :)

Setzt doch für deine Schicht ne bestimmte Beschreibung und mach die If-Abfrage über %CALDESCR oder mit nem Ort und über %CALLOC

Gruß Chillmann
 
Chillmann schrieb:
Ich glaube mein Kalender ist da wohl fehl am Platz :)

Setzt doch für deine Schicht ne bestimmte Beschreibung und mach die If-Abfrage über %CALDESCR oder mit nem Ort und über %CALLOC

Gruß Chillmann

Hallo.
Ja das hatte ich auch schon probiert. Da ist das gleiche Problem. Sobald noch ein all day event an dem Tag ist, zum Beispiel ein Geburtstag, wird auch der Ort oder Beschreibung nicht mehr ausgelesen.

Unter Sonstige / Testen gibts auch nochmal die ganzen Kalender Variablen, könnte man damit was realisieren?
 
Hmm, also der Kalender, den ich gebastelt habe, erfasst meine Arbeitszeiten über Szenen und Speichert dies in Variablen. Über ein Zeitprofil lasse ich dann Sonntag abends die Variablen entsprechend bearbeiten und in meinen Google Kalender eintragen. Außerdem lasse ich Tasker anhand meiner Arbeitszeiten, bei Bedarf einen Wecker stellen.
Da ich meine Arbeitszeiten immer nur für die nächste Woche erfahre und auch mal 2 Schichten an einem Tag sein können, ist mein Projekt ziemlich kompliziert geworden und mit Ein- und Ausgangsanimationen die Szenen auch ganzschön aufgebläht. Bei Interesse lade ich es gerne mal hoch.


Gruß Chillmann
 
  • Danke
Reaktionen: OOmatrixOO
Ja kannst du gern mal machen.

Klingt so ähnlich wie bei mir (aber sicher abgespeckt).

Freitags öffnet sich eine Szene, in der kann ich meine Schicht per Knopfdruck für die kommende Woche einstellen (früh / spät). Je nachdem wird ein ganztägiger Kalendereintrag für die ganze Woche erstellt.

Durch diesen Eintrag sollte eigentlich dann der Rest funktionieren. Den richtigen Wecker automatisch stellen, nach bestimmter Uhrzeit aus den Nachtmodus online gehen usw.

Und dein Profil funktioniert auch, wenn an einem Tag auch zB ein ganztägiger Geburtstageintrag ist?
 
OOmatrixOO schrieb:
Und dein Profil funktioniert auch, wenn an einem Tag auch zB ein ganztägiger Geburtstageintrag ist?

Ja sicher, ich stelle meinen Wecker ja nicht über den Calendar event - Status, sondern überprüfe anhand der gesetzten Variablen jeden Tag um Mitternacht, ob für den kommenden Tag eine "frühe" Schicht ansteht und stelle dementsprechend den Wecker oder nicht.
Als ich das Ding gebastelt habe, fiel mir auf halbem Weg ein, dass es wohl besser gewesen wäre, weniger Szenen aber dafür mit Slidern, statt normalen, drückbaren Elementen zu verwenden. Mit Sicherheit lässt er sich noch an einigen Stellen abspecken und vereinfachen, dazu hatte ich aber bisher keine Lust. ;)

Bestimmt wird die neue Suchfunktion in Tasker hilfreich, wenn es dazu kommt, nachzuvollziehen wann und wo, eine gesetzte Variable wieder zum Einsatz kommt bzw. ihr Wert ausgelesen wird.

Wenn du ihn richtig testen willst, musst du in den Tasks mit den Namen Montag - Sonntag, deinen Google-Kalender in der "Calendar insert" Aktion auswählen.

Gruß Chillmann
 

Anhänge

  • Kalender_pub.prj.xml.zip
    17 KB · Aufrufe: 448
  • Danke
Reaktionen: OOmatrixOO
OOmatrixOO schrieb:
Unter Sonstige / Testen gibts auch nochmal die ganzen Kalender Variablen, könnte man damit was realisieren?


Hab damit mal rumgespielt, also wenn du zB Test: Calendar Title machst, trägst du bei Data: %TIMES (enthält die Anzahl verstrichener Sekunden seit einem bestimmten Datum 1976. KP warum der Entwickler eine solche Variable eingebaut hat, aber sie war mir schon des öfteren nützlich) :)
In dem Fall werden mit Ausführung des Tasks jene Kalendertitel, sämtlicher in dieser Sekunde aktiven Kalendereinträge (ganztägig oder nicht), in deiner "Result Variablen" abgelegt. Jedoch schreibt Tasker die Titel nicht einfach, per komma getrennt, in die Variable. Sondern definiert sie direkt als Array. Dh. du musst, wenn du den Inhalt deiner Result-Variablen verwenden willst, statt dem Ausdruck %ResultVariable, den Ausdruck %ResultVariable() benutzen. Und wenn du noch ne Zahl in die Klammer schriebst, bekommst du als Inhalt nur das entsprechende Element aus dem Array.

Damit sollte es eigentlich gehen.

Gruß Chillmann
 
Klingt ja sehr kompliziert, mal schauen ob ich da durch sehe. :)

Der ursprüngliche Beitrag von 16:38 Uhr wurde um 17:48 Uhr ergänzt:

So habs getestet. Mir werden alle Kalendertitel angezeigt. Soweit so gut. Aber wenn die Anzahl der Kalendereinträge von Tag zu Tag unterschiedlich ist, wird meinem gewünschten Eintrag immer eine andere Variable zugewiesen. Also mal test(1) ein andermal test(2). Man kann ja nicht alle per IF abfragen glaub ich. Oder gibts sowas wie IF test(1) ODER test(2) DANN...?
 
Dafür sollte sich "else if" eignen.

Oder versuch mal den Kalendertitel in eine Variable zu packen und die if-Bedingung wie folgt zu bauen:
If %Kalendertitel ~ %test(1)/%test(2)

Der Schrägstrich bedeutet "oder" und funktioniert nur auf der rechten Seite während auf der linken immer eine Variable rein muss.
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: OOmatrixOO
Wenn ich mehrere else if einbaue würde es funktionieren.

Auch den Kalendertitel als Variable verpacken funktioniert. Ich müsste nur für Früh und Spät eine separate Variable machen und diese dann dementsprechend einsetzen.

Schade, dass der einfache Weg (noch) nicht funktioniert. Ich habe auch mal im Taskerforum gepostet, mal sehen, was der noch Entwicker für Ideen hat.

Danke dir, super Support. :thumbsup:
 
Gibt es auch eine Möglichkeit, Kalendereinträge von morgen abzufragen? Oder geht das nur mit Einträgen vom aktuellen Tag?
 
Ja müsste gehen. Die variable %TIMES muss dann um die Anzahl Sekunden eines Tages erhöht werden. Machst zB. Variable Set: %Times to %TIMES + (60*60*24) (do math natürlich nicht vergessen).
In das Feld "data" der Test-Aktion kommt dann natürlich die neue variable %Times.


Gruß

Chillmann
 
Chillmann schrieb:
Ja müsste gehen. Die variable %TIMES muss dann um die Anzahl Sekunden eines Tages erhöht werden. Machst zB. Variable Set: %Times to %TIMES + (60*60*24) (do math natürlich nicht vergessen).
In das Feld "data" der Test-Aktion kommt dann natürlich die neue variable %Times.


Gruß

Chillmann

Ja habs hinbekommen. Danke.

Variable Set, %KALENDER, %TIMES + 86400 (Do Maths)
 
Prinzipiell mußte man es sich einfacher machen können, einfach eine Schleife bauen.
1: %ln=1 /: Kann auch mit 0 beginnen, hab jetzt nicht nachgeschaut was der 1. Index ist.
2: If %Kalendertitel ~ %test(%ln) %Gefunden=%ln
3: %ln=%ln+1 If %test(%ln) != ""
4: Goto 1 If %Gefunden != 0

Gilt jetzt für ein Ergebnis. Es wird das 1. genommen. Wenn man mehrere suchen will könnte man aus %Gefunden ein Array machen. Und falls ein %Gefunden(0) möglich ist würde ich da die Fundstellen mit zählen.

Gibt es für diese Funktion eine Anleitung

Bin durch das Programm von Chillmann nicht ganz durchgestiegen. (Könnte man wahrscheinlich viel kürzer machen mit Schleifen), aber wird der Wecker automatisch gesetzt oder manuell?
 
Zuletzt bearbeitet:
Wird automatisch gestellt. Immer zum Datumswechsel des Tages an dem ich geweckt werden muss. Das Projekt ist auch schon etwas älter und ich kannte mich mit Tasker und allgemein mit Programmierstrategien noch nicht so gut aus. Daher ist es auch so aufgebläht.


Gruß

Chillmann
 
Hallo,
ich möchte auch alle Termine des nächsten Tages auslesen, hänge aber noch etwas. Ich habe ebenfalls diese Variante verwendet:

Chillmann schrieb:
Hab damit mal rumgespielt, also wenn du zB Test: Calendar Title machst, trägst du bei Data: %TIMES (enthält die Anzahl verstrichener Sekunden seit einem bestimmten Datum 1976). In dem Fall werden mit Ausführung des Tasks jene Kalendertitel, sämtlicher in dieser Sekunde aktiven Kalendereinträge (ganztägig oder nicht), in deiner "Result Variablen" abgelegt.

Das Problem ist aber, dass dann eben nur die zum jeweiligen Zeitpunkt aktiven Termine erfasst werden. Gibt es noch andere Möglichkeiten, alle Termine eines Tages zu ermitteln?
 
Hier ein Task, der von dem Moment seiner Ausführung, die kommenden 24Std des Kalenders auf Einträge überprüft und falls einer vorliegt, eine Rückmeldung macht.


Next appointment (272)
A1: For [ Variable:%count Items:1:24 ] If [ %tit1 ~ Kalenderwoche*/%tit* ]
A2: Variable Set [ Name:%times To:3600*%count+%TIMES Do Maths:On Append:Off ]
A3: Test [ Type:Calendar Title Data:%times Store Result In:%tit ]
A4: End For
A5: Test [ Type:Calendar Start (Seconds) Data:%times Store Result In:%res Continue Task After Error:On ]
A6: If [ %res1 Is Set ]
A7: Variable Convert [ Name:%res1 Function:Seconds to Medium Date Time Store Result In:%dat ]
A8: Variable Split [ Name:%dat Splitter: Delete Base:Off ]
A9: Variable Subtract [ Name:%count Value:1 ]
A10: Variable Subtract [ Name:%times Value:3600 ]
A11: Variable Subtract [ Name:%res1 Value:%times ]
<If-loop>
A12: If [ %res1 > 0 ]
A13: Variable Subtract [ Name:%res1 Value:60 ]
A14: Variable Add [ Name:%min Value:1 Wrap Around:0 ]
A15: Goto [ Type:Action Label Number:1 Label:If-loop ]
A16: End If
A17: Flash [ Text:Nächster Termin "%tit1" in %count Std und %min Min (%dat4 Uhr) Long:On ]
A18: Else
A19: Flash [ Text:Kein Kalendereintrag in den nächsten 24 Stunden Long:Off ]
A20: End If


Auch als Download (.txt vor Import aus dem Dateiname löschen)


Gruß

Chillmann
 

Anhänge

  • Next_appointment.tsk.xml.txt
    2,9 KB · Aufrufe: 502
  • Danke
Reaktionen: stoye46, vepman und Erim

Ähnliche Themen

Viper73
Antworten
1
Aufrufe
254
Cecoupeter
Cecoupeter
Ascona01
Antworten
4
Aufrufe
463
Ascona01
Ascona01
J
Antworten
19
Aufrufe
1.447
RoCo
RoCo
Zurück
Oben Unten