Link zur Hauptseite des Forums

LotharGehlhaar - Teichbauforum

DAS informative Forum der Koi-Szene
Link zur Enzyklopaedie
Aktuelle Zeit: Di 20.Mai 2025 19:49

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 225 Beiträge ]  Gehe zu Seite Vorherige  1 ... 8, 9, 10, 11, 12, 13, 14 ... 23  Nächste
Autor Nachricht
BeitragVerfasst: Mi 21.Okt 2015 9:10 
Offline
Anonymer User
Benutzeravatar

Registriert: Do 03.Jan 2013 13:07
Cash on hand:
3.339,23 Taler

Beiträge: 646
Moin Zusammen,
Pfiffikus hat geschrieben:
Pfiffikus,
der vermutet, dass die bash nicht richtig mit diesen Windows-Zeilenumbrüchen umgehen konnte

Daran lag es :). Ich habe es noch einmal korrekt formatieret und siehe da es läuft :)

Leider wird bei mir auch noch kein Pegel protokolliert. :hammer3:
Ich vermute mal das es bei mir auch am Cron aufruf liegt.

Pfiffikus hat geschrieben:

Nun zeichnet er wieder brav die Werte auf.
Die Klasse muss in jedem Falle noch einmal optimiert werden. Insbesondere das Kalibrieren dauert unnötig lange.

Was hast du geändert, damit es wieder läuft. Ich frage wieder aus Interesse. :)

Ich könnte auch mir mal deine PHP Klasse anschauen und ggfs. optimieren, sieht ja C sehr ähnlich. Du musst mir nur sagen, was du wofür verwendest. Also welche Aufrufe bzw. Funktion du aus der Klasse cPegelHCSR04Sensor.php aufrufst ("function Messen(){................}"). :hallo:


Gruß Dennis

_________________
____________________
Viele Grüße
Dennis
____________________


Nach oben
 Profil userposition on geomap  
 
BeitragVerfasst: Mi 21.Okt 2015 23:26 
Offline
Realer User
Realer User
Benutzeravatar

Registriert: Mo 14.Nov 2005 20:39
Cash on hand:
5.741,65 Taler

Beiträge: 14529
Wohnort: 07548 Gera
Hallo Dennis,

schnuffi hat geschrieben:
Leider wird bei mir auch noch kein Pegel protokolliert. :hammer3:
Ich vermute mal das es bei mir auch am Cron aufruf liegt.

gut möglich. Die Protokollierung erfolgt ausschließlich im CRON-Job. Werden keine CRON-Jobs aufgerufen (automatisch oder per Klick), so kann nicht protokolliert werden. Das würde keine Fehlfunktion der Software darstellen, sondern wäre nur eine Auswirkung einer unvollständig durchgeführten Installation.


schnuffi hat geschrieben:
Was hast du geändert, damit es wieder läuft. Ich frage wieder aus Interesse. :)

In dieser Woche habe ich nur ein paar Zeilen rausgeschmissen, die nur Debug-Ausgaben erzeugt hatten und nur testweise rein sollten. Die waren noch drin, weil ich die Arbeit an diesen Echosensoren damals unterbrochen hatte, um mich anderen Teilen der Software zu widmen.

schnuffi hat geschrieben:
Ich könnte auch mir mal deine PHP Klasse anschauen und ggfs. optimieren, sieht ja C sehr ähnlich. Du musst mir nur sagen, was du wofür verwendest. Also welche Aufrufe bzw. Funktion du aus der Klasse cPegelHCSR04Sensor.php aufrufst ("function Messen(){................}"). :hallo:

Da ich im Moment noch Dinge auf einem anderen Server zu Ende bringen muss, Lothars Server ein wenig aufhübschen muss usw, würden wir uns damit nicht ins Gehege kommen, denn ich kann mich derzeit nicht der Raspisoftware widmen. Es würde auch weiter helfen, wenn Du mal drüber schauen würdest.

