Hi, ich brauche mal Hilfe zu GetHttpFile

Begonnen von canis, 13 Mai 2021, 10:49:04

Vorheriges Thema - Nächstes Thema

canis

Um den Bierverbrauch zu überwachen, habe ich einen Durchlußmesser an einen Wemos D1 mini mit Tasmota gehangen
und lasse darauf einen Counter die Impulse des Durchlußmessers zählen, die regelmäßig von FHEM ausgelesen
und in einem Dummy gespeichert werden.
Jeden Tag wird das mit
{ GetHttpFile("192.168.211.173:80", "/cm?cmnd=Counter1%20%200")}
wieder auf 0 gestellt. Das funktioniert.
Allerdings, wenn der Wemos bei Reinigung etc. vom Netz getrennt wird, vergißt er den aktuellen Counter- Wert,
nun habe ich versucht, wenn der Wemos online geht, den Dummywert wie oben zurückzuschreiben, aber dieses Konstrukt
(Bierzaehler:tele:.Online) {
my $biercounter = Value("Bier_Counter");
{ GetHttpFile("192.168.211.173:80", "/cm?cmnd=Counter1%20%20"$biercounter)}
}
funktioniert nicht.
Wie bekomme ich den Wert von dem Dummy Bier_Counter in den GetHttpFile hinein?
Vielen Dank für jede Hilfe

betateilchen

schreib die Variable mal vor das letzte Anführungszeichen, nicht dahinter.

(Und mit Value() zu arbeiten, ist grundsätzlich eine ziemlich schlechte Idee.)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

canis

Danke der Antwort,
{ GetHttpFile("192.168.211.173:80", "/cm?cmnd=Counter1%20%20$biercounter")}
Das war der erste Ansatz, der aber nicht funktioniert.
Wo liegt das Problem mit Value?

betateilchen

In deinem letzten Codeschnipsel wird doch $biercounter gar nicht definiert? Wie soll das funktionieren?
Außerdem hast Du ein ziemliches Durcheinander bei Deiner Klammersetzung.


{
my $biercounter = ReadingsVal("Bier_Counter","state","0");
GetHttpFile("192.168.211.173:80", "/cm?cmnd=Counter1%20%20".$biercounter)
}
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Zitat von: canis am 13 Mai 2021, 11:20:54
Wo liegt das Problem mit Value?

Value() arbeitet mit einem Internal (STATE), nicht mit einem Reading (state).

Da der Inhalt von STATE z.B. durch das Attribut stateFormat nahezu beliebig verändert werden kann, sollte man sich nie darauf verlassen, dass dort immer das drinsteht, was Du erwartest.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

TomLee

#5
Unabhängig der Verwendung von Value().

Versuchs mal so:

Zitat{ GetHttpFile("192.168.211.173:80", "/cm?cmnd=Counter1%20%20"."$biercounter")}

Die Variable muss in den zusätzlichen geschweiften Klammern des Perl-Code, meiner Erfahrung nach, in doppelten Hochkommata angegeben werden, sonst kann sie nicht aufgelöst werden.

canis

Danke,
my $biercounter = ReadingsVal("Bier_Counter","state","0");
GetHttpFile("192.168.211.173:80", "/cm?cmnd=Counter1%20%20".$biercounter)
Das war die Lösung, nun funktioniert es!