ich habe den Eltako Windsensor an einem DS2423 Counter. Der Windsensor hat ein Reedkontakt und gibt 2 Impulse pro Umdrehung. Der DS2423 wird jede Sekunde von IPS ausgelesen und die Daten werden aufgezeichnet.
Hat jemand eine Idee, wie ich die Daten automatisch aus dem Archiv löschen kann oder vielleicht einen ganz anderen Ansatz für mich, um weniger Ressourcen und Daten-Müll zu erzeugen.
ich weiss ja nicht was du unter Müll verstehst…
Mein rudimentäres Auslesen eines Somfy Windsensors mit dem Eservice DS2423… läuft seit Jahren zuverlässig:
Einige Sets könnte man weglassen… die Debugs raus…
Wenn man einen 1Wire s0 Zähler für Wind hat, und man damit Jalousien schützen will, muss man auch daran denken, dass der Zähler -während eines Neustarts von IPS- weiterläuft.
D.h. wenn man IPS öfter durchstartet, sollte man sich eine Hilfsvariable setzen, die das Windwächterskript z.b. die ersten 5 Minuten nach Neustart nicht ausführt… Nur so als Tipp.
Das hatte ich zu Windows Zeiten nötig, aufgrund der vielen Windows Neustarts (Windows Updates / Virenscanner Updates…)… Da bin ich inzwischen für den Rasperry PI dankbar, der evtl. einmal im Jahr nach nem Upgrade durchgestartet wird
Vielen Dank erstmal !
Leider ist für mich nicht der vollständige Pfad von den Ereignissen nicht sichtbar, welche Variablen er ändert.
Sind das 2 gleiche Skripte Wind umrechner und Abfrage Skript?
Das Umrechnungsskript ist eigentlich nicht notwendig. Der 1 Wire Sensor liefert Meter pro Sekunde.
Die km/h Umrechnungen habe ich nur fürs Webfront gemacht, damit man sieht, dass es 60km/h hat und deshalb die Jalousien hochfahren
Hier das Umrechnungsskript. Mehrere km/h Werte sind nur der Optik geschuldet.
<?
$basiswert = GetValueInteger(57196 /*[Haus\Wind\Werte\1-wire DS2423 Windzaehler\Zähler Wind \Wind m/s]*/);
$umrechnung = $basiswert * 3.6;
$runden_umrechnung=round ($umrechnung, 1);
SetValueInteger(53938 /*[Haus\Wind\Werte\1-wire DS2423 Windzaehler\Zähler Wind \Wind in km/h]*/,$runden_umrechnung);
SetValueInteger(30684 /*[Haus\Wind\Werte\1-wire DS2423 Windzaehler\Zähler Wind \Wind in km/h für Webfront]*/,$runden_umrechnung);
?>
Und hier das Emailskript damit ich ne Nachricht bekomme:
Mit Skripttimer damit man nur alle 2 Std. ne Nachricht bekommt…
Gerade wenn es stürmt, wird man sonst mit Emails zugeschüttet…
<?
$altkueche = GetValueInteger(21986 /*[Haus\EG\Details\1.Küche Raffstore\100% oben - 0 % unten]*/);
$altessen = GetValueInteger(51374 /*[Haus\EG\Details\2.Essen Raffstore (Türe)\100% oben - 0% unten]*/);
$altwohnen = GetValueInteger(44727 /*[Haus\EG\Details\3.Wohnen Raffstore\100% oben - 0% unten]*/);
$wind_ms = GetValueInteger(57196 /*[Haus\Wind\Werte\1-wire DS2423 Windzaehler\Zähler Wind \Wind m/s]*/);
$wind_kmh = GetValueString(52346 /*[Haus\Wind\Werte\1-wire DS2423 Windzaehler\Zähler Wind \Wind km/h]*/);
$uhrzeit = date("H:i.s");
$mailgesendet = GetValueBoolean(40027 /*[Haus\Wind\Werte\1-wire DS2423 Windzaehler\Zähler Wind \Mail gesendet]*/);
if ($mailgesendet == false and ($wind_ms >= 13)) {
// Falls Email noch nicht gesendet + Wind über 14m/s erreicht hat
// Danach wird ein Timer gesetzt der nach 2 Std. "Mail gesendet" wieder auf FALSE setzt
IPS_SetScriptTimer($IPS_SELF, 120 * 60); // 120 x 60 Sekunden = 120 Minuten
ZW_SwitchMode(10762 /*[Haus\Licht\Aussenlampe\Schalter Aussenlampe]*/, true);
SetValueBoolean(40027 /*[Haus\Wind\Werte\1-wire DS2423 Windzaehler\Zähler Wind \Mail gesendet]*/, TRUE);
$mailcontent = "Der Wind hat um $uhrzeit die Windstaerke $wind_ms m/s bzw. $wind_kmh km/h erreicht.
Die Jalousien stehen derzeit auf
Kueche: $altkueche, Essen: $altessen, Wohnen: $altwohnen
(0 = zu/unten)
(100 = oben)";
SMTP_SendMail(26464 /*[sonstiges\Ueberwachung_Email\E-Mail senden (SMTP)]*/, "Skript 1 - Wind ueberschreitet Grenzwert", "$mailcontent");
}
if ($IPS_SENDER == "TimerEvent") {
IPS_SetScriptTimer($IPS_SELF, 0);
SetValueBoolean(40027 /*[Haus\Wind\Werte\1-wire DS2423 Windzaehler\Zähler Wind \Mail gesendet]*/, FALSE);
}
?>