NEWS
Wie SDS011 / SPS30 Staubsensor mit I2C über LAN zu IOBroker?
-
Kennt ihr ESPhome?
-
@herrfrodo sagte in Wie SDS011 / SPS30 Staubsensor mit I2C über LAN zu IOBroker?:
Kennt ihr ESPhome?
Dem Namen nach. Ansonsten: Nope!
-
Nachtrag:
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.
unten habe ich zuerst ein dickes doppelseitiges Klebeband geklebt und dann darauf Velcro.
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:
SPS30:
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#wshberechnungBei 5V:
Bei 12V:
Bei 24V:
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.....
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°CBerechnung
Spannungsabfall: 0,66%
Ausgangsspannung in Volt: 27,82
Leitungswiderstand Ω: 0.8544 -
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/
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 -
Ich habe dieses kleine Blockly angefertigt:
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.... -
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 -
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 auchZiel 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% #
-
@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?
-
@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. -
@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 BefehlPublish
Oder du triggerst - per MQTT oder Web Request - einen passenden
Status x
an:
Der wird dann sowohl in der Konsole angezeigt als auch unmittelbar gesendet. -
@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.... -
@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? -
pff müsste ich mir auch erst zusammensuchen / googeln