FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: bajogger am 30 August 2023, 11:48:48

Titel: Userreading nur zu einer bestimmten Uhrzeit
Beitrag von: bajogger am 30 August 2023, 11:48:48
Habe einen Shelly Pro 3EM Stromzähler. Der gibt unter anderem das Reading Total_Energy (Komplette Stromverbrauch) aus
Möchte nun zu einer bestimmten Uhrzeit dieses Reading in ein Userreading schreiben

Mit diesem Code habe ich das UserReading angelegt. StromZaehler ist das Device
attr StromZaehler userReadings Tagesverbrauch { ReadingsVal("Total_Energy","value",0) }
Wie bringe ich das UserReading dazu nur um 23:59Uhr erzeugt zu werden

Hoffe auf Hilfe



Titel: Aw: Userreading nur zu einer bestimmten Uhrzeit
Beitrag von: MadMax-FHEM am 30 August 2023, 11:53:27
Zitat von: bajogger am 30 August 2023, 11:48:48Wie bringe ich das UserReading dazu nur um 23:59Uhr erzeugt zu werden
Statt einem userReadings ein at mit setreading...

EDIT: und wenn ich mir das userReadings so ansehe. Bist du sicher, dass das funktioniert? Weil attr StromZaehler und dann aber ReadingsVal("Total_Energy", ... Wie heißt denn nun das Device? Oder hast du ein userReadings beim Device "StromZaehler" und "holst" die Daten vom Device "Total_Energy"? Und: userReadings OHNE TRIGGER: pfui! ;)

Gruß, Joachim
Titel: Aw: Userreading nur zu einer bestimmten Uhrzeit
Beitrag von: Beta-User am 30 August 2023, 12:34:06
Codeschnipsel ist für fertigen Code => verschieben! (Ja, kannst du selbst!)

Weitere Stichworte: statistics und delta-d....
Titel: Aw: Userreading nur zu einer bestimmten Uhrzeit
Beitrag von: RalfRog am 30 August 2023, 14:40:08
Zitat von: Beta-User am 30 August 2023, 12:34:06Weitere Stichworte: statistics und delta-d....

Statistics hatten wir ja schon.
Ich hatte in deinem vorheigen Beitrag auch die Frage gestellt -> "je nachdem wo du hinwillst"....
Vermutlich kommt immer wieder eine Kleinigkeit dazu. Schau dir tatsächlich mal statistics an (nutze ich). Oder auch andere Module (ich nutze davon keins und hab daher keinen Tipp) die sich mit Energiezählern (Zählern) beschäftigen.

Da ist vermutlich etwas dabei, was deinen Bedarf deckt.

Wenn es schnell sein muss wie MadMax-FHEM schrieb ein at um 23:59 (ungetestet) mit dem Ausführungsteil
"setreading StromZaehler Tagesverbrauch {ReadingsVal("StromZaehler","Total_Energy",0)}"

Ist dann aber der absolute Wert und kein Tagesverbrauch, da braucht du dann Deltawerte.


Titel: Aw: Userreading nur zu einer bestimmten Uhrzeit
Beitrag von: RalfRog am 30 August 2023, 14:58:18
Zitat von: Beta-User am 30 August 2023, 12:34:06Codeschnipsel ist für fertigen Code => verschieben! (Ja, kannst du selbst!)
Falls du das Verschieben nicht findest: unten links
Titel: Aw: Userreading nur zu einer bestimmten Uhrzeit
Beitrag von: bajogger am 30 August 2023, 17:19:02
ZitatEDIT: und wenn ich mir das userReadings so ansehe. Bist du sicher, dass das funktioniert? Weil attr StromZaehler und dann aber ReadingsVal("Total_Energy", ... Wie heißt denn nun das Device? Oder hast du ein userReadings beim Device "StromZaehler" und "holst" die Daten vom Device "Total_Energy"? Und: userReadings OHNE TRIGGER: pfui! ;)
Richtig funktioniert nicht
attr StromZaehler userReadings Tagesverbrauch { ReadingsVal("StromZaehler","Total_Energy",0)}Funktioniert aber. Nützt allerdings nur zu Lernzwecken

setReading funktioniert noch nicht

*16:57:00 "setreading StromZaehler Tagesverbrauch {ReadingsVal("StromZaehler","Total_Energy",0)}"bringt
{ReadingsVal("StromZaehler:Total_Energy",0)}
als Ergebnis und keinen Wert

Vermutlich lächerlicher Fehler für euch Profis.

PS: 16:57 Uhr ist natürlich zu Testzwecken
Titel: Aw: Userreading nur zu einer bestimmten Uhrzeit
Beitrag von: betateilchen am 30 August 2023, 17:23:23
lass die Anführungszeichen um den FHEM Befehl weg

Und beschäftige Dich einfach mal mit der richtigen Syntax für "FHEM Befehle" im Vergleich zu "perl-Funktionen".
Das würde uns allen das Leben einfacher machen.
Titel: Aw: Userreading nur zu einer bestimmten Uhrzeit
Beitrag von: bajogger am 30 August 2023, 17:40:00
*17:36:00 setreading StromZaehler Tagesverbrauch {ReadingsVal("StromZaehler","Total_Energy",0)}
bringt das Gleiche.

