Neues Plugin: Frequency Counter

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • Prof.Mobilux
    Supermoderator
    • 25.08.2015
    • 4739

    #1

    Neues Plugin: Frequency Counter

    Hallo zusammen,

    ich habe ein neues Plugin veröffentlicht: den Frequency Counter (Frequenzzähler).

    Mit dem Plugin können Sensoren, die eine Frequenz als Ausgangssignal liefern, an die GPIOs eines Raspberry’s angeschlossen werden. Das betrifft zum Beispiel Windmesser oder Durchflussmesser. Für Smartmeter mit S0 Signal reicht hingegen eines der normalen GPIO-Plugins.

    Die Frequenz wird ermittelt und per MQTT an den LoxBerry und Miniserver geleitet.

    Der Service des Plugins ist in C programmiert und nutzt die PiGPIO Library. Damit sollen laut Autor Frequenzen bis 500 KHz detektiert werden können. Das ist Faktor 1000 (!!!!) im Vergleich zu den Frequenzen, die die Loxone Extensions erfassen können (max. 500 Hz).

    Aktuell unterstützt das Plugin maximal 5 Sensoren/GPIOs, könnte aber nich erweitert werden. Allerdings wird auch die CPU stark belastet (1 GPIO auf einem Pi4 verbraucht 12% CPU Last). Ein Pi3, Pi4 oder Zero2 ist Pflicht.

    Download und weitere Infos wie immer im Wiki: https://wiki.loxberry.de/plugins/fre...-counter/start

    Das Plugin ist noch mehr oder weniger ungetestet und daher noch Beta. Insbesondere wäre interessant, ob die Frequenzen korrekt ermittelt werden. Vielleicht hat jemand die Möglichkeit mit einem zweiten Messgerät zu vergleichen.
    Zuletzt geändert von Prof.Mobilux; 16.02.2024, 16:40.
    🇺🇦 Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine


    LoxBerry - Beyond the Limits

  • skyrop
    Dumb Home'r
    • 25.10.2020
    • 19

    #2
    Hallo Michael
    Wow, ein weiteres cooles Plugin 😊. Das würde ich auch gerne testen, k
    önnte man mit dem Plugin auch den Durchfluss durch die Kombidurchflusszelle bei der Pool Dosieranlage ermitteln? Aktuell habe ich da einen Analogen Durchflussmesser verbaut.

    Beste Grüsse
    Pascal

    Zuletzt geändert von skyrop; 17.02.2024, 11:43.

    Kommentar

    • Prof.Mobilux
      Supermoderator
      • 25.08.2015
      • 4739

      #3
      Für den Hauptstrom habe ich diesen hier (Händler war ein anderer), allerdings noch mit dem alten Messbereich von max. 350 L/min: https://de.aliexpress.com/item/32811869184.html

      Mittlerweile scheint der Messbereich auf 200 L/min begrenzt zu sein, es gibt aber auch noch welche mit 350 L/min. Musst schauen, was zu Deiner Pumpe passt.

      Und na klar kannst Du auch die Messzelle messen. Musst halt einen Durchflussmesser wählen, der zu dem recht kleinen Durchfluss (~ 40 L/h) passt, auf die schnelle habe ich gefunden:

      Fast ein bisschen zu enger Messbereich, dafür sicherlich genauer: https://de.aliexpress.com/item/1005006231066958.html
      Messbereich vielleicht etwas zu groß, deckt aber alles ab: https://www.aliexpress.com/item/32813682878.html

      Spannungsbereich ist meist 5V bis 24V, die sollen aber auch mit den 3,3V des Raspberry laufen. Muss ich aber noch testen, sonst braucht man hinter dem Durchflussmesser noch einen Spannungsteiler (2 Widerstände) von 5V auf 3.3V.
      🇺🇦 Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine


      LoxBerry - Beyond the Limits

      Kommentar

      • Prof.Mobilux
        Supermoderator
        • 25.08.2015
        • 4739

        #4
        Janohmat Betrifft Diskussion im Nachbarthread zu Wasserdurchflussensoren: https://www.loxforum.com/forum/proje...273#post423273

        Klasse, ich muss morgen nochmal prüfen ob diese Turbine nen Open Collector Ausgang hat. Die braucht gemäß dem was in eBay steht 3.5-24V.
        Wenn Sie Open Collector hätte kann ich einfach mit den Pullup vom Raspi nehmen und den Eingang direkt durchverdrahten. Ist aktuell aber noch unklar, ich schaus mir mal mit dem Oszi an was man da so zu sehen bekommt, Wenn kein Open Collector mach ichs möglicherweise einfach mit 5V und nem Spannungsteiler...​
        Ich habe meine Turbine mal aufgeschraubt und auch auf Amazon einen Kommentar zur Elektronik gefunden (https://www.amazon.de/-/en/BuildingM.../dp/B01D44N41U). Die Elektroniken der ganzen Turbinen (egal welcher Typ und welcher Hersteller) scheinen alle gleich zu sein.

        Verbaut sind ein paar Widerstände, Kondensatoren und Dioden. Und ein Hall-Sensor (A501 103), zu dem es aber anscheinend nicht wirklich ein Datenblatt gibt:

        Klicke auf die Grafik für eine vergrößerte Ansicht  Name: IMG_6004.jpg Ansichten: 0 Größe: 2,22 MB ID: 423413

        Verbaut ist noch ein 10 kOhm PullUp Widerstand zwischen +VCC (Rot) und DATA (Gelb). Der Typ auf Amazon ist zum gleichen Ergebnis gekommen:

        Klicke auf die Grafik für eine vergrößerte Ansicht  Name: image.png Ansichten: 0 Größe: 604,7 KB ID: 423411
        Klicke auf die Grafik für eine vergrößerte Ansicht  Name: image.png Ansichten: 0 Größe: 27,1 KB ID: 423412
        Bin kein Elektronik-Nerd - ist das jetzt "Open Collector"? Auf jeden Fall wird DATA (Gelb) anscheinend auf GND gezogen, wenn sich die Turbine dreht. Hab leider kein Oszi, aber das Voltmeter zeigt beim Drehen "1,6V" an - was ja passen würde.​
        🇺🇦 Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine


        LoxBerry - Beyond the Limits

        Kommentar

        • Janohmat
          Smart Home'r
          • 07.10.2023
          • 53

          #5
          So, ich hab die Turbine auch mal in die Werkstatt verlagert und ein paar Versuche gemacht.

          Erfreulich: Die Elektronik läuft auch mit 2.8Volt, entsprechend brauche ich mir da jetzt keine Sorgen machen
          Ist leider kein Open Collector, da würde der Pull Up vom Konsumenten definiert und nicht vom Produzenten.
          Nachdem Sie aber mit 3.3V läuft spielt das für unsere Betrachtung erstmal keine Rolle...

          Mein Versuchsaufbau ist ein 12V Lüfter den ich auf die Turbine geklebt habe.
          Wenn ich die MQTT Daten mit denen auf meinem Oszi vergleiche schaut es gut aus ✌️

          Klicke auf die Grafik für eine vergrößerte Ansicht

Name: PXL_20240217_190302373.MP.jpg
Ansichten: 293
Größe: 114,0 KB
ID: 423448

          Klicke auf die Grafik für eine vergrößerte Ansicht

Name: PXL_20240217_190309235.MP.jpg
Ansichten: 340
Größe: 172,9 KB
ID: 423447

          Klicke auf die Grafik für eine vergrößerte Ansicht

Name: grafik.png
Ansichten: 296
Größe: 73,0 KB
ID: 423449

          Nur verstehe ich jetzt nicht wie ich auf die JSON Daten Zugreifen kann.
          Beim PoolManager sind das ja alles diskrete Werte die ich einzeln holen kann.

          Was ist denn tally und was ist das diff?

          Klares thumbs up von meiner Seite...

          Jan

          Kommentar


          • Prof.Mobilux
            Prof.Mobilux kommentierte
            Kommentar bearbeiten
            Sehr cool, dass das Oszi und das Plugin die gleiche Frequenz ermitteln!!! Das MQTT Widget zerpflückt dir die JSON Daten wieder in einzelne Werte. In den Einstellungen einfach "Expand JSON data" aktivieren (ist per Default an) und dann in die Incoming Overview schauen. Da hast Du wieder einzelne Werte. "Tally" sind die ermittelten Flanken, "Diff" die Zeitdifferenz. Tally/Diff müsste die Frequenz in Hz ergeben. Ich hab das nur vom Beispiel aus der PiGPIO-Lib übernommen, und da hießen die Variablen halt so ;-)

          • Janohmat
            Janohmat kommentierte
            Kommentar bearbeiten
            Okidoki. Ich hatte für die freq_count natürlich noch keine Subscription. Schaut gut aus.

            Ich denke man könnte der Frequenz noch ne Nachkommastelle spendieren.
            Je kleiner der Wert wird, desto größer wird die Unschärfe.

          • Prof.Mobilux
            Prof.Mobilux kommentierte
            Kommentar bearbeiten
            Gute Idee.
        • Prof.Mobilux
          Supermoderator
          • 25.08.2015
          • 4739

          #6
          Ich habe heute den Durchflusssensor an das Plugin angeschlossen. Funktioniert einwandfrei, wobei ich die ausgegebene Frequenz nicht verifizieren konnte (hab das Flügelrad mit einem Haarfön angetrieben ).

          Der Anschluss erfolgt einfach an VCC+ (3.3V), GND und einen freien GPIO. Pullup/-down ist nicht erforderlich, da in der Elektronik schon vorgesehen. Bei mir war bei ca. 210 Hz Schluss, ich denke aber das ist durch die Elektronik mit dem Hallsensor beschränkt und nicht durch den Raspberry (bei mir ein Zero2).

          Ich pack das noch mit einer genauen Beschreibung ins Wiki.

          Eine unschöne Sache gibt es aber noch: Kommt der Sensor zum stehen, meldet das Plugin permanent die zuletzt ermittelte Frequenz anstatt "Null". Da muss ich mir den C-Code nochmal genauer anschauen. Ich hatte den nur vom PiGPIO Projekt übernommen.
          Zuletzt geändert von Prof.Mobilux; 17.02.2024, 19:17.
          🇺🇦 Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine


          LoxBerry - Beyond the Limits

          Kommentar

          • Prof.Mobilux
            Supermoderator
            • 25.08.2015
            • 4739

            #7
            Detaillierte Beschreibung zum Anschluss eines Durchfluss-Sensors:

            🇺🇦 Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine


            LoxBerry - Beyond the Limits

            Kommentar


            • Janohmat
              Janohmat kommentierte
              Kommentar bearbeiten
              Okay jetzt kannst ne Version 1 ans Plug-in kleben. Perfekte Doku. 👍😉

            • Prof.Mobilux
              Prof.Mobilux kommentierte
              Kommentar bearbeiten
              Ich habe jetzt noch 2 Nachkommastellen für die Frequenz integriert. Was mich aber noch massiv stört ist, dass die Frequenz bei Stillstand nicht wieder zurück auf "Null" geht, sondern auf dem letzten Wert stehen bleibt. Vermutlich weil keine Flanke mehr kommt, "rechnet" das Programm auch nicht weiter. Da das Programm in C geschrieben ist, muss ich mich da erst einmal reindenken... Bin nicht so der C-Typ ;-) Aber so kann es noch nicht bleiben.
          • Janohmat
            Smart Home'r
            • 07.10.2023
            • 53

            #8
            Mein Beruf: C++ Verbrecher. Wenn du nen Link auf die Quelle für mich hast kann ich rein schauen

            Kommentar

            • Prof.Mobilux
              Supermoderator
              • 25.08.2015
              • 4739

              #9
              Ach, wie geil :-)

              Also, das Original von dem ich "geklaut" habe, liegt hier: https://abyz.me.uk/rpi/pigpio/code/freq_count_1.zip

              Meine angepasste Version (u. a. mit dem JSON-Output) liegt hier: https://github.com/mschlenstedt/LoxB...freq_count_1.c

              Ein paar wenige Erklärungen hier: https://abyz.me.uk/rpi/pigpio/examples.html#C%20code

              🇺🇦 Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine


              LoxBerry - Beyond the Limits

              Kommentar

              • Janohmat
                Smart Home'r
                • 07.10.2023
                • 53

                #10
                Okay. Heute Abend aufm Sofa 👍 Bin noch in der Garage beim Upgrade der Technik beschäftigt. Vielleicht lerne ich dann ein wenig wie das ganze Plugin Konzept funktioniert.

                Kommentar

                • Prof.Mobilux
                  Supermoderator
                  • 25.08.2015
                  • 4739

                  #11
                  👍 bin heute auch erst einmal im Garten Mit dem Plugin und der Struktur hat das nicht wirklich etwas zu tun. Ich denke man müsste überwachen, ob während der Report-Zeit (-r) noch eine Flanke kommt. Wenn nicht, muss tally=0 gesetzt werden. Er scheint jetzt aber nur neu zu rechnen, wenn auch eine neue Flanke kommt. Sonst reported er die ganze Zeit den zuletzt berechneten Wert.

                  Das C-Programm übersetzt du mit: gcc -o freq_count_1 ./src/freq_count_1.c -lpigpio -lpthread

                  Du kannst es dann direkt als root auf der Commandline starten. Vorher das Plugin stoppen.
                  🇺🇦 Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine


                  LoxBerry - Beyond the Limits

                  Kommentar

                  • Janohmat
                    Smart Home'r
                    • 07.10.2023
                    • 53

                    #12
                    Hab mal nen PR gestellt mit der Änderung welche das Verhalten korrigieren sollte.
                    Ich hab leider die Turbine heute wieder eingebaut, kann es also nicht adhoc testen
                    Insofern hab ichs weder kompiliert noch verprobt. Die Änderung selbst ist aber trivial.

                    Wenn man sich den Code genauer anschaut ist das vorher aber eh schon falsch gewesen.
                    In der Auswerteschleife hat er markiert dass bei der nächsten Flanke das Struct zurück gesetzt werden soll.
                    Dieses zurücksetzen passiert aber NACH der Flanke, das heißt zumindest eine Flanke wurde verschluckt.

                    Kommentar


                    • Prof.Mobilux
                      Prof.Mobilux kommentierte
                      Kommentar bearbeiten
                      Danke dir! Ich teste es gleich morgen.
                  • Prof.Mobilux
                    Supermoderator
                    • 25.08.2015
                    • 4739

                    #13
                    Janohmat Funktioniert bestens!

                    Version 0.2.0 ist released: https://wiki.loxberry.de/plugins/fre...-counter/start

                    Änderungen:
                    • Counter resets to 0 Hz if no Frequency is detected (Thanks to Janohmat)
                    • Frequency output now as float with 2 digits
                    🇺🇦 Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine


                    LoxBerry - Beyond the Limits

                    Kommentar

                    • Janohmat
                      Smart Home'r
                      • 07.10.2023
                      • 53

                      #14
                      I ❤️ it 😁

                      Kommentar

                      • Janohmat
                        Smart Home'r
                        • 07.10.2023
                        • 53

                        #15
                        Houston. We have a Problem...

                        Klicke auf die Grafik für eine vergrößerte Ansicht

Name: grafik.png
Ansichten: 206
Größe: 6,5 KB
ID: 426010

                        Es bleibt immer wieder hängen, und ich weiß nicht nach was ich schauen sollte
                        Logs habe ich jetzt mal auf Debug gestellt. In Error sehe ich nur etwas mir nichts sagende Logs...
                        Klicke auf die Grafik für eine vergrößerte Ansicht

Name: grafik.png
Ansichten: 203
Größe: 34,3 KB
ID: 426011

                        Jan

                        Kommentar

                        Lädt...