FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: Soc am 24 November 2017, 18:14:37

Titel: DOIF wird ausgeführt bei KEINER Änderungen der Readings im RssFeed
Beitrag von: Soc am 24 November 2017, 18:14:37
Hallo,

ich habe einen RssFeed definiert, welchen ich mit folgenden DOIF überwache:


defmod doif_RSSPushover DOIF ([WEB_myRSS:n00_title]) \
(set Pushover msg message="[WEB_myRSS]" url_title="Jetzt lesen" action="[WEB_myRSS:n00_link]" expire=18000)
attr doif_RSSPushover DbLogExclude .*
attr doif_RSSPushover alias Pushover Nachricht bei neuen Beiträgen auf h....com
attr doif_RSSPushover checkReadingEvent 1
attr doif_RSSPushover do always


Der RssFeed ist wie folgt definiert:


defmod WEB_myRSS rssFeed https://h....com/feed.xml 18000
attr WEB_myRSS DbLogExclude .*
attr WEB_myRSS event-on-change-reading .*
attr WEB_myRSS icon remotecontrol/black_btn_RSS
attr WEB_myRSS rfAllReadingsEvents 1
attr WEB_myRSS rfEncode utf8
attr WEB_myRSS rfReadings title,pubDate,link


Ich erhalte alle 5 Stunden eine Nachricht, dass angeblich ein neuer Feed da wäre, was aber nicht stimmt.

Hat jemand einen Tipp was ich da falsch definiert habe?

Danke und Gruß

Soc
Titel: Antw:DOIF wird ausgeführt bei KEINER Änderungen der Readings im RssFeed
Beitrag von: automatisierer am 24 November 2017, 21:25:38
Hallo,
durch die Bedingung:
([WEB_myRSS:n00_title])

Bei der Reading Auswertung, prüft das DOIF bei jedem Event des betreffenden Device, ob sich das Reading verändert hat. Da du keine Prüfung, aller '([WEB_myRSS:n00_title] eq "xyz")'  vornimmst, ist die Bedingung ja immer wahr. Ich hab nun keine Ahnung wie die Events von 'WEB_myRSS' aussehen, aber du könntest versuchen direkt auf Events zu triggern.

([WEB_myRSS:"n00_title"])
Titel: Antw:DOIF wird ausgeführt bei KEINER Änderungen der Readings im RssFeed
Beitrag von: Soc am 24 November 2017, 21:56:45
Hier ein Auszug aus den RssFeed:


Internals:
   CHANGED
   DEF        https://haus-automatisierung.com/feed.xml 18000
   INTERVAL   18000
   NAME       WEB_myRSS
   NOTIFYDEV  global
   NR         46
   NTFY_ORDER 50-WEB_myRSS
   STATE      24.11.2017 - Docker auf dem Raspberry Pi
   TYPE       rssFeed
   URL        https://haus-automatisierung.com/feed.xml
   READINGS:
     2017-11-24 20:46:48   f_link          https://haus-automatisierung.com/
     2017-11-24 20:46:48   f_pubDate       Fri, 24 Nov 2017 15:21:29 +0100
     2017-11-24 20:46:48   f_title         haus-automatisierung.com
     2017-11-24 20:46:47   gzippedFeed     0
     2017-11-24 20:46:48   n00_link        http://haus-automatisierung.com/hardware/fhem/2017/11/24/docker-auf-raspberry-pi.html
     2017-11-24 20:46:48   n00_pubDate     Fri, 24 Nov 2017 00:00:00 +0100
     2017-11-24 20:46:48   n00_title       Docker auf dem Raspberry Pi
     2017-11-24 20:46:48   n01_link        http://haus-automatisierung.com/hardware/2017/11/23/nextion-display-part-4.html
     2017-11-24 20:46:48   n01_pubDate     Thu, 23 Nov 2017 00:00:00 +0100
     2017-11-24 20:46:48   n01_title       Nextion Display - Teil 4 - Integration in FHEM und Node-Red
     2017-11-24 20:46:48   n02_link        http://haus-automatisierung.com/hardware/fhem/2017/11/19/fhem-tutorial-reihe-part-45-wunderlist.html
     2017-11-24 20:46:48   n02_pubDate     Sun, 19 Nov 2017 00:00:00 +0100
     2017-11-24 20:46:48   n02_title       FHEM Tutorial-Reihe - Part 45: wunderlist integrieren
     2017-11-24 20:46:48   n03_link        http://haus-automatisierung.com/hardware/fhem/2017/11/18/fhem-tutorial-reihe-part-44-nano-cul.html
     2017-11-24 20:46:48   n03_pub