Aber will niemand das Leben schwer machen. Finde das schon raus
Titel: Aw: Userreading nur zu einer bestimmten Uhrzeit
Beitrag von: rabehd am 30 August 2023, 17:52:46
{ReadingsVal("StromZaehler","Total_Energy",0)} in der Befehlszeile bringt was?
setreading StromZaehler Tagesverbrauch {ReadingsVal("StromZaehler","Total_Energy",0)} in der Befehlszeile bringt was?
Titel: Aw: Userreading nur zu einer bestimmten Uhrzeit
Beitrag von: Beta-User am 30 August 2023, 18:03:59
...das dürfte fehlerfrei durchlaufen, aber das Ergebnis ist nicht das, was der TE haben will...
 
Such mal in der commandref (https://commandref.fhem.de/#set) nach:
ZitatFrom featurelevel 5.7 on the set and setreading command replaces:
....
Das Stichwort heißt "set magic" (so man auf sowas steht).
Titel: Aw: Userreading nur zu einer bestimmten Uhrzeit
Beitrag von: betateilchen am 30 August 2023, 18:33:54
Mal wieder das Problem mit einer komplett widersinnig geforderten Klammersetzung.

Vermutlich so:

setreading StromZaehler Tagesverbrauch {(ReadingsVal("StromZaehler","Total_Energy",0))}
Titel: Aw: Userreading nur zu einer bestimmten Uhrzeit
Beitrag von: bajogger am 30 August 2023, 18:37:04
ZitatCodeAuswählen
{ReadingsVal("StromZaehler","Total_Energy",0)}
in der Befehlszeile bringt was?
59.8079 kWh

ZitatCodeAuswählen
setreading StromZaehler Tagesverbrauch {ReadingsVal("StromZaehler","Total_Energy",0)}
in der Befehlszeile bringt was?
{ReadingsVal("StromZaehler","Total_Energy",0)}

Erstes kommt als Ergebnis direkt an der Befehlszeile
Zweites erneuert das Reading im Device

Titel: Aw: Userreading nur zu einer bestimmten Uhrzeit
Beitrag von: TomLee am 30 August 2023, 18:40:42
ZitatMal wieder das Problem mit einer komplett widersinnig geforderten Klammersetzung.

Ohne die gäbs noch weniger Popcorn !
Titel: Aw: Userreading nur zu einer bestimmten Uhrzeit
Beitrag von: bajogger am 30 August 2023, 18:44:42
setreading StromZaehler Tagesverbrauch {(ReadingsVal("StromZaehler","Total_Energy",0))} :)

Danke. Schaue ich mir jetzt in Ruhe an um was zur Klammersetzung zu lernen.

Danke an Alle
Titel: Aw: Userreading nur zu einer bestimmten Uhrzeit
Beitrag von: TomLee am 30 August 2023, 18:48:05
ZitatSchaue ich mir jetzt in Ruhe an um was zur Klammersetzung zu lernen.

Lass es, beschäftige dich mit Perl, das hier ist ein "Sonderfall".
Titel: Aw: Userreading nur zu einer bestimmten Uhrzeit
Beitrag von: betateilchen am 30 August 2023, 18:53:29
Zitat von: bajogger am 30 August 2023, 18:44:42Schaue ich mir jetzt in Ruhe an um was zur Klammersetzung zu lernen.

Lass es.
Dieses Konstrukt hat weder etwas mit "richtigem FHEM" noch mit "richtigem perl" zu tun.
Diese haarsträubende, sinnlose und komplett entbehrliche Syntax zur Klammersetzung hat sich irgendwann eine einzelne Person hier im Forum ausgedacht und umgesetzt. Vermutlich in guter Absicht, was aber komplett schiefgegangen ist.

Gewöhne Dir den Mist erst gar nicht an.
Mach es einfach und mach es richtig, dann brauchst Du solche Absurditäten nicht.
Titel: Aw: Userreading nur zu einer bestimmten Uhrzeit
Beitrag von: bajogger am 30 August 2023, 19:13:13
wo lese ich wie ich es richtig mache?
Titel: Aw: Userreading nur zu einer bestimmten Uhrzeit
Beitrag von: betateilchen am 30 August 2023, 19:37:31
Tutorials zu perl gibt es zuhauf im Internet.

Und für FHEM ist in der Regel die commandref eine gute Anlaufstelle, dort sind (neben den Modulen) auch alle FHEM-Befehle (!) beschrieben.
Titel: Aw: Userreading nur zu einer bestimmten Uhrzeit
Beitrag von: Beta-User am 30 August 2023, 19:40:36
Zitat von: bajogger am 30 August 2023, 19:13:13wo lese ich wie ich es richtig mache?
(doppelt genäht hält vielleicht besser...)

Was "richtig" ist, ist teilweise sicher Ansichtssache.

MAn. ist es "richtig", sich irgendwann mit den Grundlagen zu befassen, und das ist eben in diesem Fall die Programiersprache "Perl". Von daher ist es m.E. am Ende am einfachsten, wenn man alle derartigen Aufgaben, in denen man irgendwelche Infos mit Perl abruft (mittels "set magic" eben indirekt) dann eben auch mit Perl löst. Literaturempfehlungen sollte es im Wiki geben...

Weiter ist es "richtig", erst mal die Frage zu stellen, was man eigentlich erreichen möchte. Ein bestimmtes Reading zu setzen ist m.E. uU. zu kurz gegriffen, und wenn es z.B. nur ums Loggen geht, kann man die Log-Devices evtl. auch einfach mittels "trigger" auslösen, ohne überhaupt ein Reading zu schreiben... Falls man das überhaupt benötigt, denn wenn es am Ende nur um die graphische Darstellung mit SVG geht, reicht auch "delta-d" als Stichwort.

Aber wie immer: Ohne klaren input kein nachvollziehbarer output...