Link zur Hauptseite des Forums

LotharGehlhaar - Teichbauforum

DAS informative Forum der Koi-Szene
Link zur Enzyklopaedie
Aktuelle Zeit: Do 28.Mär 2024 9:52

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 225 Beiträge ]  Gehe zu Seite Vorherige  1 ... 15, 16, 17, 18, 19, 20, 21 ... 23  Nächste
Autor Nachricht
BeitragVerfasst: Mo 25.Apr 2016 21:19 
Offline
Realer User
Realer User
Benutzeravatar

Registriert: Mo 14.Nov 2005 20:39
Cash on hand:
5.716,97 Taler

Beiträge: 14507
Wohnort: 07548 Gera
Alle Fragen zum US-Sensor und seinen Fehlalarmen wurde bereits im Filter-Thema erörtert.


Pfiffikus,
der das hier nicht noch einmal rein kopieren muss


Nach oben
 Profil userposition on geomap  
 
BeitragVerfasst: Di 26.Apr 2016 8:22 
Offline
Realer User
Realer User

Registriert: Di 22.Jul 2008 15:12
Cash on hand:
448,97 Taler

Beiträge: 3073
Wohnort: 93173 Wenzenbach
Pfiffikus hat geschrieben:
Alle Fragen zum US-Sensor und seinen Fehlalarmen wurde bereits im Filter-Thema erörtert.

Morgen Gunter,
richtig. Aber kannst du BITTE konkret und verständlich auf ein paar Dinge eingehen, die mir einfach wichtig erscheinen und vielleicht untergegangen sind oder ich nicht verstanden habe :hugg:

"Das erscheint mir für die Zukunft die größte Schwachstelle zu sein. Wenn der Raspi mit dem Sensor beschäftigt ist, weil dieser nicht erkannt wird etc., dann werden auch andere Dinge blockiert, für die ein Job vorliegt, VERMUTE ich".
Ist das so?

"Denn es wurden die Jobs Strömungspumpe um ... Uhr an und Belüftung um .... Uhr an NICHT ausgeführt. Die Terminjobs Strömungspumpe und Belüftung wurden automatisch um einen Tag verschoben (alle 24 Stunden Wiederholung)".
Ist das so gewollt?

"Und die ZEITSPÜLUNG alle 15 Minuten per Job wurde auch nicht ausgeführt, VERMUTLICH weil der Raspi mit dem nicht finden des Sensors beschäftigt war???"
Richtig?

"Den Braten habe ich ja gerochen und erstmal manuelle Spülungen durchgeführt. Dann um 22.15 Uhr auf Zeitsteuerung einen Job eingerichtet, der wohl nicht funktionierte.
Hier auch wieder eine Frage :!: Hätte ich bei einem bestehenden Sensorproblem keinen Job einrichten sollen, sondern stattdessen eine Zeit für die Zwangsspülung unter FILTER/FILTERSTEUERUNG" ???


Viele Grüße
Hans


Nach oben
 Profil userposition on geomap  
 
BeitragVerfasst: Di 26.Apr 2016 9:03 
Offline
Realer User
Realer User
Benutzeravatar

Registriert: Mo 14.Nov 2005 20:39
Cash on hand:
5.716,97 Taler

Beiträge: 14507
Wohnort: 07548 Gera
Hallo Hans,

hansemann hat geschrieben:
Aber kannst du BITTE konkret und verständlich auf ein paar Dinge eingehen, die mir einfach wichtig erscheinen und vielleicht untergegangen sind oder ich nicht verstanden habe :hugg:

selbstverständlich kann ich sehr gerne auf diese Dinge eingehen, aber nicht hier im Thema über Ultraschallsensoren.
Wir haben ein Filterspülungsthema und ein Thema für Jobs. Da gehören diese Fragen hin.

Nachdem ich hier wieder mitarbeiten konnte, musste ich mehr als eine Stunde allein dafür opfern, die ganzen Beiträge zu sortieren, die Ihr kreuz und quer in dieser Forenrubrik abgesetzt hattet. Sowas muss die Ausnahme bleiben.


Denke doch mal an Leute, die weniger Routine haben als Du! In welchem Thema wird ein Neuling Antworten auf die genannten Fragen suchen?


Pfiffikus,
der nicht möchte, dass irgendwie der Eindruck entsteht, der Umgang mit dem Raspi sei kompliziert


Nach oben
 Profil userposition on geomap  
 