Von anderen Softwareteilen (Jobs, Grafiken) aufgerufen werden wie bei allen Sensoren:
  • Get() - zur Ermittlung eines kalibrierten Messwertes
  • Kalibriere() - zum Kalibrieren
Diese Funktionen haben noch Optimierungsbedarf.

Nur intern von cPegelHCSR04Sensor verwendet werden:
  • Messen()
  • GetGenau() - (Ob diese Funktion nach Deinen Arbeiten noch gebraucht wird?)
Diese Funktionen können in den Optimierungsprozess eingebunden werden, ohne Auswirkungen auf andere Softwareteile befürchten zu müssen.

Ebenfalls von anderen Softwareteilen aufgerufen werden auch:
  • GetTyp()
  • GetEinheit()
  • GetBeschreibung()
  • SetKalib($iKalib)
  • cPegelHCSR04Sensor()
Allerdings sehe ich hier kaum Potential zur Optimierung.


Pfiffikus,
der Dir bei Bedarf einen Entwicklungszweig für diese Zwecke einrichten würde


Nach oben
 Profil userposition on geomap  
 
BeitragVerfasst: Do 22.Okt 2015 7:46 
Offline
Anonymer User
Benutzeravatar

Registriert: Do 03.Jan 2013 13:07
Cash on hand:
3.339,23 Taler

Beiträge: 646
Hi :hallo:

Pfiffikus hat geschrieben:
Da ich im Moment noch Dinge auf einem anderen Server zu Ende bringen muss, Lothars Server ein wenig aufhübschen muss usw, würden wir uns damit nicht ins Gehege kommen, denn ich kann mich derzeit nicht der Raspisoftware widmen.

Ist ja nicht schlimm. Ich möchte ja nur Unterstützen.

Soll ich folgende Funktion implementieren? Darauf sollte nicht nur Pfiffikus antworten, da ich gerne die Meinung anderer mit berückschtigen würde.
schnuffi hat geschrieben:
Fischkopf hat geschrieben:
Im Normal Betrieb mindestens 100 Messungen.
$Befehl = 'sudo '.$datei.' '.$pins[0].' '.$pins[1].' 10';


Dies würde ich auch verändern. Dort würde ich meiner Meinung nach einmal messen reichen. :) MAn könnte auch zwei mal messen und vergleichen, ob die Werte z.B. max 10% voneinander abweichen. Falls die Abweichung > 10% dann noch einmal messen. Oder so Ähnlich.


Was kann dort noch verbessert werden? Bitte ein Feedback dazu abgeben. Danke :wink:

_________________
____________________
Viele Grüße
Dennis
____________________


Nach oben
 Profil userposition on geomap  
 
BeitragVerfasst: Do 22.Okt 2015 8:23 
Offline
Realer User
Realer User
Benutzeravatar

Registriert: Mo 14.Nov 2005 20:39
Cash on hand:
5.741,65 Taler

Beiträge: 14529
Wohnort: 07548 Gera
Hallo Dennis,

schnuffi hat geschrieben:
schnuffi hat geschrieben:
MAn könnte auch zwei mal messen und vergleichen, ob die Werte z.B. max 10% voneinander abweichen. Falls die Abweichung > 10% dann noch einmal messen. Oder so Ähnlich.


Was kann dort noch verbessert werden? Bitte ein Feedback dazu abgeben. Danke :wink:

erlaubt und erwünscht ist alles, was die Genauigkeit der Messwerte verbessert und die Geschwindigkeit verbessert.
Ob das durch eine Erhöhung der Anzahl der Einzelmessungen im python-Skript, mehrmaligen Aufruf oder durch solche Methoden gelingen wird, das kann ich aus dem Hut jetzt gerade nicht sagen. Probiere es einfach, welche Methode am zielführendsten ist! Verbote gibt es keine.


Pfiffikus,
der das unbeantwortet ließ, weil er nicht weiß, wie zielführend der Vorschlag ist


Nach oben
 Profil userposition on geomap  
 
BeitragVerfasst: Mi 04.Nov 2015 17:54 
Offline
Anonymer User
Benutzeravatar

