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

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    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 @Codierknecht last edited by

      @codierknecht
      @MartinP

      Kennt ihr ESPhome?

      Codierknecht 1 Reply 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?:

        Kennt ihr ESPhome?

        Dem Namen nach. Ansonsten: Nope!

        1 Reply Last reply Reply Quote 0
        • 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

                              991
                              Online

                              31.7k
                              Users

                              79.6k
                              Topics

                              1.3m
                              Posts

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