[vz-users] DHT22 Bash Script optimieren

Andreas Götz cpuidle at gmail.com
Fri Aug 14 12:30:28 CEST 2015


Evtl brauchst Du zwei Umbrüche damit einer raus kommt?

Viele Grüße,
Andreas

> Am 14.08.2015 um 10:55 schrieb Christian Meckler <christian at meckler.org>:
> 
> Hallo zusammen,
> 
> also das Script wird nur 1 Mal pro Stunde ausgeführt, zum Test hatte ich es alle 5 Minuten ausgeführt.
> Dabei gab es tatsächlich Probleme das das alte Script noch nicht fertig war und das nächste schon anfing.
> Werde irgendwann bei Gelegenheit mal das Oszi anschließen um mal zu zuschauen was aufm Bus los ist.
> vermutlich falscher PullUp widerstand oder schlechte Lötstellen...
> 
> auf jedenfall bin ich bisher zufrieden. 
> Mit der Validierung gibt es keine utopische 1000°C mehr in der DB.
> hab direkt einen Thread im WIKI erstellt: 
> 
> http://wiki.volkszaehler.org/dht22
> 
> Ich hab leider einen BUG dabei, keine Zeilenumbrüche.
> Kann das mal jemand fixen?
> mir wäre wichtig das das für die Nachwelt dokumentiert wird.
> 
> Gruß
> Chris
> und Danke an alle für die Unterstützung.
> 
> 
>> Am 13.08.2015 um 14:33 schrieb Viper:
>> Das Fehlen und die falschen Werte können auch in der relativ schnellen Wiederabfrage liegen. 
>> Der DHT22 braucht eine gewisse Zeit damit er wieder abgefragt werden kann. Und da weder Temperatur noch Luftfeuchtigkeit sich schnell ändern solltest du mal versuchen nur jede Minute oder noch Länger einen Wert abzufragen. 
>> 
>> Gruß Andre 
>> 
>> Am 13. August 2015 12:44:13 MESZ, schrieb Christian Schnellrieder <schnellrieder.cs at gmail.com>:
>>> 
>>> Danke Nils.
>>> 
>>> Das Puzzle wird nun immer klarer.
>>> 
>>>> Gibt es in Bash die Möglichkeit den Wert zu Validieren?
>>>> Also Luftfeuchte mus zwischen 1 und 100 liege und Temperatur zwischen -20 und 50.
>>> 
>>> 
>>> Ja einfach durch if abfragen.
>>> Dazu muss man sagen. Bash kann nicht direkt mit Komma umgehen. Also würde ich es einfach rauslöschen bei der Validierung. Aus 58.00 wird dann 5800 etc.
>>> 
>>> 
>>> if [ "$(echo $Hum| sed 's/\.//g')" -gt "0" ] && [ "$(echo $Hum | sed 's/\.//g')" -lt "10000" ];then
>>> wget  -O /dev/null "http://<url>middleware.php/data/<id>.json?operation=add&value=$Hum"
>>> fi
>>> 
>>> 
>>> if [ "$(echo $Temp | sed 's/\.//g')" -gt "-2000" ] && [ "$(echo $Temp | sed 's/\.//g')" -lt "5000" ];then
>>> wget  -O /dev/null "http://<url>/middleware.php/data/<id>.json?operation=add&value=$Temp"
>>> fi
>>> 
>>> 
>>> Grüße
>>>  
>>> 
>>>> Am 13. August 2015 um 12:15 schrieb Nils op den Winkel <nils at kusemuckl.de>:
>>>> Hallo Christian!
>>>> 
>>>> Ich bin weder der bash- noch der c- guru. Aber Deiner logdatei entnehme ich, dass du loldht alle 5 Sekunden aufrufst. wenn loldht aber länger als 5 Sekunden braucht, um einen Wert zu bekommen (es wird ja jede sekunde versucht), bricht der zweite Aufruf ab.Ich denke, deine Fehlenden Werte kommen, wenn loldht eigentlich "Lock file is in use, exiting..." ausgibt (dann liefert dein grep natürlich nix)
>>>> Die falschen Werte erklärt das aber nicht.
>>>> 
>>>> Du kannst ja dein Skript mal umbauen indem du 
>>>> a) prüfst, ob loldht noch läuft, bevor du es ein zweites mal aufrufst
>>>> b) den Rückgabewert von loldht prüfst (nur bei 0 hat er ein Ergebnis geliefert)
>>>> c) im Fehlerfall die komplette Ausgabe (oder zumindest die letzte Zeile oder so) in die Logdatei schreibst.
>>>> 
>>>> Viel Erfolg
>>>> Nils
>> 
>> -- 
>> Diese Nachricht wurde von meinem Android-Mobiltelefon mit K-9 Mail gesendet.
> 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://demo.volkszaehler.org/pipermail/volkszaehler-users/attachments/20150814/94026246/attachment.html>


More information about the volkszaehler-users mailing list