Registriert: Do 03.Jan 2013 13:07
Cash on hand:
3.339,23 Taler

Beiträge: 646
Hallo Zusammen,

ich habe jetzt mal die "Klasse" zum Aufruf des Ultraschallsensors umgeschrieben.


Pfiffikus hat geschrieben:
Von anderen Softwareteilen (Jobs, Grafiken) aufgerufen werden wie bei allen Sensoren:

Get() - zur Ermittlung eines kalibrierten Messwertes
Kalibriere() - zum Kalibrieren


Diese Funktionen haben noch Optimierungsbedarf.

Diese habe ich jetzt umgeschrieben

Pfiffikus hat geschrieben:
Nur intern von cPegelHCSR04Sensor verwendet werden:

Messen()

Diese habe ich geringfügig angepasst, indem ich einfach einen Parameter für die Widerholungen eingefügt habe
----------------------------------------------------------------------------------------------------------------------------------------
Nach anfänglichen Problemen, wo ich mal wieder Schreibfehler im Programm hatte und so Blind war diese nicht zu sehen :hammer3:

Funktioniert bei mir erst einmal ohne Probleme:
Geändert wurden nur die roten Bereiche
Code:

<?php
/** *************************************************************************
* Copyright (C) 2014 by Pfiffikus *
* pfiffikus@zahlengenie.de *

Klasse zur Ansteuerung eines US-Sensors

***************************************************************************/
include_once ("quellen/sensoren/cSensor.php");

