Flow nur an gerade Tagen starten

Ahoy,

ich steh gerade etwas auf dem Schlauch, liegt wahrscheinlich daran, dass ich ewig nichts an meinen Flows gedreht habe.

Wir kann ich es am smartesten umsetzen, dass ich in einer “und”-Bedingung einen Flow nur an ungerade Tagen laufen lasse?

Wenn Uhrzeit = 04:00h → und → Es ist ein ungerader Tag → dann.

Ich dachte, dass es die Option in “Datum & Zeit” gibt, aber hier gibt es nur die Möglichkeit der Wochen.

Ich denke, ich muss das mit Better Logic berechnen… oder hat jemand ne smartere Idee?

Danke <3

Hallo @schmucke
Die einfachste Methode geht mit cronjob.

Hier eine Karte
Cronjob - jeden ungeraden tag um 4 00 17
Damit hast Du alles in einer Karte.

Viel Spaß damit
Dirk

1 Like

Danke.

Das ist aber eine “wenn” Bedingung, dass heißt, ich müsste damit den Flow Aktivieren bzw. deaktivieren. Aber das wäre eine Möglichkeit. Danke.

Das verstehe ich nicht, vielleicht weil ich nicht weiß, was Du willst.
Das ist eine Wenn oder besser Sobald Bedingung, d. h. an jedem ungeraden Tag um 4:00:17 startet Dein Flow (weil ich die Sekunden immer abändere um mögliche Spitzenlasten zu vermeiden), die Sekunden kannst Du aber auch ändern.
Vielleicht hätte ich es kurz erklären sollen. Wenn Du aber die Karte mit den vielen Parametern nimmst, steht dort genau , was Du eingibst ‘*’ steht für jeden Wert und a/b heißt ab Wert a, jeden b-ten Wert.
Oder Du zeigst uns Deinen Flow, damit wir sehen, was Du brauchst.
Dirk

Es gibt auch viele “tag”;mōtlichkeiten:
image

Image

Dirk, ist Dein Cron Job nicht falsch?

Der Flow soll ja nicht jeden 2. Tag, sondern an jedem ungeraden Tag, also am 1., 3., 5., … 29., 31. Tag, laufen. Wenn alle Monate eine gerade Anzahl an Tagen hätten, z.b. 30 Tage, dann wäre der korrekt, weil er dann immer wieder am 1. (ungerade!) Tag eines Monats beginnen würde. Aber das ist bekanntlich nicht der Fall.

Demnach müsste der Cron Job mMn wie folgt aussehen:

Damit nicht zu viel Verwirrung entsteht, habe ich die 17 Sekunden mal mit einbezogen.

Die Jobs habe ich auf dieser Seite erstellt: Cron Expression Parser and Creator Tool - 100% free and online

@schmucke, ob es mal eine entsprechende Flow-Karte gab, weiß ich nicht. Würde aber durchaus Sinn machen, da die Karte für Wochen ja existiert.

Vermutlich ist das auch mit einem HomeyScript umsetzbar. Das hier spuckt zumindest ChatGPT Deutsch raus:

Hallo! Gerne helfe ich dir dabei, deinen Cron-Job in ein HomeyScript umzuwandeln. Der Cron-Job, den du angegeben hast, läuft immer am 1., 3., 5., 7., 9., 11., 13., 15., 17., 19., 21., 23., 25., 27., 29. und 31. Tag eines Monats um 4:00 Uhr morgens.nnHier ist ein Beispiel, wie du das in HomeyScript umsetzen könntest:

// Hole das aktuelle Datum und die aktuelle Uhrzeit
const now = new Date();

// Überprüfe, ob heute einer der angegebenen Tage ist
const daysToCheck = [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31];
const currentDay = now.getDate();
const isCorrectDay = daysToCheck.includes(currentDay);

// Überprüfe die aktuelle Uhrzeit (4:00 Uhr)
const currentHour = now.getHours();
const currentMinute = now.getMinutes();
const isCorrectTime = (currentHour === 4 && currentMinute === 0);

// Wenn beide Bedingungen erfüllt sind, führe deine Aktion aus
if (isCorrectDay && isCorrectTime) {
    // Hier kannst du deine Aktion einfügen, z.B. eine Lampe einschalten
    // Beispiel:
    // await Homey.devices.getDevice({ id: 'device_id' }).then(device => device.setCapabilityValue('onoff', true));
    console.log('Cron-ähnliche Bedingung erfüllt! Aktion wird ausgeführt.');
}