BeitragVerfasst: Do 12.Mai 2016 10:15 
Offline
Anonymer User
Benutzeravatar

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

Beiträge: 646
Hallo Hans, :hallo:

hansemann hat geschrieben:
Super Dennis,
Zitat:
Ich könnte noch optimieren das nur drei aufeinander folgende Fehlermeldungen einen Alarm ausgeben. Im Moment ist es drei aus zehn ergeben einen Alarm

mach das bitte :D

Der andere falsche Alarm "Sensor TrommelfilterSensor liefert keinen sinnvollen Wert" ist auch wieder aufgetaucht, aber den eliminiere ich jetzt selber :lol:
Ansonsten sah es die Tage so aus:
07.05.2016 12:50:11 Sensor TrommelfilterSensor liefert keinen sinnvollen Wert!
07.05.2016 11:03:04 Der Pegelsensor der Filtersteuerung liefert keinen sinnvollen Wert!
06.05.2016 06:50:10 Sensor TrommelfilterSensor liefert keinen sinnvollen Wert!
05.05.2016 20:00:05 Der Pegelsensor der Filtersteuerung liefert keinen sinnvollen Wert!

Viele Grüße
Hans
P.S. Da jemend meinte, es gäbe Probleme mit dem Raspi, NEIN, der steuert den Trommelfilter bis jetzt einwandfrei, es geht nur um die Option, einen Alarm auf das Handy zu bekommen, wenn etwas im Argen ist :wink:


Ich denke dieses Thema ist hier besser aufgehoben.

Ich habe eben das Skript noch einmal überarbeitet. Jetzt funktioniert es so, dass es drei aufeinanderfolgende Fehlmessungen geben muss, damit ein Fehlalarm ausgegeben wird. Ob das allerdings die Fehlermeldungen minimiert, weiß ich nicht. Evtl. liegt dies ja auch am HCSR-04 selbst, dass dieser nach einem "Absturz" eine gewisse Zeit braucht, bevor wieder eine Messung durchgeführt wird.

Des Weiteren habe ich jetzt nur alle "korrekten" Werte in die Liste aufgenommen, die Ausgewertet werden sollen, Ist nur eine kleine Änderung die den Ablauf etwas verbessert. Sollte aber keine Großen Auswirkungen haben.

Ich könnte natürlich eine Wartezeit einbauen, aber dann habe ich ja genau das was ich nicht wollte. Den Job blockiert, falls mal an einem Stecker kein Sensor angeschlossen oder defekt ist.

Hier erst einmal der geänderte Code:
Code:
#!/usr/bin/env python
# -*- coding: utf-8 -*-

#-----------------------------#
# Author: Pfiffikus und Dennis#
#-----------------------------#
import time
import RPi.GPIO as GPIO
import sys
import string

#GPIO PINs deklariren

GPIOTrigger = int(sys.argv[1])
GPIOEcho    = int(sys.argv[2])

#Wie oft soll gemessen werden

length_input = len(sys.argv)
if length_input > 3:
    Counter = int(sys.argv[3])
else:
    Counter = 20

#set GPIO PINS
GPIO.setmode(GPIO.BCM)
GPIO.setup(GPIOTrigger, GPIO.OUT)
GPIO.setup(GPIOEcho, GPIO.IN)

#set trigger to false
GPIO.output(GPIOTrigger, False)

#Warnings ausschalten um fehlerhafte Logausgaben zu vermeiden
GPIO.setwarnings(False)

# Wait 100ms damit die erste Messung korrekt durchgefuehrt wird
time.sleep(0.1)

#--------------------------------------------#
#--------------Entfernung messen-------------#
#--------------------------------------------#

def MeasureDistance(GPIOTrigger, GPIOEcho):
    # set trigger to high
    GPIO.output(GPIOTrigger, True)

    # set trigger after 100msec to low, mit laengerer Wartezeit als 10mikrosec ist die Genauigkeit hoeher
    time.sleep(0.1)
    GPIO.output(GPIOTrigger, False)

    # store initial start time
    StartTime = time.time()
    # Endzeit festlegen
    EndTime = StartTime + 1
    # store start time
    while ((GPIO.input(GPIOEcho) == 0) & (StartTime < EndTime)):
        StartTime = time.time()

    # store stop time - aber vordefinieren
    StopTime = time.time()
    while ((GPIO.input(GPIOEcho) == 1) & (StartTime < EndTime)):
        StopTime = time.time()
    # Wenn keine Antwort vom Sensor empfangen wird, wird 0 mm  ausgegeben
    if StopTime - StartTime < 0.0001:
        StopTime =  StartTime

    # calculate distance
    TimeElapsed = StopTime - StartTime
    Distance = (TimeElapsed * 343000) / 2

    return Distance
   