Der Inhalt von n00_title ändert sich nur alle x Tage. Auf den Inhalt kann ich den DOIF nicht abfragen, da mir natürlich der Wert nicht bekannt ist.

Gruß

Soc
Titel: Antw:DOIF wird ausgeführt bei KEINER Änderungen der Readings im RssFeed
Beitrag von: automatisierer am 24 November 2017, 22:09:21
da du bei dem RSS Device event-on-change-reading gesetzt hast, wird nur dann ein Event erzeugt, wenn sich der Titel ändert. Somit sollte mein Vorschlag funktionieren.
Titel: Antw:DOIF wird ausgeführt bei KEINER Änderungen der Readings im RssFeed
Beitrag von: Soc am 24 November 2017, 23:12:34
Leider ohne Erfolg.
Habe ein Update auf den RssFeed gemacht und gleich kam die Nachricht.
Titel: Antw:DOIF wird ausgeführt bei KEINER Änderungen der Readings im RssFeed
Beitrag von: amenomade am 24 November 2017, 23:49:54
Was hast Du jetzt für ein Attr "event-on-change-reading"?
Titel: Antw:DOIF wird ausgeführt bei KEINER Änderungen der Readings im RssFeed
Beitrag von: Soc am 24 November 2017, 23:55:10
Ja, mit .*
Titel: Antw:DOIF wird ausgeführt bei KEINER Änderungen der Readings im RssFeed
Beitrag von: Soc am 24 November 2017, 23:56:21
Ach ja, wenn ich den Updatebeim RssFeed durchführe, erscheint im Eventmonitor alle Readings.
Titel: Antw:DOIF wird ausgeführt bei KEINER Änderungen der Readings im RssFeed
Beitrag von: Frank_Huber am 25 November 2017, 00:10:58
Nur auf Verdacht, teste mal ohne attr WEB_myRSS rfAllReadingsEvents 1

Mit dem Handy online, daher kurz gefasst...

Titel: Antw:DOIF wird ausgeführt bei KEINER Änderungen der Readings im RssFeed
Beitrag von: Soc am 25 November 2017, 07:15:04
Dein Verdacht war Gold wert. Jetzt passt es.
Beim set WEB_myRSS update bleibt es ruhig. Beim setreading auf n00_title kommt eine Nachricht.

Super. Danke und Dir noch ein schönes Wochenende.
Titel: Antw:DOIF wird ausgeführt bei KEINER Änderungen der Readings im RssFeed
Beitrag von: Frank_Huber am 25 November 2017, 08:46:07
Ja, die commandref oder das Modul scheint hier evtl fehlerhaft zu sein.
Jede Änderung im device scheint alle readings zu aktualisieren.
Und auch events auszulösen. Event-on-change-reading wird dabei dann scheinbar ausser Acht gelassen.

Mit dem Handy online, daher kurz gefasst...

Titel: Antw:DOIF wird ausgeführt bei KEINER Änderungen der Readings im RssFeed
Beitrag von: Mohrengemuse am 06 Januar 2018, 14:15:08
Gibt´s eine Lösung für das Problem? Bei mir ist´s nämlich genau so.
Titel: Antw:DOIF wird ausgeführt bei KEINER Änderungen der Readings im RssFeed
Beitrag von: Soc am 07 Januar 2018, 12:47:58
Ja, aber eine Umgehung die aber funktioniert.

Ich habe ein UserReading in MyRSS angelegt, indem der letzte Title gespeichert wird.
Im DOIF sieht es dann wie folgt aus:


([WEB_myRSS:"n00_title"] and [WEB_myRSS:n00_title] ne [WEB_myRSS:T_n00_title])
(setreading WEB_myRSS T_n00_title [WEB_myRSS:n00_title],
set Pushover msg message="(T) [WEB_myRSS]" url_title="Jetzt lesen" action="[WEB_myRSS:n00_link]" expire=18000)


Damit wird wirklich nur der Pushover ausgelöst wenn eine NEUE Nachricht da ist.

Ich hoffe das hilft Dir.