class cPegelHCSR04Sensor extends cSensor {
var $myKalib =0;

/** ********************
*cPegelHCSR04Sensor::Get
Liefert die Entfernung des Sensors zum Wasserstand oder Hindernis in mm
**********************/
function Get() {

$Abweichung = 8; //max Abweichung der Messwerte in +-%
$MeasureMAX = 4; //wie oft soll das Messen wiederholt werden, wenn die Werte zu stark voneinander abweichen
if ($this->myKalib == 0) return '- Nicht kalibriert -'; //Wenn der Sonsor nicht kalibriert wurde, wird eine Fehlermeldung ausgegeben

for ($i=0;$i<$MeasureMAX;$i++) {
//Erstes mal Messen
$FIRST=$this->Messen();
//Zweites mal Messen
$SECOND=$this->Messen();
//Pruefen ob der zweite Wert und der erste Wert max 5 % ($Abweichung) voneinander abweichen
if (($SECOND < ($FIRST+$Abweichung/2)) AND ($SECOND > ($FIRST-$Abweichung/2))) break;
}

if ($SECOND == 0) return $SECOND;
return $this->myKalib - $SECOND; //Hier könnte man jetzt ausgeben, dass zB eine Warnung ausgegeben wird oder ein Flag gesetzt wird, wenn die Messung ungenau war

}

/** ********************
* cPegelHCSR04Sensor::Kalibriere
*Stellt fest, wie hoch ueber dem Nullpegel der Sensor befestigt ist
**********************/
function Kalibriere($iNull) {
$iAnz = 10;

echo " <pre>"; //Ausgabe Fenster in der Webseite aufrufen
echo "Kalibrierung Ultraschallsensor\n"; //print KAlibrierung Ultraschallsensor

//Pro Sensor so oft messen wie in $iAnz angegeben
for($i=0;$i<$iAnz;$i++) {
$wert[$i]=$this->Messen();
}

// Ungenauigkeit Bereich festlegen, default == 6mm (+-3mm)
$RANGE = 6;

// Min und Max Wert der gemessenen Werte ermitteln, vorher
$MAXIMUM = max($wert);
$MINIMUM = min($wert);

//Schiebe das Intervall von min gemessenen mm bis max 3000 mm
$maxtreffer=0;
$Mittelwert=0;
for ( $i= $MINIMUM; $i<$MAXIMUM; $i++) {
$treffer=0;//Zaehle die Treffer
foreach ($wert AS $Pkt) {
if (($Pkt > $i-$RANGE/2) AND ($Pkt < $i+$RANGE/2)) $treffer++;
}

//Wenn mehr Treffer als $maxtreffer, dann aktualisiere $Mittelwert und $maxtreffer
if ($treffer > $maxtreffer) {
$maxtreffer=$treffer;
$Mittelwert=$i;
}

//Wenn alle Werte innerhalb der Genauigkeit liegen, wird die Schleife vorzeitig verlassen sonst wird bis zum max Wert ($MAXIMUM) der im Python skript auf 3000
if (($maxtreffer == $iAnz) OR ($i > 3000)) break;
}

echo " </pre>"; //Schliesse Fenster in der Webseite

//Bei defektem Sensor
if ($Mittelwert < 1) return 0;
//Das ist etwa die Mitte des Intervalls, liefert die in PHPUnit vorgegebenen Messwerte
$this->myKalib=$Mittelwert - $iNull;
return $this->myKalib;

}

/** ********************
* cPegelHCSR04Sensor::Messen
Liefert die Entfernung des Sensors in mm
**********************/
function Messen() {

//Wie oft soll im Python Skript gemessen werden
$loop = 10;

// Haben wir einen vorgegbenen Messwert?
if ($ret = parent::Get()) return $ret;

$datei = cHerz::Dateipfad(). '/quellen/sensoren/echolot.py';
$id = fileperms($datei);
if ((($id & 1) == 0) AND (!cHorch::Text('PHPUnit', 1))) {
$Text = 'Die Datei echolot.py ist nicht ausfuehrbar. ';
$Text .= 'Auf der Konsole muss ein Befehl eingegeben werden: '."<br />\n";
$Text .= 'sudo chmod +x '.$datei;
cSekretaer::Alarm($Text, PROT_SENSOR);
$this->myHash['Fehler'] = $Text."<br />\n";
return 0;
}

$pins = explode('-', $this->myKennung);
$Befehl = 'sudo '.$datei.' '.$pins[0].' '.$pins[1].' '
.$loop;
error_reporting(0);
$resultat = system($Befehl, $retval);
error_reporting(1);

$res = (int)($resultat);
return $res;
}

/** ********************
* cPegelHCSR04Sensor::GetTyp
**********************/
function GetTyp() {
return 'HC-SR04';
}

/** ********************
* cSensor::GetEinheit
**********************/
function GetEinheit() {
return 'mm';
}

/** ********************
* cPegelHCSR04Sensor::GetBeschreibung
**********************/
function GetBeschreibung() {
$ret = 'Ulrtaschallsensor vom Typ HC-SR04 ';
$ret .= 'mit der Kennung '.$this->myKennung."<br />\n";
$ret .= 'Aktuell '.$this->Get()." Millimeter<br />\n";
return $ret;
}
/** ********************
* cPegelHCSR04Sensor::SetKalib
**********************/
function SetKalib($iKalib) {
$this->myKalib = $iKalib;
}

/** ********************
* cPegelHCSR04Sensor::cPegelHCSR04Sensor
**********************/
function cPegelHCSR04Sensor() {
$this->myKalib == 0;
}

}

?>


Hier noch einmal als Quelltext
Code:
<?php
/** *************************************************************************
 *   Copyright (C) 2014 by Pfiffikus                                                                            *
 *   pfiffikus@zahlengenie.de                                                                                           *

                Klasse zur Ansteuerung eines US-Sensors

 ***************************************************************************/
include_once ("quellen/sensoren/cSensor.php");

class cPegelHCSR04Sensor extends cSensor {
var $myKalib    =0;

