[gelöst] Benachrichtigung bei Dienständerung

Begonnen von TWART016, 20 Juli 2017, 23:15:29

Vorheriges Thema - Nächstes Thema

TWART016

Hallo,

ich möchte mir eine Benachrichtigung senden lassen, wenn ein Windows Dienst sich beendet, und die runtime von PC über 2 Minuten beträgt. Mein DOIF sendet jedoch, sobald der PC 3 Minuten läuft. Wie muss mein DOIF oder sonstiges Device aussehen?

([WinPCT:service_NoIPDUCService4] eq "Running" and [WinPCT:os_RunTime_minutes] > 2) (set Telegram msg Der Dienst DUC wurde gestartet)


Gruß
TWART016

Otto123

Hi,

was liefert denn [WinPCT:os_RunTime_minutes] ? 2 min oder 2.0 min?
> 2 ist nun mal erst 3.
Falls der Wert von [WinPCT:os_RunTime_minutes] 2.x kannst Du auf >2.0 testen. Das sollte dann bei 2.1 ansprechen.
Ansonsten wäre > 1 in dem Moment wo [WinPCT:os_RunTime_minutes] = 2 wird :)

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

nils_

also irgendwie passt deine beschreibung nicht zu dem geposteten Code

Zitat von: TWART016 am 20 Juli 2017, 23:15:29
ich möchte mir eine Benachrichtigung senden lassen, wenn ein Windows Dienst sich beendet, und die runtime von PC über 2 Minuten beträgt. Mein DOIF sendet jedoch, sobald der PC 3 Minuten läuft. Wie muss mein DOIF oder sonstiges Device aussehen?

Zitat von: TWART016 am 20 Juli 2017, 23:15:29([WinPCT:service_NoIPDUCService4] eq "Running" and [WinPCT:os_RunTime_minutes] > 2) (set Telegram msg Der Dienst DUC wurde gestartet)


ich vermute du möchtest da irgendwas anderes, jedenfalls passt dein code zum verhalten (siehe auch Otto's Erklärung)
viele Wege in FHEM es gibt!

Ellert

Vielleicht gehts mit
Zitat[WinPCT:service_NoIPDUCService4] ne "Running"

TWART016

Ich habe noch einen zweiten Code

([WinPCT:service_NoIPDUCService4] eq "Stopped" and [WinPCT:os_RunTime_minutes] > 2) (set Telegram msg Der Dienst DUC wurde gestoppt)

Ich möchte nur eine Benachrichtigung, wenn das Reading von Running auf Stoppped wechselt. Ist das mit DOIF möglich?

os_RunTime_minutes ist eine ganze Zahl, also 2 min.

Otto123

Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

TWART016

Und wie muss da die Syntax aussehen?

Otto123

#7
Deine Frage ist eigenartig und Deine Infos spärlich. Keiner weiß was WinPCT:service_NoIPDUCService4 wirklich liefert, wie Events aussehen...
Dein Code sendet Dir eine Nachricht wenn WinPCT:service_NoIPDUCService4 einen Event erzeugt und die Bedingung erfüllt wird. Das macht er einmal solange sich der Zustand der Bedingung nicht ändert. Würde ich zumindest annehmen.
Hast Du ihn probiert und er funktioniert nicht?
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Per

([WinPCT:service_NoIPDUCService4] eq "Stopped" and [$SELF:cmd] == 2) (set Telegram msg Der Dienst DUC wurde gestoppt)
DOELSEIF ([WinPCT:service_NoIPDUCService4] eq "Running")
DOELSE

TWART016

WinPCT:service_NoIPDUCService4 steht entweder auf Running oder Stopped.

Zitat von: Per am 25 Juli 2017, 14:18:29
([WinPCT:service_NoIPDUCService4] eq "Stopped" and [$SELF:cmd] == 2) (set Telegram msg Der Dienst DUC wurde gestoppt)
DOELSEIF ([WinPCT:service_NoIPDUCService4] eq "Running")
DOELSE

Mit dem Code werden ganz viele Events gesendet, sobald die Abfrage korrekt ist.

Eigentlich soll nur die Prüfung erfolgen, wenn das Reading service_NoIPDUCService4 sich ändert.

Otto123

Ich verstehe Deine Frage leider immer noch nicht.
Zitat von: TWART016 am 30 Juli 2017, 14:02:46
Eigentlich soll nur die Prüfung erfolgen, wenn das Reading service_NoIPDUCService4 sich ändert.
Darauf mein Vorschlag:
define nty_ServiceStopped notify WinPCT:service_NoIPDUCService4.Stopped set Telegram msg Der Dienst DUC wurde gestoppt
Allerdings ist das jetzt nur hingeschrieben, da ich immer noch nicht weiß, welche Events der WinPCT erzeugt.
Also mach bitte den Eventmonitor auf, klicke oben auf .* und schreibe WinPCT davor. Dann stoppst Du den Dienst und siehst den passenden Event. Diese Zeile markierst Du und lässt Dir damit das richtige notify erzeugen. Dann brauchst Du bloß noch den Ausführungsteil zu ergänzen. Die Bedienung vom Eventmonitor ist eigentlich erklärend.

DOIFs kannst Du dort auch erzeugen lassen.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

TWART016

Dann haben ich wieder was gelernt. Notify aus Event Monitor heraus.

In deinem Code hat ein Doppelpunkt gefehlt:
define DUCserviceStarted notify WinPCT:service_NoIPDUCService4:.Stopped {if(ReadingsVal("WinPCT","os_RunTime_minutes","") > 2) {fhem ("set Telegram msg Der Dienst DUC wurde gestoppt " .(substr(FmtTime(time()),0,8) ))} }

Ich dachte das könnte man auch mit DOIF machen.