Hauptmenü

Fehler mit doif und pushover

Begonnen von Fistandantilus, 05 Oktober 2018, 15:07:24

Vorheriges Thema - Nächstes Thema

Fistandantilus

Hallo,

ich möchte mich stündlich über die letzte Aktualisierung meiner Temperatursensoren informieren lassen und habe dazu folgendes doif getestet:

define old_Readings DOIF([:00]) (set Pushover msg 'FHEM' [@"":temperature:ReadingsAge($name,"temperature",0) > 3600,"keine"])

Leider gibt es bei der Ausführung einen Syntaxfehler:

Syntax: Pushover msg ['<title>'] '<msg>' ['<device>' <priority> '<sound>' [<retry> <expire> ['<url_title>' '<action>']]]

Habt Ihr eine Idee, wie ich das umschreiben muss?

VG
F.
Raspberry Pi 3 + FHEM + Smartvisu/Fronthem, CUL, HMLAN, Enocean USB300, Eltako (FAM14, FSB14, FSR,FTS14EM,Multisensor,...) - MySQL DB + 2.Raspberry für Heizungsregelung und 3. Raspberry als Alarmanlage


Fistandantilus

Pushover selbst funktioniert mit statischem Text. Herausforderung ist die dynamische Verwendung aller Temperatur-readings. Für solch einen Fall steht in der Doku leider kein Beispiel.

VG
F.
Raspberry Pi 3 + FHEM + Smartvisu/Fronthem, CUL, HMLAN, Enocean USB300, Eltako (FAM14, FSB14, FSR,FTS14EM,Multisensor,...) - MySQL DB + 2.Raspberry für Heizungsregelung und 3. Raspberry als Alarmanlage

Frank_Huber

OK, dann ist das kein DOIF Problem und kein Pushover Problem.

Das Problem ist der generelle Syntax hier: [@"":temperature:ReadingsAge($name,"temperature",0) > 3600,"keine"]
das wird so nicht funktionieren. Würde empfehlen die Temperaturfühler einzeln in deine Nachricht zu schreiben.
Oder alternativ nur benachrichtigen wenn en Reading älter als x ist.


Fistandantilus

Grundsätzlich ist es das Ziel, nur zu benachrichtigen, wenn das Reading älter als x ist. Da ich relativ viele Sensoren dran habe, wäre es schön, gleich alle mit einem mal abzufragen.

So funktionert es:
([:00] and ReadingsAge("Heizung.OG.VorlaufIst","temperature",0) > 3600) (set Pushover msg 'FHEM' 'Heizungssensoren ausgefallen!')
Raspberry Pi 3 + FHEM + Smartvisu/Fronthem, CUL, HMLAN, Enocean USB300, Eltako (FAM14, FSB14, FSR,FTS14EM,Multisensor,...) - MySQL DB + 2.Raspberry für Heizungsregelung und 3. Raspberry als Alarmanlage

Beta-User

Vielleicht ist das hier eine Basis: https://forum.fhem.de/index.php/topic,36504.0.html
Ist aber ein ganz anderer Ansatz.

Oder: Manche Sensoren (z.B. HM) haben auch (konfigurierbare) Fristen, innerhalb derer ein Wert kommen sollte (und sei es nur Batterie); die gehen dann auf DEAD und werfen ein entsprechendes Event.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

alru

Zitat von: Fistandantilus am 05 Oktober 2018, 15:15:22
Pushover selbst funktioniert mit statischem Text. Herausforderung ist die dynamische Verwendung aller Temperatur-readings. Für solch einen Fall steht in der Doku leider kein Beispiel.

In Pushover lassen sich natürlich auch dynamisch Werte aus den Readings einfügen:

set Pushover msg 'Heizungssensor ausgefallen, Temperatur: [Heizung.OG.VorlaufIST:temperature]' title='Fhem' sound=pushover
Ist natürlich auch nur eine Lösung, die für jeden Fühler einzeln funktioniert
Gruß,

Stefan
(Raspi 3B / HM-LGW / HomeMatic / MySensors)

Frank_Huber

Vielleicht hilft es, musst aber umbauen,