        /** ********************
        *cPegelHCSR04Sensor::Get
        Liefert die Entfernung des Sensors zum Wasserstand oder Hindernis in mm
        **********************/
        function Get() {

                $Abweichung = 8;                                        //max Abweichung der Messwerte in +-%
                $MeasureMAX = 4;                                        //wie oft soll das Messen wiederholt werden, wenn die Werte zu stark voneinander abweichen
                if ($this->myKalib == 0) return '- Nicht kalibriert -'; //Wenn der Sonsor nicht kalibriert wurde, wird eine Fehlermeldung ausgegeben

                for ($i=0;$i<$MeasureMAX;$i++) {
                        //Erstes mal Messen
                        $FIRST=$this->Messen();
                        //Zweites mal Messen
                        $SECOND=$this->Messen();
                        //Pruefen ob der zweite Wert und der erste Wert max 5 % ($Abweichung) voneinander abweichen
                        if (($SECOND < ($FIRST+$Abweichung/2)) AND ($SECOND > ($FIRST-$Abweichung/2))) break;
                }

                if ($SECOND == 0) return $SECOND;
                return $this->myKalib - $SECOND; //Hier könnte man jetzt ausgeben, dass zB eine Warnung ausgegeben wird oder ein Flag gesetzt wird, wenn die Messung ungenau war

        }
        /** ********************
        *       cPegelHCSR04Sensor::Kalibriere
        *Stellt fest, wie hoch ueber dem Nullpegel der Sensor befestigt ist
        **********************/
        function Kalibriere($iNull) {
                $iAnz = 10;

                echo "  <pre>";                                 //Ausgabe Fenster in der Webseite aufrufen
                echo "Kalibrierung Ultraschallsensor\n";        //print KAlibrierung Ultraschallsensor

                //Pro Sensor so oft messen wie in $iAnz angegeben
                for($i=0;$i<$iAnz;$i++) {
                        $wert[$i]=$this->Messen();
                }

                //  Ungenauigkeit Bereich festlegen, default == 6mm (+-3mm)
                $RANGE = 6;

                //  Min und Max Wert der gemessenen Werte ermitteln, vorher
                $MAXIMUM = max($wert);
                $MINIMUM = min($wert);

                //Schiebe das Intervall von min gemessenen mm bis max 3000 mm
                $maxtreffer=0;
                $Mittelwert=0;
                for ( $i= $MINIMUM; $i<$MAXIMUM; $i++) {
                        $treffer=0;//Zaehle die Treffer
                        foreach ($wert AS $Pkt) {
                                if (($Pkt > $i-$RANGE/2) AND ($Pkt < $i+$RANGE/2)) $treffer++;
                        }

                        //Wenn mehr Treffer als $maxtreffer, dann aktualisiere $Mittelwert und $maxtreffer
                        if ($treffer > $maxtreffer) {
                                $maxtreffer=$treffer;
                                $Mittelwert=$i;
                        }

                        //Wenn alle Werte innerhalb der Genauigkeit liegen, wird die Schleife vorzeitig verlassen sonst wird bis zum max Wert ($MAXIMUM) der im Python skript auf 3000
                        if (($maxtreffer == $iAnz) OR ($i > 3000)) break;
                }

                echo " </pre>";                                 //Schliesse Fenster in der Webseite

                //Bei defektem Sensor
                if ($Mittelwert < 1) return 0;
                //Das ist etwa die Mitte des Intervalls, liefert die in PHPUnit vorgegebenen Messwerte
                $this->myKalib=$Mittelwert - $iNull;
                return $this->myKalib;

        }
        /** ********************
        *       cPegelHCSR04Sensor::Messen
                Liefert die Entfernung des Sensors in mm
        **********************/
        function Messen() {
                //Wie oft soll im Python Skript gemessen werden
                $loop = 10;
                //      Haben wir einen vorgegbenen Messwert?
                if ($ret        =       parent::Get()) return $ret;

                $datei          =       cHerz::Dateipfad().     '/quellen/sensoren/echolot.py';
                $id             =       fileperms($datei);
                if ((($id & 1) == 0) AND (!cHorch::Text('PHPUnit', 1))) {
                        $Text   =       'Die Datei echolot.py ist nicht ausfuehrbar. ';
                        $Text   .=      'Auf der Konsole muss ein Befehl eingegeben werden: '."<br />\n";
                        $Text   .=      'sudo chmod +x '.$datei;
                        cSekretaer::Alarm($Text, PROT_SENSOR);
                        $this->myHash['Fehler'] =       $Text."<br />\n";
                        return 0;
                }

                $pins   =       explode('-', $this->myKennung);
                $Befehl         =       'sudo '.$datei.' '.$pins[0].' '.$pins[1].' '.$loop;
                error_reporting(0);
                $resultat       =       system($Befehl, $retval);
                error_reporting(1);

                $res    =       (int)($resultat);
                return $res;
        }

