sewo
8. Februar 2018 um 10:07
1
Hallo Leute,
bin im Moment auf der Arbeit an einem Projekt dran „Serverraum Überwachung mit IPS Deluxe Edition :D“
Habe mehrere Bool Variable die ich überwache und in eine Integer Variable schreibe.
Quasi Anzahl Fehler.
Ich möchte jetzt aber auch die Fehlermeldungen in eine String Variable schreiben.
Alle anstehenden Meldungen auf einmal mit Zeitstempel :o
Wenn keine Meldungen anstehen, soll zb. „Keine Fehler“ stehen.
Irgendwie stehe ich auf dem Schlauch zwecks Realisierung.
Ich könnte rein mit „IF / ELSE“ arbeiten, es sind aber einige Variablen. Gibt es eventuell eine einfachere Lösung?
Gruß
bumaas
8. Februar 2018 um 10:56
2
Du könntest dir z.B. ein Array definieren mit allen Idents der zu überwachenden Variablen. Dieses Array gehst du dann in einer foreach Schleife durch…
Acer90
8. Februar 2018 um 10:59
3
Du kannst auch eine HTMLBox benutzen mit deinen Jetzt vorhanden Skript eine Tabelle erstellen in HTML Format.
sewo
8. Februar 2018 um 11:31
4
Kannst du mir ein Beispiel geben? Habe bis jetzt noch nie mit Schleifen gearbeitet.
Acer90
Du kannst auch eine HTMLBox benutzen mit deinen Jetzt vorhanden Skript eine Tabelle erstellen in HTML Format.
Wie meist du das?
Gruß
bumaas
8. Februar 2018 um 11:56
5
Nur so dahin getippt:
$Fehlervariablen = [12345, 11111, 22222]; //alle ObjektIds deiner zu überwachenden Boolean Variablen
$Fehlertext = '';
foreach ($Fehlervariablen as $Fehler) {
if (GetValueBoolean($Fehler)) {
$Fehlertext = $Fehlertext . 'Fehler bei ' . $Fehler . PHP_EOL;
}
}
sewo
8. Februar 2018 um 15:09
6
Hi bumaas,
danke für den Beispiel. Bin auf jeden fall weitergekommen
Eine Frage habe ich aber :o
Ich habe dein Beispiel für mein vorhaben angepasst
<?
//Test Script
$Fehlervariablen[29415] = "Klimagerät 1";
$Fehlervariablen[25900] = "Klimagerät 2";
$Fehlervariablen[34739] = "USV 1";
$Fehlertext = 'Achtung! ';
foreach ($Fehlervariablen as $Fehler => $Beschreibung) {
if (GetValueBoolean($Fehler)) {
echo $Fehlertext . 'Störung ' . $Beschreibung . PHP_EOL;
}
}
?>
Wie mache ich das mir dem Zeitstempel?
Das ist in meinem Fall die Zeit wo die Variable den Zustand ändert.
Gruß
Acer90
8. Februar 2018 um 15:16
7
Schau dir das mal an:
PHP 5 Multidimensional Arrays
Bsp.
$Fehlervariablen = Array();
$Fehlervariablen[29415]["Name"] = "Klimagerät 1";
$Fehlervariablen[29415]["Zeit"] = "08.02.2018 - 12:35";
$Fehlervariablen[29415]["Beschreibung"] = "Oh Gott es brennt :-D";
foreach ($Fehlervariablen as $Key => $Value) {
if (GetValueBoolean($Key)) {
echo $Fehlertext . 'Störung am '.$Value["Zeit"].' => ' . $Value["Beschreibung"] . PHP_EOL;
}
}
Jetzt noch eine schöne HTML Tabelle erstellen und fertig ist es.
HTML Tables
Swen
P.s. Möchtest du das Array Zwischenspeichern nutze am besten json_encode und json_decode
PHP: json_encode - Manual
PHP: json_decode - Manual
sewo
8. Februar 2018 um 15:31
8
Hi,
Danke für’s Beispiel.
Ich möchte aber die Zeit von der Variable haben.
IPS_GetVariable(29415)["VariableUpdated"];
Wie Integriere ich das
Gruß
sewo
8. Februar 2018 um 15:47
9
irgendwie stelle ich mich blöd an
ich bekomme mit „echo“ alle Meldungen Angezeigt.
Sobald ich anstatt „echo“ SetValue mache (also alles in eine String Variable schreiben), Bekomme ich nur eine Meldung rein.
Und alles in eine schöne Tabelle Packen in Kombination mit „foreach & Array“ :eek: Kein Plan.
Gruß
Attain
8. Februar 2018 um 16:47
10
Weil Du jedesmal die Variable neu beschreibst? Und nicht anhängst?
Mal ein kleines Beispiel als Anregung:
$Fehlervariablen[12345] = "Klimagerät 1";
$Fehlervariablen[23456] = "Klimagerät 2";
$Fehlervariablen[34567] = "USV 1";
$HTML ='<body><style type="text/css">table.liste { width: 100%; border-collapse: true;} table.liste td { border: 1px solid #444455; } table.liste th { border: 1px solid #444455; }</style>';
$HTML.='<table frame="box" class="liste">';
$HTML.='<tr>';
$HTML.='<th>Fehler</th>';
$HTML.='<th>Variable</th>';
$HTML.='<th>Datum / Zeit</th>';
$HTML.='<th>Text</th>';
$HTML.='</tr>';
foreach ($Fehlervariablen as $Fehler => $Beschreibung) {
if (GetValueBoolean($Fehler)) {
echo $Fehlertext . 'Störung ' . $Beschreibung . PHP_EOL;
$HTML.= '<tr align="center"><td>' . 'Fehler irgendwas'. '</td>';
$HTML.= '<td>' . 'ID ' . $Fehler . '</td>';
$HTML.= '<td>' . date('d M Y H:i',IPS_GetVariable($Fehler)["VariableUpdated"]) . '</td>';
$HTML.='<td>' . $Beschreibung . '</td></tr>';
}
}
$HTML.= $HTML . "</table></body>";
SetValue(10065 /*[Tabelle]*/, $HTML);
sewo
8. Februar 2018 um 19:11
11
Hi Attain,
Vielen Dank für dein Script.
Ist genau das was ich wollte
Jetzt weis ich für die Zukunft zwecks HTML in eine String Variable
Gruß & Danke
sewo
9. Februar 2018 um 12:40
12
Hallo,
ich habe noch eine Frage wo ich nicht weiterkomme.
Ich habe jetzt eine Tolle Fehler Auflistung als Tabelle in einer String Variable.
Jetzt möchte ich auch die Liste per Mail versenden.
Mir ist bewusst wenn ich die Variableninhalt verschicke, bekomme ich auch nur den Inhalt (Code).
Gibt es eine andere Möglichkeit?
Gruß
paresy
19. Februar 2018 um 11:39
13
Wir verschicken leider die Mails nur als Text. Du müsstest z.B. die Mails per PHPMailer/CURL versenden, dann wäre auch ein Versand mit HTML möglich, was du vermutlich möchtest?
paresy
Acer90
19. Februar 2018 um 15:29
14