[HowTo] Temperatur und Feuchtigkeitssensor DHT11/DHT22 an SaS

Was muss noch gesetzt werden?
SASSYS=/usr/local/bin/sas ?

Bei mir liegt sas in /var/www/sas

und

und pfadzurdatei muss gesetzt werden wie auch ??

- - - Aktualisiert - - -

Ich muss Schluß machen, mir fallen die Augen zu, Senor ist umgebaut, liefert auf der shell auch Werte, muss man noch +4 nehmen dann passt das;
Den Rest evtl. morgen, muss mal schauen wann ich an den Rechner kommen. Bin morgen am anderem Standort, da bereite ich mal den ftp push vor, damit ich Daten hier an den Standort bekomme.


Aber noch mal ganz vielen Dank, das ganze sieht viel besser aus als ein gekaufter Kram, kostet alles in allem 10€ Hardware und den Raspi; Aber das Wichtigste ..... Frau Hase findet es gut .....
 
Obiges gehört zu SAS V6.00 und kann ignoriert werden. Da sind später alle System-Scripte, nicht die PHP-Scripte vom www

pfadzurdatei ist der Pfad zum Shellscript wo du es abgespeichert hast: tempgpio

- - - Aktualisiert - - -

Den Rest bekommst du auch noch gebastelt. ;)
 
muss ich mal schauen, aktuell klemmt es noch


Unbenannt.PNG


ist das denn

$befehl='sudo /var/www/sas/psg/tempgpio 28-041661e0aeff';
oder
$befehl='sudo /var/www/sas/psg/tempgpio.psg 28-041661e0aeff';

??

- - - Aktualisiert - - -

hier gibt es noch ein Problem

root@s4:~# cat /sys/bus/w1/devices/28-041661e0aeff/w1_slave | grep -E -o ".{0,0}t=.{0,5}" | bc
-bash: bc: Kommando nicht gefunden.


sonst kommt da das raus

root@s4:~# cat /sys/bus/w1/devices/28-041661e0aeff/w1_slave | grep -E -o ".{0,0}t=.{0,5}"
t=40812



---
da müssen +4 Grad drauf, dann sind wir schon fast da


edit:
auch okay

root@s4:~# cat /sys/bus/w1/devices/28-041661e0aeff/w1_slave | grep -E -o ".{0,0}t=.{0,5}" | cut -c 3-
40812

- - - Aktualisiert - - -

hingeprutscht ... ;) und heute morgen den Fehler eliminiert.

Unbenannt.PNG

funktioniert jetzt! Vielleicht sollte man doch nicht alles um Mitternacht machen ....

----
Jetzt fehlt nur noch der erste Wert, den ich aus einer Datei lesen will, aber da schaue ich später mal nach.
 

Anhänge

  • Unbenannt.PNG
    Unbenannt.PNG
    100.7 KB · Aufrufe: 6
Zuletzt bearbeitet:
bc muss man mit
sudo apt-get install bc
installieren, falls er fehlt.

bc ist zum Rechnen in Scripten


tempgpio ...
ohne psg

- - - Aktualisiert - - -

psgTempDS18B20_s1.php
Zeile 24
PHP:
            $temp1=$erg/10+4; # + 4°C
 
Zuletzt bearbeitet:
geht auch ohne BC zu rechnen sieht jetzt so aus; Für heute fertig, meine Frau drängelt schon ... (den Rest schaue ich morgen mal, oder heute Nacht)
Unbenannt.PNG
 
Prima. Läuft. :)

- - - Aktualisiert - - -

