DECT-200 auslesen und auswerten

Begonnen von errazzor, 15 Dezember 2015, 16:40:55

Vorheriges Thema - Nächstes Thema

errazzor

Hallo,

ich versuche es mal hier.

Ziel:

- Auslesen der Werte "Temperatur", "Power" und "Energy" des DECT-200
- Energy-Wert durch 1000 dividieren / mit 0.29€ multiplizieren und dem Gesamtverbrauch in kWh / die Gesamtkosten in € zu erhalten
- Darstellung der vier Werte in einer Zeile als Status-Anzeige (Dummy? Readingsgroup?)

Bisherige Versuche:

1. Über einen Dummy mit Stateformat:


{ sprintf("G: %.2f kWh || K: %.2f € || A: %.2f Watt", ReadingsVal("FBDECT_FBEG_16","energy",0)/1000, ReadingsVal("FBDECT_FBEG_16","energy",0)*0.00029, ReadingsVal("FBDECT_FBEG_16","power",0))}


--> Funktioniert zwar einmalig, aktualisiert sich aber nicht...fehlendes notify? Die gleiche Methode angewandt bei einer Homematic-Funkschaltdose funktioniert einwandfrei ohne Zusätze. Das nur zur Info.

2. Über eine Readingsgroup:


define TestGroup readingsGroup FBDECT_FBEG_16:<Aktuell>,power,<Gesamt>,energy,<Temperatur>,temperature
attr TestGroup alias Stromverbrauch
attr TestGroup room Test
attr TestGroup valueFormat {power => "%.1f W", energy => '{sprintf("%.2f kWh",$VALUE/1000)}', energy => '{sprintf("%.2f €",$VALUE*0.00029)}', temperature => "%.1f &deg;;C"}


--> Probleme:

- Der Wert "energy" muss 2x zur Berechnung herangezogen werden (Gesamtverbrauch kWh / Kosten in €). Dadurch überschreibt die zweite Anweisung die erste in der Darstellung.
- Im Logfile treten Fehler auf, dass die Werte nicht numerisch sind...stimmt auch, denn die readings geben zurück: "<Zahl> W" und "<Zahl> Wh". Hier müsste eine Möglichkeit gefunden werden, nur den ersten Teil des Readings (Zahl, getrennt durch Leerzeichen vom nachfolgenden W/Wh) zu verwerten.

Rein über notifys kann das ganze auch nicht gelöst werden, da die DECT-200 nur für "Temperatur" und "Power" ein Event erzeugt - für "energy" jedoch nicht.

und hier drehe ich mich im Kreis. Vielleicht denke ich auch zu kompliziert.

Wenn jemand eine funktionierende Lösung oder auch nur eine Idee hat wie man das ganze umsetzen könnte...bitte helfen :-)

grappa24

ich zieh mir die Werte des DECT-200 mit notify auf dummies, hier mal ein Beispiel für die Temperatur:
FBDECT_16:temperature.* set FBDECT_16_temp $EVTPART1

Hier ein Beispiel für eine Kostenberechnung via notify:
FBDECT_16:energy.* { fhem "set Kosten ". ($EVTPART1*0.00025) }
Gebäudesicherheit/-komfort, PV-Prognose/Verbrauchssteuerung, Heizungssteuerung, Multimedia, ...
KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200, Netatmo, Nuki, SolarForecast, HEOS, Alexa-FHEM, ...
FHEM 6.4, 2 x RasPi 3B+, Debian Bullseye

errazzor

Das Problem ist aber, dass für "energy" kein Event erzeugt wird - somit funktioniert das notify nicht  :-[ . Hatte ich oben geschrieben.

grappa24

Setz mal für Dein Dect-Device "attr <device> event-on-change-reading energy"
Gebäudesicherheit/-komfort, PV-Prognose/Verbrauchssteuerung, Heizungssteuerung, Multimedia, ...
KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200, Netatmo, Nuki, SolarForecast, HEOS, Alexa-FHEM, ...
FHEM 6.4, 2 x RasPi 3B+, Debian Bullseye

Sunny

Moin errazzor,

Schaue Dir auch mal "userReadings" an, damit kannst Du im device Deine gewünschten Readings erstellen.

kleines Beispiel

Dann kannst Du "stateFormat" und "webCmd" auch noch nach Deinen Wünschen anpassen.
Vielleicht ist das ja auch eine Möglichkeit für Dich ...

Viele Grüße
Sunny
FHEM 6.0 (RPi's 1b-4,CeleronM,Odroid C1+)
1-Wire (DS18B20,DS2406) |miniCUL|miniCUL868WLAN|HM|IT(-1500,LR-3500) |FB6591,FB7490,FB7580|DECT200|Powerline546E|520E|openwrt
Anfänger: Linux,FHEM+Perl