        /** ********************
        *       cPegelHCSR04Sensor::GetTyp
        **********************/
        function GetTyp() {
                return 'HC-SR04';
        }

        /** ********************
        *       cSensor::GetEinheit
        **********************/
        function GetEinheit() {
                return 'mm';
        }

        /** ********************
        *       cPegelHCSR04Sensor::GetBeschreibung
        **********************/
        function GetBeschreibung() {
                $ret    =       'Ulrtaschallsensor vom Typ HC-SR04 ';
                $ret    .=      'mit der Kennung '.$this->myKennung."<br />\n";
                $ret    .=      'Aktuell '.$this->Get()." Millimeter<br />\n";
                return $ret;
        }

        /** ********************
        *       cPegelHCSR04Sensor::SetKalib
        **********************/
        function SetKalib($iKalib) {
                $this->myKalib  =       $iKalib;
        }

        /** ********************
        *       cPegelHCSR04Sensor::cPegelHCSR04Sensor
        **********************/
        function cPegelHCSR04Sensor() {
                $this->myKalib == 0;
        }

}

?>


Pfiffikus hat geschrieben:
Nur intern von cPegelHCSR04Sensor verwendet werden:

Messen()
GetGenau() - (Ob diese Funktion nach Deinen Arbeiten noch gebraucht wird?)

Diese Funktion habe ich entfernt und direkt in die Kalibrierung eingebaut

_________________
____________________
Viele Grüße
Dennis
____________________


Nach oben
 Profil userposition on geomap  
 
BeitragVerfasst: Mi 04.Nov 2015 17:59 
Offline
Anonymer User
Benutzeravatar

Registriert: Do 03.Jan 2013 13:07
Cash on hand:
3.339,23 Taler

Beiträge: 646
EDIT: ich habe im Moment bei der normalen Messung keine prozentuae Abweichung eingbaut, sondern absolut. Könnte man aber noch ändern. Müsste dann die Varialblen in Float umwandeln. Bei Großen Distanzen wird die Messung oft wiederholt.
Dateianhang:
2015-11-04 17_57_18-Teich-Steuerung.png
2015-11-04 17_57_18-Teich-Steuerung.png [ 25.32 KiB | 4433-mal betrachtet ]

_________________
____________________
Viele Grüße
Dennis
____________________


Nach oben
 Profil userposition on geomap  
 
BeitragVerfasst: Do 05.Nov 2015 17:31 
Offline
Anonymer User
Benutzeravatar

Registriert: Do 03.Jan 2013 13:07
Cash on hand:
3.339,23 Taler

Beiträge: 646
Update: 20151105 Abweichung in % und max absoluten Wert bei der Messung

schnuffi hat geschrieben:
EDIT: ich habe im Moment bei der normalen Messung keine prozentuae Abweichung eingbaut, sondern absolut. Könnte man aber noch ändern. Müsste dann die Varialblen in Float umwandeln. Bei Großen Distanzen wird die Messung oft wiederholt.


So sieht das ganze jetzt aus

