mit PERL HC-SR04 abfragen

  • Hai


    kurzes Nebenbeiprojekt:


    Ich hab einen Ultraschallsensor (HC-SR04) an die GPIOs angeschlossen. Mit python kann ich das sauber abfragen. Erst wird der Triggerausgang mit 10µs angesteuert, das Signal das dann über den Echo ausgang kommt gelesen, verarbeitet und ausgegeben.
    Die Entfernungen stimmen fast millimetergenau.


    Im Python sieht das so aus (das tutorial kennt wohl jeder)



    Wenn ich versuche den Wert "Distance" in eine rrd Datenbank zu schreiben erhalte ich immer einen float fehler... (und scheitere daran weil ich nichts dazu finde)


    Im python definiere ich zusätzlich das rrdtool modul und in der main funtion das rrd update:




    Code
    import rrdtool


    Code
    # main function
    def main():
     try:
      while True:
    Distance = MeasureDistance()
    rrdtool.update('/var/www/motion/wasserstand_n.rrd', 'N:Distance')
    print("Wasserstand Frischwasser = %.2f cm" % Distance)
    time.sleep(5)




    Der Float fehler der da auftritt hat vermutlich damit zu tun das "Distance" in der Zeile nicht als Wert erkannt wird. Ich als python nixwisser tu mich schwer damit. Ich hätte jetzt zwei Möglichkeiten ->


    - ich schreib das um in PERL, da weiß ich wie ich rrd umgehen muss (in python nicht), aber nicht wie die GPIO Trigger umsetze.


    - ich find ne Lösung in python die rrd upzudaten, weiß aber nicht genau wie die Syntax aussehen muss. Das Internet hat mir nur teilweise helfen können.


    Hab alle meine Messskripte in PERL, den Rest mach ich in der Shell. Wäre natürlich hübsch wenn das in PERL auch gehen würde, der Einheitlichkeit halber, aber ich kanns nicht.
    Python würde auch gehen, aber null Plan was ich das falsch mache..... Am einfachsten wäre es wenn mir jemand hilft die Variable Distance im rrd.update richtig zu setzten. Vielleicht auch einfach ein Formatierungsfehler? Helft mir mal auf die Sprünge. Danke :)

  • Versuch mal anstatt

    Code
    'N:Distance'


    Code
    'N:'+str(Distance)


    Und überprüf doch mal ob in deinem Programm die Einrückungen stimmen hier tun sie es nicht

  • Raspineuling.


    genau das hab ich letzte Nacht gesucht! Sehr klasse! Danke dafür!


    Ja und die Einrückungen.... *g* ich geb mir Mühe (siehe meine Useruntertitel)
    Automatisch zusammengefügt:[hr]


    Wenn du es unbedingt in Perl umsetzen möchtest wirst du denk ich alles alleine machen müssen - mir ist kein GPIO Module für Perl bekannt. Bedeutet für dich das du die sysfs Dateien nutzen musst


    Daran scheitert es auch. Danke, ich werds in python beibehalten. Das mit dem rrd.update und der Variable teste ich nachher wenn am Pi bin.


    Tolles Forum hier! Stell ich immer wieder fest. :bravo2:

    Edited once, last by 4zap ().