Bitte ersetze den Kommentar im Script durch die tatsächliche Aktion, die du ausführen möchtest. Dieses Script kannst du dann in Homey als Zeitplan oder regelmäßig ausführen lassen, um dein gewünschtes Verhalten zu automatisieren.

Ehrlich gesagt habe ich keine Ahnung von HomeyScripts bzw. Programmiersprache im Allgemeinen, aber für die Überprüfung im Bereich Und… sollten die ersten beiden Abschnitte ja reichen.

OT
In der Topic Überschrift steht übrigens „an geraden Tagen“. Soll vermutlich auch „an ungeraden Tagen“ heißen, oder?

Entschuldige, war schon spät. Ich glaube, dass würde tatsächlich so passen, nachteil: wieder ne App die ich für eine Aktion brauche :confused:

Leider aber keine, die mir explizit jeden zweiten Tag bzw. gerade oder ungerade Tage erlaubt.

Im Prinzip ist jeder zweite Tag viel Besser, da es ja beim Wechsel vom 31. zum 01. zwei ungerade Tage nacheinander kommen.

An Homeyscript habe ich auch schon gedacht - wollte das aber eigentlich nur einfach haben. Hintergrund ist, dass ich jeden Morgen um 04:00h die Feuchtigkeit meines Rasens, und meiner Terassenpflanzen überprüfe, die sind aktuell unter dem Wert den sie haben müssten. Beim Rasen ist das aber nicht so schlimm, weswegen ich den nur alle zwei Tage sprengen lassen möchte (das sind jedes mal um die 400L Wasser).

Jain, ich wusste nicht, wie es sonst passend im Topic beschreiben soll. :slight_smile:

So?

Das würde funktionieren, wenn die Woche eine gerade Anzahl an Tagen hätte.

Ich hätte sowas als Tageskarte erwartet:
image

Nein Dirk,
dieser Parser übersetzt ungenau. Es fehlt “starting with day 1” oder so etwas.
Crontab.guru - The cron schedule expression generator*
sagt:
“At 04:00 on every 2nd day-of-month from 1 through 31.”
Genauer: Er startet immer am 1. Tag des Monats und dann jeden 2. Tag bis zum 31. Das sind genau die ungeraden Tage. Und am nächsten Monat startet er wieder neu mit Tag 1.

Wenn man wirklich jeden 2. Tag haben will, wird es mit crontab etwas schwieriger, besonders wenn man auch noch Schaltjahre berücksichtigen möchte.

Gruß Dirk

Da ich mir ziemlich sicher bin, dass Du irgendeine eine Timer App bereits installiert hast:

Das wäre zumindest eine Möglichkeit.

Ich vermute, Du hast mich nicht verstanden. In der Überschrift steht “an geraden Tagen”, in Deinen Posts schreibst Du aber von “ungeraden Tagen”. Was ich meine ist, dass Überschrift und Inhalt nicht übereinstimmen, mehr nicht.
Als ich das Beispiel mit dem Cron Job gemacht hatte, hatte ich nämlich zuerst alle geraden Tage mit aufgelistet. Dann habe ich mir Deine Posts noch mal angeschaut, und darin steht dann alle ungeraden Tage. Also hatte ich den Cron Job noch mal auf ungerade Tage geändert. Deshalb wat ich ein wenig irritiert.


@DirkH, heute Morgen wollte ich Deinen Cron Job mal in der von Dir verlinkten Seite eingeben. Diese Seite ist ja auch im App Topic verlinkt. Das Problem ist nur, das ich kein in Worten ausgeschriebenes Ergebnis, sondern nur einen Hinweis bekommen habe, dass es keine Standardschreibweise ist:

Ein Problem wird eventuell sein, dass diese Seite keine Sekunden akzeptiert. Lasse ich die 17 Sekunden weg, dann entspricht das dem gewünschten Intervall:

Deshalb hatte ich mir eine andere Seite gesucht die auch Sekunden akzeptiert. Und auf dieser Seite wurde Dein Cron Job dann falsch angezeigt… :man_shrugging:

1 Like

1 Like

Wenn Du das willst, ist es viel einfacher
Erst eine Nummern-Variable UngeraderTag mit enem Wert von 0 oder 1 anlegen.


Keine komplizierten Dinge, keine App, nur eine einfache Variable, die immer zwischen 0 und 1 wechselt,

3 Likes

Manchmal kommste auf die einfachsten Dinge nicht.

So werd ich es machen.

1 Like