Ich schreibe alle temperaturwerte vom Haus (auf 4 instanzen verteilt) in einen dummy.
Für diesen Dummy habe ich ein Whatchdog at angelegt. (mit enormer Hilfe hier im Forum, hätte ich alleine nicht geschafft)

Hier also das Monitoring, wenn ein Reading von "Temperaturen" älter als 11 Minuten ist gibt es eine Nachricht.

defmod Whatchdog_Temp at +*00:02:00 {\
  my $hash = $defs{"Temperaturen"};;;;\
  foreach my $key (keys %{$hash->{READINGS}}){\
    if (ReadingsAge("Temperaturen",$key,0) > 660) \
      {fhem "set TelegramBot message Temperatursensor $key scheint offline zu sein, bitte prüfen!"};;;;\
  }}
attr Whatchdog_Temp DbLogExclude .*
attr Whatchdog_Temp group Benachrichtigung
attr Whatchdog_Temp room Kommunikation
attr Whatchdog_Temp verbose 0

Stammt aus diesem Thread: https://forum.fhem.de/index.php/topic,75270

Beta-User

#8
@Frank: Sieht cool aus!

Könnte man noch erweitern, Ideen:
- Ein eigenes Reading an den Sensor, wenn er schon gemeldet war. (Wiederholungen vermeiden; könnte man einmal am Tag zurücksetzen)
- Erst mal alle potentiellen Kandidaten in einem Array sammeln; Versenden dann zum Abschluß, wenn das Array Elemente enthält.

Zum Sammeln der potentiellen Devices sollte sich auch devspec2array verwenden lassen; hier: alles, was ein reading mit Namen temperature hat ('devspec2array(".* temperature")').
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

sash.sc

#9
Hier mal meine def.
Ist aber auch mit net tts angabe über amad.


DEF

+*03:00:00 { my $temp2=ReadingsVal("ts02","temperature","0"); my $hum2=ReadingsVal("ts02","humidity","0"); my $temp1=ReadingsVal("ts01","temperature","0"); my $hum1=ReadingsVal("ts01","humidity","0"); fhem ("set pushmsg msg 'Temp.' 'Außen $temp2°C -- $hum2% rF -- Innen $temp1°C -- $hum1% rF' '' 0 '' "); fhem ("set SXZ5|stab10 ttsMsg Draussen ist es aktuell $temp2 Grad. Entweder Arschritzenwasser oder Frostbeulen am Hintern.");;}





ts01 und ts01 sind die Sensoren

Gruß Sascha


Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

Damian

#10
DOIF ([:00]) (set Pushover msg 'FHEM' 'Folgende Sensoren sind ausgefallen: [@"":temperature:ReadingsAge($name,"temperature",0) > 3600,"keine"]')
attr do always


oder

nur benachrichtigen, wenn mindestens einer dabei ist:


