[GELÖST] Regex in HTTPMOD mit Variable

Begonnen von thiese, 10 Oktober 2020, 14:44:47

Vorheriges Thema - Nächstes Thema

thiese

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!!

amenomade

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.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

thiese

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.

amenomade

Ich würde alle Gerichte holen, und dann ein userReading mit Hilfe von rand() bauen, um ein dieses Readings als "Vorschlag" zu machen
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

thiese

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)}

amenomade

Etwas wie
my @gerichte = grep( m/Gericht-.*/, ( keys %{$hash->{READINGS}} ));
$hash->{READINGS}{$gerichte[round(rand(@gerichte))]};


(nicht getestet)
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

thiese

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...:-)

amenomade

Semikolon verdoppeln?

Was ist die Fehlermeldung?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

thiese

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 "))"


thiese

#9
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.

amenomade

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}}
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

thiese

Top. Das ist die Lösung. Herzlichen Dank für Deine Bemühungen und Hilfe. Wünsche noch einen schönen Sonntag.