In der psginfoTempAnz.php ist in der function skala im oberen Bereich noch ein kleiner Fehler. Da ist die if-Abfrage zu korrigieren:
PHP:
function skala($nr,$pos,$tf="tf") {
/*******************************/
    global $fr,$fg,$fb,$t,$p,$h,$w,$info,$int;
    global $sensortemp,$sensorfeucht;

    $btemp=$sensortemp[$nr]+10;
    if ($sensortemp[$nr]=="-,-") {$btemp=0;}
    if ($btemp<0) {$btemp=0;}
    if ($btemp>44) {$btemp=44;}
    $btemp=22-$btemp/2;
    $bfeucht=22-$sensorfeucht[$nr]/100*22;
    if ($tf=="T" or $tf=="Tf") {
        $btemp=$sensortemp[$nr];
        if ($sensortemp[$nr]=="-,-") {$btemp=0;}
        if ($btemp<0) {$btemp=0;}
        if ($btemp>100) {$btemp=100;}
        $btemp=22-$btemp/100*22;
    }
...

- - - Aktualisiert - - -

Noch ein paar Anwendungsgebiete:

weitere Version "Wetterstation"
w4.jpg

"Pi-Überwachung" mit Anzeige von CPU-Temperatur und SD- bzw. USB-HDD/Stick-Speicherplatzbelegung mehrerer Raspberry Pi
tempcpu.jpg
 
Zuletzt bearbeitet:
Bei mir geht jetzt alles; Einzig das ich einen Sensor auf den Weg zum anderen Standort verloren habe, ärgerlich bei 250 km Entfernung. Damit habe ich jetzt keine Temperatur, pushe zur Zeit die Uhrzeit zum Testen.
Ich habe mir ein psg gebaut, lese die Datei und speichere um und zeige es dann an. Meine Frau ist begeistert. Vielen Dank noch mal ...
 
Sehr schön, dass alles jetzt soweit funktioniert. :)
 
Ich brauche noch mal Deine Hilfe;


von dem fremden Standort bekomme ich jetzt die Temperatur Datei auf den sas pi

in der Datei oost_temp_feucht.txt steht das drin:

Code:
Temp=21.2*  Humidity=68.7%

jetzt möchte die in einem psg in temp1 und feucht 1 speichern.

Code:
<?php


    /*
        +---------------------------------------------------------------------+
        |                                                                     |
        |   SensorAndSwitch                                      PSG-Script   |
        |                                                                     |
        +---------------------------------------------------------------------+
    */


    include __DIR__."/../include/psg.php";
    $gerarray=getGerInfo(substr(basename(__FILE__,".php"),3));


    if ($gerarray["Counter"]>=4) {
        $ver="V#V 1.00#";
###########  hier weiß ich nicht wie ich das richtig mach
        $befehl='sudo cat /tmp/oost_temp_feucht.txt';
        $url=$helperurlpi2."?befehl=".encodiere($befehl,33455);
        $erg=web($url,$post);
        if ($erg=="") {
            $echo=$ver."C##";
        }
        else {
            $erg=explode(" ",$erg);
            $temp1=$erg[0];
            $feucht1=$erg[1];   
####### bis hier natürlich meine Unwissenheit
            $echo='';
            $echo.='P#';
            $echo.='<div style="font-size:16px;text-align:right;width:240px;position:absolute;top:-5px;">Temperatur: '.str_replace(".",",",sprintf("%.1f",$temp1)).' °C';
            $echo.='<br />Luftfeuchte: '.str_replace(".",",",sprintf("%.1f",$feucht1)).' %%</div>';
            $echo.='*HTML#';
            $echo.='V#'.$temp1.'*temp1#';
            $echo.='V#'.$feucht1.'*feucht1#';
            $echo.=$ver;
        }
    }
    else {
        $echo=$ver."C##";
    }
    echo $echo;
    exit;
?>


Kannst Du mir noch mal aufs Pferd helfen ;) ???
 
Es gibt zwei Lösungsansätze. Entweder analysiert man den Dateiinhalt im Shellaufruf oder direkt im PsG. Ich bastel nachher was, dass es läuft. ;)
 
