notify wird nicht ausgelöst, seltsame RegEx

Begonnen von hjgode, 18 März 2015, 17:33:20

Vorheriges Thema - Nächstes Thema

hjgode

Hallo

ich kämpfe nun schon länger mit fhem. Die syntax Eigenheiten sind teilweise schwierig, zudem gibt es im im WiKi zB zu notify falsche code Beispiele ('set reading...' statt 'setreading...'). Egal, wird schon klappen...

Nun zum meinem Problem:
Ich habe zwei dummy devices für THAussen und THSchlaf, jeweils mit Temperture und Humidity. Dann ein weiteres dummy device lueften_ja. THSchlaf und THAussen werden per telnet befüllt, da meine TFA Sensoren (Cresta Protokol) nicht unterstützt werden.

define THAussen dummy
attr THAussen group Temp_Feuchte
attr THAussen room Aussen,Temperaturen
attr THAussen stateFormat T: Temperature H: Humidity
define FileLog_THAussen FileLog ./log/THAussen.log THAussen

define THSchlaf dummy
attr THSchlaf group Temp_Feuchte
attr THSchlaf room Schlaf,Temperaturen
attr THSchlaf stateFormat T: Temperature H: Humidity
define FileLog_THSchlaf FileLog ./log/THSchlaf.log THSchlaf

define lueften_ja dummy
attr lueften_ja room Schlaf,Aussen
attr lueften_ja stateFormat T: Temperature H: Humidity S: state
define TH.lueften notify (THAussen:.*|THSchlaf:.*)\
{\
    my $TempAussen = ReadingsVal("THAussen","Temperature",0);;\
    my $HumiAussen = ReadingsVal("THAussen","Humidity",0);;\
    my $TempInnen = ReadingsVal("THSchlaf","Temperature",0);;\
    my $HumiInnen = ReadingsVal("THSchlaf","Humidity",0);;\
    my $innenfeuchteberechnet=$HumiAussen-3*($TempInnen-$TempAussen);;\
    my $innentempberechnet=($TempInnen+$TempAussen)/2;;\
    if ($innenfeuchteberechnet < $HumiInnen) {\
     fhem ('setreading lueften_ja state on');;\
    } else {\
     fhem ('setreading lueften_ja state off');;\
    }\
    fhem ('setreading lueften_ja Temperature $innentempberechnet');;\
    fhem ('setreading lueften_ja Humidity $innenfeuchteberechnet');;\
}
attr TH.lueften room Schlaf


Das Problem ist, dass das notify nicht ausgelöst wird und somit auch lueften_ja nicht aktualisiert wird.

In FHEM Web wird das notify TH.lueften seltsam angezeigt:
(http://www.hjgode.de/temp/TH.lueften.png)

Was mache ich falsch?

Zur Not befülle ich lueften_ja ebenfalls via telnet aus meinem php code der die TFA Sensoren über einen Android via get auf den Apache2 server sendet.

Hardware: Linux Debian auf D2550 mit Dual Core Atom Prozessor, 4GB RAM, 1TB Platte. Apache2, fhem 5.6, ein nanoCUL 866 MHz, ein JeeLink und ein fhemduino.

fheminfo:
Fhem info:
  Release  : 5.6
  OS       : linux
  Arch     : i586-linux-gnu-thread-multi-64int
  Perl     : v5.20.2
  uniqueID : 16e4879cd728502febf0092c5fc2467e
  upTime   : 09:23:28

Defined modules:
  CUL        : 1
  CUL_WS     : 1
  EC3000     : 4
  FHEMWEB    : 3
  FRM        : 1
  FS20       : 1
  FileLog    : 29
  HMS        : 1
  IT         : 7
  JeeLink    : 1
  SVG        : 12
  TCM        : 1
  autocreate : 1
  dewpoint   : 1
  dummy      : 5
  eventTypes : 1
  notify     : 5
  structure  : 1
  telnet     : 1

Defined models per module:
  CUL        : CUL
  FS20       : fs20st
  IT         : itswitch
Debian SID mit aktuellem FHEM, nanoCUL 866, JeeLink EC3000, fhemduino, SIGNALduino,
3 x TFA TH Sensor, 1 x TFA TH Arduino Sender, 3 x EC3000, 4 x Elro Schaltsteckdosen, ESA2000
offline: Wibo Funkthermostat, 2 x ELV Funkthermostat FHT80, 2 FS20 ST4 Funksteckdose

Icinger

Wofür hast denn die Klammern?

(THAussen:.*|THSchlaf:.*)

Nimm die weg, und das notify sollte triggern :)
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

