Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly
  5. Ultaschallsensor SR04T über Pi auslesen

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    3.9k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.2k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.5k

Ultaschallsensor SR04T über Pi auslesen

Geplant Angeheftet Gesperrt Verschoben Blockly
5 Beiträge 3 Kommentatoren 386 Aufrufe 2 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • SahnAlbertS Offline
    SahnAlbertS Offline
    SahnAlbert
    schrieb am zuletzt editiert von
    #1

    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

    paul53P Jey CeeJ 2 Antworten Letzte Antwort
    0
    • SahnAlbertS SahnAlbert

      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

      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von
      #2

      @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);
         }
      });
      

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      SahnAlbertS 1 Antwort Letzte Antwort
      0
      • SahnAlbertS SahnAlbert

        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

        Jey CeeJ Online
        Jey CeeJ Online
        Jey Cee
        Developer
        schrieb am zuletzt editiert von
        #3

        @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.

        Persönlicher Support
        Spenden -> paypal.me/J3YC33

        SahnAlbertS 1 Antwort Letzte Antwort
        0
        • Jey CeeJ Jey Cee

          @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.

          SahnAlbertS Offline
          SahnAlbertS Offline
          SahnAlbert
          schrieb am zuletzt editiert von
          #4

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

          1 Antwort Letzte Antwort
          0
          • paul53P paul53

            @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);
               }
            });
            
            SahnAlbertS Offline
            SahnAlbertS Offline
            SahnAlbert
            schrieb am zuletzt editiert von
            #5

            @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 Antwort Letzte Antwort
            0
            Antworten
            • In einem neuen Thema antworten
            Anmelden zum Antworten
            • Älteste zuerst
            • Neuste zuerst
            • Meiste Stimmen


            Support us

            ioBroker
            Community Adapters
            Donate

            578

            Online

            32.7k

            Benutzer

            82.4k

            Themen

            1.3m

            Beiträge
            Community
            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
            ioBroker Community 2014-2025
            logo
            • Anmelden

            • Du hast noch kein Konto? Registrieren

            • Anmelden oder registrieren, um zu suchen
            • Erster Beitrag
              Letzter Beitrag
            0
            • Home
            • Aktuell
            • Tags
            • Ungelesen 0
            • Kategorien
            • Unreplied
            • Beliebt
            • GitHub
            • Docu
            • Hilfe