/** ********************
*cPegelHCSR04Sensor::Get
Liefert die Entfernung des Sensors zum Wasserstand oder Hindernis in mm
**********************/
function Get() {

$Abweichung = 3; //max Abweichung der Messwerte in +-%
$MAXAbweichung = 4; //max absoulute Abweichung die zum Vergleich genommen werden soll

$MeasureMAX = 4; //wie oft soll das Messen wiederholt werden, wenn die Werte zu stark voneinander abweichen
if ($this->myKalib == 0) return '- Nicht kalibriert -'; //Wenn der Sonsor nicht kalibriert wurde, wird eine Fehlermeldung ausgegeben

for ($i=0;$i<$MeasureMAX;$i++) {
//Erstes mal Messen
$FIRST=$this->Messen();
//Zweites mal Messen
$SECOND=$this->Messen();
//Den absouluten Wert der prozentualen Abweichung ermitteln, danach pruefen welcher Wert der kleinste ist, den geringeren Wert fuer die Auswertung benutzen
$Range1 = $FIRST*$Abweichung/100;
if ($Range1 > $MAXAbweichung) $Range1 = $MAXAbweichung;

//Pruefen ob der zweite Wert und der erste Wert max X ($Abweichung) voneinander abweichen
if (($SECOND < ($FIRST+$Range1)) AND ($SECOND > ($FIRST-$Range1))) break;
}

if ($SECOND == 0) return $SECOND;
return $this->myKalib - $SECOND; //Hier könnte man jetzt ausgeben, dass zB eine Warnung ausgegeben wird oder ein Flag gesetzt wird, wenn die Messung ungenau war

}

Hier noch einmal als Code:
Code:
        /** ********************
        *cPegelHCSR04Sensor::Get
        Liefert die Entfernung des Sensors zum Wasserstand oder Hindernis in mm
        **********************/
        function Get() {

                $Abweichung = 3;                                        //max Abweichung der Messwerte in +-%
                $MAXAbweichung = 4;                                     //max absoulute Abweichung die zum Vergleich genommen werden soll
                $MeasureMAX = 4;                                        //wie oft soll das Messen wiederholt werden, wenn die Werte zu stark voneinander abweichen
                if ($this->myKalib == 0) return '- Nicht kalibriert -'; //Wenn der Sonsor nicht kalibriert wurde, wird eine Fehlermeldung ausgegeben

                for ($i=0;$i<$MeasureMAX;$i++) {
                        //Erstes mal Messen
                        $FIRST=$this->Messen();
                        //Zweites mal Messen
                        $SECOND=$this->Messen();
                        //Den absouluten Wert der prozentualen Abweichung ermitteln, danach pruefen welcher Wert der kleinste ist, den geringeren Wert fuer die Auswertung benutzen
                        $Range1 = $FIRST*$Abweichung/100;
                        if ($Range1 > $MAXAbweichung) $Range1 = $MAXAbweichung;
                        //Pruefen ob der zweite Wert und der erste Wert max X ($Abweichung) voneinander abweichen
                        echo " <pre>";
                        var_dump ($Range1);
                        echo "</pre>";
                        if (($SECOND < ($FIRST+$Range1)) AND ($SECOND > ($FIRST-$Range1))) break;
                }

                if ($SECOND == 0) return $SECOND;
                return $this->myKalib - $SECOND; //Hier könnte man jetzt ausgeben, dass zB eine Warnung ausgegeben wird oder ein Flag gesetzt wird, wenn die Messung ungenau war

        }

_________________
____________________
Viele Grüße
Dennis
____________________


Nach oben
 Profil userposition on geomap  
 
 Betreff des Beitrags: Werbung, um Taler einzunehmen
Verfasst: Di 20.Mai 2025 19:49 
Online
Expertin
Benutzeravatar

Registriert: Mo 05.Dez 2005 19:01
Cash on hand:
immer zu wenige Taler

Beiträge: nur ein paar
Wohnort: Koi-Schnack
Anzeige:

_________________
Wenn du einen Monat lang ein werbefreies Forum willst, klicke hier und überweise mir 100 Taler!
Wenn du mich im Koi-Schnack etwas fragen möchtest, klicke hier!


Nach oben
 Profil Private Nachricht senden  
 
BeitragVerfasst: Sa 05.Dez 2015 14:17 
Offline
Realer User
Realer User
Benutzeravatar

Registriert: Mo 14.Nov 2005 20:39
Cash on hand:
5.741,65 Taler

