FHEM Forum

FHEM => Automatisierung => Thema gestartet von: logol01 am 05 November 2018, 17:37:34

Titel: notify device einschränken
Beitrag von: logol01 am 05 November 2018, 17:37:34
Hallo zusammen,

habe folgende notifys in der fhem.cfg definiert:

define FritzDectToLoxone notify .*:(on|off|power.*|temperature.*|energy.*) {FritzDectToLoxone("$NAME")}
define TempHumidityToLoxone notify .*:temperature.* {TempHumidityToLoxone("$NAME")}
define OnOffToLoxone notify .*:(on|off) {OnOffToLoxone("$NAME")}


und folgende Scripte in der 99_myUtils.pm definiert:


#OnOffToLoxone
#device:
#1 state(0,1)
#2 pct(0-100)
sub OnOffToLoxone($)
{
my ($device) = @_;
my $state = ReadingsVal("$device","state","-1");
if ($state eq "on") {
$state = "1";
}
if ($state eq "off") {
$state = "0";
}
my $pct = ReadingsVal("$device","pct","-1");

#fhem("set $device: $state $pct");
UDP_Msg("192.168.178.245" , "7200" , "$device: $state $pct");
}


#TempHumidityToLoxone
sub TempHumidityToLoxone($)
{
my ($device) = @_;
my $temperature=ReadingsVal("$device","temperature","-1");
my $humidity=ReadingsVal("$device","humidity","-1");

UDP_Msg("192.168.178.245" , "7200" , "$device: $temperature $humidity");
}


#FritzDectToLoxone
#device
#1 state(0,1)
#2 power
#3 energy
#4 temperature
sub FritzDectToLoxone($)
{
my ($device) = @_;
my $state = ReadingsVal("$device","state","-1");
if ($state eq "off") {
$state = "0";
}
if ($state eq "on") {
$state = "1";
}
my $power = ReadingsVal("$device","power","-1");
my $energy = ReadingsVal("$device","energy","-1");
my $temperature=ReadingsVal("$device","temperature","-1");
 
UDP_Msg("192.168.178.245" , "7200" , "$device: $state $temperature $power $energy");
}


Wie mache ich das, dass alle Fritz Dect (z.B. Fritz!Dect200) über den "FritzDectToLoxone" im Format "$state $temperature $power $energy" per UDP zu meiner Loxone funken und die restlichen Geräte über das andere Skript rüber beame....

Bedeutet ich muss aus dem Standard "on/off", "Temperatur" notify die Fritz*... Geräte ausschließen und bei der "FritzDectToLoxone" die anderen Geräte in der Signalisierung ausschließen.....

Da bin ich jetzt überfragt.....

Wäre toll wenn mir jemand helfen könnte.

DANKE im Voraus.

LG

Logol01
Titel: Antw:notify device einschränken
Beitrag von: binford6000 am 05 November 2018, 21:07:11
ZitatWie mache ich das, dass alle Fritz Dect (z.B. Fritz!Dect200) über den "FritzDectToLoxone" im Format "$state $temperature $power $energy" per UDP zu meiner Loxone funken und die restlichen Geräte über das andere Skript rüber beame....

Hallo logol01,
zB. indem du anstatt auf alle Geräte (.*) nur auf bestimmte triggerst:
Fritz2Loxone.*:(on|off|power.*|temperature.*|energy.*) {FritzDectToLoxone("$NAME")}

Bedeutet natürlich dass du die devices entsprechend benamst  ;)

Man sollte generell notifys à la .*:... vermeiden. Hier wird auf JEDES Event getriggert  :o

VG Sebastian

Titel: Antw:notify device einschränken
Beitrag von: logol01 am 05 November 2018, 21:39:03
Hallo Sebastian,

Danke!

geht das auch, dass man mehrere Geräte Triggern kann z.B. alle die mit "Fritz" beginnen?
z.B.
define FritzDectToLoxone notify Fritz*.*:(on|off|power.*|temperature.*|energy.*) {FritzDectToLoxone("$NAME")}

oder was soll ich dazu verwenden?

VG

Christoph
Titel: Antw:notify device einschränken
Beitrag von: binford6000 am 05 November 2018, 22:58:43
Ja genauso geht das. Lass aber den * vor .* weg. ;)
Fritz.*:(on|off|power.*|temperature.*|energy.*) {FritzDectToLoxone("$NAME")}

VG Sebastian


Gesendet von iPad mit Tapatalk
Titel: Antw:notify device einschränken
Beitrag von: logol01 am 06 November 2018, 09:05:55
DANKE :)
Titel: Antw:notify device einschränken
Beitrag von: logol01 am 06 November 2018, 09:37:34
Hallo Sebastian,

wie müsste das heißen, wenn man mehrere verschiedene Gerätenamen triggern möchte.
Sprich - wie muss ich den Code schreiben, wenn ich alle Geräte die mit Firtz, Max und Moritz beginnen triggern möchte, das der UDP Wert geschickt wird sobald sich ein Wert ändert?
Irgendwie so?

define FritzDectToLoxone notify (Fritz.*|Max.*|Moritz.*):(on|off|power.*|temperature.*|energy.*) {FritzDectToLoxone("$NAME")}


VG

Logol01
Titel: Antw:notify device einschränken
Beitrag von: binford6000 am 06 November 2018, 10:12:05
Noch einfacher so:
(Fritz|Max|Moritz).*:(on|off|power.*|temperature.*|energy.*) {FritzDectToLoxone("$NAME")}

VG Sebastian
Titel: Antw:notify device einschränken
Beitrag von: logol01 am 06 November 2018, 11:05:56
DANKE!!!! :)