Posts by Bracew

    Mag sein, dass durch Zufall es jetzt stimmt, die Berechnung ist so jedoch falsch.

    Messwert1 und Messwert2 werden vor der while-Schleife nur mit Fantasiewerten gefüllt um größer dem Vergleichswert zu sein. Am Mittelwert noch etwas abziehen ist falsch. Die +10 fließen nicht in die Berechnung ein, sondern sind nur Teil des ersten Vergleichswertes, als Vorbelegung sozusagen.

    Hallo Knicko,


    ich habe nochmals über Deinen Einwand:

    Quote

    ...warum hier +10 gemessen wird

    nachgedacht.


    An dieser Stelle wird noch nicht gemessen!
    Messwert1 und Messwert2 werden erst in den while-Schleifen gemessen. Die +10cm sind nur als Startbedienungen für die Schleifen gedacht. So ist gewährleistet, dass die Schleifen mindesten ein mal durchlaufen werden und mindestens ein Wert gemessen wird.


    Die +10 sind meiner Meinung nach also richtig, auch wenn statt 10 ein x-beliebiger anderer Wert >0 dort stehen könnte.


    Gruß Bracew

    Hallo Knicko,


    ich glaube, du hast einen Fehler im Script gefunden.

    In der Division wird nur mit Integer Ergebnis gerechnet. Mit Deinen Zahlen würden in meiner Simulation:

    Code
    1. 2019-08-11_14:00:15 Entfernung: 19.6 cm Fuelhoehe: 84.4 cm Liter: 844 l Liter-Neg.: -844 l

    herauskommen.

    Sobald ich aber die Konstanten als Float-Zahlen abspeichere:

    Code
    1. MaxTankLiter = 1000.0 # Gesamtfuellmenge des Oeltanks
    2. MinTankLiter = 100.0 # Untere Fuellmengengrenze fuer Warnung per E-Mail
    3. SensorOffset = 8.0 # Abstand vom Sensor zur maximalen Fuelmenge in cm
    4. MaxFuellHoehe = 96.0 # Tankhoehe in cm von LEER bis VOLL

    also ergänzt um jeweils ".0" wirft das Script:

    Code
    1. 2019-08-11_14:03:50 Entfernung: 19.6 cm Fuelhoehe: 84.4 cm Liter: 879 l Liter-Neg.: -879 l

    raus.

    Dies müsste das "richtige" Ergebnis sein.

    Ich bitte um Deine Prüfung und Rückmeldung. Danke.


    Gruß Bracew

    P.S.:

    Übrigens verschwindet der Punkt Window, wenn, das

    • attr HeizoelFileLog logtype heizoel1:Window,text

    in:

    • attr HeizoelFileLog logtype text

    geändert wird,


    Hier nochmals der geänderte Auszug aus der fhem.cfg:

    Hallo morrasen,


    leider kann ich nicht Dir nicht über die Schulter schauen und kann auch Deinen Fehler bei mir nicht nachvollziehen.


    In der FHEM-Oberfläche meines RasPi habe ich auch den Punkt Menüpunkt "Heizung". Dieser kommt aufgrunddessen, dass in der Konfiguration der Menüpunkt von uns so programmiert wurde, In der Sprache von FHEM: der Raum "Heizung" per Attribut einer Definition zugeordnet wurde, zum Beispiel: "attr xxx room Heizung"


    Wenn ich dort bei meinem RasPi draufklicke kommt unter anderem:



    Auf Window muss ich nie klicken, dort ist für mich keine Information drin:



    allenfalls auf die + oder - Lupe. Bei Text sehe ich den Inhalt der Heizoel.log Datei:



    Bitte prüfe nochmals Deine Konfiguration, hier nochmals mein (Auszug aus meiner fhem.cfg):


    und meine /opt/fhem/www/gplot/heizoel.gplot (welche die gleichen Eigentümer und Rechte wie die anderen Dateien in diesem Verzeichnis haben muss):


    Für weitergehende Hilfe benötigen wir mehr Info's von Dir!


    Gruß Bracew

    Wie im Bild-Text schon beschrieben, kann man von jedem Browser der Zugriff auf das Web-Frontend des FHEM-Servers hat die Grafik sehen.


    Also, wenn:

    1. auf deinem RasPi FHEM läuft,
    2. FHEM Zugriff auf die Heizoel.log Datei hat,
    3. in der FHEM Konfiguration der Code-Schnipsel für den Zugriff auf Heizoel.log programmiert ist,
    4. die .gplot Datei programmiert ist und FHEM den Inhalt lesen kann (Rechte!)

    dann kannst Du von jedem Browser der Zugriff auf das Web-Frontend des FHEM-Servers hat die Darstellung ansehen.


    Mit anderen Worten, auf meinem RasPi sind die Punkte 1 bis 4 gegeben und mein RasPi hat in meinem Heimnetz die 192.168.0.20, dann kann ich von meinem Laptop, Handy, Tablett oder was auch immer, im Browser http://192.168.0.20:8086 eingeben, dann sehe ich im Browser die FHEM Oberfläche und kann dann dort nach Anwahl des entsprechenden Menuepunktes auch die aktuelle Grafik sehen.

    Hallo,


    am Anfang eines Scriptes steht zunächst, mit welchem Programm das Script zu verarbeiten ist, für was es geschrieben wurde. Der sog. Shebang. Am Anfang eines Scriptes für Python 3 deshalb:

    Code
    1. #!/usr/bin/env python3

    Somit weis der RasPi: "Hoppla hier kommt ein Python 3 Script".


    Danach wird aus einem Script ein Programm indem es ausführbar gemacht wird, siehe zum Beispiel

    https://wiki.ubuntuusers.de/Sh…e_f%C3%BCr_Anf%C3%A4nger/

    chmod +x /pfad/zu/mein_Skript

    Hier also:

    • chmod +x /home/pi/ultrasonic.py


    Nun kann es mit dem Befehl:

    • /home/pi/ultrasonic.py

    ausgeführt werden.


    Der (absolute) Pfad (/home/pi) mit dem Scriptnamen (ultrasonic.py) gibt an wo das Script zu finden ist (ohne . am Anfang).

    Der Shebang gibt an mit welchem Programm das Script auszuführen ist, hier der Interpreter Python 3.


    Gruß Bracew

    Übrigens,

    hatte ich auch mal mit gpiozero (https://gpiozero.readthedocs.io/en/stable/) experementiert und ein kleines Testprogramm aufgesetzt:

    Code
    1. #!/usr/bin/env python3
    2. # -*- coding: utf-8 -*-
    3. from gpiozero import DistanceSensor
    4. from time import sleep
    5. sensor = DistanceSensor(echo=17, trigger=18)
    6. while True:
    7. print('Distance: ', sensor.distance * 100)
    8. sleep(1)

    Läuft auch, Ergebnis:

    Quote

    Distance: 32.4720356080943

    Distance: 31.802695739432234

    Distance: 32.30040554999141

    das ultrasonic.py Ergebnis:

    Quote

    2019-03-23_21:31:36 Entfernung: 32.8 cm Fuelhoehe: 129.0 cm Liter: 3869 l Liter-Neg.: -3869 l

    Kommt also zum gleichen Ergebnis.

    Man könnte also auch gpiozero verwenden, würde das Script vielleicht vereinfachen.

    Überlege ich mir mal bei Gelegenheit.


    Gruß Bracew

    Hallo morrasen,


    in der Tat, verwendet mein Heizöl-RasPi noch Python 2.7 (http://www.gtkdb.de/index_7_2912.html)

    Code
    1. python -V
    2. Python 2.7.13

    macht aber nichts, kann man ja umwandeln, wie uns Linus freundlicherweise erklärt hat. Werde ich für meine Scripte zur gegebenen Zeit mal versuchen. Bitte hab Verständnis, dass ich mich nicht vorher damit beschäftige (Never change a running system).

    Falls Du eine Lösung hast, wäre ich, stellvertretend hier für alle, froh, wenn Du uns diese hier offen legst. Danke.


    Meines Erachtens funktioniert das Script nicht ohne angeschlossenen Sensor. Habe ich aber auch noch nie versucht.


    Gruß Bracew

    Nachtrag zu meinem letzten Beitrag zu vor:


    Bei meinem Heizöltank ist der Tankstand im Moment wirklich bei ca. 1,00 m Höhe.


    Ich habe im Nachgang noch gelesen, dass der Wert 1 bzw. "Distance: 100.0" auch als Fehlermeldung zu vorgenannter API interpretiert werden kann, so dass ich mir nicht sicher bin ob ich nun "Fehler" oder wirklich 1,00 m gemessen habe mit gpiozero.


    Nichts für ungut Tom, auch ich muss meine Brötchen unter des Tages verdienen und diese am Abend mit der Familie essen, so dass ich mich mit gpiozero zur Zeit nicht tiefer beschäftigen werde. Ich bin aber gespannt auf Deine Erkenntnisse.


    Gruß Bracew

    Hallo Tom,


    nur Mut, nur dranbleiben.

    Zunächst wäre es sinnvoll rauszufinden welchen Sensor du wirklich hast.

    Dannach nochmal die Verkabelung prüfen und welche wirklichen Pins du benutzt.


    Ich habe bei meinem RasPi nachgeschaut. Dort wird BCM 17 und BCM 18 benutzt, also die physikalischen Pin 11 und 12, siehe: https://de.pinout.xyz . Die Pins meines RasPi sind wie folgt verkabelt:

    Quote

    # define GPIO pins (BCM-Pins)

    GPIOTrigger = 18

    GPIOEcho = 17


    Mittlerweile gibt es neue bessere interface librarys für den Zugriff auf die GPIO des RasPi, zum Beispiel die gpiozero.

    Mit gpiozero kann man sehr unkompliziert zum Beispiel Ultraschall-Sensoren ansprechen, da es dafür eigene API's gibt, siehe https://gpiozero.readthedocs.i…l#distance-sensor-hc-sr04.


    Ich habe mal zum Test gpiozero installiert, siehe: https://gpiozero.readthedocs.io/en/stable/installing.html

    Code
    1. sudo apt install python3-gpiozero

    Dann den Quellcode aus 12.5. Distance Sensor (HC-SR04): https://gpiozero.readthedocs.i…#distance-sensor-hc-sr04:

    Code
    1. from gpiozero import DistanceSensor
    2. from time import sleep
    3. sensor = DistanceSensor(echo=18, trigger=17)
    4. while True:
    5. print('Distance: ', sensor.distance * 100)
    6. sleep(1)

    in eine Datei test.py auf dem RasPi gespeichert, meine BCM-Pin-Nummern noch angepasst (genau vertauscht wie im Online-Beispiel):

    Code
    1. #!/usr/bin/env python3
    2. # -*- coding: utf-8 -*-
    3. from gpiozero import DistanceSensor
    4. from time import sleep
    5. sensor = DistanceSensor(echo=17, trigger=18)
    6. while True:
    7. print('Distance: ', sensor.distance * 100)
    8. sleep(1)

    und die Datei mit:

    Code
    1. sudo python3 ./test.py

    ausgeführt.


    Und, voilà, erhalte die Ausgabe:

    Quote


    Distance: 100.0

    Funktioniert also mit meinem nicht seriellen Sensor.


    Ich vermute also bei Deinem RasPi ein Harware-Problem.


    Liebe Grüße Bracew

    Hallo Linus,


    danke für den Hinweis auf: "Der Code hat so einige Probleme".


    Der Code stammt aus meinem Beitrag Nr. 21 und wahr zu diesem Zeitpunkt nur als leicht zu verstehendes Beispiel gedacht.

    Im dortigen PS. der Hinweis vom Nov. 2014, dass ich für mich ein verbessertes Python-Skript erstellt hatte, welches für die, welche es nicht selbst verbessern wollten, per PN verteilt wurde.


    Ansonsten kann ja auch jeder den "Code" anpassen wie er will, zur Not auch gemäß "PEP 8 -- Style Guide for Python Code"