ich selbst habe leider keine großen Programmier Kenntnisse. Deswegen suche ich mir hier im Forum div. Codeschipsel und versuche diese dann zu verstehen und auf meine Bedürfnisse anzupassen. Da mir hier oft weitergeholfen werden kann, profitieren auch andere Anfänger davon.
Ok nun das eigentliche Problem. Wir haben für unsere Fa. den Zugang zum Gebäude mit Keymatic umgesetzt. Jeder hat einen Handsender. Wenn die Tür auf/abgeschlossen wird, bekommt der Chef eine Email mit Namen usw.
<?
HM_WriteValueBoolean(11111 /*[Aktoren\Schloss]*/, "OPEN", true);
SMTP_SendMailEx(22222 /*[Aktoren\Mail\E-Mail senden (SMTP)]*/, "Mail@mail.de", "Info", "Die Tür wird von Mustermann aufgeschlossen");
?>
Da ich es nicht besser wusste, habe ich für jeden Mitarbeiter 2 Scripte (Auf/Zu) angelegt. Bei 25 Mitarbeiter jede menge Scripte. Meine Idee ist ein Script das abfragt welches Ereignis/Aktor ausgelöst hat und das ganze dann in Variablen schreibt und zum Schluss aus den Variablen eine Email generiert. Richtig gut wäre auch wenn man die ganzen Logdaten (Wer wann auf/abgeschlossen hat) in zb. eine TXT Datei schreiben könnte. Leider konnte ich keinen passenden Codeschnipsel finden.
Wenn jemand so etwas hat bzw. weis wie man so etwas programmiert, wäre es toll wenn an den Programmzeilen auch eine kurze Beschreibung steht. was die Codezeile eigentlich tut. So kann ich und auch andere Anfänger besser verstehen was die einzelnen Befehle für einen Sinn haben.
Ich hoffe hier nicht zuviel zu verlangen. :rolleyes:
Ich bleib erstmal beim Script für die Auswertung. Wenn das funktioniert mach ich mit dem Log weiter.
Ich hab mal folgendes versucht:
<?
$Ausloeser = $_IPS['VARIABLE'];
//Liefert die ID des auslösenden Ereignis und schreibt den Wert in eine Variable mit dem Namen "Ausloeser"
$Wert = $_IPS['VALUE'];
//Liefert den Wert des Auslösenden Ereignis und schreibt den Wert in eine Variable mit dem Namen "Wert"
SMTP_SendMailEx(14436 /*[Aktoren\Mail\E-Mail senden (SMTP)]*/, "mail@mail.de", "INFO", "$ausloeser $Wert");
// Sendet eine Email an mich mit der ID und Wert der auslösenden Variable
?>
Soweit meine ersten Versuche…
Ich habe eine Variable angelegt auf der das Script reagiert. Ich bekomme auch eine Email, nur leider nicht mit der ID und Wert. Bei true bekomme ich eine 1 und bei false nichts.
$_IPS wird Dir da weiterhelfen. Hier ein Beispiel, wie ich in meiner Anwesenheitssteuerung feststelle, welcher Sender ausgelöst hat. Die Aufgabenstellung ist ja ähnlich :
IF ($_IPS['SENDER']="Variable")
{
$trigger=$_IPS['VARIABLE'];
IF ($trigger==44743 /*[Anwesenheitssteuerung\AKM-868 ( Walter )\Available]*/)
{ $name="Walter";
}
IF ($trigger==18931 /*[Anwesenheitssteuerung\AKM-868 ( Catherine )\Available]*/)
{ $name="Catherine";
}
$aktion=GETVALUE($trigger);
}
Zum Logdateischreiben, hier mal die Funktion, die ich benutze :
<?
IF ($_IPS['SENDER']="Variable")
{
$trigger=$_IPS['VARIABLE'];
IF ($trigger==15582 /*[Scripts\Test\Thomas]*/)
{ $name="Thomas";
}
IF ($trigger==41453 /*[Scripts\Test\Uwe]*/)
{ $name="Uwe";
}
}
IF ($_IPS['SENDER']="VALUE")
{
$ist=$_IPS['VALUE'];
IF ($ist=1)
{ $wert="aufgeschlossen";
}
else
{ $wert="abgeschlossen";
}
}
SMTP_SendMailEx(14436 /*[Aktoren\Mail\E-Mail senden (SMTP)]*/, "mail@mail.de", "INFO", "$name hat die Tür $wert");
// Sendet eine Email mit dem Namen und Zustand der auslösenden Variable
?>
Ich bekomme nun eine Email mit dem Namen und aufgeschlossen. Leider funktioniert das mit abgeschlossen (false) nicht.
Ich bekomme immer „aufgeschlossen“ zurück. Hab das auch schon so versucht:
Besten dank. Kaum macht man es richtig funktioniert es auch schon…
<?
IF ($_IPS['SENDER']="Variable")
{
$trigger=$_IPS['VARIABLE'];
IF ($trigger==15582 /*[Scripts\Test\Thomas]*/)
{ $name="Thomas";
}
IF ($trigger==41453 /*[Scripts\Test\Uwe]*/)
{ $name="Uwe";
}
}
IF ($_IPS['SENDER']="VALUE")
{
$ist=$_IPS['VALUE'];
IF ($ist==1)
{ $wert="aufgeschlossen";
}
IF ($ist==0)
{ $wert="abgeschlossen";
}
}
$zeit=date("d.m. H:i:s");
SMTP_SendMailEx(14436 /*[Aktoren\Mail\E-Mail senden (SMTP)]*/, "mail@mail.de", "INFO", "$name hat die Tür $wert. Zeitstempel: $zeit");
// Sendet eine Email mit dem Namen und Zustand der auslösenden Variable
?>
Den Typ bekommst Du von der Homematic vorgegeben. Ich vermute, es wird der Status sein, und der ist bool, also TRUE oder FALSE. Dein Skript funktioniert nicht, weil das hier "IF ($_IPS[‚SENDER‘]=„VALUE“) " niemals eintrifft. $_IPS[‚SENDER‘] wird niemals den Wert „VALUE“ erhalten. $_IPS[‚VALUE‘] enthält den Wert der auslösenden Variable und ist damit immer gesetzt. Mach die IF-Klausel weg, frage den Bool-Wert ab ( IF $ist oder IF $ist==TRUE ) und dann wird es gehen.
Das Script läuft ohne Fehler durch, allerdings ohne das was passiert. Ich vermute mal es liegt an der Variable $dateiname
Die hat ja keinen Wert!? $text im übrigen auch nicht. Müssen hier erst noch Werte gesetzt werden?
Genau das habe ich Dir ja geschrieben. Aber Du fragst ‚VALUE‘ als Inhalt von $_IPS[‚SENDER‘] ab, und das wir nicht gehen ! Schau Dir Dein Skript nochmal genau an und vergleich’s mal mit der o.a. Doku.
Lies nochmal meinen Beitrag genau durch. Da steht drin, wie man diese Funktion aufruft. Eine Funktion muss man aufrufen, und wenn’s geht mit Parametern.
Beispiel: logging(„Rolladen“,„Das ist ein Logbucheintrag“);
Anschließend solltest Du im Verzeichnis c:\ip-symcon\logs eine Datei „Rolladen“ finden, die o.a. Eintrag enthält. Weitere Einträge werden angehängt. Timestamp wird automatisch gesetzt.
ich kann leider nicht folgen. Laut der Dokumentation ist
$_IPS[‚VALUE‘]
doch ein zulässiger Wert für
$_IPS[‚SENDER‘]
Ich habe leider bis heute nur genommen was ich gefunden habe und das dann endsprechend angepasst.
Das heute sind meine ersten versuche meine Ideen selbst umzusetzen. Natürlich mit Hilfe des Forums
Wie sollte den der Code aussehen damit es richtig ist? Bin ja lernfähig
Das Script funktioniert jedenfalls so wie es soll. Ich bekomme eine Email mit endsprechendem Namen und ob das Schloss nun auf oder zugeschlossen wurde.