notify device einschränken

Begonnen von logol01, 05 November 2018, 17:37:34

Vorheriges Thema - Nächstes Thema

logol01

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

binford6000

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


logol01

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

binford6000

#3
Ja genauso geht das. Lass aber den * vor .* weg. ;)
Fritz.*:(on|off|power.*|temperature.*|energy.*) {FritzDectToLoxone("$NAME")}

VG Sebastian


Gesendet von iPad mit Tapatalk


logol01

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

binford6000

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

VG Sebastian

logol01