#--------------------------------------------#
#----------Mittelwert ermitteln--------------#
#--------------------------------------------#
def GetAverage(lDistance):
    #Listenlaenge ermittteln
    lengthList = len(lDistance)
    #Wandle List of Strings in List of Ints um
    lDistance = map(int, lDistance)
    #Min und Max Werte der Liste ermitteln
    MIN = min(lDistance)
    MAX = max(lDistance) + 1 # Es muss einer addiert werden damit die Schleife noch einmal durchlaufen wird, wenn viele Werte gleich dem MAX Wert sind
    #Variablen deklarieren
    RANGE = 4           #In welchem Bereich soll gesucht werden Default=6mm, es muss eine gerade Zahl sein!!!!
    i = 0               #Schleifenwert
    average = 0         #Durchschnittswert
    treffer = 0         #aktuelle Treffer
    maxtreffer = 0      #bisherigen max Treffer
    maxSensor = 3000    #Der Sensor kann bis max 3000mm messen
    #Wenn der MAX Wert in der Liste groesser als die Reichweite ist, wird 3000mm als maximum angenommen
   if MAX > maxSensor:
      MAX = maxSensor
   if MIN != 0:
      i = MIN - 1

   #Alle Werte von MIN bis MAX pruefen
   while i < MAX:
      #Alle Werte der Liste durchlaufen und ueberpruefen, wenn Wert in dem Bereich von +- 3mm liegt wird gezaehlt
      a = 0           #Listenanfang muss wieder zu 0 gesetzt werden, da es erneut durchlaufen wird
      treffer = 0
      while a < lengthList:
         if (lDistance[a] > i-(RANGE/2)) and (lDistance[a] < i+(RANGE/2)):
            treffer=treffer+1
         a=a+1
      #Wenn die aktuell gezaehlten Werte groesser sind als die alten werden diese gespeichert
      if treffer > maxtreffer:
         maxtreffer = treffer
         average  = i
      #Wenn alle Werte innerhalb von 6mm liegen, wird die Schleife verlassen, sonst wird bis zum max Wert weiter geprueft
      if maxtreffer == lengthList:
         break
      i=i+1
   return average

#------------------------------------------------#
#-------------Start Program----------------------#
#------------------------------------------------#
#Leere Liste erschaffen
lDistance = []
errorcounter = 0
#Schleife zum messen der Entfernung, wird so oft durchlaufen wie in Counter uebergeben wurde
while Counter > 0:
   #Entferung messen
   Millimeter = MeasureDistance(GPIOTrigger, GPIOEcho)
   #Hier wird geprueft, ob der Sensor antwortet, falls nicht wird eine unoetig lange Abfrage unterbunden, damit der Job nicht blockiert wird
   if Millimeter == 0:
      errorcounter = errorcounter + 1
      if errorcounter > 2:
         lDistance = [0]
         break
   else:
      errorcounter = 0
      #Entferung zur Liste addieren
      lDistance.append("%0.0f" % (Millimeter)) #ohne mm
      #lDistance.append("%0.0f mm" % (Millimeter))#mit mm

   #dekrementiere Zaehler
   Counter = Counter - 1

iDistance = GetAverage(lDistance)
# #Mittelwert als Integer ausgeben on mm Angabex
print iDistance
#Outputs wieder auf undefinierten Zustand setzen
GPIO.cleanup()


Der Bereich der geändert wurde ROT markiert und Hinzugefügt Blau

#------------------------------------------------#
#-------------Start Program----------------------#
#------------------------------------------------#
#Leere Liste erschaffen
lDistance = []
errorcounter = 0
#Schleife zum messen der Entfernung, wird so oft durchlaufen wie in Counter uebergeben wurde
while Counter > 0:
#Entferung messen
Millimeter = MeasureDistance(GPIOTrigger, GPIOEcho)
#Hier wird geprueft, ob der Sensor antwortet, falls nicht wird eine unoetig lange Abfrage unterbunden, damit der Job nicht blockiert wird
if Millimeter == 0:
errorcounter = errorcounter + 1
if errorcounter > 2:
lDistance = [0]
break
else:
errorcounter = 0