ich habe mir letzte Nachte eine Krücke gebaut ... nicht schön, aber geht zumindest wenn beide Temperaturen 2-stellig sind. Ich cutte im shellscript und übertrage 2 Dateien mit den Werten, aber ich befürchte sobald es negative oder einstellige Temperaturen werden geht das in die Hose ...
 
PHP:
<?php


    /*
        +---------------------------------------------------------------------+
        |                                                                     |
        |   SensorAndSwitch                                      PSG-Script   |
        |                                                                     |
        +---------------------------------------------------------------------+
    */


    include __DIR__."/../include/psg.php";
    $gerarray=getGerInfo(substr(basename(__FILE__,".php"),3));


    if ($gerarray["Counter"]>=4) {
        $ver="V#V 1.00#";
        $befehl='sudo cat /tmp/oost_temp_feucht.txt';
        $url=$helperurlpi2."?befehl=".encodiere($befehl,33455);
        $erg=web($url,$post);
        if ($erg=="") {
            $echo=$ver."C##";
        }
        else {
            $erg=preg_replace('/ {2,}/',' ',$erg);
            $erg=explode(" ",$erg);
            $temp1=substr($erg[0],5,-1);
            $feucht1=substr($erg[1],9,-1);
            $echo='';
            $echo.='P#';
            $echo.='<div style="font-size:16px;text-align:right;width:240px;position:absolute;top:-5px;">Temperatur: '.str_replace(".",",",sprintf("%.1f",$temp1)).' °C';
            $echo.='<br />Luftfeuchte: '.str_replace(".",",",sprintf("%.1f",$feucht1)).' %%</div>';
            $echo.='*HTML#';
            $echo.='V#'.$temp1.'*temp1#';
            $echo.='V#'.$feucht1.'*feucht1#';
            $echo.=$ver;
        }
    }
    else {
        $echo=$ver."C##";
    }
    echo $echo;
    exit;
?>

- - - Aktualisiert - - -

So müsste es funktionieren. Zuerst wird der Dateiinhalt in eine Variable gelesen, dann werden überflüssige Leerzeichen entfernt. Danach wird Temp und Feucht getrennt und die Werte extrahiert, egal wie lange die Werte sind. Müsste laufen. ;)
 
geht super, so langsam begreife ich es ...
 
Was ich nicht hinbekomme ist die psginfoTempAnz.php so umzubauen, dass man zwei gleichwertige Temperaturen untereinander bekommt, als den typ "TT".
Ich habe jetzt so viele Sensoren dass ich das Ganze ein wenig straffen muss ... (oder ich kaufe noch mehr und mache eine zweite
psginfoTempAnz.php darunter, dann erschlägt meine Frau mich)
 
Bei mir habe ich inzwischen drei Slots belegt. Nach dem Motto: Eine Seite Sensorwerte für alles. TT bzw. tt, Tt und tT müsste ich basteln. Anhand der Konstellationen kannst du bereits erahnen, dass dies nicht ganz so einfach ist. Mal sehen. ;)
 
darum musste ich ja kapitulieren ...
 
Die drei functions ersetzen:
PHP:
function linie() {
/**************/
    global $fr,$fg,$fb,$t,$p,$h,$w,$info;
    $info.='<div id="tab" style="position:absolute;border:1px;top:'.$t.'px;left:'.$p.'px;background-color:rgb('.$fr.','.$fg.','.$fb.');border-style:solid;border-color:rgb('.$fr.','.$fg.','.$fb.');font-size:8px;width:'.$w.'px;height:'.$h.'px"></div>';
}


