Dewpoint von Sonoff mit DTH

Begonnen von Basti-K, 04 April 2018, 10:03:05

Vorheriges Thema - Nächstes Thema

Basti-K

Guten Morgen.
Meine ersten 5 Sonoff Schalter laufen seit nun nun mehr 2 Wochen Produktiv.
Der Problem WLAN (Fritzbox+Repeater) wurde durch durch Aruba APs gelößt. (Welten unterschied)
Ein Sonoff Schalter soll im Bad als Sensor / Aktor zum Lüften arbeiten.
Der DHT Sensor ist bereits bei FHEM angemeldet. Jetzt wollte ich diese Dewpoint Option benutzten.

Auszüge aus meiner Config:
define dewpointToAllDeviceReadings dewpoint dewpoint .* temperature humidity dewpoint
define dewpointToAllDeviceStates dewpoint dewpoint .* T H D


Er wird keine Readinigs T H D angelegt


define ESPEasy_ESPEasy01_DHT22 ESPEasy 192.168.200.201 80 espBridge ESPEasy01_DHT22
attr ESPEasy_ESPEasy01_DHT22 userattr reading01Name reading01Regex reading02Name reading02Regex
attr ESPEasy_ESPEasy01_DHT22 IODev espBridge
attr ESPEasy_ESPEasy01_DHT22 Interval 300
attr ESPEasy_ESPEasy01_DHT22 alias ESPEasy01
attr ESPEasy_ESPEasy01_DHT22 group Temperatur
attr ESPEasy_ESPEasy01_DHT22 icon temperature_humidity
attr ESPEasy_ESPEasy01_DHT22 presenceCheck 1
attr ESPEasy_ESPEasy01_DHT22 reading01Name Temperatur
attr ESPEasy_ESPEasy01_DHT22 reading01Regex Temperature: ([\.\d]*)C
attr ESPEasy_ESPEasy01_DHT22 reading02Name Humidity
attr ESPEasy_ESPEasy01_DHT22 reading02Regex Humidity ([\.\d]*)%
attr ESPEasy_ESPEasy01_DHT22 readingSwitchText 1
attr ESPEasy_ESPEasy01_DHT22 room ESPEasy
attr ESPEasy_ESPEasy01_DHT22 setState 3
attr ESPEasy_ESPEasy01_DHT22 stateFormat {ReadingsVal($name, "Temperature", 0)."°C / ".ReadingsVal($name, "Humidity", 0)."%"}

attr  ESPEasy_ESPEasy02_DHT11 userReadings dewpoint { my $dp;; my $temperature = ReadingsVal($name,"temperature",0);; my $humidity = ReadingsVal($name,"humidity",0);; my $A = 17.2694;; my $B = ($temperature > 0) ? 237.3 : 265.5;; my $es = 610.78 * exp( $A * $temperature / ($temperature + $B) );; my $e = $humidity/ 100 * $es;; if ($e == 0) { Log 1, "Error: dewpoint() e==0: temp=$temperature, hum=$humidity";; return 0 } my $e1 = $e / 610.78;; my $f = log( $e1 ) / $A;; my $f1 = 1 - $f;; if ($f1 == 0) { Log 1, "Error: dewpoint() (1-f)==0: temp=$temperature, hum=$humidity";; return 0 } $dp = $B * $f / $f1;; $dp = sprintf("%.1f",$dp) }

dewpoint wird angelgt aber mit 0.

hat jemand eine Idee?

helmut


Zitat von: Basti-K am 04 April 2018, 10:03:05
define dewpointToAllDeviceReadings dewpoint dewpoint .* temperature humidity dewpoint
define dewpointToAllDeviceStates dewpoint dewpoint .* T H D

[...]
attr ESPEasy_ESPEasy01_DHT22 reading01Regex Temperature: ([\.\d]*)C
[...]
attr ESPEasy_ESPEasy01_DHT22 reading02Regex Humidity ([\.\d]*)%

Wie es aussieht, heissen Deine Readings nicht "temperature" und "humidity", sondern "Temperature"
und "Humidity".

Die Anleitung im Wiki https://wiki.fhem.de/wiki/Dewpoint kennst Du offensichtlich; Sollte das
userReadings dewpoint einfach ein weiterer Versuch sein? Beachte auch hier die Gross- und Kleinschreibung.
Im Log solltest Du die Fehlermeldungen dazu finden.

Gruss Helmut
Intelligenz ist die Fähigkeit, Arbeit zu vermeiden, aber dafür zu sorgen, daß die Arbeit gemacht wird.
(Linus Torvalds)

Basti-K

Hallo Helmut.
Danke für den Hinweis. Ich hab's hab das mit der Großkleinschreibung echt übersehen.
Ich habe jetzt Taupunkt, aber nur die komplette Funktion.
Grundsätzlich komme ich jetzt weiter, aber warum funktioniert es nicht über alle devices mit .* ?
Gruß Basti

helmut

Zitat von: Basti-K am 05 April 2018, 18:18:46
Ich habe jetzt Taupunkt,  aber nur die komplette Funktion.

Hallo Basti,

was meinst Du mit "aber nur die komplette Funktion"?

Zitat von: Basti-K am 05 April 2018, 18:18:46
Grundsätzlich komme ich jetzt weiter, aber warum funktioniert es nicht über alle devices mit .* ?

Das sollte funktionieren. Passen denn die Namen Deiner Readings bei den Devices bei denen es nicht funktioniert?
Schick doch bitte mal ein Listing eines solchen Devices, bitte in Code-Tags. Das geht am einfachsten wenn Du den
Text markierst und auf die Raute-Schaltflaeche (#) ueber den Smileys drueckst.

Mit list <name-dewpoint-definition> findest Du unter "NOTIFYDEV" alles Devices, fuer die dewpoint den Taupunkt
berechnet.

Gruss Helmut
Intelligenz ist die Fähigkeit, Arbeit zu vermeiden, aber dafür zu sorgen, daß die Arbeit gemacht wird.
(Linus Torvalds)