FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Fistandantilus am 05 Oktober 2018, 15:07:24

Titel: Fehler mit doif und pushover
Beitrag 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.
Titel: Antw:Fehler mit doif und pushover
Beitrag von: Frank_Huber am 05 Oktober 2018, 15:09:10
Hier gibts Beispiele: https://fhem.de/commandref_DE.html#Pushover
Titel: Antw:Fehler mit doif und pushover
Beitrag 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.

VG
F.
Titel: Antw:Fehler mit doif und pushover
Beitrag von: Frank_Huber am 05 Oktober 2018, 15:29:28
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.

Titel: Antw:Fehler mit doif und pushover
Beitrag von: Fistandantilus am 05 Oktober 2018, 15:39:49
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!')
Titel: Antw:Fehler mit doif und pushover
Beitrag von: Beta-User am 05 Oktober 2018, 15:47:37
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.
Titel: Antw:Fehler mit doif und pushover
Beitrag von: alru am 05 Oktober 2018, 15:51:18
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
Titel: Antw:Fehler mit doif und pushover
Beitrag von: Frank_Huber am 05 Oktober 2018, 15:51:37
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
Titel: Antw:Fehler mit doif und pushover
Beitrag von: Beta-User am 05 Oktober 2018, 16:01:03
@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")').
Titel: Antw:Fehler mit doif und pushover
Beitrag von: sash.sc am 05 Oktober 2018, 16:07:53
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


Titel: Antw:Fehler mit doif und pushover
Beitrag von: Damian am 05 Oktober 2018, 16:18:11
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


Titel: Antw:Fehler mit doif und pushover
Beitrag von: Byte09 am 06 Oktober 2018, 10:28:05
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
Titel: Antw:Fehler mit doif und pushover
Beitrag von: Beta-User am 06 Oktober 2018, 15:03:05
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).
Titel: Antw:Fehler mit doif und pushover
Beitrag von: Byte09 am 06 Oktober 2018, 15:23:55
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

Titel: Antw:Fehler mit doif und pushover
Beitrag von: Beta-User am 06 Oktober 2018, 15:35:46
Alles gut ;) .

Wollte das nur für den TE nicht unkommentiert lassen...
Titel: Antw:Fehler mit doif und pushover
Beitrag von: Fistandantilus am 08 Oktober 2018, 07:39:08
Ich danke Euch für den vielen Input und werde das mal durchtesten.

VG
F.