oguz59
@oguz-ozkan · Mitglied seit Mai 2025
Akıllı şehir mühendisi · su ve atık su
- Themen
- 5
- Antworten
- 36
- Punkte
- 0
Erstellte Forenantworten
Biz sayaç verisinde SenML’in isimlendirme mantığını kullandık, dosya formatı olarak değil. Birim ve isim kuralları için işe yaradı.
setInsecure ile bağlanır belki ama sertifikayı hiç doğrulamadığın için önerilmez. Asıl sorun IP ile bağlanman. Hermetry’de SNI zorunlu, TLS el sıkışmasında host adını göndermen gerekiyor, IP ile gidince el sıkışma kuruluyor ve kopuyor, PubSubClient de bunu -2 (bağlantı kurulamadı) olarak görüyor. Saha cihazlarında bunu ben de yaşadım.
Düzeltilmiş hali:
WiFiClientSecure net;
net.setCACert(ROOT_CA_PEM); // sunucu sertifikası genel bir CA'dan, onun kök sertifikası
PubSubClient mqtt(net);
mqtt.setServer("<Connection details'teki host>", 8883);
mqtt.setKeepAlive(60);
mqtt.setBufferSize(1024); // varsayılan 256 bayt, büyük JSON sessizce gitmez
mqtt.connect("esp32-atolye", TOKEN, NULL);
Kullanıcı adı token, şifre boş. Bağlandıktan sonra v1/telemetry‚ye QoS 1 ile gönder. Aynı token ile iki cihaz çalıştırma, ikinci bağlantı birincisini düşürür.
Bir de saat: ESP32 TLS için tarih kontrolü yapıyor, configTime() ile NTP alıp sonra bağlan, yoksa sertifika „henüz geçerli değil“ görünebilir. Bağlantı kuralları burada: MQTT.
Açılışta seri konsol açık olabilir. cmdline.txt’e baktın mı?
Biz şebekede sahada LoRaWAN kullanıyoruz, tek gateway ile kilometrelerce gidiyor, depo içi hiç dert olmaz. Pilli sayaçlar yıllarca gidiyor.
Kondansatörler ve adaptör değişince çöp bitti diyebilirim, iki gündür tek bozuk satır yok. Regex’i de ekledim, artık grafikte 9999 görmüyorum. Selim Bey teşekkürler, Gamze Hanım sizin tahmininiz de doğruymuş.
Format kontrolü yok, haklısınız, regex ekleyeceğim. Ama sebebi de anlamak istiyorum.
O zaman sebep zener. Su şebekesinde benzer basınç noktalarında aynı hatayı yaptık. 3.3V’luk BZX55’in kırılma bölgesi keskin değil, 2.5V civarından itibaren akım çekmeye başlıyor. 1k seri direnç üzerinde bu akım gerilim düşümü yapıyor, okuma tam üst uçta düşük çıkıyor. Doğrusal değil, sıcaklıkla da değişir; kalibrasyonla düzeltmek zor.
Bizim kullandığımız:
- Seri direnç kalsın (1k-4.7k).
- Zener yerine girişten 3.3V’a ve GND’ye Schottky çift diyot (BAT54S). Normal çalışmada sızıntısı çok düşük, ADS1115’in sınırı olan VDD + 0.3V’u aşan darbeyi beslemeye ve şaseye atıyor.
- Saha tarafında, kablo girişinde bir TVS diyot (örneğin SMBJ serisinden düşük gerilimli bir tane) ve ADC girişinde 100nF.
- Şöntü kartın üstünde, ADS1115’e yakın tutun.
3.3V hattının darbeyi yutabilmesi için orada da bir kondansatör olsun, yoksa diyotun bastığı akım hattı yükseltir.
Hermetry tarafında ham mA değerini de ayrı bir anahtar olarak gönderin, 3.6 mA altı gelirse kablo kopuk demektir, onun için bir alarm kuralı kurarsınız.
Von Türkçe mit KI übersetzt ·
Welche Pins verwendest du? Bemerkst du es?
Hangi pinleri kullanıyorsun? Fark ediyor.
Von Türkçe mit KI übersetzt ·
Dieses Abschalten ist klassisch, drei abgelehnte Topics beenden die Sitzung innerhalb einer Minute. Bei uns war es am ersten Tag genauso.
o kapanma klasik, üç reddedilen topic dakikada oturumu kapatıyor. bizde de ilk gün aynısı oldu
Von English mit KI übersetzt ·
Das kommt unserer Situation ziemlich nahe: zwei Bohrbrunnen und sechs Pumpstationen, die alle gleich aussehen. Brauche ich sechs Zeichnungen?
This is close to what we have, two boreholes and six pump stations that all look the same. Do I need six drawings?
Von Türkçe mit KI übersetzt ·
Wenn du nach einem Standard fragst, kenne ich keinen einzigen „Offline-IoT-Standard“. Alle nutzen lokales MQTT, Modbus TCP oder HTTP. Aber ich bin sicher, dass die Lösung für deine zweite Frage ein Gateway ist.
Standart dersen, bildiğim tek bir „offline IoT standardı“ yok. Herkes yerel MQTT, Modbus TCP ya da HTTP konuşuyor. Ama ikinci sorunun çözümü bir gateway, ona eminim.
Von Türkçe mit KI übersetzt ·
Bei den meisten dieser Steckdosen steckt ein HLW8012 oder dessen Klon BL0937, 8 Beine, und die Pins, die du beschreibst, passen genau. Ich habe in der Gemeinde in Wasserpumpen-Schaltschränken dieselben Chipmodule verwendet, so funktioniert es:
- CF (dein Pin 5): Impulsausgang, dessen Frequenz proportional zur Wirkleistung ist.
- CF1 (Pin 4): je nach SEL-Pin ein Impuls proportional zu entweder Strom oder Spannung.
- SEL (Pin 6): Auswahlpin vom Logikboard zum Chip. Beim HLW8012 ist SEL=1 Strom, beim BL0937 umgekehrt; wenn man das verwechselt, kommen unsinnige Werte heraus.
Auslesen ist einfach: Beide Pins an einen Interrupt anschließen und die Impulse in einem 1-Sekunden-Fenster zählen. Für die Leistung grob:
volatile uint32_t cfPulses = 0;
void IRAM_ATTR onCF() { cfPulses++; }
// setup:
attachInterrupt(digitalPinToInterrupt(PIN_CF), onCF, RISING);
// every second:
noInterrupts(); uint32_t n = cfPulses; cfPulses = 0; interrupts();
float power_w = n * powerFactor; // kalibrasyonla bulunacak
energy_wh += power_w / 3600.0;
Den powerFactor-Wert ermittelst du mit einer bekannten Last: Einen 100-W-Heizlüfter oder eine Glühlampe anschließen und die gezählten Impulse durch die reale Leistung teilen. Für die Spannung dasselbe, nur SEL ändern und CF1 verwenden.
Sicherheit: Beim Flashen des Codes die Steckdose vom Netz trennen, den ESP32-C3 per USB programmieren, dann abstecken und wieder einstecken. USB anzuschließen während sie am Netz hängt bedeutet, deinen Computer ans Netz zu hängen. Die Kalibrierung über Wi-Fi mit Log-Ansicht durchführen.
Sende an Hermetry einen energy_wh-Zähler, der zusammen mit power_w steigt; den täglichen Verbrauch später aus dem Zähler zu holen ist deutlich sauberer.
Bu prizlerin çoğunda HLW8012 ya da onun kopyası BL0937 var, 8 bacak ve tarif ettiğin pinler tam uyuyor. Ben belediyede su pompası panolarında aynı entegreli modüller kullandım, şöyle çalışıyor:
- CF (senin 5. pin): frekansı aktif güçle orantılı darbe çıkışı.
- CF1 (4. pin): SEL pinine göre ya akım ya gerilimle orantılı darbe.
- SEL (6. pin): lojik karttan entegreye giden seçim pini. HLW8012’de SEL=1 akım, BL0937’de tersi, bunu karıştırınca değerler saçma çıkıyor.
Okuması kolay: iki pini kesmeye bağla, 1 saniyelik pencerede darbe say. Güç için kabaca:
volatile uint32_t cfPulses = 0;
void IRAM_ATTR onCF() { cfPulses++; }
// setup:
attachInterrupt(digitalPinToInterrupt(PIN_CF), onCF, RISING);
// her saniye:
noInterrupts(); uint32_t n = cfPulses; cfPulses = 0; interrupts();
float power_w = n * powerFactor; // kalibrasyonla bulunacak
energy_wh += power_w / 3600.0;
powerFactor değerini bilinen bir yükle bul: 100 W’lık bir ısıtıcı ya da akkor ampul tak, sayılan darbeyi gerçek güce böl. Gerilim için de aynısını SEL’i değiştirip CF1’den yap.
Güvenlik: kodu yüklerken prizi şebekeden çek, ESP32-C3’ü USB ile programla, sonra kapat ve tak. USB bağlıyken şebekeye takmak, bilgisayarını şebekeye bağlamak demek. Kalibrasyonu da Wi-Fi üzerinden log izleyerek yap.
Hermetry’ye power_w ile birlikte artan bir energy_wh sayacı gönder, sonradan günlük tüketimi sayaçtan almak çok daha temiz oluyor.
Gizlilik için Ayşe, kafelerde ve AVM’lerde cihazın MAC’iyle takip edilmesin diye. Saha cihazında ise sadece dert.
Von Türkçe mit KI übersetzt ·
Esra, vielen Dank, genau so war es. Ich habe die 60 Geräte per CSV importiert, und wir haben die Tokens aus der heruntergeladenen Datei anhand der Seriennummer in die Gehäuse geladen. Gestern haben wir absichtlich die Sicherung herausgezogen und wieder eingesetzt, und alle haben sich innerhalb von 15 Sekunden sauber verbunden, im Log gab es kein einziges Takeover.Den AP haben wir ebenfalls gewechselt: Beim Ausbau auf 200 teilen wir ihn auf drei Deckenmontage-APs auf.
Esra çok teşekkürler, aynen öyleymiş. 60 cihazı CSV ile içe aktardım, indirdiğim dosyadaki token’ları seri numarasına göre kutulara yükledik. Dün bilerek sigortayı indirip kaldırdık, hepsi 15 saniye içinde temiz bağlandı, Log’da tek takeover yok.
AP’yi de değiştirdik, 200’e geçerken üç tavan tipi AP’ye bölüyoruz.
Von Türkçe mit KI übersetzt ·
Bei gleichmäßiger Motorlast kommt es ungefähr richtig heraus, aber wenn der Kompressor zwischen unbelastetem und belastetem Betrieb wechselt, ändert sich der cosφ, und Strom × Spannung liefert dir ohnehin nicht die echte Leistung. Für eine grobe Schätzung ist das in Ordnung.
Dengeli motor yükünde yaklaşık doğru çıkar ama kompresör yüksüz/yüklü geçiş yapınca cosφ değişiyor, akım×gerilim sana gerçek gücü vermez zaten. Kaba tahmin için tamam.

