Status mehrer Sensoren senden

Begonnen von Kiter192, 14 März 2013, 12:25:56

Vorheriges Thema - Nächstes Thema

Kiter192

Hallo zusammen,

ich verwende prowl für gewisse Statusmeldungen.
Das funktioniert auch für´s erste.

define Mail1 notify Tuer1:contact.*(open).*{prowl("Tür%%20im%%20Keller%%20wurde%%20geöffnet","Tür","1")}

Nun möchte ich aber eine Mail für "alles" erstellen.

Das heißt anstatt den Text "Tür im Keller wurde geöffnet" möchte ich den Status mehrer geräte einfügen, so das dann in der Mail z.B. folgendes steht:

Betreff: Tür 1
Nachricht: Tuer1 open
           Beleuchtung_XY ein
           Dimmer_ab 10%

Nun weiß ich leider nicht wie ich das in die oben beschriebene notify Anweisung einbaue .... .*{prowl(????????????)}








nsky

Ich hätte die Nachricht so definiert(verwende aber Pushover statt Prowl):
"Tür 1 $value{Tuer1}\nBeleuchtung_XY $value{Beleuchtung_XY}\nDimmer_ab $value{Dimmer_ab}"

Kiter192

Hallo,

erstmal danke,

leider haut das so nicht hin.

Hier der code der klappt:

define Mail_AAA notify Alarm.*(on).* {prowl("Alarmanlage%%20hat%%20ausgelöst","Alarmanlage","2")}

Und hier dein Lösungsvorschlag der leider nicht klappt.

define Mail_AAA notify Alarm.*(on).* {prowl("Tuer1 $value{Tuer1}\nTuer2 $value{Tuer2}","2")}

was mache ich falsch?

gelberlemmy

Guten morgen,

ich habe dies so gelöst:

in der 99_myutils.pm folgendes:[/b]

#################eMail wenn Fenster auf############

sub FHTTK_status {
my @fhttks = devspec2array("TYPE=CUL_FHTTK");
my @wopen = ();
foreach(@fhttks) {
my $fhttk_window = ReadingsVal($_, "Window", "nA");
push (@wopen,$_) if ($fhttk_window eq "Open" );
}
my $num_wopen = @wopen;
my $resultstring='';
if ( $num_wopen gt 0 ) {
$resultstring="folgende Fenster sind noch offen:\n\n";
foreach(@wopen) {
$resultstring.="- ".$_."\n";
Log 4, "FHTTK_status: ". $_. "noch offen";
}
} else {
$resultstring="alle Fenster sind derzeit geschlossen.";
}
return $resultstring;
}


in der fhem.cfg:[/b]

#############Alarmanlage######################

define Alarm_zu_Hause notify .*:Window.*(Open|Closed) { \
my $window_state=ReadingsVal("@", "Window", "nA");;\
my $deftype=$defs{@}{TYPE};;\
return if ( $deftype ne "CUL_FHTTK" );;\
if ( $defs{@}{PREVSTATE} ne $window_state ) { \
my $fhttk_status=FHTTK_status;;\
my $subject="FHEM: Fenster @ ".$window_state;; \
DebianMail('ProwlAPI+2@@api.prowlapp.com' (@@api.prowlapp.com'),$subject,$fhttk_status);;\
Log 3, "@: Window ".$window_state;;\
}\
}
attr Alarm_zu_Hause disable 1
attr Alarm_zu_Hause icon icoMail
attr Alarm_zu_Hause room Alarmanlage

###########Alarmanlage Ein_Ausschalten###########

define EMA FS20 11114444 1a
attr EMA fm_type on-off
attr EMA fm_view 0,1
attr EMA icon black_down
attr EMA model fs20
attr EMA room Alarmanlage

define EMA_Schalten notify EMA:.* { if ("%" eq "on") {fhem ("attr Alarm_zu_Hause disable 0");;\
}\
else {fhem ("attr Alarm_zu_Hause disable 1");;\
}\
}

Dies also also Alarmanlage gelöst. Hab einen Schalter womit ich diese Meldungen ein bzw ausschalten kann.
Als Meldung bekomme ich dann den gesamten Status meiner Fenster und Türen wie zB

Und Sie werden natürlich einzeln angezeigt welche offen sind. Dies geht mit meinen ganzen Kontakten die bei mir im Hause sind

Vorraussetzung sind natürlich fhttk Kontakte.

Hoffe euch geholfen zu haben

Gruß Gelberlemmy

nsky

Zitat von: Kiter192 schrieb am Fr, 15 März 2013 23:23define Mail_AAA notify Alarm.*(on).* {prowl("Tuer1 $value{Tuer1}\nTuer2 $value{Tuer2}","2")}
 
was mache ich falsch?

Soweit ich weiß benötigt prowl 3 Argumente:
define Mail_AAA notify Alarm.*(on).* {prowl("Tuer1 $value{Tuer1}\nTuer2 $value{Tuer2}","Alarmanlage","2")}

Gruß

Kiter192

Hallo,

vielen Dank für alle Antworten, leider hat es bei mir bisher nicht funktioniert.

Meine 99utils sieht so aus:


sub prowl
{
  my $subject = $_[0];
  my $event = $_[1];
  my $priority = $_[2];
  my $ret = "";
  $ret .=  system("wget -q -O /dev/null 'http://api.prowlapp.com/publicapi/add?apikey=MEINE_APIKEY\&application=Home\&event=$event\&priority=$priority\&description=$subject'");
  $ret =~ s,[\r
]*,,g;
  Log 1, "prowl returned: $ret";
}

##--------------------  End sub Prowl   ---------------------------------##


Der Eintrag in der cfg ist folgender


define Mail_AAA1 notify Alarm.*(on).* {prowl("ALARM","Alarmanlage hat ausgelöst","2")}   # => Funktioniert

#define Mail_AAA1 notify Alarm.*(on).* {prowl("ALARM","Tuer2 {Value("Tuer2")},"2")}   # => Funktioniert nicht


Hat jemand noch eine Idee, ich bin der Programmierung nicht ganz mächtig, aber ich habe das gefühl, das der Funktion prowl ein "Text" übergeben wird und an der Stelle keine weitere "Funktion" ausgeführt werden kann.


Kiter192

soooo, habe lange rumgebastelt.

Mit diesem Code kann ich zumindest einen Status abfragen:

define Mail_TT notify Tuer3_1E283B.*(contact:.open).* {prowl("Tuer3",Value("Tuer3_1E283B"),"2")}

nun möchte ich gern aber auch den Status der anderen beiden Türen mit in diese pushmail stecken und wenn es geht, sollte nicht nur der Status dort stehen  sondern vorher auch noch welche Tüer den Status hat.

Jetzt:

Betreff = Tuer3
Text    = open

so hätte ich es gern ;)

Betreff = Status Tueren
Text    = Tuer1: open
          Tuer2: closed
          Tuer3: closed

Es scheitert wohl an meinen Perl Kenntnissen. Wenn mir da jemand behilflich sein könnte wäre ich ihm / euch sehr verbunden.

Danke Vorab.

Ralph

FHEM auf RaspberryPi3 mit Geekworm USV und SignalDUINO 433MHz und HM-MOD-RPI-PCB mit 3 HM-Sec-SD-2, 5 FHT, 2 RM 100-2 Uni S, 2 HMS100, 6 CUL_WS, 6 CUL_FHTTK, 11 FS20 und 7 FS20V Spannungsüberwachungen