Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Off Topic
    4. Microcontroller
    5. Wie SDS011 / SPS30 Staubsensor mit I2C über LAN zu IOBroker?

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Wie SDS011 / SPS30 Staubsensor mit I2C über LAN zu IOBroker?

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

      Nachtrag:

      IMG_8982.JPG
      Ich habe einen kleinen DC/DC Spannungswandler (DC IN 7-36V, OUT 5V 1,5A) direkt an die Pins gelötet und teilweise mit Heißkleber isoliert.
      https://www.murata.com/en-eu/products/productdetail?partno=OKI-78SR-5%2F1.5-W36-C
      2x "Pullup-Widerstände" - also normale Widerstände mit 10KOhm - einen mit Plus an SCL und den anderen mit Plus an SDA gelötet.
      IMG_8983.JPG
      unten habe ich zuerst ein dickes doppelseitiges Klebeband geklebt und dann darauf Velcro.

      IMG_8984.JPG
      In der Dose (die mir zu klein ist - größere kommt heute) habe ich den SPS30 auch mit Velcro am Dosengrund befestigt. Zudem habe ich noch 2 LAN POE-Injektoren gefunden und verbaut.
      Ich speise nun 12V ein (der DC/DC Wadler kann 7-36V ab, eventuell nehme ich noch ein Netzteil mit 24V, da die Leitungslänge ca. 12m sein wird. Der gemessene Strom bei 5V war zwischen 0,15A und 0,3A. Das sind ca. 1,5W
      WT32-ETH01:
      WT32-Eth01-EDaten.PNG
      SPS30:
      SPS30_EDaten.PNG
      Wenn ich das richtig sehe, dann müsste man von 0,58A (ca. 3W bei 5V) fürs Maximum ausgehen.

      LAN-Leitungslänge ca. 12m
      Hiermit berechnet: https://www.wirsindheller.de/spannungsabfall-kabellaenge.3829.html#wshberechnung

      Bei 5V:
      Spannungsfall-12m-5V-3W.PNG

      Bei 12V:
      Spannungsfall-12m-12V-3W.PNG

      Bei 24V:
      Spannungsfall-12m-24V-3W.PNG

      Immer vom Maximum ausgehend und der Verlustleistung des Spannungswandlers, sind 12V meiner Meinung nach grenzwertig, allerdings liegt der gemessene Strom deutlich unter den Verbrauchsangaben (die Reinigungsprozedur des SPS30 habe ich nicht gemessen)
      Wenn ich noch ein 24V (oder höher) Netzteil habe, dann nehme ich das.
      Da fällt mir ein, dass ich an der PV-Batterie noch einen bisher ungenutzten 24V DC/DC Spannungswandler angeschlossen habe.....
      24V_Wandler.png
      Das lässt sich noch bis 28V hochdrehen 🙂
      Kabellänge in Meter: 12,00
      Leistung in Watt: 3,00
      Querschnitt in mm²: 0,25
      Eingangsspannung in Volt: 28,00
      Elektrische Leitfähigkeit: 56,00
      Widerstand Ω: 0,0178
      Temperatur ℃: 20°C

      Berechnung
      Spannungsabfall: 0,66%
      Ausgangsspannung in Volt: 27,82
      Leitungswiderstand Ω: 0.8544

      H 1 Reply Last reply Reply Quote 0
      • H
        HerrFrodo @HerrFrodo last edited by HerrFrodo

        Nachtrag 04.03.2024

        Übrigens werden bei POE-Einspeisung immer die Adernpaare 1 und 4 genommen.
        Quelle: https://www.kabelscheune.de/Netzwerkstecker-RJ45-Belegung-nach-EIA-TIA-Farbcode/
        Netzwerkkabel-Belegung.PNG
        Bei T568A
        PIN 1: weiß / grün (Paar 3)
        PIN 2: grün (Paar 3)
        PIN 3: weiß / orange (Paar 2)
        PIN 4: blau (Paar 1)
        PIN 5: weiß / blau (Paar 1)
        PIN 6: orange (Paar 2)
        PIN 7: weiß / braun (Paar 4)
        PIN 8: braun (Paar 4)

        Bei T568B
        PIN 1: weiß / orange (Paar 2)
        PIN 2: orange (Paar 2)
        PIN 3: weiß / grün (Paar 3)
        PIN 4: blau (Paar 1)
        PIN 5: weiß / blau (Paar 1)
        PIN 6: grün (Paar 3)
        PIN 7: weiß / braun (Paar 4)
        PIN 8: braun (Paar 4)

        Diese Stecker: https://www.amazon.de/dp/B098XW9XQL?ref=ppx_yo2ov_dt_b_product_details&th=1
        an dieses Kabel: https://www.amazon.de/dp/B0716R9N5H?ref=ppx_yo2ov_dt_b_product_details&th=1

        1 Reply Last reply Reply Quote 0
        • H
          HerrFrodo last edited by

          Ich habe dieses kleine Blockly angefertigt:
          Staub-Blockly.PNG
          Hier der Code:

          <xml xmlns="https://developers.google.com/blockly/xml">
            <block type="on_ext" id="y/Kj+@nuqDDajWv8d[LM" x="-763" y="-1812">
              <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="3FsVh}:{;,]-jhS1VF(6">
                  <field name="oid">sonoff.0.SPS30 Feinstaubsensor.SENSOR.SPS30.PM10</field>
                </shadow>
              </value>
              <statement name="STATEMENT">
                <block type="controls_if" id="!i+EGcL4yWV~N87ricAT">
                  <mutation elseif="1"></mutation>
                  <value name="IF0">
                    <block type="logic_operation" id="`A-TtiYACPIxQI}A8L]9">
                      <field name="OP">AND</field>
                      <value name="A">
                        <block type="logic_compare" id="hld^OxU5I#C7bn3V;#HT">
                          <field name="OP">EQ</field>
                          <value name="A">
                            <block type="get_value_var" id="yJP@T-Dx_/XkOfN?ig89">
                              <field name="ATTR">val</field>
                              <value name="OID">
                                <shadow type="field_oid" id="B)X;2-R]2(;=_u]@h`;v">
                                  <field name="oid">0_userdata.0.Feinstaub.VAR_Lüftung-wegen-Staub-0-1</field>
                                </shadow>
                              </value>
                            </block>
                          </value>
                          <value name="B">
                            <block type="math_number" id="M2,l@Xy$7(J|TIg).3Ii">
                              <field name="NUM">1</field>
                            </block>
                          </value>
                        </block>
                      </value>
                      <value name="B">
                        <block type="logic_compare" id="/DSH4FzH^zx||Mtu{Dgd">
                          <field name="OP">GT</field>
                          <value name="A">
                            <block type="get_value" id="w*rbOn3YC9}jC9(g|s49">
                              <field name="ATTR">val</field>
                              <field name="OID">sonoff.0.SPS30 Feinstaubsensor.SENSOR.SPS30.PM10</field>
                            </block>
                          </value>
                          <value name="B">
                            <block type="get_value" id="bz:miwR;T3d{JJEVSd0]">
                              <field name="ATTR">val</field>
                              <field name="OID">0_userdata.0.Feinstaub.Lüftung_Staub-Schwelle_AUS</field>
                            </block>
                          </value>
                        </block>
                      </value>
                    </block>
                  </value>
                  <statement name="DO0">
                    <block type="control_ex" id="*1g.ViJ/HnbqFTj}2`Zl">
                      <field name="TYPE">false</field>
                      <field name="CLEAR_RUNNING">TRUE</field>
                      <value name="OID">
                        <shadow type="field_oid" id="RwR0cLO.O|PSzOJlp#4b">
                          <field name="oid">hm-rpc.0.LEQ0539002.1.STATE</field>
                        </shadow>
                      </value>
                      <value name="VALUE">
                        <shadow type="logic_boolean" id="8Hf2z4`G8]5}zo_^O.)G">
                          <field name="BOOL">FALSE</field>
                        </shadow>
                      </value>
                      <value name="DELAY_MS">
                        <shadow type="math_number" id="k$^ckeL9ed*ry{3E.A#t">
                          <field name="NUM">0</field>
                        </shadow>
                      </value>
                      <next>
                        <block type="control_ex" id="V7PLAR,U%mgiuv/s1=4Y">
                          <field name="TYPE">true</field>
                          <field name="CLEAR_RUNNING">TRUE</field>
                          <value name="OID">
                            <shadow type="field_oid" id="_-^[KPCml};k4f4EdB:]">
                              <field name="oid">0_userdata.0.Feinstaub.VAR_Lüftung-wegen-Staub-0-1</field>
                            </shadow>
                          </value>
                          <value name="VALUE">
                            <shadow type="logic_boolean" id="d5,8dy,1|xkUz*nAP:bi">
                              <field name="BOOL">FALSE</field>
                            </shadow>
                            <block type="math_number" id="i@#(,B$DR1LK!gn:$8_@">
                              <field name="NUM">0</field>
                            </block>
                          </value>
                          <value name="DELAY_MS">
                            <shadow type="math_number" id="Gsi4-@,LdScZ=uUL_`,,">
                              <field name="NUM">0</field>
                            </shadow>
                          </value>
                          <next>
                            <block type="debug" id=";JXq,_ii:$Ir.T$ROruj">
                              <field name="Severity">log</field>
                              <value name="TEXT">
                                <shadow type="text" id="O{pzwwGMk17Pd?S_%%U+">
                                  <field name="TEXT">LÜFTUNG AUS wegen hohem Feinstaubwert</field>
                                </shadow>
                              </value>
                              <next>
                                <block type="signal-cmb" id="le{;(r?GDOPss4E{i0/=">
                                  <field name="INSTANCE">.0</field>
                                  <field name="LOG">log</field>
                                  <value name="MESSAGE">
                                    <shadow type="text" id="srV/+K]pg]a8;Iswvw)O">
                                      <field name="TEXT">LÜFTUNG AUS wegen hohem Feinstaubwert</field>
                                    </shadow>
                                  </value>
                                </block>
                              </next>
                            </block>
                          </next>
                        </block>
                      </next>
                    </block>
                  </statement>
                  <value name="IF1">
                    <block type="logic_operation" id="R|+cCsn9_Zr$a55.;},X">
                      <field name="OP">AND</field>
                      <value name="A">
                        <block type="logic_compare" id="M=C)eQ`K/94w5qgV[xk%">
                          <field name="OP">EQ</field>
                          <value name="A">
                            <block type="get_value_var" id=":AZO!+EKLhC)-rg!g.W^">
                              <field name="ATTR">val</field>
                              <value name="OID">
                                <shadow type="field_oid" id="f?O)}RzYO``m05/0N=1l">
                                  <field name="oid">0_userdata.0.Feinstaub.VAR_Lüftung-wegen-Staub-0-1</field>
                                </shadow>
                              </value>
                            </block>
                          </value>
                          <value name="B">
                            <block type="math_number" id="?BJ1;1Ik^EZX/QSzxIv2">
                              <field name="NUM">0</field>
                            </block>
                          </value>
                        </block>
                      </value>
                      <value name="B">
                        <block type="logic_compare" id="Ss~gJ+2JrLs#LxyASuWr">
                          <field name="OP">LT</field>
                          <value name="A">
                            <block type="get_value" id="Io9m#vdM/~$ZZ|wy1nS=">
                              <field name="ATTR">val</field>
                              <field name="OID">sonoff.0.SPS30 Feinstaubsensor.SENSOR.SPS30.PM10</field>
                            </block>
                          </value>
                          <value name="B">
                            <block type="get_value" id="Je/6HhqT=_ST9fbE._[$">
                              <field name="ATTR">val</field>
                              <field name="OID">0_userdata.0.Feinstaub.Lüftung_Staub-Schwelle_AUS</field>
                            </block>
                          </value>
                        </block>
                      </value>
                    </block>
                  </value>
                  <statement name="DO1">
                    <block type="control_ex" id="QG8k/m.pnX1HLE5:-l.0">
                      <field name="TYPE">false</field>
                      <field name="CLEAR_RUNNING">TRUE</field>
                      <value name="OID">
                        <shadow type="field_oid" id="@Bmh-R[_+~xXu6E0J79O">
                          <field name="oid">hm-rpc.0.LEQ0539002.1.STATE</field>
                        </shadow>
                      </value>
                      <value name="VALUE">
                        <shadow type="logic_boolean" id="B5K#:PAeja0H7rzx`$al">
                          <field name="BOOL">TRUE</field>
                        </shadow>
                      </value>
                      <value name="DELAY_MS">
                        <shadow type="math_number" id="BB8%ft}o)qn-=n!4}HW^">
                          <field name="NUM">0</field>
                        </shadow>
                      </value>
                      <next>
                        <block type="control_ex" id="t/|RC;8=}EWk90V^mDBW">
                          <field name="TYPE">true</field>
                          <field name="CLEAR_RUNNING">TRUE</field>
                          <value name="OID">
                            <shadow type="field_oid" id="sOQ5A,bEVDF[wJgNSywu">
                              <field name="oid">0_userdata.0.Feinstaub.VAR_Lüftung-wegen-Staub-0-1</field>
                            </shadow>
                          </value>
                          <value name="VALUE">
                            <shadow type="logic_boolean" id="e1AvIBrVfz;|eFZSUTmr">
                              <field name="BOOL">TRUE</field>
                            </shadow>
                            <block type="math_number" id="a5mp/5|1+eV_/vc7fz/A">
                              <field name="NUM">1</field>
                            </block>
                          </value>
                          <value name="DELAY_MS">
                            <shadow type="math_number" id="hpV|sa-Tbg.-|BGjt.9r">
                              <field name="NUM">0</field>
                            </shadow>
                          </value>
                          <next>
                            <block type="debug" id="4YT1IG_#U-nP*FSiQG=W">
                              <field name="Severity">log</field>
                              <value name="TEXT">
                                <shadow type="text" id="lWxqU_=@?,;8Mh`kpmQH">
                                  <field name="TEXT">LÜFTUNG EIN nach besserem Feinstaubwert</field>
                                </shadow>
                              </value>
                              <next>
                                <block type="signal-cmb" id="%rqUa~y;{CoHNRoQppU9">
                                  <field name="INSTANCE">.0</field>
                                  <field name="LOG">log</field>
                                  <value name="MESSAGE">
                                    <shadow type="text" id="d@sFBEOTVqLA[aS7hI[`">
                                      <field name="TEXT">LÜFTUNG EIN nach besserem Feinstaubwert</field>
                                    </shadow>
                                  </value>
                                </block>
                              </next>
                            </block>
                          </next>
                        </block>
                      </next>
                    </block>
                  </statement>
                </block>
              </statement>
            </block>
          </xml>
          

          Kennt sich da jemand aus? Ist das so OK?
          Funktionieren tut es, aber vielleicht geht es anders besser....

          Ralla66 2 Replies Last reply Reply Quote 0
          • Ralla66
            Ralla66 Most Active @HerrFrodo last edited by

            @herrfrodo

            Kurz zur Info,

            läuft auch per USR-TCP-232-302 und Tasmota Scripting,
            Sensordata -> ESP Speicher -> ESP Ausgang TX -> Serial to Lan -> NodeRed -> Datenpunkt
            Damit können dann alle Sensorenwerte die in Tasmota laufen per Lan gesendet werden.
            Läuft auch 🙂

            TCP_RS232.jpg

            1 Reply Last reply Reply Quote 1
            • Ralla66
              Ralla66 Most Active @HerrFrodo last edited by Ralla66

              @herrfrodo

              Kurz zur Info,

              der kleine Bruder USR-TCP232-T2 läuft, dieser ist direkt mit TTL zu verbinden.
              Der USR-TCP-232-302 braucht einen Adapter von TTL auf RS232
              Der E-Byte E801 ( TCP ) braucht auch einen Adapter von TTL auf RS232
              WT32-ETH0 geht auch

              Ziel erreicht, bin Weg ------------------------------------->

              Testscript für Tasmota Scripting DHT11, Data Send an TX alle 5 sec

              >D
              
              temp=0
              hum=0
              tau=0
              
              >B
              
              so(3 1 9600 8N1 1024)
              
              >T
              
              temp=DHT11#Temperature
              hum=DHT11#Humidity
              tau=DHT11#Dewpoint
              
              >S
              
              if upsecs%5==0
              then 
              =>SerialSend2 {"Temperature":%temp%,"Humidity":%hum%,"Dewpoint":%tau%,},\n
              print ---- SEND STR NUM ---- %temp%
              endif
              
              >W
              
              Temperature {m} %temp% 
              Feuchtidkeit {m} %hum% 
              Taupunkt {m} %tau% 
              
              #
              
              H 1 Reply Last reply Reply Quote 1
              • H
                HerrFrodo @Ralla66 last edited by

                @ralla66 said in Wie SDS011 / SPS30 Staubsensor mit I2C über LAN zu IOBroker?:

                USR-TCP232-T2

                Irgendwie check ich das mit der eMail-Benachrichtigung bei neuen Posts hier nicht.....

                Vielen Dank für Deine Hilfe und Tests!

                Was kann man nun zusammenfassen schreiben?
                Man braucht in jedem Fall einen ESP dafür, egal ob USR-TCP-232-302 oder USR-TCP232-T2, wobei der USR-TCP232-T2 deutlich günstiger ist.
                In jedem Fall braucht man mindestens einen ESP8266 (ca. 10€)
                USR-TCP-232-302 kostet ca. 34€ plus Adapter!
                USR-TCP232-T2 kostet ca. 19€
                WT32-Eth01 kostet ca. 20€ plus USB zu UART Adapter ca. 6-8€
                Die deutlich bessere Performance des WT32 wird nie ausgenutzt und der Stromverbrauch ist viel höher als beim ESP8266.

                Was mich allerdings im täglichen Gebrauch stört ist die Tatsache, dass unter Tasmota der Sensorwert nur alle 10 Sekunden aktualisiert wird....dadurch habe ich bis zu 10 Sekunden lang den Kaminmief von den Nachbarn im Haus.....daher überlege ich an einen Testaufbau mit ESPHome.....

                Testscript für Tasmota Scripting DHT11, Data Send an TX alle 5 sec

                Wie schaffst Du die 5 sec?

                Codierknecht BananaJoe 2 Replies Last reply Reply Quote 0
                • Codierknecht
                  Codierknecht Developer Most Active @HerrFrodo last edited by

                  @herrfrodo sagte in Wie SDS011 / SPS30 Staubsensor mit I2C über LAN zu IOBroker?:

                  Irgendwie check ich das mit der eMail-Benachrichtigung bei neuen Posts hier nicht.....

                  Was genau ist da unklar?
                  Lässt sich alles einstellen.

                  7104cfd8-e71d-4ee3-a578-bac2da157d06-image.png

                  H 1 Reply Last reply Reply Quote 1
                  • BananaJoe
                    BananaJoe Most Active @HerrFrodo last edited by BananaJoe

                    @herrfrodo sagte in Wie SDS011 / SPS30 Staubsensor mit I2C über LAN zu IOBroker?:

                    Was mich allerdings im täglichen Gebrauch stört ist die Tatsache, dass unter Tasmota der Sensorwert nur alle 10 Sekunden aktualisiert wird....dadurch habe ich bis zu 10 Sekunden lang den Kaminmief von den Nachbarn im Haus.....daher überlege ich an einen Testaufbau mit ESPHome.....

                    Testscript für Tasmota Scripting DHT11, Data Send an TX alle 5 sec

                    Wie schaffst Du die 5 sec?

                    Wenn das verwendete Tasmota eine Scripting-Enginge hat kann von dort einen Wert auch bei jeder Änderung senden lassen. Dort gibt es einen publish Befehl
                    https://tasmota.github.io/docs/Scripting-Language/#features

                    =>Publish Soyosource/SOYO_1ce2fb/L1L2L3 %sml[8]%
                    

                    sendet zum beispiel den 8ten Wert aus dem vorherigen Abschnitt sml, ganz am Ende angehängt.

                    Du könntest aber auch einen normale Rule erstellen die es dann bei Änderung ebenfalls published:
                    https://tasmota.github.io/docs/Commands/#mqtt
                    Wieder der Befehl Publish

                    Oder du triggerst - per MQTT oder Web Request - einen passenden Status x an:
                    17b7144d-c8eb-4b77-9329-8ae8bbfe8c67-image.png
                    Der wird dann sowohl in der Konsole angezeigt als auch unmittelbar gesendet.

                    H 1 Reply Last reply Reply Quote 1
                    • H
                      HerrFrodo @Codierknecht last edited by

                      @codierknecht sagte in Wie SDS011 / SPS30 Staubsensor mit I2C über LAN zu IOBroker?:

                      Was genau ist da unklar?
                      Lässt sich alles einstellen.

                      Danke für Deine Hilfe!
                      Hatte ich schon alles eingestellt.....und offensichtlich "Änderungen Speichern" übersehen.... 😔

                      1 Reply Last reply Reply Quote 0
                      • H
                        HerrFrodo @BananaJoe last edited by

                        @bananajoe
                        Beim WT32-Eth01 ist Berry dabei.
                        Wie ich den Befehl für eine sekündliche Werteabfrage beim SPS30 gestalten muss, erschließt sich mir noch nicht.
                        Bleibt der dann bis zum Neustart oder kann man den irgendwie speichern?

                        BananaJoe 1 Reply Last reply Reply Quote 0
                        • BananaJoe
                          BananaJoe Most Active @HerrFrodo last edited by

                          pff müsste ich mir auch erst zusammensuchen / googeln

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

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          783
                          Online

                          31.9k
                          Users

                          80.1k
                          Topics

                          1.3m
                          Posts

                          7
                          65
                          7379
                          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