function werteblock($nr,$pos,$text="",$icon="home",$tf="tf",$iconf="sd-card") {
/***************************************************************************/
    global $fr,$fg,$fb,$t,$p,$h,$w,$info;
    global $sensortemp,$sensorfeucht;

    $xsensortemp=number_format(sprintf('%.1f',$sensortemp[$nr]),1,",",".");
    $info.='<div style="position:absolute;top:28px;left:'.$pos.'px;text-align:right;width:120px;font-size:15px">'.$text.' <img src="'.picdesign($icon.".png").'" border="0" height="26"></div>';
    if (substr(strtoupper($tf." "),0,1)=="T" and substr(strtoupper($tf." "),1,1)!="T") {
        $info.='<div style="position:absolute;top:56px;left:'.$pos.'px;text-align:right;width:120px;font-size:30px">'.str_replace(".",",",$xsensortemp)."°C".'</div>';
    }
    else {
        $info.='<div style="position:absolute;top:56px;left:'.$pos.'px;text-align:right;width:120px;font-size:27px">'.str_replace(".",",",$xsensortemp)."°C".'</div>';
    }
    if (substr(strtoupper($tf." "),1,1)=="F") {
        $info.='<div style="position:absolute;top:85px;left:'.$pos.'px;text-align:right;width:120px;font-size:25px"><img src="'.picdesign($iconf.".png").'" border="0" height="20"> '.str_replace(".",",",$sensorfeucht[$nr])."%%".'</div>';
    }
    if (substr(strtoupper($tf." "),1,1)=="T") {
        $xsensorfeucht=number_format(sprintf('%.1f',$sensorfeucht[$nr]),1,",",".");
        $info.='<div style="position:absolute;top:82px;left:'.$pos.'px;text-align:right;width:120px;font-size:27px">'.str_replace(".",",",$xsensorfeucht)."°C".'</div>';
    }
    skala($nr,$pos,$tf);
}


