[Gelöst] Statusänderung von UWZ soll Info per Telebot senden

Begonnen von Gear, 30 April 2018, 10:18:22

Vorheriges Thema - Nächstes Thema

Gear

Guten Tag Zusammen,

ich möchte gerne über Unwetterwarnungen informiert werden, sobald sich irgendein Wert ändert.
Ich habe es nun über die UserReadings und über ein Notify versucht, leider bekomme ich alle 5 Minuten diese Nachricht.
Ich habe es auch mit event-on-change-reading versucht.

Ich hoffe es kann mir jemand helfen.

Grüße
Gear
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

MKeY

poste mal ein list von deinem uwz device und deinem notify, dann können wir dir helfen
Wer Fehler findet, darf sie behalten!
RPi's, D1Mini
Homematic, Hue, Sonoff, Alexa, Xiaomi, ConBee
Prusa MK2.5, Prusa MK3S (MMU2S vorhanden, aber nervtötend)
Lowrider 2CNC

Gear

UWZ
Internals:
   CountryCode DE
   DEF        DE ***** 300
   INTERVAL   300
   INTERVALWARN 0
   NAME       Unwetterwarnung
   NR         36
   PLZ        *****
   STATE      Warnungen: 0
   TYPE       UWZ
   URL        http://feed.alertspro.meteogroup.com/AlertsPro/AlertsProPollService.php?method=getWarning&language=de&areaID=UWZDE82347
   VERSION    2.0.0
   OLDREADINGS:
   READINGS:
     2018-05-01 11:14:54   WarnCount       0
     2018-05-01 11:14:54   WarnUWZLevel    0
     2018-05-01 11:14:54   WarnUWZLevel_Color gruen
     2018-05-01 11:19:54   currentIntervalMode normal
     2018-05-01 11:14:54   durationFetchReadings 0.00
     2018-05-01 11:14:54   lastConnection  4 values captured in 0.00 s
     2018-05-01 11:14:54   state           Warnungen: 0
   fhem:
     LOCAL      0
   helper:
Attributes:
   DbLogExclude .*
   download   1
   event-on-change-reading 1
   maps       deutschland europa bayern
   room       00 Draußen


Notify
Internals:
   DEF        Unwetterwarnung:lastConnection:..*.values.captured.in.*.*.s
{
my $WarnLevel = ReadingsVal($NAME,'WarnUWZLevel',0);
my $WarnCount .= ReadingsVal($NAME,'WarnCount',0);
my $WarnLevelOwn = 0;

my $WarnMSG = "Die Aktuelle Unwetterwarnstufe ist ". ucfirst(ReadingsVal($NAME,'WarnUWZLevel_Color',0) ."\n");
$WarnMSG .= "Aktuelle Anzahl der Warnungen: $WarnCount\n\n";

for(my $i = 0; $i < $WarnCount; $i++)
{
  $WarnMSG .= "Warnung ". ($i+1) .":\n". ReadingsVal($NAME,'Warn_'. $i .'_LongText',0) ."\n\n";
}

if($WarnLevel <= 1)
{
  $WarnLevelOwn = 1;
}
elsif($WarnLevel <= 3)
{
  $WarnLevelOwn = 2;
}
else
{
  $WarnLevelOwn = 3;
}

fhem("set mqtt publish /SH/W/UWZ/Level $WarnLevelOwn");
fhem("set TeleBot msg $WarnMSG");
}
   NAME       Notify.Unwetterwarnung
   NOTIFYDEV  Unwetterwarnung
   NR         62
   NTFY_ORDER 50-Notify.Unwetterwarnung
   REGEXP     Unwetterwarnung:lastConnection:..*.values.captured.in.*.*.s
   STATE      active
   TYPE       notify
   READINGS:
     2018-04-30 12:34:40   state           active
Attributes:
   DbLogExclude .*
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

Byte09

du bekommst diese nachricht alle x minuten , da mit jedem update ein event erzeugt wird .
warum triggerst du auf 'last connection ' und nicht auf ' unwetter:Warnungen:..* {} ' . wenn du dann noch 'event-on-change-reading' entsprechend setzt sollte es gehen.

