JL3
Aktives Mitglied
- Mitglied seit
- 4 Dez 2010
- Beiträge
- 1,995
- Punkte für Reaktionen
- 8
- Punkte
- 38
Ich bastle gerade an sogenannten Bedingungsschaltern, die auch mit der aktuellen Version funktionieren.
Diese bewirken z. B.: Erreicht ein Gerät oder Sensor einen gewissen Zustand, so schaltet sich dieser Schalter automatisch auf an, verliert er diesen Zustand, geht er wieser auf aus.
Beispiel: Außentemperatur größer oder kleiner 30°C. Der Pi spricht dann zu mir...
psgbsTemp30.php
Das unter $befehl stehende Kommando kann beliebig sein.
(Nach der Installation von espeak habe ich mir einen Befehl "sage" gebastelt.)
Es wird durch das Script oben nur jeweils gesprochen, wenn das Ereignis eintritt.
Diese bewirken z. B.: Erreicht ein Gerät oder Sensor einen gewissen Zustand, so schaltet sich dieser Schalter automatisch auf an, verliert er diesen Zustand, geht er wieser auf aus.
Beispiel: Außentemperatur größer oder kleiner 30°C. Der Pi spricht dann zu mir...
psgbsTemp30.php
PHP:
<?php
/*
+---------------------------------------------------------------------+
| |
| SensorAndSwitch PSG-Script |
| =============================================================== |
| Schalter (psg) |
| |
| (C)2014/15 BlueDragon !
| |
+---------------------------------------------------------------------+
*/
include __DIR__."/../include/psg.php";
$ver="V#V 4.00#";
$Pfad=".";
$Statusdatei=$Pfad."/".pathinfo($_SERVER['PHP_SELF'],PATHINFO_FILENAME).".status";
$name="Wetter";
$gerarray=getGerInfo($name);
$temp=$gerarray["Temp"];
$xtemp=str_replace(".",",",str_replace("-","minus ",$temp));
$info ="";
$Status="S##E##";
if (!file_exists($Statusdatei)) {
$fp=fopen($Statusdatei,"w");
$Status="S#0#";
fputs($fp,$Status);
fclose($fp);
}
$fp=fopen($Statusdatei,"r");
$xml=fgets($fp);
fclose($fp);
if (strpos($xml,"1")) {
$Status="S#1#";
}
if (strpos($xml,"0")) {
$Status="S#0#";
}
if ($_GET["schalter"]=="1" or ($Status=="S#0#" and $temp>=30)) {
$fp=fopen($Statusdatei,"w");
$Status="S#1#";
fputs($fp,$Status);
fclose($fp);
$befehl='sudo sage "Es ist draußen inzwischen heisser als 30 Grad Celsius geworden. Das Thermometer zeigt '.$xtemp.' Grad Celsius an." >/dev/null &';
$url=$helperurlpi4."?befehl=".encodiere($befehl,33455);
$Stspeech=web($url,$post);
}
if ($_GET["schalter"]=="0" or ($Status=="S#1#" and $temp<30)) {
$fp=fopen($Statusdatei,"w");
$Status="S#0#";
fputs($fp,$Status);
fclose($fp);
$befehl='sudo sage "Es ist draußen inzwischen unter 30 Grad Celsius geworden. Das Thermometer zeigt '.$xtemp.' Grad Celsius an." >/dev/null &';
$url=$helperurlpi4."?befehl=".encodiere($befehl,33455);
$Stspeech=web($url,$post);
}
echo $Status.$ver;
exit;
?>
Das unter $befehl stehende Kommando kann beliebig sein.
(Nach der Installation von espeak habe ich mir einen Befehl "sage" gebastelt.)
Es wird durch das Script oben nur jeweils gesprochen, wenn das Ereignis eintritt.
Zuletzt bearbeitet: