Zahl aus Text extrahieren

Hallo zusammen

Gibt es eine Möglichkeit in einem Flow eine Zahl zu extrahieren (ohne Script)?
Ich starte einen Flow mit dem Text “save - 0%” oder “call - 100%”.
Der Flow speichert mir mit save gewisse Werte.

Wie kann ich jedoch die Zahl auslesen, ich möchte diese gerne gebrauchen ohne grossen Umweg…

Merci

Gerät:
Homey Pro (Early 2023)

Das wird nur gut mit einem HomeyScript funktionieren
Aber mit AdvancedFlows ist das kein Problem.

Morgen kann ich dir ein Beispiel zeigen…

Ha, ich habe auch daran herumgepfuscht, Ronny und Spart,

Um zu verstehen, was du mit deiner Frage meinst, Spart, habe ich mir Folgendes überlegt:
Das funktioniert hier, mit homeyscript “Dann” karte
“Skript mit Argument ausführen und Nummer-Tag zurückgeben”.
Als Argument nehmen wir das Tag die du auswählen kannst unter “Dieser Flow” [Startwert]

.

Der Code zum Einfügen in die homeyscript-Karte:

// Extract number from string
let input = (args[0]);

// only save the string following the "-" and whitespace
var res_1 = input.slice(input.indexOf('-')+2);
// now, only save the string prior to the "%"
var res = res_1.split("%")[0];

// use parseFloat to change "res" into a numeric value
return parseFloat(res);

.

(übersetzt mit deepl.com)

1 Like

Hallo.

Sorry für meine späte Antwort, habe es etwas auf die Seite gestellt.
Der Code so funktioniert bei mir nicht: Cannot read properties of undefined (reading ‘slice’)

Da ich aber eh nur die 0% brauche (zum öffnen meiner Rollos), werde ich einfach di “Null” abrufen.

Kein problem.

Ich vermute, die Variable, die du als Argument ausgewählt hast, enthält keinen Wert?

Du kannst das Skript kurz testen, indem du die erste Zeile eingibst

let input = (args[0]);

vorübergehend ersetzt durch

let input = "call - 100%";

Ich hatte den falschen Flow/Kachel genommen, sorry…
Mit der richtigen Kachel funktioniert das einwandfrei. Danke.

Ich habe mich noch nicht gross mit den Scripts befasst, obwohl mir das viel sympathischer wäre.
Gibt es eine gute Anleitung?

Ich möchte ja Scripts schreiben, was kein Problem ist, diese abrufen und die Resultate dann auch brauchen können. In den Scripts kann ich aber nicht direkt Variablen einlesen und beschreiben, sehe ich das richtig?

Hallo,

ich habe ein ähnliches Problem:
image

Ich würde die Zeit im Text “Remaining time” gerne als Zahl nutzen. Am liebsten auch noch umgerechnet in Stunden und Minuten. Dies sind aktuell einfach nur Minuten.

Vielleicht hast du oder jemand anderes Zeit und Geduld mit dies zu erklären.
Ich danke schon mal

Ich weiß nicht, ob es einfacher sein kann, aber es ist möglich, es so zu machen:

.
Die Berechnung im zweiten Karte lautet (zum copy/paste):

{{ 0+("[remaining_time]".split(":")[1]) }}

Dies ändert den Wert im Tag [remaining_time] von 106:00 auf 106

Wow! Danke! Das hat mit schon sehr weiter geholfen.
Die ersten drei Elemete funktionieren schon. Ich bekomme die Zeit aus dem Text als Zahl. Aber das umrechnen funktioniert noch nicht.
Kannst du mir sagen, wo mein Fehler ist? Ich finde auch deine Zeiteinheit (hh:mm) nicht.

1 Like

Kein Problem, Simon!

Die Berechnung ist wie folgt aufgebaut:
{{ [Result] * 60 }}
Die Minuten müssen in Sekunden umgewandelt werden, damit sie in der Better Logic-Karte verwendet werden können.
Das [Ergebnis] oder [Result]-Tag stammt aus die vorherigen Konvertierungslogik-Karte
Screenshot from 2024-03-18 17-12-25

Wenn du sie in die Berechnungs-Karte einfügen möchtest, sehst du sie oben unter “Diese Flow”.
Screenshot from 2024-03-18 17-14-11

.

In diesem BL-Diagramm kannst du zwar hh:mm als gewünschte Zeiteinheit angeben, aber dann müsst du immer noch dein Eintrag auswählen, um ihn dem Flow-karte hinzuzufügen.
Das muss man einfach wissen.
Screenshot from 2024-03-18 17-05-33

hartelijk dank voor uw hulp.
Ich hatte zwei Fehler. Ich hatte bei der Multiplikation mit 60 eine Leerzeile drin. Und ich habe nicht gesehen, dass am Ende die Zeit z.B. 05:00 auch wieder ein Text und keine Zahl ist. Ich danke dir sehr

1 Like