gruss Byte09

CoolTux

Ich würde eher auf WarnCount triggern.

:WarnCount:.[1-9]

Sollte gehen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Gear

Ich habe auf 'last connection ' getriggert, da es die letzten Daten sind, die reinkommen.

Wenn es auf :WarnCount:.[1-9] reagierte dann hatte ich das Problem, dass wenn sich der Status ändert, aber die Anzahl gleich bleibt, keine neues Event ausgelöst wurde.
Bei 'unwetter:Warnungen:..* {}' war es auch so.
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

CoolTux

Zitat von: Gear am 01 Mai 2018, 11:52:46
Ich habe auf 'last connection ' getriggert, da es die letzten Daten sind, die reinkommen.

Wenn es auf :WarnCount:.[1-9] reagierte dann hatte ich das Problem, dass wenn sich der Status ändert, aber die Anzahl gleich bleibt, keine neues Event ausgelöst wurde.
Bei 'unwetter:Warnungen:..* {}' war es auch so.

Dürfte eher selten vorkommen das eine andere Warnmeldung kommt und im selben Zuge die erste verschwindet. Ich habe gute Erfahrungen gemacht mit WarnCount.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Gear

Und wenn sich das die Stufe ändert, dann ändert sich der Count aber nicht.
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

Byte09

Zitat von: Gear am 01 Mai 2018, 12:13:28
Und wenn sich das die Stufe ändert, dann ändert sich der Count aber nicht.

dann trigger doch zusätzlich auf die Stufe ?!

gruss Byte09

Gear

Oke, dass man auf mehrere Sachen Triggern kann, das war mir nicht bewusst.  :o
Wie geht das?
Ich kenne das nur so: Unwetterwarnung:lastConnection:..*.values.captured.in.*.*.s {}
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

Byte09

Zitat von: Gear am 01 Mai 2018, 12:52:19
Oke, dass man auf mehrere Sachen Triggern kann, das war mir nicht bewusst.  :o
Wie geht das?
Ich kenne das nur so: Unwetterwarnung:lastConnection:..*.values.captured.in.*.*.s {}

letztendlich müsstest du da wohl mit einen zweiten notify arbeiten ( denke ich ) , aber unter vorbehalt , da ich grundsätzlich nicht mehr mit notifys arbeite.

gruss Byte09

Gear

Mit was arbeitest du dann?
Ich glaube ich werde es über die UserReadings machen und setze eigenen Readings um diese dann zu vergleichen.

Danke für eure Hilfe!
Wünsche euch einen schönen Tag
Grüße
Gear
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

Byte09

Zitat von: Gear am 01 Mai 2018, 13:38:55
Mit was arbeitest du dann?
Ich glaube ich werde es über die UserReadings machen und setze eigenen Readings um diese dann zu vergleichen.

Danke für eure Hilfe!
Wünsche euch einen schönen Tag
Grüße
Gear

Mit meinem eigenen Modul 'MSwitch'  https://forum.fhem.de/index.php/topic,86199.0.html, habe es eben mal damit eingerichtet .
bei interesse kann ich dir entsprechende raw und config schicken

gruss Byte09

Gear

Das Modul sieht interessant aus, muss ich die Tage mal den WiKi Eintrag lesen.

Ich komme dann in deinem Verlinkten Beitrag auf dich zu, wenn ich fragen habe, Danke! =)
> ODroid H3 => OMV => Docker => FHEM <
Fritz!Box 7590, Fritz!Repeater 6000, MQTT, RaspberryMatic, Zigbee2MQTT, ESP32, ESP8266, Shelly, Grafana ...
> 3D-Druck <

Dia81

Hat denn hier jemand eine Lösung gefunden die er teilen möchte? HHabe genau die gleiche Anforderung. Möchte per Telegram gesendet haben wenn 1 oder mehrere Unwetter sind UND wenn sich der Status ändert z.B. Sturm Stufe 3 auf 4.
Bisher krieg ich es leider nur hin, dass bei Änderung des WarnCounts die Meldungen kommen, kriege das aber nicht mir Änderungen der Stufen zusammen. Freu mich über weitere Infos