[gelöst] 99_myUtils.pm zur Berechnung von Daten nutzen -> Ergebnisse in Dummy

Begonnen von Canon.Fritz, 22 Juni 2020, 19:05:58

Vorheriges Thema - Nächstes Thema

Canon.Fritz

Hallo,

ich versuche gerade vergeblich einige Berechnungen mittels readings einer FRITZ!Box DECT200 Steckdose in der myUtils durchzuführen.

Hier mal meine ersten Vorstellungen:

Das DECT200 device listet mir einige readings auf z.B. das reading "energy".
Mit dem reading "energy" und noch ein paar anderen readings möchte ich in der 99_myUtils.pm rechnen.
Die Ergebnisse aus den Berechnungen sollen dann in einem Dummy device angezeigt werden.

Bisher habe ich notdürftig die Betriebskosten als userReading im DECT200 device angelegt.

attr Betriebskosten {ReadingsVal("Heizung","energy_kWh",0)*0.2776 ." €"},

Die readings der DECT200 werden alle 5 Minuten aktualisiert.

Ich habe mir schon ein paar Foren Beiträge angeschaut, aus denen ich aber nicht schlau geworden bin.  :-\

Ich hoffe ihr könnt mir da mal ein bisschen Anschub geben.


FHEM auf Raspberry3, Betriebssystem Raspberry Pi OS, diverse Wemos D1 mini Boards, Sonoff S20, Shellys

Starsurfer

Moin,
wenn es nicht unbedingt ein Dummy sein muss, schau mal nach dem Modul ElectricityCalculator
FHEM Server: Fujitsu Esprimo q920 + LaCrosseGateway + HM-MOD-RPI-PCB WLAN + ConBee
HomeMatic HM-CC-RT-DN - Sonoff Tasmota
LaCrosse TX29DTH - Innr SP120 - Osram Smart+ Plug
Arduino Mega - MQTT - Pluggit 300
https://www.diy-robot-lawn-mower.com

Canon.Fritz

Ich habe bereits auch schon nebenbei das ElectricityCalculator Modul am laufen.

Mir geht es bei diesem Post um den allgemeinen Werdegang, wie man die myUtils für Berechnungen nutzen kann.
Ich erhoffe mir auch Wissen für weitere umfangreichere Projekte anzueignen.
FHEM auf Raspberry3, Betriebssystem Raspberry Pi OS, diverse Wemos D1 mini Boards, Sonoff S20, Shellys

betateilchen

Zitat von: Starsurfer am 22 Juni 2020, 19:38:43
wenn es nicht unbedingt ein Dummy sein muss, schau mal nach dem Modul ElectricityCalculator

Das Rechnen ist doch gar nicht die Frage, sondern die Frage, wie man aus der 99_myUtils.pm einen Wert in das Reading eines device zurückschreibt.

Zum Beispiel so:



sub wirRechnen() {
  my $e = ReadingsNum('Heizung','energy_kWh',0) * 0.276;
  fhem("setstate dummyName $e");
}



Damit wird direkt das reading "state" befüllt.

Alternative, wenn man einen bestimmten readingName beschreiben möchte:


fhem("setreading dummyName readingName $e");


Die Platzhalter dummyName und readingName sind natürlich durch die echten Namen ersetzen, sie dienen hier nur zur Verdeutlichung.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Canon.Fritz

Ich habe das Beispiel von betateilchen mal auf meine Anwendung angepasst.
Leider aktualisiert sich das reading des Dummys nicht.

Hier mal meine Einstellungen:

Dummy Device
defmod Bilanz dummy
attr Bilanz DbLogExclude .*


99_myUtils.pm
sub wirRechnen() {
  my $e = ReadingsNum('Heizung','power',0) * 0.276;
  fhem("setreading Bilanz Test $e");
}


Im DECT200 Device ist das attr PV_Anlage event-on-update-reading .* bereits gesetzt worden.
FHEM auf Raspberry3, Betriebssystem Raspberry Pi OS, diverse Wemos D1 mini Boards, Sonoff S20, Shellys

CoolTux

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Canon.Fritz

Bis jetzt rufe ich es nirgendwo direkt auf. Muss ich das etwa in einem Notify aufrufen oder einem at ?
Wenn ja wie geht das ?
FHEM auf Raspberry3, Betriebssystem Raspberry Pi OS, diverse Wemos D1 mini Boards, Sonoff S20, Shellys

MadMax-FHEM

Zitat von: CoolTux am 22 Juni 2020, 21:09:31
Und wie oder wo rufst du die Funktion auf?

Vermutlich gar nicht ;)

Wollte schon ergänzend zu betateilchen schreiben, dass neben dem noch entweder ein Event/Trigger gefunden werden muss oder halt zyklisch per 'at' aufgerufen werden muss...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

MadMax-FHEM

Zitat von: Canon.Fritz am 22 Juni 2020, 21:12:25
Bis jetzt rufe ich es nirgendwo direkt auf. Muss ich das etwa in einem Notify aufrufen oder einem at ?
Wenn ja wie geht das ?

Das musst du dir überlegen WANN/WODURCH eine Berechnung ausgelöst werden soll...

Und dann halt aufrufen:


define atTest at *18:00:00 {wirRechnen()}


Notify genau so...

https://wiki.fhem.de/wiki/Event_monitor
https://wiki.fhem.de/wiki/Notify
https://wiki.fhem.de/wiki/At

Bzw. nat. commandref von fhem...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

betateilchen

Zitat von: Canon.Fritz am 22 Juni 2020, 19:05:58
Die readings der DECT200 werden alle 5 Minuten aktualisiert.

notify darauf und die Funktion in der 99_myUtils.pm aufrufen.

Geht am einfachsten aus dem Eventmonitor. Wenn die DECT200 dort ein reading liefert, kannst Du mit "Create device" einfach ein notify automtisch erzeugen lassen, das den Event abfängt und in dem Du dann tun und lassen kannst, was Du willst.

Achja - was Du auch tun könntest: Dokumentation zu FHEM lesen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Canon.Fritz

Vielen dank noch einmal für die schnelle Hilfe !  :D

Ich habe es jetzt über ein Notify realisiert.
Der Wert im Dummy wird jetzt auch alle 5 Minuten aktualisiert.

Perfekt. Das ist genau das was ich wissen wollte. Danke an alle die mir auf die Sprünge geholfen haben.
FHEM auf Raspberry3, Betriebssystem Raspberry Pi OS, diverse Wemos D1 mini Boards, Sonoff S20, Shellys