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
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"])
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
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.
Leider ohne Erfolg.
Habe ein Update auf den RssFeed gemacht und gleich kam die Nachricht.
Was hast Du jetzt für ein Attr "event-on-change-reading"?
Ja, mit .*
Ach ja, wenn ich den Updatebeim RssFeed durchführe, erscheint im Eventmonitor alle Readings.
Nur auf Verdacht, teste mal ohne attr WEB_myRSS rfAllReadingsEvents 1
Mit dem Handy online, daher kurz gefasst...
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.
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...
Gibt´s eine Lösung für das Problem? Bei mir ist´s nämlich genau so.
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.