Durchflußmengen messen mit Raspberry

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo
    Ich möchte die Anzahl von Impulse / pro Zeiteinheit auf Anfrage messen.
    Mit dem beiliegenden Code funktioniert das zwar, jedoch durch das Warten auf die fallende[/code] Flanke hängt das Skript, bis jemand den Wasserhahn aufdreht.

    Gibt es eine Möglichkeit die Impulse je Minute zu messen?
    Wenn Hahn zu und die Abfrage gestartet wurde sollte eben keine Impulse gezählt werden, aber das Skript sollte dennoch beendet werden.

    Weiß jemand eine Lösung?

  • Zitat

    Zum Impulszählen kannst du eine globale Variable verwenden Icon_wink

    Bitte bloß keine globale Variable! Bau dir ein Objekt, mit dem du die Impulse zählen, auslesen usw. kannst.

    So z.B.:

  • Vielen Dank für die Vorschläge!

    Den Vorschag mit der globalen Variable vesuchte ich wie folgt umzusetzten:

    jedoch ohne Erfolg. Die Variable "Impulse" wird im Unterprogramm scheinbar anders interpretiert.

    Der Vorschlag ein Objekt zu bauen... dazu bin ich noch zu viel Beginner. Leider verstehe ich keine Zeile des Codes. Dennoch danke!

    Der Vorschlag ohne Bastelei ''enumerate()'' oder ''itertools.count()'' zu verwenden klingt verlockend. Habe auch hier leider keine Erfahrung und bin beim googeln noch nicht fündig geworden.
    Kannst du das Thema etwas mehr ausführen (Vielleicht 1-2 Links mit Literatur?)

  • kleine Fehler im Skript ausbessern:

    sollte laufen, habs aber nicht getestet ;)

  • Vielen Dank kobold254!!
    Mit deiner Hilfe habe ich ein funktionierendes Skript.

    Zur Vollständigkeit und zum Abschluss hier der letzte Code:

    Programmbeschreibung: Dieses Programm zählt ständig die Impulse (0-5/sek.) des Warmwasserhahns und gibt die Summen alle 2 Minuten in eine Datei aus. (wird noch Erweitert mit Solarkreislauf, Heizungskreislauf, ....). Auswertung der Textdatei erfolgt woanders.

  • An kobold254 und oelkanne, ich kann mich da nur bootsmanns Meinung anschließen. Bitte geht doch erst mal das Python-Tutorial von vorne durch und versucht euch die Sprache richtig anzueignen. Diese Lösungen die ihr hier präsentiert mögen zwar im Moment funktionieren, aber spätestens wenn ihr weiter kommen wollt steht ihr wieder auf dem Schlauch. Zudem ist es so grausam programmiert, dass jeder Vorteil von Python umgedreht wird ... Es ist echt nicht böse gemeint, aber es wird euch selber viel weiter bringen, wenn ihr es erst richtig lernt, anstatt so ein hick hack zusammenzuwurschteln.

  • Die vorgestellte Lösung ist sicher nicht die Beste ABER funktioniert. Und für das kleine Projekt kann ich durchaus damit leben, dass es nicht "schön" programmiert ist ;)

    Für umfangreichere Projekte ist das arbeiten mit Klassen und Objekten sinnvoller, da stimme ich zu :thumbs1:

  • Hallo Mobby,
    Mir ist klar, dass dies keine professionelle Programmierung ist, aber den Anspruch sollte es auch niemals haben. Ich habe vor 1/2 Jahr erstmalig was von Python und PHP gehört. Umso wichtiger sind für mich Foren, in denen meine Fragen ernstgenommen werden und ich konstruktive Unterstützung erhalte.
    (Übrigens: Der Anfänger bin ich, nicht kobold254. Er ging lediglich auf meinen Kenntnistand ein und antwortete entsprechend.)

    Als Hobbyhardwarebastler ist Software für mich eine Notwendigkeit.
    Ich werde wohl nie professionell programmieren, lediglich funktionell. Aber das ist OK für mich.

    Ich bin begeisterst, dass ich 3 Vorschläge zu meinem Problem erhalten habe und möchte euch allen dafür Danken.

    Das Gesamtprojekt ist in Stufe 1, die Auswertung der Sensorergebnisse einer Solaranlage. (Steuerung ist zur Zeit diskret aufgebaut)
    In Ausbaustufe 2 soll die Raspberry dann auch die Solar / Heizungsanlage steuern.
    Habe noch zahlreiche weitere Baustellen mit Leitungslängen, Übersprechen, Prellen von Relaiskontakten, Drehzahlsteuerung, ... aber das ist eher meine Welt.

    Wer möchte kann mal einen Blick darauf werfen.
    http://rubanevkg.noip.me/index.php

    Gruß
    Oelkanne

  • Bitte vergiss es wieder, dass es überhaupt globale Variablen gibt. Zähle eine Impulse zB so:

    Code
    import itertools
    while True:
        for count in itertools.count(1):
            # mach dein ding
            print count

    Allgemein sei noch zu sagen, dass:

    • Funktionsnamen kleingeschrieben werden
    • Variablen kleingeschrieben werden
    • Konstante grossgeschrieben
    • Dateien erstellt/geöffnet werden mit ''with open(filename) as file''
    • Sämtliche {Rechtschreibung} unter 'PEP 8 -- Style Guide for Python Code' nachzulesen ist
  • nur als Hinweis - mit dem Coding:

    Code
    ...
      file_config = open(mess_file,"w")
      file_config.write("# Messergebnisse der Durchflußmengen\n")
      file_config.write("# created on " + jetzt + "\n")
      file_config.write("#   Datum      Messzeit     Impulse     Messdauer:        time.time         Quelle   \n")
      file_config.write("# ---------------------------------------------------------------------------\n")
      file_config.write(jetzt + "  ,  " + str(Impulse) + "  ,  " + str(Dauer) + "  ,  " + str(StopTime) + "  ,  Warmes Wasser \n")
      ...

    ... schreibst Du bei jedem Durchlauf 5 Zeilen in Deine Datei - das macht das ganze nicht übersichtlich und einfach auszuwerten.

    Einmal editiert, zuletzt von espri128 (31. August 2014 um 13:31)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!