function skala($nr,$pos,$tf="tf") {
/*******************************/
    global $fr,$fg,$fb,$t,$p,$h,$w,$info,$int;
    global $sensortemp,$sensorfeucht;

    $btemp=$sensortemp[$nr]+10;
    if ($sensortemp[$nr]=="-,-" or $sensortemp[$nr]=="-") {$btemp=0;}
    if ($btemp<0) {$btemp=0;}
    if ($btemp>44) {$btemp=44;}
    $btemp=22-$btemp/2;
    if (substr(($tf." "),0,1)=="T") {
        $btemp=$sensortemp[$nr];
        if ($sensortemp[$nr]=="-,-" or $sensortemp[$nr]=="-") {$btemp=0;}
        if ($btemp<0) {$btemp=0;}
        if ($btemp>100) {$btemp=100;}
        $btemp=22-$btemp/100*22;
    }
    $bfeucht=$sensorfeucht[$nr]+10;
    if ($sensorfeucht[$nr]=="-,-" or $sensorfeucht[$nr]=="-") {$bfeucht=0;}
    if ($bfeucht<0) {$bfeucht=0;}
    if ($bfeucht>44) {$bfeucht=44;}
    $bfeucht=22-$bfeucht/2;
    if (substr(($tf." "),1,1)=="T" or substr(strtoupper($tf." "),1,1)=="F") {
        $bfeucht=$sensorfeucht[$nr];
        if ($sensorfeucht[$nr]=="-,-" or $sensorfeucht[$nr]=="-") {$bfeucht=0;}
        if ($bfeucht<0) {$bfeucht=0;}
        if ($bfeucht>100) {$bfeucht=100;}
        $bfeucht=22-$bfeucht/100*22;
    }
    $ni=0;
    $li=100+$int;
    $hi=150+$int;
    $fi=200+$int;
    
    # ┌─────────┐
    # │  $temp  │
    # ╘═════════╛
    
    if (substr(strtoupper($tf." "),0,1)=="T") {
        $p=$pos;
        $p+=125;
        $fr=55;$fg=55;$fb=55;
        $t=0;$h=1;$w=15;
        if (substr(strtoupper($tf." "),1,1)=="T") {$w=10;}
        for ($i=0;$i<=22;$i++) {
            $t=$i*5;
            linie();
        }
        for ($i=22;$i>=0;$i--) {
            $fr=$ni;$fg=$li;$fb=$fi;
            if ($i<20) {$fr=$ni;$fg=$hi;$fb=$fi;}
            if ($i<18) {$fr=$ni;$fg=$fi;$fb=$hi;}
            if ($i<14) {$fr=$ni;$fg=$fi;$fb=$ni;}
            if ($i<10) {$fr=$hi;$fg=$fi;$fb=$ni;}
            if ($i<6) {$fr=$fi;$fg=$fi;$fb=$ni;}
            if ($i<4) {$fr=$fi;$fg=$ni;$fb=$ni;}
            if ($i<2) {$fr=$fi;$fg=$ni;$fb=$fi;}
            if ($i>$btemp) {
                $t=$i*5;
                linie();
            }
        }
    }
    
    # ┌───────────┐
    # │  $feucht  │
    # ╘═══════════╛
    
    if (substr(strtoupper($tf." "),1,1)=="F" or substr(strtoupper($tf." "),1,1)=="T") {
        $p=$pos;
        $p+=150;
        $fr=55;$fg=55;$fb=55;
        $t=0;$h=1;$w=5;
        if (substr(strtoupper($tf." "),1,1)=="T") {$w=10;$p-=5;}
        for ($i=0;$i<=22;$i++) {
            $t=$i*5;
            linie();
        }
        if (substr(($tf." "),1,1)=="f") {
            for ($i=22;$i>=0;$i--) {
                $fr=$fi;$fg=$ni;$fb=$ni;
                if ($i<20) {$fr=$fi;$fg=$hi;$fb=$ni;}
                if ($i<18) {$fr=$fi;$fg=$fi;$fb=$ni;}
                if ($i<14) {$fr=$hi;$fg=$fi;$fb=$ni;}
                if ($i<10) {$fr=$ni;$fg=$fi;$fb=$ni;}
                if ($i<6) {$fr=$ni;$fg=$fi;$fb=$hi;}
                if ($i<4) {$fr=$ni;$fg=$hi;$fb=$fi;}
                if ($i<2) {$fr=$ni;$fg=$li;$fb=$fi;}
                if ($i>$bfeucht) {
                    $t=$i*5;
                    linie();
                }
            }
        }
        else {
            for ($i=22;$i>=0;$i--) {
                $fr=$ni;$fg=$li;$fb=$fi;
                if ($i<20) {$fr=$ni;$fg=$hi;$fb=$fi;}
                if ($i<18) {$fr=$ni;$fg=$fi;$fb=$hi;}
                if ($i<14) {$fr=$ni;$fg=$fi;$fb=$ni;}
                if ($i<10) {$fr=$hi;$fg=$fi;$fb=$ni;}
                if ($i<6) {$fr=$fi;$fg=$fi;$fb=$ni;}
                if ($i<4) {$fr=$fi;$fg=$ni;$fb=$ni;}
                if ($i<2) {$fr=$fi;$fg=$ni;$fb=$fi;}
                if ($i>$bfeucht) {
                    $t=$i*5;
                    linie();
                }
            }
        }
    }
}

Die feucht-Variablen behandelt man dann einfach wie Temperatur. ;)

Übergibt man TT oder tt oder Tt oder tT, so wird das korrekt angezeigt. Natürlich funktioniert auch noch Tf und tf.

- - - Aktualisiert - - -

Code nochmals verbessert, dass auch die Farbgebung stimmt.

f - Luftfeuchte
F - andere Prozentzahlen wie etwa HDD-Auslastung o.ä.
 
Zuletzt bearbeitet:
Einmal hast Du Dich vertan; statt "sd-card" muss es "feucht" heißen, dann passt es ; Weltklasse :bier: !!

- - - Aktualisiert - - -

so sieht es jetzt aus ...

Unbenannt.JPG
 
Ja, das kann sein, aber so sieht es schonmal gut aus. :)
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.