mutzi
4. November 2010 um 22:02
21
Hallo an alle,
hab wahrscheinlich gerade eine ziemlich dumme Anfängerfrage duckundweg
Aber sind grad meine ersten Schritte mit IP-Symcon
Hab alles so gemacht wie von wgreipl beschrieben das Skript liefert mir auch Events aber ich seh keine Änderungen im WebFront nach aktualisierung oder neustart.
Hallo Mutzi,
wo steht denn die Variable „Fenstergriffe“ in der Struktur (unter IP-Symcon bzw. im Hauptverzeichnis) ? Ist sie vielleicht versteckt?
Gruß
Bruno
RWN
24. November 2010 um 12:37
23
wer sehen will wann das Fenster, die Tür zuletzt geöffnet, geschlossen oder gekippt wurde, hab ich das Datum und die Zeit noch mit eingebaut.
<?
$bordercolor = "#505050"; // Rahmenfarbe anpassen
$str = "<table width='100%' cellspacing='0'>";
//$str .= "<tr><td width='100px'><b>  Raum</b></td><td width='380px' align='left'><b>Objekt</b></td><td align='center' width='90px'><b>Status</b></td></tr>";
foreach(IPS_GetInstanceListByModuleID("{EE4A81C6-5C90-4DB7-AD2F-F6BBD521412E}") as $id)
{
if(IPS_StatusVariableExists($id, "STATE"))
{
$var = IPS_GetStatusVariable($id, "STATE");
// Integer Variable
if($var['VariableType'] == 1)
{
if(@IPS_GetEventIDByName("Event".$var['VariableID'], $IPS_SELF) === false)
{
$ereignis = IPS_CreateEvent(0);
IPS_SetEventTrigger($ereignis, 1, $var['VariableID']);
IPS_SetParent($ereignis, $IPS_SELF);
IPS_SetName($ereignis, "Event".$var['VariableID']);
IPS_SetEventActive($ereignis, true);
}
switch(GetValue($var['VariableID']))
{
case 0:
$changedID = IPS_GetVariable($var['VariableID']);
$time = "<td style='border:1px solid $bordercolor;' align='center' bgcolor='#27292B'>".date('d.m.y H:i:s', ($changedID['VariableChanged']))."</td>";
$value = "<td style='border:1px solid $bordercolor;' width='16%' align='center' bgcolor=#004000>geschlossen</td>";
break;
case 1:
$changedID = IPS_GetVariable($var['VariableID']);
$time = "<td style='border:1px solid $bordercolor;' align='center' bgcolor='#27292B'>".date('d.m.y H:i:s', ($changedID['VariableChanged']))."</td>";
$value = "<td style='border:1px solid $bordercolor;' width='16%' align='center' bgcolor='#C08800'>gekippt</td>";
break;
case 2:
$changedID = IPS_GetVariable($var['VariableID']);
$time = "<td style='border:1px solid $bordercolor;' align='center' bgcolor='#27292B'>".date('d.m.y H:i:s', ($changedID['VariableChanged']))."</td>";
$value = "<td style='border:1px solid $bordercolor;' width='16%' align='center' bgcolor=#800000>geöffnet</td>";
break;
}
$name = IPS_GetObject($var['VariableID']);
$str .= "<tr height='38px'><td style='border:1px solid $bordercolor;' bgcolor=#27292B width='71%'> ".IPS_GetName(IPS_GetParent($name['ParentID']))." ".IPS_GetName($name['ParentID'])."</td>".$time.$value."</tr>";
}
}
}
$str .= "</table>";
SetValue(29445 /*[Homematic\Sensoren\Content]*/, $str);
?>
DANKE ANKE !! ähhhhhhhh Rainer…
Immer wieder super Deine Codestrecken hier zu entdecken und umgehend zum Einsatz zu bringen…
Gruss & happy coding
B71
kronos
24. November 2010 um 13:23
25
Danke Rainer. Läuft perfekt.
Hast Du auch noch die Module-ID für die TFKs in Petto? Dann könnte man die auch noch mit in die Statusanzeige rein nehmen.
Grüsse.
RWN
24. November 2010 um 13:25
26
TFKs
FS20? oder verstehe ich was falsch.
oder meinst das hier. Dann musst einfach erweitern.
Hallo zusammen, aktuell muss ich, aufgrund meiner limitierten PHP Möglichkeiten, immer einzeln mit der entsprechenden ID und getvalue in den Skripten die Stati von z.B. meinen Fenster-Drehgriffen abfragen, um z.B. Alarmmeldungen zu generieren. Gibt...
kronos
24. November 2010 um 13:41
27
Sorry - die Macht der Gewohnheit. Ich meine den HM-Sec-SC.
RWN
24. November 2010 um 13:44
28
Sieh meine Link oben drüber. Du musst nur die Boolabfrage mit einbauen. Die ModulInstanz ist das selbe.
Hallo rainer,
kannst Du Dir die führenden Sonderzeichen auf dem Bild erklären ?
Habe das Script ganz normal rüberkopiert…eigentlich ja ein No-Brainer…aber die Anzeige ist „drollig“.
Gruss
Bernd
@Kronos
Du musst nur den Variablentyp von 1 auf 0 ändern dann werden alle Boolean Variablen vom Typ STATE angezeigt.
Ich habe ein zusätzliches separates Script hierfür angelegt mit einer separierten Variablen.
Gruss
B71
RWN
24. November 2010 um 20:23
31
Hallo Bernd,
dein Browser mag wohl   nicht. Tausch es aus.
$str .= "<tr height='38px'><td style='border:1px solid $bordercolor;' bgcolor=#27292B width='71%'>".IPS_GetName(IPS_GetParent($name['ParentID']))." ".IPS_GetName($name['ParentID'])."</td>".$time.$value."</tr>";
Hmmm…ist Firefox 3.6.12…
Edit: Nach der Änderung läuft es.
Danke
bernd
RWN
24. November 2010 um 20:34
33
Hmm, Seltsam. Bei mir läuft 4.07b. Sollte eigentlich keinen Unterschied machen.
kronos
24. November 2010 um 20:47
34
Den Effekt hatte ich auch - allerdings nur mir 3.6.12 getestet. Ich habe die Steuerzeichen einfach rausgeworfen - seit dem zeigt er es korrekt an. Wollte der Sache auf den Grund gehen wenn er die TFKs (Sorry Rainer) korrekt erfasst.
@Bernardo71
Den Variablentyp wo ändern?
$var = IPS_GetStatusVariable($id, "STATE");
// Integer Variable
if($var['VariableType'] == 0)
im oberen Bereich des Scriptes anstelle von „1“
B71
Nachteil: Aktoren und Rauchmelder kommen dann auch „hoch“. Hier habe ich den Status auch noch auf Aktiv/Auf und Inaktiv/Zu geändert damit die 2 Stati vernünfig angezeigt werden.
RWN
24. November 2010 um 20:49
36
@ Kronos, das andere habe ich im andern Thread angepasst, sollte also funktionieren.
kronos
24. November 2010 um 20:51
37
Da hatte ich das Problem, dass er mir auch andere Aktoren mit Boolean-Statusvariablen angezeigt hat. Z.b. Zwischenstecker, 1-fach Unterputzaktoren usw. Sogar die Keymatic. Deswegen hatte ich ja Rainer heute nachmittag genervt.
@Rainer .
Das hatte ich noch nicht gesehen. Danke für den Hinweis.
Sieht dann final so für Türen aus:
<?
$bordercolor = "#505050"; // Rahmenfarbe anpassen
$str = "<table width='100%' cellspacing='0'>";
//$str .= "<tr><td width='100px'><b>  Raum</b></td><td width='380px' align='left'><b>Objekt</b></td><td align='center' width='90px'><b>Status</b></td></tr>";
foreach(IPS_GetInstanceListByModuleID("{EE4A81C6-5C90-4DB7-AD2F-F6BBD521412E}") as $id)
{
if(IPS_StatusVariableExists($id, "STATE"))
{
$var = IPS_GetStatusVariable($id, "STATE");
// Integer Variable
if($var['VariableType'] == 0)
{
if(@IPS_GetEventIDByName("Event".$var['VariableID'], $IPS_SELF) === false)
{
$ereignis = IPS_CreateEvent(0);
IPS_SetEventTrigger($ereignis, 1, $var['VariableID']);
IPS_SetParent($ereignis, $IPS_SELF);
IPS_SetName($ereignis, "Event".$var['VariableID']);
IPS_SetEventActive($ereignis, true);
}
switch(GetValue($var['VariableID']))
{
case 0:
$changedID = IPS_GetVariable($var['VariableID']);
$time = "<td style='border:1px solid $bordercolor;' align='center' bgcolor='#27292B'>".date('d.m.y H:i:s', ($changedID['VariableChanged']))."</td>";
$value = "<td style='border:1px solid $bordercolor;' width='16%' align='center' bgcolor=#004000>geschlossen</td>";
break;
case 1:
$changedID = IPS_GetVariable($var['VariableID']);
$time = "<td style='border:1px solid $bordercolor;' align='center' bgcolor='#27292B'>".date('d.m.y H:i:s', ($changedID['VariableChanged']))."</td>";
$value = "<td style='border:1px solid $bordercolor;' width='16%' align='center' bgcolor='#C08800'>geöffnet</td>";
break;
}
$name = IPS_GetObject($var['VariableID']);
$str .= "<tr height='38px'><td style='border:1px solid $bordercolor;' bgcolor=#27292B width='71%'>".IPS_GetName(IPS_GetParent($name['ParentID']))." ".IPS_GetName($name['ParentID'])."</td>".$time.$value."</tr>";
}
}
}
$str .= "</table>";
SetValue(46305 /*[Fenster\Türkontakte]*/ , $str);
?>
Solltest Du Aktoren und Rauchmelder haben musst Du die Case 0 und Case 1 Stati noch Deinen Wünschen entsprechend anpassen.
Gruss
B71
guten abend…
zum   - Problem
sollte das geschützte Leerzeichen nicht so aussehen ? also mit ; am ende.