DOIF ([:00] and [?#"":temperature:ReadingsAge($name,"temperature",0) > 3600,"keine"] > 0) (set Pushover msg 'FHEM' 'Folgende Sensoren sind ausgefallen: [@"":temperature:ReadingsAge($name,"temperature",0) > 3600,"keine"]')
attr do always


Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Byte09

#11
Zitat von: Fistandantilus am 05 Oktober 2018, 15:07:24
Hallo,

ich möchte mich stündlich über die letzte Aktualisierung meiner Temperatursensoren informieren lassen und habe dazu folgendes doif getestet:

define old_Readings DOIF([:00]) (set Pushover msg 'FHEM' [@"":temperature:ReadingsAge($name,"temperature",0) > 3600,"keine"])

Leider gibt es bei der Ausführung einen Syntaxfehler:

Syntax: Pushover msg ['<title>'] '<msg>' ['<device>' <priority> '<sound>' [<retry> <expire> ['<url_title>' '<action>']]]

Habt Ihr eine Idee, wie ich das umschreiben muss?

VG
F.


hi ,

ich weiss zwar, das es insbesondere bei Beta-User  ;) , ein ungeliebtes Modul ist , hatte heute morgen aber trotzdem langeweile und habe mal ein MSwitch dazu gebastelt (noch ausbaufähig ) .

einstellung über folgende attribute :
intervall: beinhaltet sine Liste der angebotenen Sendeintervalle ( 00:00:30,01:00:00,12:00:00,24:00:00 )
reading: beinhaltet eine Liste der angebotenen zu suchenden Readings (temperature <reading1> <reading2> etc.)
readingage: beinhaltet das mindestalter der zu suchenden readings in sekunden.

solange das device angeschaltet ist sendet er in gewähltem intervall das ergebniss per <Device_to_send> (wählbar)

das device wird im raum 1_Test mit dem namen 'readingabfrage' angelegt.

gruss Byte09


defmod readingabfrage MSwitch  # teleBot FreeCmd MSwitch_Self
attr readingabfrage userattr intervall reading readingage
attr readingabfrage MSwitch_Debug 0
attr readingabfrage MSwitch_Delete_Delays 1
attr readingabfrage MSwitch_Expert 1
attr readingabfrage MSwitch_Extensions 0
attr readingabfrage MSwitch_Help 0
attr readingabfrage MSwitch_Ignore_Types notify allowed at watchdog doif fhem2fhem telnet FileLog readingsGroup FHEMWEB autocreate eventtypes readingsproxy svg cul
attr readingabfrage MSwitch_Include_Devicecmds 1
attr readingabfrage MSwitch_Include_MSwitchcmds 0
attr readingabfrage MSwitch_Include_Webcmds 0
attr readingabfrage MSwitch_Inforoom MSwitch
attr readingabfrage MSwitch_Lock_Quickedit 1
attr readingabfrage MSwitch_Mode Full
attr readingabfrage intervall 00:00:30,01:00:00,12:00:00,24:00:00
attr readingabfrage reading temperature
attr readingabfrage readingage 3600
attr readingabfrage room 1_Test
attr readingabfrage webCmd on:off:intervall:reading

setstate readingabfrage off
setstate readingabfrage 2018-10-06 09:53:28 .Device_Affected FreeCmd-AbsCmd1,MSwitch_Self-AbsCmd1,teleBot-AbsCmd1
setstate readingabfrage 2018-10-06 09:53:28 .Device_Affected_Details FreeCmd-AbsCmd1#[NF]cmd#[NF]cmd#[NF]{#[se]#[nl]#[se]my#[sp]$read#[sp]=#[sp]#[sp]ReadingsVal(#[sp]'$SELF'#[ko]#[sp]'reading'#[ko]#[sp]'')#[se]#[nl]my#[sp]@new#[sp]=#[sp]devspec2array(".*#[dp]FILTER=$read=.+")#[se]#[nl]my#[sp]@sortnew#[sp]=#[sp]sort#[sp]@new#[se]#[nl]my#[sp]@offline=()#[se]#[nl]foreach#[sp]my#[sp]$device#[sp](@sortnew)#[nl]#[sp]{#[se]#[nl]#[se]#[sp]if#[sp](ReadingsAge($device#[ko]$read#[ko]0)#[sp]>#[sp]AttrVal(#[sp]'$SELF'#[ko]#[sp]'readingage'#[ko]#[sp]0)#[sp])#[nl]#[sp]#[sp]#[sp]#[sp]{#[nl]#[sp]#[sp]#[sp]#[sp]push#[sp]@offline#[sp]#[ko]#[sp]$device#[se]#[nl]#[sp]#[sp]#[sp]#[sp]}#[se]#[nl]#[se]#[sp]readingsSingleUpdate(#[sp]$hash#[ko]#[sp]"offline_devices"#[ko]#[sp]join("#[bs]n"#[ko]@offline)#[ko]#[sp]1#[sp])#[se]#[nl]#[sp]}#[nl]}#[NF]#[NF]delay1#[NF]delay1#[NF]00#[dp]00#[dp]00#[NF]00#[dp]00#[dp]00#[NF]#[NF]#[NF]#[NF]#[NF]1#[NF]0#[ND]MSwitch_Self-AbsCmd1#[NF]exec_cmd1#[NF]del_delays#[NF]#[NF]#[NF]delay1#[NF]delay1#[NF][$SELF#[dp]intervall]#[NF]00#[dp]00#[dp]00#[NF]#[NF]#[NF]#[NF]#[NF]2#[NF]0#[ND]teleBot-AbsCmd1#[NF]msg#[NF]no_action#[NF]Folgende#[sp]Sensoren#[sp]sind#[sp]vermutlich#[sp]offline#[dp]#[bs]n[$SELF#[dp]offline_devices]#[NF]#[NF]delay1#[NF]delay1#[NF]00#[dp]00#[dp]00#[NF]00#[dp]00#[dp]00#[NF]#[NF]#[NF]#[NF]#[NF]3#[NF]0
setstate readingabfrage 2018-10-06 09:53:28 .Device_Events no_trigger
setstate readingabfrage 2018-10-06 09:53:28 .First_init done
setstate readingabfrage 2018-10-06 09:53:28 .Trigger_cmd_off no_trigger
setstate readingabfrage 2018-10-06 09:53:28 .Trigger_cmd_on no_trigger
setstate readingabfrage 2018-10-06 09:53:28 .Trigger_off no_trigger
setstate readingabfrage 2018-10-06 09:53:28 .Trigger_on no_trigger
setstate readingabfrage 2018-10-06 09:53:28 .V_Check V2.00
setstate readingabfrage 2018-10-06 09:53:28 .change pushmsg#bitte dieses Device durch ein telegram- oder pushoverdevice etc. ersetzen :#device
setstate readingabfrage 2018-10-06 09:53:28 .change_info Achtung, des gewählte Device muss den Befehst set msg ... unterstützen
setstate readingabfrage 2018-10-06 09:53:28 .sysconf #test#[se]#[nl]#[nl]$special="intervall#[dp]"#[sp].#[sp]AttrVal(#[sp]$name#[ko]#[sp]#[st]intervall#[st]#[ko]#[sp]#[st]0#[st])#[sp]#[sp]."#[sp]reading#[dp]".AttrVal(#[sp]$name#[ko]#[sp]#[st]reading#[st]#[ko]#[sp]#[st]0#[st])#[sp]#[se]#[nl]#[nl]#[nl]#[nl]if#[sp]($cmd#[sp]eq#[sp]"intervall")#[nl]{#[nl]MSwitch_LOG(#[sp]$name#[ko]#[sp]5#[ko]#[sp]"setting#[sp]STEPS#[sp]#[dp]#[sp]$cmd#[sp]$args[0]"#[sp])#[se]#[nl]readingsSingleUpdate(#[sp]$hash#[ko]#[sp]"intervall"#[ko]#[sp]$args[0]#[ko]#[sp]1#[sp])#[se]#[nl]return#[sp]"exit"#[se]#[nl]}#[nl]#[nl]if#[sp]($cmd#[sp]eq#[sp]"reading")#[nl]{#[nl]MSwitch_LOG(#[sp]$name#[ko]#[sp]5#[ko]#[sp]"setting#[sp]STEPS#[sp]#[dp]#[sp]$cmd#[sp]$args[0]"#[sp])#[se]#[nl]readingsSingleUpdate(#[sp]$hash#[ko]#[sp]"reading"#[ko]#[sp]$args[0]#[ko]#[sp]1#[sp])#[se]#[nl]return#[sp]"exit"#[se]#[nl]}#[nl]#[nl]
setstate readingabfrage 2018-10-06 09:31:01 EVENT MSwitch_Self-AbsCmd1_conditionoff
setstate readingabfrage 2018-10-06 09:31:01 EVTFULL PIR_Reset:MSwitch_Self-AbsCmd1_conditionoff
setstate readingabfrage 2018-10-06 09:31:01 EVTPART1 PIR_Reset
setstate readingabfrage 2018-10-06 09:31:01 EVTPART2 MSwitch_Self-AbsCmd1_conditionoff
setstate readingabfrage 2018-10-06 09:51:48 Exec_cmd set readingabfrage del_delays
setstate readingabfrage 2018-10-06 09:53:28 Sys_Extension on
setstate readingabfrage 2018-10-06 09:53:28 Trigger_log off
setstate readingabfrage 2018-10-06 09:36:47 intervall 24:00:00
setstate readingabfrage 2018-10-06 09:53:28 last_event MSwitch_Self-AbsCmd1_conditionoff
setstate readingabfrage 2018-10-06 09:50:15 offline_devices Aussenpflanze\
Aussenpflanze1
setstate readingabfrage 2018-10-06 09:34:58 reading temperature
setstate readingabfrage 2018-10-06 09:53:28 state off

Beta-User

Zitat von: Byte09 am 06 Oktober 2018, 10:28:05
ich weiss zwar, das es insbesondere bei Beta-User  ;) , ein ungeliebtes Modul ist
Interessant, dass du dich an die (nach meiner Erinnerung) einzige Gelegenheit erinnerst, in der ich mich (indirekt) zu deinem Modul geäußert habe.

Dass ich es nicht einsetzen werde, heißt noch lange nicht, dass es "ungeliebt" ist. Was mich (allerdings eher bezogen auf ein anderes Modul, das aggressiv mit "Einfachheit" beworben wird) stört: Es werden damit _nach meiner persönlichen Überzeugung_ unbedarfte Neulinge in die Irre geführt, weil sie den Eindruck haben, sie müßten sich nicht mit Ursache und Wirkung befassen und nicht mit einigen grundlegenden inneren Mechanismen von FHEM auseinandersetzen. Ohne das geht es m.E. aber nicht, nur copy&paste ist zu wenig, um verantwortungsvoll mit unserem mächtigen Werkzeugkasten umzugehen.

Wer das gemacht hat und zu der Entscheidung gelangt ist, dass ihn die Attributschlachten nicht stören, die teilweise geschlagen werden, um einfachste Sachverhalte abzubilden, der mag das von mir aus tun :) .

(Anmerkung: _hier_ geht es um eine deutlich umfangreichere Aufgabe, als auf einen Tastendruck zu reagieren, um dann ein anderes Device "do always" umzuschalten; da mag es etwas anderes sein; dennoch werde ich für mich solche Aufgaben nicht mehr mit einem der vermeintlichen "schweizer Taschenmesser" lösen, sondern mit Bordmitteln).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Byte09