hjgode

OK, die Klammern habe ich aus dem WiKi: http://www.fhemwiki.de/wiki/Notify

Jetzt wird notify ausgelöst, aber nun gibt es 'unknow command' Fehler:


2015.03.18 18:31:35 5: Cmd: >{
my $TempAussen = ReadingsVal("THAussen","Temperature",0)<
2015.03.18 18:31:35 5: Cmd: >my $HumiAussen = ReadingsVal("THAussen","Humidity",0)<
2015.03.18 18:31:35 5: Cmd: >my $TempInnen = ReadingsVal("THSchlaf","Temperature",0)<
2015.03.18 18:31:35 5: Cmd: >my $HumiInnen = ReadingsVal("THSchlaf","Humidity",0)<
2015.03.18 18:31:35 5: Cmd: >my $innenfeuchteberechnet=$HumiAussen-3*($TempInnen-$TempAussen)<
2015.03.18 18:31:35 5: Cmd: >my $innentempberechnet=($TempInnen+$TempAussen)/2<
2015.03.18 18:31:35 5: Cmd: >if ($innenfeuchteberechnet < $HumiInnen) {
     fhem ('setreading lueften_ja state on')<
2015.03.18 18:31:35 5: Cmd: >} else {
     fhem ('setreading lueften_ja state off')<
2015.03.18 18:31:35 5: Cmd: >}
    fhem ('setreading lueften_ja Temperature $innentempberechnet')<
2015.03.18 18:31:35 5: Cmd: >fhem ('setreading lueften_ja Humidity $innenfeuchteberechnet')<
2015.03.18 18:31:35 5: Cmd: >}<
2015.03.18 18:31:35 3: TH.lueften return value: Unknown command {
, try help.
Unknown command my, try help.
Unknown command my, try help.
Unknown command my, try help.
Unknown command my, try help.
Unknown command my, try help.
Unknown command if, try help.
Unknown command }, try help.
Unknown command }
, try help.
Unknown command fhem, try help.
Unknown command }, try help.
2015.03.18 18:31:35 5: Cmd: >setreading THAussen H 65<

2015.03.18 18:31:35 5: Triggering THAussen (1 changes)
2015.03.18 18:31:35 5: Notify loop for THAussen H: 65
2015.03.18 18:31:35 5: Triggering TH.lueften
2015.03.18 18:31:35 4: TH.lueften exec
{
my $TempAussen = ReadingsVal("THAussen","Temperature",0);
    my $HumiAussen = ReadingsVal("THAussen","Humidity",0);
    my $TempInnen = ReadingsVal("THSchlaf","Temperature",0);
    my $HumiInnen = ReadingsVal("THSchlaf","Humidity",0);
    my $innenfeuchteberechnet=$HumiAussen-3*($TempInnen-$TempAussen);
    my $innentempberechnet=($TempInnen+$TempAussen)/2;
    if ($innenfeuchteberechnet < $HumiInnen) {
     fhem ('setreading lueften_ja state on');
    } else {
     fhem ('setreading lueften_ja state off');
    }
    fhem ('setreading lueften_ja Temperature $innentempberechnet');
    fhem ('setreading lueften_ja Humidity $innenfeuchteberechnet');
}
2015.03.18 18:31:35 5: Cmd: >{
my $TempAussen = ReadingsVal("THAussen","Temperature",0)<
2015.03.18 18:31:35 5: Cmd: >my $HumiAussen = ReadingsVal("THAussen","Humidity",0)<
2015.03.18 18:31:35 5: Cmd: >my $TempInnen = ReadingsVal("THSchlaf","Temperature",0)<
2015.03.18 18:31:35 5: Cmd: >my $HumiInnen = ReadingsVal("THSchlaf","Humidity",0)<
2015.03.18 18:31:35 5: Cmd: >my $innenfeuchteberechnet=$HumiAussen-3*($TempInnen-$TempAussen)<
2015.03.18 18:31:35 5: Cmd: >my $innentempberechnet=($TempInnen+$TempAussen)/2<
2015.03.18 18:31:35 5: Cmd: >if ($innenfeuchteberechnet < $HumiInnen) {
     fhem ('setreading lueften_ja state on')<
2015.03.18 18:31:35 5: Cmd: >} else {
     fhem ('setreading lueften_ja state off')<
2015.03.18 18:31:35 5: Cmd: >}
    fhem ('setreading lueften_ja Temperature $innentempberechnet')<
2015.03.18 18:31:35 5: Cmd: >fhem ('setreading lueften_ja Humidity $innenfeuchteberechnet')<
2015.03.18 18:31:35 5: Cmd: >}<
2015.03.18 18:31:35 3: TH.lueften return value: Unknown command {
, try help.
Debian SID mit aktuellem FHEM, nanoCUL 866, JeeLink EC3000, fhemduino, SIGNALduino,
3 x TFA TH Sensor, 1 x TFA TH Arduino Sender, 3 x EC3000, 4 x Elro Schaltsteckdosen, ESA2000
offline: Wibo Funkthermostat, 2 x ELV Funkthermostat FHT80, 2 FS20 ST4 Funksteckdose

Icinger

Pack den ganzen Schmonzes in eine Sub in der 99_myUtils, und gut is :)
Und dann rufst im Notify nur die Sub auf.
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

krikan

Zitat von: hjgode am 18 März 2015, 17:33:20
zudem gibt es im im WiKi zB zu notify falsche code Beispiele ('set reading...' statt 'setreading...').
Könntest Du bitte genau den Link und Stelle posten, wo das im Wiki falsch ist? Nur dann kann man das korrigieren. Brauchen ja schließlich nicht noch andere darüber stolpern....

betateilchen

Jetzt hört doch mal auf, über WIKI zu diskutieren oder Vorschläge mit der Auslagerung in eine Sub zu machen (die auch nicht funktionieren würden!) wenn das Problem doch ein völlig anderes ist. Nämlich ein Syntaxproblem:

falsch:


    fhem ('setreading lueften_ja Temperature $innentempberechnet');;\
    fhem ('setreading lueften_ja Humidity $innenfeuchteberechnet');;\


richtig:


    fhem ("setreading lueften_ja Temperature $innentempberechnet");;\
    fhem ("setreading lueften_ja Humidity $innenfeuchteberechnet");;\
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

hjgode

Zitat von: Icinger am 18 März 2015, 18:44:04
Pack den ganzen Schmonzes in eine Sub in der 99_myUtils, und gut is :)
Und dann rufst im Notify nur die Sub auf.

Ich hab sogar schon eine Sub() in einer eigenen 99er pm Datei. Ich weiß nur nicht, wie ich die über notify aufrufen soll.
Debian SID mit aktuellem FHEM, nanoCUL 866, JeeLink EC3000, fhemduino, SIGNALduino,
3 x TFA TH Sensor, 1 x TFA TH Arduino Sender, 3 x EC3000, 4 x Elro Schaltsteckdosen, ESA2000
offline: Wibo Funkthermostat, 2 x ELV Funkthermostat FHT80, 2 FS20 ST4 Funksteckdose

hjgode

Zitat von: krikan am 18 März 2015, 18:53:34
Könntest Du bitte genau den Link und Stelle posten, wo das im Wiki falsch ist? Nur dann kann man das korrigieren. Brauchen ja schließlich nicht noch andere darüber stolpern....

Zum Beispiel hier http://www.fhemwiki.de/wiki/Notify:
(http://www.hjgode.de/temp/wiki-notify.png)

Das Problem ist wohl eher dass es unterschiedliche Syntax gibt je nachdem wo man was reinschreibt. Zum Beispiel in die fhem.cfg oder über die Web Eingabezeile oder in einem Perl fhem Modul. Das ist leider in allen bisherigen Fundstellen meist nicht spezifiziert.
Debian SID mit aktuellem FHEM, nanoCUL 866, JeeLink EC3000, fhemduino, SIGNALduino,
3 x TFA TH Sensor, 1 x TFA TH Arduino Sender, 3 x EC3000, 4 x Elro Schaltsteckdosen, ESA2000
offline: Wibo Funkthermostat, 2 x ELV Funkthermostat FHT80, 2 FS20 ST4 Funksteckdose

betateilchen

Die Klammer um die regexp ist grundsätzlich nicht falsch.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

hjgode

Zitat von: betateilchen am 18 März 2015, 18:54:50
Jetzt hört doch mal auf, über WIKI zu diskutieren oder Vorschläge mit der Auslagerung in eine Sub zu machen (die auch nicht funktionieren würden!) wenn das Problem doch ein völlig anderes ist. Nämlich ein Syntaxproblem:

falsch:


    fhem ('setreading lueften_ja Temperature $innentempberechnet');;\
    fhem ('setreading lueften_ja Humidity $innenfeuchteberechnet');;\


richtig:


    fhem ("setreading lueften_ja Temperature $innentempberechnet");;\
    fhem ("setreading lueften_ja Humidity $innenfeuchteberechnet");;\


Danke für Dein Mitgefühl.
Wann nimmt man den doppelte und einfach Anführungszeichen?


meine fhem.cfg sieht jetzt so aus, geändert, da ich gelsen habe das für Perl Zeilen ein einfaches Semikolon reicht:
define lueften_ja dummy
attr lueften_ja room Schlaf,Aussen
attr lueften_ja stateFormat T: Temperature H: Humidity S: state
define TH.lueften notify THAussen:.*|THSchlaf:.* \
{\
my $TempAussen = ReadingsVal("THAussen","Temperature",0);\
    my $HumiAussen = ReadingsVal("THAussen","Humidity",0);\
    my $TempInnen = ReadingsVal("THSchlaf","Temperature",0);\
    my $HumiInnen = ReadingsVal("THSchlaf","Humidity",0);\
    my $innenfeuchteberechnet=$HumiAussen-3*($TempInnen-$TempAussen);\
    my $innentempberechnet=($TempInnen+$TempAussen)/2;\
    if ($innenfeuchteberechnet < $HumiInnen) {\
     fhem ("setreading lueften_ja state on");;\
    } else {\
     fhem ("setreading lueften_ja state off");;\
    }\
    fhem ("setreading lueften_ja Temperature $innentempberechnet");;\
    fhem ("setreading lueften_ja Humidity $innenfeuchteberechnet");;\
}
attr TH.lueften room Schlaf


und das Log zeit dann:
2015.03.18 19:05:22 4: Connection accepted from telnet:192.168.0.40:53637
2015.03.18 19:05:22 5: Cmd: >setreading THSchlaf T 13.2<
2015.03.18 19:05:22 5: Triggering THSchlaf (1 changes)
2015.03.18 19:05:22 5: Notify loop for THSchlaf T: 13.2
2015.03.18 19:05:22 5: Triggering TH.lueften
2015.03.18 19:05:22 4: TH.lueften exec
{
my $TempAussen = ReadingsVal("THAussen","Temperature",0)
2015.03.18 19:05:22 5: Cmd: >{
my $TempAussen = ReadingsVal("THAussen","Temperature",0)<
2015.03.18 19:05:22 3: TH.lueften return value: Unknown command {
, try help.
2015.03.18 19:05:22 5: Cmd: >setreading THSchlaf H 69<
2015.03.18 19:05:22 5: Triggering THSchlaf (1 changes)
2015.03.18 19:05:22 5: Notify loop for THSchlaf H: 69
2015.03.18 19:05:22 5: Triggering TH.lueften
2015.03.18 19:05:22 4: TH.lueften exec
{
my $TempAussen = ReadingsVal("THAussen","Temperature",0)
2015.03.18 19:05:22 5: Cmd: >{
my $TempAussen = ReadingsVal("THAussen","Temperature",0)<
2015.03.18 19:05:22 3: TH.lueften return value: Unknown command {
, try help.
Debian SID mit aktuellem FHEM, nanoCUL 866, JeeLink EC3000, fhemduino, SIGNALduino,
3 x TFA TH Sensor, 1 x TFA TH Arduino Sender, 3 x EC3000, 4 x Elro Schaltsteckdosen, ESA2000
offline: Wibo Funkthermostat, 2 x ELV Funkthermostat FHT80, 2 FS20 ST4 Funksteckdose

betateilchen

Zitat von: hjgode am 18 März 2015, 19:09:17
Wann nimmt man den doppelte und einfach Anführungszeichen?

Einfach mal ein gutes Perl Programmierhandbuch lesen, das sind ABSOLUTE Grundlagen.

Zitat von: hjgode am 18 März 2015, 19:09:17
meine fhem.cfg sieht jetzt so aus, geändert, da ich gelsen habe das für Perl Zeilen ein einfaches Semikolon reicht:

Dito - Du hast offenbar nicht den blassesten Schimmer, was Du tust. Mach die doppelten Semikolon wieder rein, solange Du nicht verstanden hast, wann es um perl und wann es um fhem (das perl benutzt) geht.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

hjgode

Zitat von: betateilchen am 18 März 2015, 19:12:25
Einfach mal ein gutes Perl Programmierhandbuch lesen, das sind ABSOLUTE Grundlagen.

Dito - Du hast offenbar nicht den blassesten Schimmer, was Du tust. Mach die doppelten Semikolon wieder rein, solange Du nicht verstanden hast, wann es um perl und wann es um fhem (das perl benutzt) geht.

Na dann, wie wäre es denn richtig? Ich bin ja lernwillig...

fhem.cfg jetzt:
define lueften_ja dummy
attr lueften_ja room Schlaf,Aussen
attr lueften_ja stateFormat T: Temperature H: Humidity S: state
define TH.lueften notify THAussen:.*|THSchlaf:.* \
{\
my $TempAussen = ReadingsVal("THAussen","Temperature",0);;\
    my $HumiAussen = ReadingsVal("THAussen","Humidity",0);;\
    my $TempInnen = ReadingsVal("THSchlaf","Temperature",0);;\
    my $HumiInnen = ReadingsVal("THSchlaf","Humidity",0);;\
    my $innenfeuchteberechnet=$HumiAussen-3*($TempInnen-$TempAussen);;\
    my $innentempberechnet=($TempInnen+$TempAussen)/2;;\
    if ($innenfeuchteberechnet < $HumiInnen) {\
     fhem ("setreading lueften_ja state on");;\
    } else {\
     fhem ("setreading lueften_ja state off");;\
    }\
    fhem ("setreading lueften_ja Temperature $innentempberechnet");;\
    fhem ("setreading lueften_ja Humidity $innenfeuchteberechnet");;\
}
attr TH.lueften room Schlaf


log dazu:

2015.03.18 19:26:16 4: TH.lueften exec
{
my $TempAussen = ReadingsVal("THAussen","Temperature",0);
    my $HumiAussen = ReadingsVal("THAussen","Humidity",0);
    my $TempInnen = ReadingsVal("THSchlaf","Temperature",0);
    my $HumiInnen = ReadingsVal("THSchlaf","Humidity",0);
    my $innenfeuchteberechnet=$HumiAussen-3*($TempInnen-$TempAussen);
    my $innentempberechnet=($TempInnen+$TempAussen)/2;
    if ($innenfeuchteberechnet < $HumiInnen) {
     fhem ("setreading lueften_ja state on");
    } else {
     fhem ("setreading lueften_ja state off");
    }
    fhem ("setreading lueften_ja Temperature $innentempberechnet");
    fhem ("setreading lueften_ja Humidity $innenfeuchteberechnet");
}
2015.03.18 19:26:16 5: Cmd: >{
my $TempAussen = ReadingsVal("THAussen","Temperature",0)<
2015.03.18 19:26:16 5: Cmd: >my $HumiAussen = ReadingsVal("THAussen","Humidity",0)<
2015.03.18 19:26:16 5: Cmd: >my $TempInnen = ReadingsVal("THSchlaf","Temperature",0)<
2015.03.18 19:26:16 5: Cmd: >my $HumiInnen = ReadingsVal("THSchlaf","Humidity",0)<
2015.03.18 19:26:16 5: Cmd: >my $innenfeuchteberechnet=$HumiAussen-3*($TempInnen-$TempAussen)<
2015.03.18 19:26:16 5: Cmd: >my $innentempberechnet=($TempInnen+$TempAussen)/2<
2015.03.18 19:26:16 5: Cmd: >if ($innenfeuchteberechnet < $HumiInnen) {
     fhem ("setreading lueften_ja state on")<
2015.03.18 19:26:16 5: Cmd: >} else {
     fhem ("setreading lueften_ja state off")<
2015.03.18 19:26:16 5: Cmd: >}
    fhem ("setreading lueften_ja Temperature $innentempberechnet")<
2015.03.18 19:26:16 5: Cmd: >fhem ("setreading lueften_ja Humidity $innenfeuchteberechnet")<
2015.03.18 19:26:16 5: Cmd: >}<
2015.03.18 19:26:16 3: TH.lueften return value: Unknown command {
, try help.
Unknown command my, try help.
Unknown command my, try help.
Debian SID mit aktuellem FHEM, nanoCUL 866, JeeLink EC3000, fhemduino, SIGNALduino,
3 x TFA TH Sensor, 1 x TFA TH Arduino Sender, 3 x EC3000, 4 x Elro Schaltsteckdosen, ESA2000
offline: Wibo Funkthermostat, 2 x ELV Funkthermostat FHT80, 2 FS20 ST4 Funksteckdose

betateilchen

Du bist nicht lernwillig, du versuchst try-and-error ohne zu wissen, was dahintersteckt. Und würdest Du Dein notify einfach im Frontend definieren anstatt permanent die fhem.cfg zu vergewaltigen, hättest Du es viel einfacher.

Bei mir lässt sich das notify so problemlos - und ohne Fehlermeldung - anlegen:



define TH.lueften notify THAussen:.*|THSchlaf:.*  { my $TempAussen = ReadingsVal("THAussen","Temperature",0);;\
my $HumiAussen = ReadingsVal("THAussen","Humidity",0);;\
my $TempInnen = ReadingsVal("THSchlaf","Temperature",0);;\
my $HumiInnen = ReadingsVal("THSchlaf","Humidity",0);;\
my $innenfeuchteberechnet=$HumiAussen-3*($TempInnen-$TempAussen);;\
my $innentempberechnet=($TempInnen+$TempAussen)/2;;\
if ($innenfeuchteberechnet < $HumiInnen) {\
fhem ("setreading lueften_ja state on");;\
} else {\
fhem ("setreading lueften_ja state off");;\
}\
fhem ("setreading lueften_ja Temperature $innentempberechnet");;\
fhem ("setreading lueften_ja Humidity $innenfeuchteberechnet");; }

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

hjgode

Zitat von: betateilchen am 18 März 2015, 20:05:46
Du bist nicht lernwillig, du versuchst try-and-error ohne zu wissen, was dahintersteckt. Und würdest Du Dein notify einfach im Frontend definieren anstatt permanent die fhem.cfg zu vergewaltigen, hättest Du es viel einfacher.

Bei mir lässt sich das notify so problemlos - und ohne Fehlermeldung - anlegen:



define TH.lueften notify THAussen:.*|THSchlaf:.*  { my $TempAussen = ReadingsVal("THAussen","Temperature",0);;\
my $HumiAussen = ReadingsVal("THAussen","Humidity",0);;\
my $TempInnen = ReadingsVal("THSchlaf","Temperature",0);;\
my $HumiInnen = ReadingsVal("THSchlaf","Humidity",0);;\
my $innenfeuchteberechnet=$HumiAussen-3*($TempInnen-$TempAussen);;\
my $innentempberechnet=($TempInnen+$TempAussen)/2;;\
if ($innenfeuchteberechnet < $HumiInnen) {\
fhem ("setreading lueften_ja state on");;\
} else {\
fhem ("setreading lueften_ja state off");;\
}\
fhem ("setreading lueften_ja Temperature $innentempberechnet");;\
fhem ("setreading lueften_ja Humidity $innenfeuchteberechnet");; }



DANKE
Debian SID mit aktuellem FHEM, nanoCUL 866, JeeLink EC3000, fhemduino, SIGNALduino,
3 x TFA TH Sensor, 1 x TFA TH Arduino Sender, 3 x EC3000, 4 x Elro Schaltsteckdosen, ESA2000
offline: Wibo Funkthermostat, 2 x ELV Funkthermostat FHT80, 2 FS20 ST4 Funksteckdose

hjgode

#14
Auflösung:
Das Hauptproblem war, dass die erste geschweifte Klammer direkt nach der RegEx stehen muss, nicht in einer neuen Zeile, egal ob mit \ oder ohne.

Das dummy device heisst jetzt THLueften und das notify dazu nTHLueften

In fhem sieht das jetzt so aus:
THAussen:.*|THSchlaf:.* { my $TempAussen = ReadingsVal("THAussen","Temperature",0);\
my $HumiAussen = ReadingsVal("THAussen","H",0);\
my $TempInnen = ReadingsVal("THSchlaf","T",0);\
my $HumiInnen = ReadingsVal("THSchlaf","H",0);\
my $innenfeuchteberechnet=$HumiAussen-3*($TempInnen-$TempAussen);\
my $innentempberechnet=($TempInnen+$TempAussen)/2;\
if ($innenfeuchteberechnet < $HumiInnen) {\
fhem ("setreading THLueften State Ja");\
} else {\
fhem ("setreading THLueften State Nein");;\
}\
fhem ("setreading THLueften Temperature $innentempberechnet");;\
fhem ("setreading THLueften Humidity $innenfeuchteberechnet");; }


In der fhem.cfg:
define THLueften dummy
attr THLueften room Schlaf,Aussen
attr THLueften stateFormat T: Temperature H: Humidity S: State
define nTHLueften notify THAussen:.*|THSchlaf:.* { my $TempAussen = ReadingsVal("THAussen","Temperature",0);;\ \
my $HumiAussen = ReadingsVal("THAussen","H",0);;\ \
my $TempInnen = ReadingsVal("THSchlaf","T",0);;\ \
my $HumiInnen = ReadingsVal("THSchlaf","H",0);;\ \
my $innenfeuchteberechnet=$HumiAussen-3*($TempInnen-$TempAussen);;\ \
my $innentempberechnet=($TempInnen+$TempAussen)/2;;\ \
if ($innenfeuchteberechnet < $HumiInnen) {\ \
fhem ("setreading THLueften State Ja");;\ \
} else {\ \
fhem ("setreading THLueften State Nein");;;;\ \
}\ \
fhem ("setreading THLueften Temperature $innentempberechnet");;;;\ \
fhem ("setreading THLueften Humidity $innenfeuchteberechnet");;;; }\


Danke an alle Helfer
Debian SID mit aktuellem FHEM, nanoCUL 866, JeeLink EC3000, fhemduino, SIGNALduino,
3 x TFA TH Sensor, 1 x TFA TH Arduino Sender, 3 x EC3000, 4 x Elro Schaltsteckdosen, ESA2000
offline: Wibo Funkthermostat, 2 x ELV Funkthermostat FHT80, 2 FS20 ST4 Funksteckdose