#Entferung zur Liste addieren
lDistance.append("%0.0f" % (Millimeter)) #ohne mm
#lDistance.append("%0.0f mm" % (Millimeter))#mit mm


#dekrementiere Zaehler
Counter = Counter - 1

iDistance = GetAverage(lDistance)
# #Mittelwert als Integer ausgeben on mm Angabex
print iDistance
#Outputs wieder auf undefinierten Zustand setzen
GPIO.cleanup()

@ Hans: Kannst du bitte einmal prüfen, ob die Änderung bei dir hilft, da ich immer noch kein Rasperry in der Konfiguration am Laufen habe :|

_________________
____________________
Viele Grüße
Dennis
____________________


Nach oben
 Profil userposition on geomap  
 
BeitragVerfasst: Fr 13.Mai 2016 12:23 
Offline
Realer User
Realer User

Registriert: Di 22.Jul 2008 15:12
Cash on hand:
448,97 Taler

Beiträge: 3073
Wohnort: 93173 Wenzenbach
Zitat:
#------------------------------------------------#
#-------------Start Program----------------------#
#------------------------------------------------#
#Leere Liste erschaffen
lDistance = []
errorcounter = 0
#Schleife zum messen der Entfernung, wird so oft durchlaufen wie in Counter uebergeben wurde
while Counter > 0:
#Entferung messen
Millimeter = MeasureDistance(GPIOTrigger, GPIOEcho)
#Hier wird geprueft, ob der Sensor antwortet, falls nicht wird eine unoetig lange Abfrage unterbunden, damit der Job nicht blockiert wird
if Millimeter == 0:
errorcounter = errorcounter + 1
if errorcounter > 2:
lDistance = [0]
break
else:
errorcounter = 0

#Entferung zur Liste addieren
lDistance.append("%0.0f" % (Millimeter)) #ohne mm
#lDistance.append("%0.0f mm" % (Millimeter))#mit mm


#dekrementiere Zaehler
Counter = Counter - 1

iDistance = GetAverage(lDistance)
# #Mittelwert als Integer ausgeben on mm Angabex
print iDistance
#Outputs wieder auf undefinierten Zustand setzen
GPIO.cleanup()

Den blauen Teil haben wir eingefügt, wobei bereits bei dem Else ein Error kommt: "SyntaxError: invalid syntax".
Wir können hier jetzt auch leider wieder nicht die enstprechenden Leerzeichen usw. erkennen, also kannst du das bitte in Notepad oder Notepad++ einfügen und die markierung der Leerzeichen, Tabs usw. anzeigen? :)
Beim Roten Teil finden wir keinen Unterschied in unserer Konfiguration, was wir abändern könnten.

Viele Grüße,
Hans Junior


Nach oben
 Profil userposition on geomap  
 
BeitragVerfasst: Fr 20.Mai 2016 7:51 
Offline
Anonymer User
Benutzeravatar

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

Beiträge: 646
Hallo Hans Junior, :hallo:

sorry ich habe euren Beitrag nicht gesehen. :hammer3: :hammer3: :hammer3: Wenn ich nicht antworte, schickt mir einfach eine PN. Das bekomme ich dann auf mein Smartphone und dann reagiere ich auch schneller.

schnuffi hat geschrieben:
Den blauen Teil haben wir eingefügt, wobei bereits bei dem Else ein Error kommt: "SyntaxError: invalid syntax".

Also dort dürfte eigentlich kein Syntax error kommen. Ich vermute hier ihr habt die "Einrückung" per TAB nicht korrekt eingegeben. Ich lade hier mal die Python datei hoch.
Schau dir das bitte hier mal an.
Dateianhang:
2016-05-20 08_44_20-C__Users_das2cvu_Desktop_PI_echolot_20160512.py - Notepad++.png
2016-05-20 08_44_20-C__Users_das2cvu_Desktop_PI_echolot_20160512.py - Notepad++.png [ 33.76 KiB | 6020-mal betrachtet ]


hansemann hat geschrieben:
Beim Roten Teil finden wir keinen Unterschied in unserer Konfiguration, was wir abändern könnten.

Der Rote Teil ist nur weiter eingerückt, damit er nur die Liste um gültige Werte erweitert. Es müsste aber auch so funktionieren.

Man kann die Einrückung aber sehr gut in dem Code Teil erkennen :)
Hier mal die Python Datei

Edit: Irgendwie kann ich hier die XXXX.py nicht hochladen. Aber viellicht klappt das ja auch ohne Sourcecode

_________________
____________________
Viele Grüße
Dennis
____________________


Nach oben
 Profil userposition on geomap  
 
BeitragVerfasst: So 22.Mai 2016 14:17 
Offline
Realer User
Realer User

Registriert: Di 22.Jul 2008 15:12
Cash on hand:
448,97 Taler

Beiträge: 3073
Wohnort: 93173 Wenzenbach
Danke Dennis,
wie versuchen das mal :D

Viele Grüße
Hans Sen.

P.S. Nach wie vor läuft der Raspi einwandfrei und schaltet die Pumpen, steuert den Trommelfilter, sorgt für Musik im Haus usw. :hallo:


Nach oben
 Profil userposition on geomap  
 
 Betreff des Beitrags: Werbung, um Taler einzunehmen
Verfasst: Do 28.Mär 2024 9:52 
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: So 19.Jun 2016 18:37 
Offline
Anonymer User
Benutzeravatar

Registriert: Di 22.Jan 2013 17:20
Cash on hand:
676,55 Taler

Beiträge: 428
Wohnort: Neubrandenburg
Stör17033 hat geschrieben:
Hallo

haben den Fehler gefunden.

Der Befehl muss so sein: www-data ALL = (root) NOPASSWD : /var/www/steuerung/quellen/sensoren/echolot.py

Siehe Bilder:

Dateianhang:
Der Dateianhang Pegelsensor 1.jpg existiert nicht mehr.

Falsch


Dateianhang:
Der Dateianhang Pegelsensor 2.jpg existiert nicht mehr.

Richtig


Das Komische war, dass wenn man den Befehl einkopiert oder auch per Hand eingegeben hat, ist ein Zeilenumbruch nach dem Doppelpunkt gekommen.
Dann abspeichern, sind die Sudo-Rechte weg.

Jetzt haben wir erst den Befehl bis zum Doppelpunkt eingefügt (www-data ALL = (root) NOPASSWD : ) und dann das Leerzeichen gesetzt und den Rest (/var/www/steuerung/quellen/sensoren/echolot.py) daneben eingefügt.
Dann Leerzeilen gesetzt und gespeichert.

Es funktioniert jetzt mit einem HC-SR04

Dateianhang:
Der Dateianhang Pegelsensor 3.jpg existiert nicht mehr.


Danke an Alle die geholfen haben

Gruß Hartmut
der wieder ein Schritt weiter gekommen ist




Hallo,

hatte heute wieder Probleme mit dem Einrichten eines HC-SR04. Und es war genau wieder der oberer Befehl wie hier schon auf Seite 12/13 viewtopic.php?f=90&t=20474&start=120 von mir beschrieben.

Musste in diesem Fall noch die gekennzeichneten (_) Leerzeichen entfernen (www-data ALL_=_(root) NOPASSWD : ).

Der Befehl sieht jetzt so aus :
Dateianhang:
Ultraschallsensor.jpg
Ultraschallsensor.jpg [ 379.95 KiB | 5930-mal betrachtet ]


www-data ALL=(root) NOPASSWD : /var/www/steuerung/quellen/sensoren/echolot.py

Gruß Hartmut


Nach oben
 Profil userposition on geomap  
 
BeitragVerfasst: Mo 20.Jun 2016 9:33 
Offline
Realer User
Realer User
Benutzeravatar

Registriert: Mo 14.Nov 2005 20:39
Cash on hand:
5.716,97 Taler

Beiträge: 14507
Wohnort: 07548 Gera
Hallo Hartmut,

in der aktuellen Version sollten die Leerzeichen aus der Dokumentationsseite verschwunden sein.


Pfiffikus,
der sich für den Hinweis bedankt


Nach oben
 Profil userposition on geomap  
 
BeitragVerfasst: Do 05.Jan 2017 0:08 

Cash on hand: Locked
Hallo zusammen,
was machen Eure Ultraschallsensor HC-SR04.

Hier ein Beispiel ohne Schwankungen durch die CPU Belastungen.

Dateianhang:
HC-SR04_1.jpg



Der Raspberry PI holt sich die Werte am Arduino Mega Webserver ab.


Nach oben
  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 225 Beiträge ]  Gehe zu Seite Vorherige  1 ... 15, 16, 17, 18, 19, 20, 21 ... 23  Nächste

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 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