Beiträge von 182

    Lt. Datenblatt benötigt eine Messung 750 ms. Ich würde mal 1000 ms ansetzen, um je einen Temperatursensor DS 18B20 auszulesen.

    Der Vorteil dieser Lösung besteht im Preis und einfachen Montage & Programmierung und darin, dass immer Messwerte anstehen und niemals auf Messwerte gewartet werden muss. Und Du musst im Hinterkopf behalten, dass bei Einsatz von 4 Sensoren ein Messwert immer 3 Sekunden "alt" ist. Reichet Dir dies, dann nimm die DS 18B20 - wenn nicht, dann greife zu analogen Sensoren und einem A/D-Wandler.

    Also es ist so.
    Du kannst alle vier DS18B20 gleichzeitig zur Messung veranlassen.
    Dann 800ms warten
    und schließlich die vier nacheinander auslesen.
    Das dauert dann weniger als 850ms für alle 4 sensoren. ;)

    Hallo,

    ich möchte meiner Heizungssteuerung bei bringen was Sommer ist.

    Zunächst ein mal zur Erklärung wie ich als Mensch es mache:
    Zum Beispiel das Bad.
    In den kalten Monaten schalte ich die Heizung ein bis es 23° hat.
    Aber bei 30° Außentemperatur reich mir auch 21° im Bad.
    Auch wenn es zwischendurch regnet habe ich im Sommer kein Bedürfnis nach Heizung.
    Obwohl die Raumtemperatur weit unterm Soll ist.

    Mein Ziel ist es nun Regeln zu haben, mit deren Hilfe der Computer bestimmen kann,
    ob ich es als Mensch sommerlich empfinde oder nicht.

    Ohne von Hand nachregeln zu müssen!!!

    Ich habe schon einiges probiert, aber leider kommt es immer wieder zu Fehlinterpretationen.

    Ich möchte auch meine Ansätze hier noch nicht veröffentlichen, damit ich eure Fantasie nicht beeinflusse.

    Fixiert euch auch bitte nicht an meinem Beispiel! Es soll nur zur Erklärung beitragen.

    LG

    Hallo,

    jetzt geht´s :bravo2: :bravo2: :bravo2:

    Code
    pi@webpi:~ $ sudo systemctl stop serial-getty@ttyAMA0.service;
    pi@webpi:~ $ sudo systemctl disable serial-getty@ttyAMA0.service;

    Ein kleines Problemchen wäre da noch.
    Diese Befehle überstehen keinen Neustart.
    Kann ich das in eine "Startdatei" oder so eintragen?
    Oder in mein Pythonskrip?

    Hallo

    hab ich doch gemacht.

    Ich habe die serielle Schnittstelle jetzt noch einen mal abgeschaltet = keine Fehlermeldung und kein Datenempfang

    Wieder ein = Datenempfang aber mit Fehlermeldung

    Also so wie ich das sehe kann ich die Schnittstelle ausschalten oder einschalten und das für alles.

    Danke Andeas,
    das war jetzt endlich mal was, mit dem ich was anfangen kann!
    Aber ich glaube dieses "agetty" lässt sich nicht so leicht unterkriegen.
    Hast du da auch noch eine Idee?

    Hallo Andreas
    Bei Linux befinde ich mich im Anfängerstadium.
    sudo lsof /dev/ttyAMA0 und lsof | grep /dev/tty gehen nicht
    und wie soll ich pid anwenden

    Das mit den Instanzen die laufen sollen verstehe ich auch nicht.
    Ich habe jetzt gerade ein frisches Jessie drauf gespielt, die Grundeinstellungen vorgenommen, Tightvncserver installiert, mein Pythonskript übertragen und dann gestartet.
    Und was soll ich sagen, der Fehler war da.
    Nach dem 5. Start hatte ich ein mal Verbindung - also Verbindung möglich.
    Als wo soll da was laufen? Nur mein Pythonskrip und das Betriebssystem.

    Kann es nicht sein, dass ein anderes Programm auf die Schnittstelle zugreift?
    Das gelegentliche funktionieren der Verbindung und die Fehlermeldungen deuten doch auf so etwas hin.
    Dann muss man nur noch herausfinden welches Programm das ist und wie man es abschaltet.
    Momentan ist nur der Tightvncserver installiert, der Rest ist jungfräulich.

    Habe ich gemacht und folgende Fehlermeldung.

    Python 3.4.2 (default, Oct 19 2014, 13:31:11)
    [GCC 4.9.1] on linux
    Type "copyright", "credits" or "license()" for more information.
    >>> ================================ RESTART ================================
    >>>
    Traceback (most recent call last):
    File "/usr/lib/python3/dist-packages/serial/serialposix.py", line 275, in open
    self.fd = os.open(self.portstr, os.O_RDWR|os.O_NOCTTY|os.O_NONBLOCK)
    FileNotFoundError: [Errno 2] No such file or directory: '/dev/ttyAMA0'

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File "/home/pi/Heizungssteuerung/statistik.py", line 16, in <module>
    ser.open()
    File "/usr/lib/python3/dist-packages/serial/serialposix.py", line 278, in open
    raise SerialException("could not open port %s: %s" % (self._port, msg))
    serial.serialutil.SerialException: could not open port /dev/ttyAMA0: [Errno 2] No such file or directory: '/dev/ttyAMA0'
    >>>

    Die Schnittstelle über USB hat aber funktioniert.

    Hallo noisefloor,

    jetzt ist es so, dass ohne open() eine Fehlermeldung kommt.

    Aber beim Datenabruf kommen immer noch die Fehlermeldungen wie oben.

    Es ist aber auch zu beachten, dass die Fehlermeldungen nie beim ersten Aufruf von

    ap=ser.read(300)

    kommen. Sonder erst nach mehr oder wenigen Durchläufen der Schleife.

    Und wie gesagt, die Fehlermeldungen variieren.


    Hallo dreamshader,

    wenn was deaktiviert ist, dann würde es ja nie gehen!

    Ich habe aber gelegentlich Empfang von Daten.

    Die /dev/ttyUSB funktioniert ja. Die wäre ja dann auch deaktiviert. Oder?

    Kann evt. mal jemand was zu den Fehlermeldungen (das ist das was rot ist) sagen.
    Alles andere halte ich nicht für zielführend.

    wheezy oder jessie machen keine unterschied.

    Noch ein mal!
    Das Programm habe ich selber geschrieben und hat 3 Monate so wie es da steht ohne Probleme funktioniert.

    Die Variable ser wird mit ser = serial.Serial("/dev/ttyAMA0", timeout=0.5) definiert.
    ser.baudrate = 19200 vor ser = serial.Serial("/dev/ttyAMA0", timeout=0.5) bringt eine Fehlermeldung "is not defined"

    Du solltest auch nicht vergessen das der Code mit ser.open() 3 monate ohne Probleme lief.
    Und zeitweise gehts ja auch.
    Diese Ausgabe in der Shell

    b'xxx;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1;0;0;0;0;0;0;0;0;0;TTT;214;245;243;253;279;267;273;250;227;207;201;192;180;152;132;123;121;125;131;
    136;145;155;165;179;0;0;0;2;44;203;0;0;475;4845;21:34:10 27.05.2016 5;xxx'

    ist völlig korrekt und entspricht den gesendeten Daten.

    Wurde da was geändert?

    Hallo,

    Erst ein mal zu meiner Hardware:
    Ich habe eine C-Control für die Heizungsteuerung. Diese liefert seine Daten an den RP über einen USB-RS232 Adapter (das funktioniert ohne Probleme).
    Eine weitere C-Control ist für die Bewässerung zuständig. Diese ist über eine Pegelwandler mit TXD0 und RXD0 des RP verbunden.
    Mit dem Python-Skript heizung.py, welches automatisch startete, wurden die Daten der Heizung erfasst.
    Mit dem Python-Skript statistik.py, welches ich in der Shell gestartet hatte, wurden die Daten der Bewässerung und Werte der Heizung in eine Datenbank geschrieben.

    So lief das alles ca. 3 Monate ohne Probleme.

    Dann wollte ich statisik.py auch automatisch starten.
    Das funktioniert aber nicht, auch starten über die Shell (alter Zustand) brachte keine Besserung.

    Mittlerweile habe ich den RP gewechselt, neu aufgesetzt und alle Verbindungen geprüft.
    Der Fehler blieb! :wallbash:

    Was auch komisch ist, ich benötige den Befehl ser.open() nicht mehr. Er verursacht sogar eine Fehlermeldung. Hat vorher aber funktioniert.


    Hier ist die Shell-Ausgabe von statistik.py.
    Man kann hier zwei fehlerfreie Übertragungen erkenne
    und verschieden Fehlermeldung die ohne eine Änderung, nur durch mehrmaliges starten entstanden sind.
    Ein Hardwareproblem kann ausgeschlossen werden.


    Python 3.4.2 (default, Oct 19 2014, 13:31:11)
    [GCC 4.9.1] on linux
    Type "copyright", "credits" or "license()" for more information.
    >>> ================================ RESTART ================================
    >>>
    Traceback (most recent call last):
    File "/home/pi/Heizungssteuerung/statistik.py", line 131, in <module>
    ap=ser.read(300)
    File "/usr/lib/python3/dist-packages/serial/serialposix.py", line 453, in read
    buf = os.read(self.fd, size-len(read))
    BlockingIOError: [Errno 11] Resource temporarily unavailable
    >>> ================================ RESTART ================================
    >>>
    Nachricht gesendet
    Traceback (most recent call last):
    File "/home/pi/Heizungssteuerung/statistik.py", line 131, in <module>
    ap=ser.read(300)
    File "/usr/lib/python3/dist-packages/serial/serialposix.py", line 460, in read
    raise SerialException('device reports readiness to read but returned no data (device disconnected?)')
    serial.serialutil.SerialException: device reports readiness to read but returned no data (device disconnected?)
    >>> ================================ RESTART ================================
    >>>

    >>> ================================ RESTART ================================
    >>>
    Nachricht gesendet
    b'xxx;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1;0;0;0;0;0;0;0;0;0;TTT;214;245;243;253;279;267;273;250;227;207;201;192;180;152;132;123;121;125;131;
    136;145;155;165;179;0;0;0;2;44;208;0;0;448;4850;21:18:00 27.05.2016 5;xxx' (die Daten sind fehlerfrei!)
    0
    208

    Traceback (most recent call last):
    File "/home/pi/Heizungssteuerung/statistik.py", line 132, in <module>
    ap=ser.read(300)
    File "/usr/lib/python3/dist-packages/serial/serialposix.py", line 460, in read
    raise SerialException('device reports readiness to read but returned no data (device disconnected?)')
    serial.serialutil.SerialException: device reports readiness to read but returned no data (device disconnected?)
    During handling of the above exception, another exception occurred:
    Traceback (most recent call last):
    File "/usr/lib/python3/dist-packages/serial/serialposix.py", line 475, in write
    n = os.write(self.fd, d)
    OSError: [Errno 5] Input/output error
    During handling of the above exception, another exception occurred:
    Traceback (most recent call last):
    File "/home/pi/Heizungssteuerung/statistik.py", line 135, in <module>
    ser.write(b"Nachricht von Raspberry")
    File "/usr/lib/python3/dist-packages/serial/serialposix.py", line 489, in write
    raise SerialException('write failed: %s' % (v,))
    serial.serialutil.SerialException: write failed: [Errno 5] Input/output error

    >>> ================================ RESTART ================================
    >>>

    Nachricht gesendet-
    write-Fehler
    write-Fehler
    write-Fehler
    write-Fehler
    write-Fehler
    write-Fehler
    write-Fehler
    Traceback (most recent call last):
    File "/usr/lib/python3/dist-packages/serial/serialposix.py", line 475, in write
    n = os.write(self.fd, d)
    OSError: [Errno 5] Input/output error
    During handling of the above exception, another exception occurred:
    Traceback (most recent call last):
    File "/home/pi/Heizungssteuerung/statistik.py", line 86, in <module>
    ser.write(b"Nachricht von Raspberry")
    File "/usr/lib/python3/dist-packages/serial/serialposix.py", line 489, in write
    raise SerialException('write failed: %s' % (v,))
    serial.serialutil.SerialException: write failed: [Errno 5] Input/output error

    >>> ================================ RESTART ================================
    >>>
    Nachricht gesendet-
    write-Fehler
    write-Fehler
    write-Fehler
    write-Fehler
    write-Fehler
    write-Fehler
    write-Fehler+
    write-Fehler
    write-Fehler
    write-Fehler
    write-Fehler
    write-Fehler
    write-Fehler
    write-Fehler
    write-Fehler
    write-Fehler
    write-Fehler
    write-Fehler
    write-Fehler
    write-Fehler
    write-Fehler
    write-Fehler
    write-Fehler
    write-Fehler
    write-Fehler
    write-Fehler
    Traceback (most recent call last):
    File "/home/pi/Heizungssteuerung/statistik.py", line 143, in <module>
    sleep(0.3)
    KeyboardInterrupt

    >>> ================================ RESTART ================================
    >>>

    Traceback (most recent call last):
    File "/home/pi/Heizungssteuerung/statistik.py", line 131, in <module>
    ap=ser.read(300)
    File "/usr/lib/python3/dist-packages/serial/serialposix.py", line 460, in read
    raise SerialException('device reports readiness to read but returned no data (device disconnected?)')
    serial.serialutil.SerialException: device reports readiness to read but returned no data (device disconnected?)
    >>>
    ================================ RESTART ================================
    >>>

    Traceback (most recent call last):
    File "/home/pi/Heizungssteuerung/statistik.py", line 131, in <module>
    ap=ser.read(300)
    File "/usr/lib/python3/dist-packages/serial/serialposix.py", line 453, in read
    buf = os.read(self.fd, size-len(read))
    BlockingIOError: [Errno 11] Resource temporarily unavailable

    >>> ================================ RESTART ================================

    >>>
    Traceback (most recent call last):
    File "/home/pi/Heizungssteuerung/statistik.py", line 131, in <module>
    ap=ser.read(300)
    File "/usr/lib/python3/dist-packages/serial/serialposix.py", line 453, in read
    buf = os.read(self.fd, size-len(read))
    BlockingIOError: [Errno 11] Resource temporarily unavailable

    >>> ================================ RESTART ================================
    >>>

    Traceback (most recent call last):
    File "/home/pi/Heizungssteuerung/statistik.py", line 131, in <module>
    ap=ser.read(300)
    File "/usr/lib/python3/dist-packages/serial/serialposix.py", line 460, in read
    raise SerialException('device reports readiness to read but returned no data (device disconnected?)')
    serial.serialutil.SerialException: device reports readiness to read but returned no data (device disconnected?)

    >>> ================================ RESTART ================================

    >>>
    b'xxx;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1;0;0;0;0;0;0;0;0;0;TTT;214;245;243;253;279;267;273;250;227;207;201;192;180;152;132;123;121;125;131;
    136;145;155;165;179;0;0;0;2;44;203;0;0;475;4845;21:34:10 27.05.2016 5;xxx'  (die Daten sind fehlerfrei!)
    0
    203
    Traceback (most recent call last):

    File "/home/pi/Heizungssteuerung/statistik.py", line 131, in <module>
    ap=ser.read(300)
    File "/usr/lib/python3/dist-packages/serial/serialposix.py", line 460, in read
    raise SerialException('device reports readiness to read but returned no data (device disconnected?)')
    serial.serialutil.SerialException: device reports readiness to read but returned no data (device disconnected?)
    >>>


    Hier noch der Quellcode meiner Bewässerung, der für die Kommunikation mit statitik.py zuständig ist.



    Mir ist schon klar das das hier viel ist, aber ich weiß nicht mehr weiter.

    Grüße