Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Ultaschallsensor SR04T über Pi auslesen

    NEWS

    • Neues Video "KI im Smart Home" - ioBroker plus n8n

    • Neues Video über Aliase, virtuelle Geräte und Kategorien

    • Wir empfehlen: Node.js 22.x

    Ultaschallsensor SR04T über Pi auslesen

    This topic has been deleted. Only users with topic management privileges can see it.
    • SahnAlbert
      SahnAlbert last edited by

      Hallo zusammen,

      bin relativ frisch mit iobroker, habe vorher viel mit OpenHAB gemacht und hatte während des Lockdowns Zeit in iobroker einzusteigen. Bislang hat alles gut geklappt, nun hänge ich aber schon lange an einem Problem.

      Ich versuche den Ultraschallsensor SR04T direkt am Pi zu betreiben und mit Blockly auszulesen. Leider gibt es Probleme beim Messen der Länge des Echo Impulses.
      041dcb7c-48ae-4cb6-9741-c3d23c6580fd-grafik.png

      Hier der Code:

      16dd3467-8547-4cd0-ae5a-201625832129-grafik.png

      var tStart, dT;
      // Setze Trigger für 10ms
      setState("rpi2.0.gpio.2.state"/*GPIO 2*/, true);
      setStateDelayed("rpi2.0.gpio.2.state"/*GPIO 2*/, false, 10, false);
      // Warte auf High von Echo
      while (getState("rpi2.0.gpio.3.state").val == false) {
      }
      tStart = (new Date().getTime());
      // Impulslänge von Echo = Signallaufzeit
      while (getState("rpi2.0.gpio.3.state").val == true) {
      }
      // Warte auf High von Echo
      dT = (new Date().getTime()) - tStart;
      console.log(('Differenzzeit: ' + String(dT)));
      

      Ich schätze, dass es eine bessere Lösung gibt um das Echosignal zu ermitteln? Code is prinzipiell 1:1 von Python Kopiert.

      Wenn ich das Skript starte schießt sich die js Instanz ab, mit der Meldung:

      • instance system.adapter.javascript.0 terminated with code NaN ()

      • list iteminstance system.adapter.javascript.0 terminated due to SIGABRT

      • list itemCaught by controller[0]: FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory.

      Danke schonmal 🙂
      Albert

      paul53 Jey Cee 2 Replies Last reply Reply Quote 0
      • paul53
        paul53 @SahnAlbert last edited by

        @SahnAlbert sagte:

        Wenn ich das Skript starte schießt sich die js Instanz ab

        wiederhole solange erzeugt Endlosschleifen.

        Javascript kann nur ms auflösen. Verwende "rpi2.0.gpio.3.state" als Trigger:

        on("rpi2.0.gpio.3.state", function(dp) {
           if(!dp.state.val) {
              let dt = dp.state.lc - dp.oldState.lc; // Impulsdauer in ms
              log('Impulsdauer: ' + dt);
           }
        });
        
        SahnAlbert 1 Reply Last reply Reply Quote 0
        • Jey Cee
          Jey Cee Developer @SahnAlbert last edited by

          @SahnAlbert bleib beim python skript, ich hab das schon mal versucht und bin zur Ereknntnis gelangt das JS für diesen Anwendungsfall nicht geeignet ist.

          Ich hab mir die Ergebnisse vom skript per simple-api in den ioBroker geholt. Das hat git funktioniert.

          SahnAlbert 1 Reply Last reply Reply Quote 0
          • SahnAlbert
            SahnAlbert @Jey Cee last edited by

            @Jey-Cee Die Auflösung in ms scheint wirklich das Limit zu sein, außer eine Auflösung von 34cm genügt. Danke!

            1 Reply Last reply Reply Quote 0
            • SahnAlbert
              SahnAlbert @paul53 last edited by

              @paul53 Auf jeden Fall eine deutlich schönere Lösung. Wies aussieht aber leider zu ungenau für meine Anwendung. Brauche dt wohl in us.

              1 Reply Last reply Reply Quote 0
              • First post
                Last post

              Support us

              ioBroker
              Community Adapters
              Donate

              968
              Online

              32.1k
              Users

              80.7k
              Topics

              1.3m
              Posts

              3
              5
              292
              Loading More Posts
              • Oldest to Newest
              • Newest to Oldest
              • Most Votes
              Reply
              • Reply as topic
              Log in to reply
              Community
              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
              The ioBroker Community 2014-2023
              logo