Beiträge: 14529
Wohnort: 07548 Gera
Heute möchte ich noch auf eine Besonderheit der Ultraschallmessung hinweisen.

In den letzten Wochen lag ein Raspi in unserer Abstellkammer auf dem Schrank und hat zuweilen die Entfernung bis zur Decke vermessen. Die Messungen wurden nicht mittels CRON, sondern manuell ausgelöst. Daher kommen die unregelmäßigen Zeitabstände zwischen den Messungen zustande.

Dateianhang:
Echoergebnisse.png
Echoergebnisse.png [ 3.69 KiB | 4281-mal betrachtet ]


Bemerkenswert ist bei diesen Messungen, dass währen der ganzen Zeit niemand den Raspi überhaupt angefasst hat. Es wurden auch keine Gegenstände in der Nähe von diesem Raspi verschoben oder verändert. Und trotzdem gibt es Abweichungen von mehreren Zentimetern.

Die Ursache scheint mir hier auf der Hand zu liegen. In der Kammer gab es je nach Sonneneinstrahlung größere Temperaturschwankungen. Somit veränderte sich die Schallgeschwindigkeit in der Luft, was der Raspi ja nicht wissen kann.


Für den Einsatz am Teich hat das nur wenig Relevanz. Einerseits wird man die Sensoren wesentlich näher an der Wasseroberfläche montieren. Da fallen 2% der Messstrecke als Fehler kaum noch ins Gewicht. Andererseits puffert der Wasserkörper die Temperatur, so dass hier nicht so große Temperaturschwankungen zu erwarten sind, wie in unserer Abstellkammer. Deshalb halte ich auch eine Temperaturkompensation der Werte durch den Raspi vorerst nicht für erforderlich.


Pfiffikus,
der diese Besonderheit nicht unerwähnt lassen wollte


Nach oben
 Profil userposition on geomap  
 
BeitragVerfasst: Fr 11.Dez 2015 17:54 
Offline
Anonymer User
Benutzeravatar

Registriert: Do 03.Jan 2013 13:07
Cash on hand:
3.339,23 Taler

Beiträge: 646
Hallo Pfiffikus,

ich habe folgendes Problem:

Ich habe aus versehen den Typ meines Ultraschallsensor geändert von 18-27 zu 1827

Jetzt bekomme ich folgende ausgabe, bei der die Anweisung zusammen gebaut wird
Dateianhang:
2015-12-11 17_50_39-Teich-Steuerung.png
2015-12-11 17_50_39-Teich-Steuerung.png [ 19.64 KiB | 4245-mal betrachtet ]


Danach habe ich versucht es über das Menü wieder zu ändern und bin dann auf speichern gegangen
Dateianhang:
2015-12-11 17_46_49-Teich-Steuerung.png
2015-12-11 17_46_49-Teich-Steuerung.png [ 13.32 KiB | 4245-mal betrachtet ]


Leider funktioniert dies nicht, siehe hier
Dateianhang:
2015-12-11 17_46_02-Teich-Steuerung.png
2015-12-11 17_46_02-Teich-Steuerung.png [ 64.16 KiB | 4245-mal betrachtet ]

_________________
____________________
Viele Grüße
Dennis
____________________


Nach oben
 Profil userposition on geomap  
 
BeitragVerfasst: Fr 11.Dez 2015 19:22 
Offline
Realer User
Realer User
Benutzeravatar

Registriert: Mo 14.Nov 2005 20:39
Cash on hand:
5.741,65 Taler

Beiträge: 14529
Wohnort: 07548 Gera
Hallo Dennis,

bei den Sensoren muss ich die Abmeldung noch einbauen. Vorläufig solltest Du die Abmeldung bei Teich > Pegel > Einstellungen > Trommelfilter vornehmen.


Pfiffikus,
der noch mal in Ruhe den Speichervorgang untersuchen muss


Nach oben
 Profil userposition on geomap  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 225 Beiträge ]  Gehe zu Seite Vorherige  1 ... 8, 9, 10, 11, 12, 13, 14 ... 23  Nächste

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de