Exempelinköpslista, inte en produktrekommendation. Inga AliExpress-SKU:er eller priser — bara delars roller, antal, varför, sökord och tips.
Elsäkerhet: nätspänning (230 V) bara om du kan; föredra 5 V / 3,3 V och isolerade reläer. Ute och i kupol: IP-klass och torra skarvar. Kalibrera sensorer — rå ADC är inte procent.
Kalibrering: två punkter (torr / blöt) förbättrar resultatet.
IP-klass: fuktskydd för ute och kupol.
3,3 V vs 5 V: ESP32 är oftast 3,3 V — kontrollera spänning.
Molnkameror: integritet och lokal lagring vs utländskt moln.
Kablar och bevattning: håll kontakter torra.
Egen solsensor: ESP32 + markfukt
Bygg en billig, soldriven markfuktsensor som skickar värdena direkt till SproutMindAI:s sensorsida. Den vaknar var 10:e minut, mäter, skickar och somnar igen (deep sleep).
ESP32-kort (t.ex. FireBeetle ESP32 eller LOLIN D32, låg viloström)
1
6–15 €
Välj ett kort med låg viloström och gärna batterikontakt.
Kapacitiv markfuktsensor v1.2/v2.0
1–3
2–5 €/st
Korroderar inte som resistiva. Skydda elektroniken med lack eller krympslang.
18650 Li-ion-cell (skyddad)
1
5–10 €
Laddning under 0 °C är inte säker – håll den varm på vintern.
Laddmodul TP4056 (med skydd) eller CN3791 (MPPT)
1
1–6 €
CN3791 utnyttjar panelen bättre i molnigt väder.
Solpanel 6 V, 1–2 W
1
5–12 €
Rikta mot söder, lutning ca 45–60°.
3,3 V LDO med låg viloström (HT7333 / MCP1700)
1
~1 €
Behövs om kortets egen regulator drar mycket i viloläge.
Resistorer 2 × 100 kΩ
2
<1 €
Spänningsdelare för batterispänning till GPIO35.
IP65-kopplingsdosa + kabelgenomföringar
1
5–10 €
Ventilationshål i botten för fukt.
Priserna är ungefärliga (webbutiker och AliExpress 2026) och varierar. Totalt ca 25–55 €. Färdigt alternativ: Ecowitt GW1100 + WH51 (ca 20 $ + 18 $, shop.ecowitt.com).
Koppla sensorns AOUT → GPIO34, VCC → GPIO25 (sensorn får ström bara vid mätning) och GND → GND.
Koppla batterispänningen via delarens (100k + 100k) mittpunkt till GPIO35.
Panel → laddmodulens IN, batteri → BAT, modulens OUT → LDO → ESP32 3V3.
Skapa en ny enhet på sensorsidan (Egen ESP32-sensor) och klistra in adressen i PLANTCARE_URL.
Kalibrera: läs värdet med sensorn i luft (SOIL_DRY) och i ett vattenglas (SOIL_WET).
Ladda upp med Arduino IDE (ESP32-kortpaket 2.x eller nyare).
Arduino-kod (ESP32)
// SproutMindAI DIY sensor: ESP32 + capacitive soil moisture sensor + solar
// Posts JSON to SproutMindAI every 10 min, deep sleep in between.
#include <WiFi.h>
#include <HTTPClient.h>
const char* WIFI_SSID = "YOUR_WIFI";
const char* WIFI_PASS = "YOUR_PASSWORD";
// Copy from Anturit -> Add device -> DIY (keep it secret):
const char* PLANTCARE_URL =
"http://192.168.1.10:3000/api/sensors/json/PASTE_TOKEN_HERE";
const int SOIL_PIN = 34; // ADC1 pin (works while Wi-Fi is on)
const int SOIL_POWER_PIN = 25; // powers the sensor only while measuring
const int BATT_PIN = 35; // battery via 100k/100k divider
const int SOIL_DRY = 3000; // calibrate: sensor in air
const int SOIL_WET = 1300; // calibrate: sensor in a glass of water
const uint64_t SLEEP_MIN = 10;
int readSoilPercent() {
digitalWrite(SOIL_POWER_PIN, HIGH);
delay(300);
long sum = 0;
for (int i = 0; i < 10; i++) { sum += analogRead(SOIL_PIN); delay(20); }
digitalWrite(SOIL_POWER_PIN, LOW);
int pct = map(sum / 10, SOIL_DRY, SOIL_WET, 0, 100);
return constrain(pct, 0, 100);
}
float readBatteryVolts() {
return analogReadMilliVolts(BATT_PIN) * 2 / 1000.0; // 1:2 divider
}
void setup() {
pinMode(SOIL_POWER_PIN, OUTPUT);
analogSetAttenuation(ADC_11db);
int soil = readSoilPercent();
float batt = readBatteryVolts();
WiFi.mode(WIFI_STA);
WiFi.begin(WIFI_SSID, WIFI_PASS);
for (int i = 0; i < 40 && WiFi.status() != WL_CONNECTED; i++) delay(250);
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http;
http.begin(PLANTCARE_URL);
http.addHeader("Content-Type", "application/json");
String body = String("{\"device\":\"ESP32-solar\",\"soil_moisture\":[") + soil +
"],\"battery_v\":" + String(batt, 2) + "}";
http.POST(body); // 200 = stored
http.end();
}
WiFi.disconnect(true);
esp_sleep_enable_timer_wakeup(SLEEP_MIN * 60ULL * 1000000ULL);
esp_deep_sleep_start();
}
void loop() {}
JSON-format
POST /api/sensors/json/<token>. Fält: soil_moisture (tal eller lista, %), soil_temp, temp (°C), humidity (%), battery_v, solar_v. Testa med curl: