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. Distanz Sensor kalibrierung

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.6k

Distanz Sensor kalibrierung

Geplant Angeheftet Gesperrt Verschoben Blockly
1 Beiträge 1 Kommentatoren 96 Aufrufe 1 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.
  • AphofisA Offline
    AphofisA Offline
    Aphofis
    schrieb am zuletzt editiert von Aphofis
    #1

    Hey Leute, ich würde gerne einen Distanz Sensor per Blockly kalibrieren und ein Magnetventil steuern, wenn der wert über eine bestimmte höhe steigt.
    Damit ich mit dem Sensor den Wasserstand in meinem Aquarium regulieren kann.
    Ich hatte mir das so vorgestellt.
    Ich habe drei Datenpunkte erstellt nach zahl und value
    Wasserstand_soll ist 0 eingetragen
    Wasserstand_ist wird aus dem sonoff distanz sensor wert genommen
    Wasserstand_kalibriert soll dann alles was über 0 ist als cm angezeigt werden mit einer komma stelle und wenn es ins minus geht soll der wert auch angezeigt werden.
    des weiteren soll das Magnetventil so sein das zb pro einschaltung nie mehr als 300 ml gepumpt werden darf. den wert für 300 ml in ms muss ich noch ermitteln, wenn das neue Magentventil da ist.
    In Wasserstand_ist soll der Wert von dem Distanz Sensor aus dem Tasmota ESP8266 eingetragen werden dann soll Wasserstand_soll 0 sein
    Dann der Wasserstand_kalibriert soll dann aus zb momentan hat der Sensor bis zur Wasseroberfläche 25,2 cm Wenn der Wert nun sagen wir auf 26,5 cm ansteigt, soll ein Magnetventil eingeschaltet werden und bei 25 bzw 0 cm abgeschaltet werden.
    Sprich das Blockly soll den wert 25,2 cm als 0 cm annehmen.
    wenn der Wert nun kalibriert 0 = Wasserstand OK zeigt, soll nichts passieren wenn zb der Wert um 3mm ansteigt, soll in Wasserstand_ist auch nur 0,3 cm angezeigt werden.
    Doch wie man das per Blockly realisiert weiss ich nicht.
    Vielleicht kann mir einer hier helfen.

    Das habe ich bis jetzt, doch ob das so korekt ist weiss ich nicht

    var Wasserstand_ist, Wasserstand_kalibriert;
    
    
    Wasserstand_ist = parseFloat(getState('sonoff.0.Aqua_TEST_ESP.SENSOR.SR04.Distance').val);
    console.info((['Sensor Wert ist ',getState('sonoff.0.Aqua_TEST_ESP.SENSOR.SR04.Distance').val,' cm'].join('')));
    Wasserstand_kalibriert = getState('sonoff.0.Aqua_TEST_ESP.SENSOR.SR04.Distance').val - 25.2;
    console.info((['Wasserstand kalibriert ',Math.round(getState('0_userdata.0.Aqua_Float.Wasserstand_kallibriert').val),' cm'].join('')));
    
    schedule("*/5 * * * * *", async () => {
      setState('0_userdata.0.Aqua_Float.Wasserstand_kallibriert' /* Wasserstand_kallibriert */, Wasserstand_kalibriert, true);
      setState('0_userdata.0.Aqua_Float.Wasserstand_kallibriert' /* Wasserstand_kallibriert */, getState('0_userdata.0.Aqua_Float.Wasserstand_kallibriert').val, true);
      setState('0_userdata.0.Aqua_Float.Wasserstand_ist' /* Wasserstand_ist */, getState('sonoff.0.Aqua_TEST_ESP.SENSOR.SR04.Distance').val, true);
      setState('0_userdata.0.Aqua_Float.Wasserstand_kallibriert' /* Wasserstand_kallibriert */, Wasserstand_kalibriert, true);
    });
    on({ id: [].concat(['0_userdata.0.Aqua_Float.Wasserstand_kallibriert']), change: 'ne' }, async (obj) => {
      let value = obj.state.val;
      let oldValue = obj.oldState.val;
      if (getState('0_userdata.0.Aqua_Float.Wasserstand_kallibriert').val <= parseFloat((-0.5))) {
        setState('0_userdata.0.Aqua_Float.Test_Gerät' /* Test Gerät */, true);
      } else if (getState('0_userdata.0.Aqua_Float.Wasserstand_kallibriert').val == parseFloat(0)) {
        setState('0_userdata.0.Aqua_Float.Test_Gerät' /* Test Gerät */, false);
      }
    });
    
    <xml xmlns="https://developers.google.com/blockly/xml">
      <variables>
        <variable id="Cyol{5:X7}HdPh4;T{?3">Wasserstand_ist</variable>
        <variable id="SUBAE.)jx_q/WpOLe[w-">Wasserstand kalibriert</variable>
      </variables>
      <block type="variables_set" id="D=pcC3YW!%2@aa8-@uz^" x="-1687" y="-1287">
        <field name="VAR" id="Cyol{5:X7}HdPh4;T{?3">Wasserstand_ist</field>
        <value name="VALUE">
          <block type="convert_tonumber" id="8TgRf/;4}0COa:0JVzU1">
            <value name="VALUE">
              <block type="get_value" id="(M3pR,W[q8@mLZK}N2Zw">
                <field name="ATTR">val</field>
                <field name="OID">sonoff.0.Aqua_TEST_ESP.SENSOR.SR04.Distance</field>
              </block>
            </value>
          </block>
        </value>
        <next>
          <block type="debug" id="!iZ}H~;tYo)lKMO@P0:v">
            <field name="Severity">info</field>
            <value name="TEXT">
              <shadow type="text" id="bfD6#6F5~@THlk)6hv2t">
                <field name="TEXT">test</field>
              </shadow>
              <block type="text_join" id="x]OysvfoiuAq07,c%Q3}">
                <mutation items="3"></mutation>
                <value name="ADD0">
                  <block type="text" id="oDo}h[!,Vb^zNhdLda{J">
                    <field name="TEXT">Sensor Wert ist </field>
                  </block>
                </value>
                <value name="ADD1">
                  <block type="get_value" id="@V!bf#Xz_jT|+3(~lw1^">
                    <field name="ATTR">val</field>
                    <field name="OID">sonoff.0.Aqua_TEST_ESP.SENSOR.SR04.Distance</field>
                  </block>
                </value>
                <value name="ADD2">
                  <block type="text" id="3aX/AQ(^.A!NK{.E[x|m">
                    <field name="TEXT"> cm</field>
                  </block>
                </value>
              </block>
            </value>
            <next>
              <block type="variables_set" id="}@R?uwDvCiGGS=zhWZa4">
                <field name="VAR" id="SUBAE.)jx_q/WpOLe[w-">Wasserstand kalibriert</field>
                <value name="VALUE">
                  <block type="math_arithmetic" id="VzZ$fGB$ImObsK2]tg5-">
                    <field name="OP">MINUS</field>
                    <value name="A">
                      <shadow type="math_number" id="{uLHjU`0,#rX*t8}%Dc.">
                        <field name="NUM">1</field>
                      </shadow>
                      <block type="get_value" id="-f@}Yjexve;t}WGh]hz2">
                        <field name="ATTR">val</field>
                        <field name="OID">sonoff.0.Aqua_TEST_ESP.SENSOR.SR04.Distance</field>
                      </block>
                    </value>
                    <value name="B">
                      <shadow type="math_number" id="hFYFYQUobi^W4HHQ0UbW">
                        <field name="NUM">25.2</field>
                      </shadow>
                    </value>
                  </block>
                </value>
                <next>
                  <block type="debug" id="H1xc=5@ZxC]LOpG7@S3,">
                    <field name="Severity">info</field>
                    <value name="TEXT">
                      <shadow type="text" id="bfD6#6F5~@THlk)6hv2t">
                        <field name="TEXT">test</field>
                      </shadow>
                      <block type="text_join" id="O%Dm:S]F$*,Ktj(/YVTu">
                        <mutation items="3"></mutation>
                        <value name="ADD0">
                          <block type="text" id="KDsV2[a7^X!n9mY5r49s">
                            <field name="TEXT">Wasserstand kalibriert </field>
                          </block>
                        </value>
                        <value name="ADD1">
                          <block type="math_round" id="m12laWkiCo/d[7EEvJ#H">
                            <field name="OP">ROUND</field>
                            <value name="NUM">
                              <shadow type="math_number" id="#lkGGE`c8B6q(I7(Pt3,">
                                <field name="NUM">3.1</field>
                              </shadow>
                              <block type="get_value" id="4J9%t*Uj.-$RaG`+cv*Q">
                                <field name="ATTR">val</field>
                                <field name="OID">0_userdata.0.Aqua_Float.Wasserstand_kallibriert</field>
                              </block>
                            </value>
                          </block>
                        </value>
                        <value name="ADD2">
                          <block type="text" id="j.@Q.L1+[}Co*4i,_%#A">
                            <field name="TEXT"> cm</field>
                          </block>
                        </value>
                      </block>
                    </value>
                  </block>
                </next>
              </block>
            </next>
          </block>
        </next>
      </block>
      <block type="schedule" id="#Chaxh~z^rRQZ3L|/,L[" x="-787" y="-1187">
        <field name="SCHEDULE">*/5 * * * * *</field>
        <statement name="STATEMENT">
          <block type="update" id="pdgFl43(9GQnO.AW*Mwr">
            <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
            <field name="OID">0_userdata.0.Aqua_Float.Wasserstand_kallibriert</field>
            <field name="WITH_DELAY">FALSE</field>
            <value name="VALUE">
              <block type="variables_get" id="?.:3!S([ue8jN^#^Jqh|">
                <field name="VAR" id="SUBAE.)jx_q/WpOLe[w-">Wasserstand kalibriert</field>
              </block>
            </value>
            <next>
              <block type="update" id="!z9ez%uto5N}u18LQ-lb">
                <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                <field name="OID">0_userdata.0.Aqua_Float.Wasserstand_kallibriert</field>
                <field name="WITH_DELAY">FALSE</field>
                <value name="VALUE">
                  <block type="get_value" id="!G]txIwQw]^^t^#`0k`)">
                    <field name="ATTR">val</field>
                    <field name="OID">0_userdata.0.Aqua_Float.Wasserstand_kallibriert</field>
                  </block>
                </value>
                <next>
                  <block type="update" id="c{OxB_5Ij4q]5W}R+^Yo">
                    <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                    <field name="OID">0_userdata.0.Aqua_Float.Wasserstand_ist</field>
                    <field name="WITH_DELAY">FALSE</field>
                    <value name="VALUE">
                      <block type="get_value" id="DAU)QXF/hB(/(D7mW+X*">
                        <field name="ATTR">val</field>
                        <field name="OID">sonoff.0.Aqua_TEST_ESP.SENSOR.SR04.Distance</field>
                      </block>
                    </value>
                    <next>
                      <block type="update" id="^@cqVFtrS!~lc:+@AJ+?">
                        <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                        <field name="OID">0_userdata.0.Aqua_Float.Wasserstand_kallibriert</field>
                        <field name="WITH_DELAY">FALSE</field>
                        <value name="VALUE">
                          <block type="variables_get" id="Fsb^y+cNo.s=tU4Uwjk;">
                            <field name="VAR" id="SUBAE.)jx_q/WpOLe[w-">Wasserstand kalibriert</field>
                          </block>
                        </value>
                      </block>
                    </next>
                  </block>
                </next>
              </block>
            </next>
          </block>
        </statement>
        <next>
          <block type="on_ext" id="6;vSpIUPT34FHb|D_U`s">
            <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
            <field name="CONDITION">ne</field>
            <field name="ACK_CONDITION"></field>
            <value name="OID0">
              <shadow type="field_oid" id="H2SZM/sP%Ft-~)Z5P0[S">
                <field name="oid">0_userdata.0.Aqua_Float.Wasserstand_kallibriert</field>
              </shadow>
            </value>
            <statement name="STATEMENT">
              <block type="controls_if" id="(]A@$b5^OOk0)#N0/6tk">
                <mutation elseif="1"></mutation>
                <value name="IF0">
                  <block type="logic_compare" id="AH=3cX1iS7S~9:,D!858">
                    <field name="OP">LTE</field>
                    <value name="A">
                      <block type="get_value" id="*s5.h!x=yfhRu,D:3B%l">
                        <field name="ATTR">val</field>
                        <field name="OID">0_userdata.0.Aqua_Float.Wasserstand_kallibriert</field>
                      </block>
                    </value>
                    <value name="B">
                      <block type="convert_tonumber" id="N7Thyg4L;O*8N?rDVI`E">
                        <value name="VALUE">
                          <block type="math_number" id="AhQT5a}A-]S)ub8)b+N0">
                            <field name="NUM">-0.5</field>
                          </block>
                        </value>
                      </block>
                    </value>
                  </block>
                </value>
                <statement name="DO0">
                  <block type="control" id="=,9MfU1^-z7?(VpR?Bwm">
                    <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                    <field name="OID">0_userdata.0.Aqua_Float.Test_Gerät</field>
                    <field name="WITH_DELAY">FALSE</field>
                    <value name="VALUE">
                      <block type="logic_boolean" id="AOs2d*XWWt)zkj6q02cJ">
                        <field name="BOOL">TRUE</field>
                      </block>
                    </value>
                  </block>
                </statement>
                <value name="IF1">
                  <block type="logic_compare" id="[?hcTgw,LpTbh.6OV#(_">
                    <field name="OP">EQ</field>
                    <value name="A">
                      <block type="get_value" id="Yyd%Q)JWAT9(Uyw(D2md">
                        <field name="ATTR">val</field>
                        <field name="OID">0_userdata.0.Aqua_Float.Wasserstand_kallibriert</field>
                      </block>
                    </value>
                    <value name="B">
                      <block type="convert_tonumber" id="Ay=}D)MW2xL4s#8TP){7">
                        <value name="VALUE">
                          <block type="math_number" id="uf?@AM%$J@K5dfJW+oC7">
                            <field name="NUM">0</field>
                          </block>
                        </value>
                      </block>
                    </value>
                  </block>
                </value>
                <statement name="DO1">
                  <block type="control" id="-fYm/~tu$A~7|PPDDaa{">
                    <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                    <field name="OID">0_userdata.0.Aqua_Float.Test_Gerät</field>
                    <field name="WITH_DELAY">FALSE</field>
                    <value name="VALUE">
                      <block type="logic_boolean" id="KS;1KZM)PED,k8^Wda*U">
                        <field name="BOOL">FALSE</field>
                      </block>
                    </value>
                  </block>
                </statement>
              </block>
            </statement>
          </block>
        </next>
      </block>
    </xml>
    

    Screenshot 2024-05-26 033608.png

    wenn der Wert kalibriert über 0,5 cm ist wird das Test Gerät auf true gesetzt und wenn der wert 0 ist wird das test Gerät auf false gesetzt.
    Wie ich jetzt Wasserstand soll einbinden kann weiß ich nicht genau.
    sprich wenn ich den wasserstand 1 cm absenken will und 1 cm in den Datenpunkt eintrage soll das magnetventil in dem momentanen fall von 25,2 cm = 0 cm auf 26,2 cm dann erhöht werden

    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

    408

    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