Zitat von: Beta-User am 06 Oktober 2018, 15:03:05
Interessant, dass du dich an die (nach meiner Erinnerung) einzige Gelegenheit erinnerst, in der ich mich (indirekt) zu deinem Modul geäußert habe.

Dass ich es nicht einsetzen werde, heißt noch lange nicht, dass es "ungeliebt" ist. Was mich (allerdings eher bezogen auf ein anderes Modul, das aggressiv mit "Einfachheit" beworben wird) stört: Es werden damit _nach meiner persönlichen Überzeugung_ unbedarfte Neulinge in die Irre geführt, weil sie den Eindruck haben, sie müßten sich nicht mit Ursache und Wirkung befassen und nicht mit einigen grundlegenden inneren Mechanismen von FHEM auseinandersetzen. Ohne das geht es m.E. aber nicht, nur copy&paste ist zu wenig, um verantwortungsvoll mit unserem mächtigen Werkzeugkasten umzugehen.

Wer das gemacht hat und zu der Entscheidung gelangt ist, dass ihn die Attributschlachten nicht stören, die teilweise geschlagen werden, um einfachste Sachverhalte abzubilden, der mag das von mir aus tun :) .

(Anmerkung: _hier_ geht es um eine deutlich umfangreichere Aufgabe, als auf einen Tastendruck zu reagieren, um dann ein anderes Device "do always" umzuschalten; da mag es etwas anderes sein; dennoch werde ich für mich solche Aufgaben nicht mehr mit einem der vermeintlichen "schweizer Taschenmesser" lösen, sondern mit Bordmitteln).
... War doch extra ein smiley dabei .
[emoji6]

Gruss Byte09

Gesendet von meinem SM-G900F mit Tapatalk


Beta-User

Alles gut ;) .

Wollte das nur für den TE nicht unkommentiert lassen...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors