Neu: Die KI-Firewall überwacht die gesamte Plattform und erklärt jeden Vorfall in einfachen Worten. So funktioniert es

Oğuz Özkan

oguz59

@oguz-ozkan · Mitglied seit Mai 2025

Neuling

Akıllı şehir mühendisi · su ve atık su

Themen
5
Antworten
36
Punkte
0
Neuling10 Punkte an Mitglied

Erstellte Forenantworten

Ansicht von 15 Beiträgen – 1 bis 15 (von insgesamt 36)

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.

Akzeptierte Lösung♥ 9

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ş.

♥ 1

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.

Akzeptierte Lösung♥ 9

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.

♥ 2

Von English mit KI übersetzt ·

Das kommt unserer Situation ziemlich nahe: zwei Bohrbrunnen und sechs Pumpstationen, die alle gleich aussehen. Brauche ich sechs Zeichnungen?

♥ 0

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.

♥ 0

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.

Akzeptierte Lösung♥ 6

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.

♥ 0

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.

♥ 0
Ansicht von 15 Beiträgen – 1 bis 15 (von insgesamt 36)