Autor Thema: notify device einschränken  (Gelesen 272 mal)

Offline logol01

  • New Member
  • *
  • Beiträge: 8
notify device einschränken
« 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

Offline binford6000

  • Sr. Member
  • ****
  • Beiträge: 598
  • 🏠⚙️🛠📱
Antw:notify device einschränken
« Antwort #1 am: 05 November 2018, 21:07:11 »
Zitat
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....

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

FHEM 5.9 auf RPi3, IOserver für alle CULs mit ser2net, Testumgebung: docker pull fhem/fhem
Homematic, EnOcean, IT, HUE + Nanoleaf Aurora,  SONOS, alexa-fhem, homebridge, TelegramBot mit msgDialog, livetracking
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline logol01

  • New Member
  • *
  • Beiträge: 8
Antw:notify device einschränken
« Antwort #2 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

Offline binford6000

  • Sr. Member
  • ****
  • Beiträge: 598
  • 🏠⚙️🛠📱
Antw:notify device einschränken
« Antwort #3 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
« Letzte Änderung: 06 November 2018, 07:49:10 von binford6000 »
FHEM 5.9 auf RPi3, IOserver für alle CULs mit ser2net, Testumgebung: docker pull fhem/fhem
Homematic, EnOcean, IT, HUE + Nanoleaf Aurora,  SONOS, alexa-fhem, homebridge, TelegramBot mit msgDialog, livetracking
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline logol01

  • New Member
  • *
  • Beiträge: 8
Antw:notify device einschränken
« Antwort #4 am: 06 November 2018, 09:05:55 »
DANKE :)

Offline logol01

  • New Member
  • *
  • Beiträge: 8
Antw:notify device einschränken
« Antwort #5 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

Offline binford6000

  • Sr. Member
  • ****
  • Beiträge: 598
  • 🏠⚙️🛠📱
Antw:notify device einschränken
« Antwort #6 am: 06 November 2018, 10:12:05 »
Noch einfacher so:
(Fritz|Max|Moritz).*:(on|off|power.*|temperature.*|energy.*) {FritzDectToLoxone("$NAME")}
VG Sebastian
FHEM 5.9 auf RPi3, IOserver für alle CULs mit ser2net, Testumgebung: docker pull fhem/fhem
Homematic, EnOcean, IT, HUE + Nanoleaf Aurora,  SONOS, alexa-fhem, homebridge, TelegramBot mit msgDialog, livetracking
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline logol01

  • New Member
  • *
  • Beiträge: 8
Antw:notify device einschränken
« Antwort #7 am: 06 November 2018, 11:05:56 »
DANKE!!!! :)

 

decade-submarginal