FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: thiese am 10 Oktober 2020, 14:44:47

Titel: [GELÖST] Regex in HTTPMOD mit Variable
Beitrag von: thiese am 10 Oktober 2020, 14:44:47
Hallo, ich möchte mit HTTPMOD eine Variable verwenden. Kann ich in dem Regex eine Variable einsetzen?

attr HTTPMODEssensvorschlag reading1Regex Gericht1<p>(.*)<p>

Gericht1 soll die Variable sein!!
Titel: Antw:Regex in HTTPMOD mit Variable
Beitrag von: amenomade am 10 Oktober 2020, 17:37:37
Sowas kann man nicht.

Du kannst Gericht1 auch als Regex eingeben: Gericht[0-9]<p>
So wird er alle Gerichte holen

Es gibt vielleicht andere Möglichkeiten, aber es ist mit so wenig Information schwierig zu sagen.
Titel: Antw:Regex in HTTPMOD mit Variable
Beitrag von: thiese am 10 Oktober 2020, 17:47:30
Ich würde gerne auf eine Website verschiedene Gerichte hinterlegen. Wenn ich Alex z.B. "Essensvorschlag" sage, dann soll mir per Zufall eines dieser Gerichte vorgeschlagen werden. Vielleicht verfolge ich auch einen kompletten falschen Ansatz.
Titel: Antw:Regex in HTTPMOD mit Variable
Beitrag von: amenomade am 10 Oktober 2020, 18:06:09
Ich würde alle Gerichte holen, und dann ein userReading mit Hilfe von rand() bauen, um ein dieses Readings als "Vorschlag" zu machen
Titel: Antw:Regex in HTTPMOD mit Variable
Beitrag von: thiese am 10 Oktober 2020, 19:17:53
Dein Vorschlag gefällt mir.
Wenn ich es wie folgt versuche, kommt leider nur die Anzahl der Readings und nicht der entsprechende Inhalt dazu. Kannst Du mir einen Tipp geben, wo der Fehler ist? Danke.
Vorschlag {round(rand( grep( m/Gericht-.*/, ( keys %{$hash->{READINGS}} ))),0)}
Titel: Antw:Regex in HTTPMOD mit Variable
Beitrag von: amenomade am 10 Oktober 2020, 19:37:11
Etwas wie
my @gerichte = grep( m/Gericht-.*/, ( keys %{$hash->{READINGS}} ));
$hash->{READINGS}{$gerichte[round(rand(@gerichte))]};


(nicht getestet)
Titel: Antw:Regex in HTTPMOD mit Variable
Beitrag von: thiese am 11 Oktober 2020, 08:16:18
Allerbesten Dank schon mal. Ich bekomme es leider nicht hin.
Wie bekomme ich das in ein UserReading? Habe es über den Editor wie folgt versucht:
Vorschlag {my @gerichte = grep( m/Gericht-.*/, ( keys %{$hash->{READINGS}} )); $hash->{READINGS}{$gerichte[round(rand(@gerichte))]}}
Mit und Ohne geschweifte Klammer am Anfang und Ende funktioniert auch nicht. Vermutlich ist es total simpel. Aber ich stehe auf dem Schlauch...:-)
Titel: Antw:Regex in HTTPMOD mit Variable
Beitrag von: amenomade am 11 Oktober 2020, 08:55:42
Semikolon verdoppeln?

Was ist die Fehlermeldung?
Titel: Antw:Regex in HTTPMOD mit Variable
Beitrag von: thiese am 11 Oktober 2020, 09:23:53
Mit folgendem Versuch:
Vorschlag {my @gerichte = grep( m/Gericht-.*/, ( keys %{$hash->{READINGS}} ));; $hash->{READINGS}{$gerichte[round(rand(@gerichte))]}}

kommt diese Fehlermeldung:
Error evaluating HTTPMODEssensvorschlag userReading Vorschlag: Not enough arguments for main::round at (eval 37370320) line 1, near "))"

Titel: Antw:Regex in HTTPMOD mit Variable
Beitrag von: thiese am 11 Oktober 2020, 09:35:44
Mit folgender Änderung [round(rand(@gerichte),0)], bekomme ich keine Fehlermeldung mehr, dafür enthält das Reading folgenden Wert:
Vorschlag {my @gerichte = grep( m/Gericht-.*/, ( keys %{$hash->{READINGS}} ));; $hash->{READINGS}{$gerichte[round(rand(@gerichte),0)]}}
Wert des Readings: HASH(0x6bc54a8)

Hier mal alle Readings:
Gericht-1     Spagetti     2020-10-11 09:38:52
Gericht-2     Salat          2020-10-11 09:38:52
Gericht-3     Gulasch      2020-10-11 09:38:52
Gericht-4     Eintopf       2020-10-11 09:38:52
Gericht-5     Pizza          2020-10-11 09:38:52
Gericht-6     Brotzeit      2020-10-11 09:38:52
Vorschlag    HASH(0x6bc54a8)      2020-10-11 09:38:52

Bei Vorschlag sollte als Wert des Readings eines der sechs Gerichte stehen. z.B. Eintopf.
Titel: Antw:Regex in HTTPMOD mit Variable
Beitrag von: amenomade am 11 Oktober 2020, 15:20:01
Ja, sorry, ein hash->READING ist noch selbst ein hash mit timestamp und Wert

Vorschlag {my @gerichte = grep( m/Gericht-.*/, ( keys %{$hash->{READINGS}} ));; $hash->{READINGS}{$gerichte[round(rand(@gerichte),0)]}{VAL}}
Titel: Antw:Regex in HTTPMOD mit Variable
Beitrag von: thiese am 11 Oktober 2020, 15:45:27
Top. Das ist die Lösung. Herzlichen Dank für Deine Bemühungen und Hilfe. Wünsche noch einen schönen Sonntag.