Raspberrypi.solar: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Root (Diskussion | Beiträge) (→fft) |
Root (Diskussion | Beiträge) |
||
Zeile 118: | Zeile 118: | ||
arecord -f dat -r 48 -D plughw:1,0 -c 1 -d 120 test-3.csv | arecord -f dat -r 48 -D plughw:1,0 -c 1 -d 120 test-3.csv | ||
=== | === als cron-Job === | ||
--use-strftime drehzahl-%Y%m%d-% | # sound-Aufnahme | ||
*/7 * * * * root arecord --use-strftime -f dat -r 48 -D plughw:1,0 -c 1 -d 120 /srv/smb/temp/drehzahl-\%Y\%m\%d-\%H\%M00-1.wav | |||
=== fft === | === fft === |
Version vom 31. März 2017, 09:08 Uhr
Vorlauf/Rücklauf Grafik
rsync -av orgamon-2.dyndns.org::srv/*.txt /root/temp
program t;
{$mode objfpc}
uses
Classes, Sysutils;
const
cTemp_IllegalValue = -1000;
cSensorRoot = '/sys/bus/w1/devices/';
cSensorVal = '/w1_slave';
cSensorCPU = '/sys/class/thermal/thermal_zone0/temp';
cValue_Granularity = 5000;
cValue_MessureTime = 750;
cFormat_Revision = 1; //
function rTemp(SensorID: string) : extended;
var
sl : TStringList;
k : Integer;
value: string;
d: extended;
begin
result := cTemp_IllegalValue;
sl := TStringList.create;
sl.loadFromFile(cSensorRoot+SensorID+cSensorVal);
repeat
if (sl.Count<>2) then
break;
if (pos('YES',sl[0])<28) then
break;
k := pos('t=',sl[1]);
if (k<>28) then
break;
value := copy(sl[1],30,MaxInt);
// writeln ('[',value,']');
d := StrToFloat(value);
result := Round(d / 100.0) / 10.0;
until true;
sl.free;
end;
var
temp_TimeStamp : TDateTime;
temp_Vorlauf,
temp_Ruecklauf : extended;
temp_Diff : extended;
LogFile : TextFile;
begin
while true do
begin
// ATOMIC BEGIN
temp_Vorlauf := rTemp('28-000005602b9d');
temp_Ruecklauf := rTemp('28-000005603987');
temp_TimeStamp := now;
// ATOMIC END
// Plausibilisierung
repeat
if (temp_Vorlauf=cTemp_IllegalValue) then
break;
if (temp_Ruecklauf=cTemp_IllegalValue) then
break;
// Berechnungen
temp_Diff := temp_Ruecklauf - temp_Vorlauf;
// Ausgabe
AssignFile(LogFile,'/srv/smb/temp/temperatur-' + FormatDateTime('YYYYMMDD',temp_TimeStamp) + '.log.txt');
{$i-}
append(LogFile);
{$i+}
if (IOresult<>0) then
begin
rewrite(LogFile);
writeln(LogFile,'FORMAT;MOMENT;VORLAUF;RUECKLAUF;DIFFERENZ');
end;
writeln(LogFile,
{} cFormat_Revision,';',
{} FormatDateTime('YYYYMMDD hh:mm:ss', temp_TimeStamp),';',
{} temp_Vorlauf:0:1,';',
{} temp_Ruecklauf:0:1,';',
{} temp_Diff:0:1 );
CloseFile(LogFile);
until true;
sleep(cValue_Granularity - 2 * cValue_MessureTime);
end;
end.
Vorlauf/Rücklauf messung
Drehzahl der Pumpe
arecord -f dat -r 48 -D plughw:1,0 -c 1 -d 120 test-3.csv
als cron-Job
# sound-Aufnahme */7 * * * * root arecord --use-strftime -f dat -r 48 -D plughw:1,0 -c 1 -d 120 /srv/smb/temp/drehzahl-\%Y\%m\%d-\%H\%M00-1.wav
fft
https://academo.org/demos/spectrum-analyzer/ http://www.qsl.net/dl4yhf/spectra1.html
File -> Audio File & Stream Analysis -> Analyse and Play File (With dsp)
Counter
gpio readall
- Einen Counter auf einen GPIO Pin setzen (mit wiringpi) und den Wert jede Sekunde in memchached schreiben
- Andere Module können dann des "Herz" Wert aus dem memchached lesen
LiveGraph
http://stackoverflow.com/questions/17354163/dynamically-update-values-of-a-chartjs-chart