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

Hakan Keskin

hakan_dev

@keskin-h · Mitglied seit Dezember 2025

Neuling

Backend geliştirici · yazılım

Themen
5
Antworten
38
Punkte
0
Neuling10 Punkte an Mitglied

Erstellte Forenantworten

Ansicht von 15 Beiträgen – 16 bis 30 (von insgesamt 38)

Okumayı hızlı, göndermeyi seyrek yap, ikisi ayrı şeyler. Biz su tarafında böyle kuruyoruz:

  • Pi her saniye okumaya devam etsin.
  • Her değer için bir ölü bant: PT100’de 0.2 °C, debide %1 gibi. Değer son gönderilenden ölü banttan fazla saparsa gönder.
  • Hiç değişmese bile her 5 dakikada bir heartbeat olarak gönder.
  • Tepeler için anlık debiye güvenme, debimetrenin toplam (totalizer) register’ını gönder. Arada ne olursa olsun toplam kaybolmaz, Hermetry’de increase ile saatlik hacmi alırsın.

Mesaj sayısı için: bir mesajın içinde kaç kayıt olduğu önemli değil, mesaj başına sayılıyor. Değişenleri biriktirip 30 saniyede bir ts’li dizi olarak tek mesajda gönderirsen hem kotaya hem detaya iyi gelir.

1.4e-38 kelime sırası. İki 16 bitlik register’ı ters birleştiriyorsun. Debimetrenin dokümanına bak, çoğu CDAB kullanıyor:

import struct
hi, lo = rr.registers[0], rr.registers[1]
abcd = struct.unpack(">f", struct.pack(">HH", hi, lo))[0]
cdab = struct.unpack(">f", struct.pack(">HH", lo, hi))[0]

Kota hesabı burada: Mesaj kotası ve kullanım

Ağ geçidi yine bağlanıyor…
Akzeptierte Lösung♥ 5

Von Türkçe mit KI übersetzt ·

Beides hatte ich selbst, bei einem Wägeprojekt.Portname: Die ttyUSB-Nummer wird nach der Reihenfolge der Erkennung vergeben, also nicht darauf verlassen. Schau mit ls -l /dev/serial/by-id/ nach, dort gibt es einen dauerhaften Namen mit der Seriennummer des Wandlers, den nimm. Wenn du zwei gleiche Chips ohne Seriennummern hast, kannst du per udev-Regel nach USB-Port benennen, aber meistens reicht by-id.readline: Standardmäßig wartet es auf
. Die meisten Anzeigen beenden Zeilen mit , deshalb kehrt es nie zurück. Außerdem wartet es ohne Timeout bei abgezogenem Kabel ewig. Das benutze ich:

PORT = '/dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A10K3XYZ-if00-port0'
ser = serial.Serial(PORT, 9600, bytesize=8, parity='N', stopbits=1, timeout=2)
buf = b''
while True:
    chunk = ser.read(64)
    if not chunk:
        continue          # keine Daten seit 2 s, hier loggen
    buf += chunk
    while b'' in buf:
        line, buf = buf.split(b'', 1)
        w = parse_weight(line)   # z. B. b'ST,GS,+0012.45kg'
        if w is not None:
            client.publish('v1/telemetry', json.dumps({'weight_kg': w}), qos=1)

Wenn die Anzeige mehrmals pro Sekunde ausgibt, sende nicht jede Zeile. Sende einmal pro Sekunde oder nur die ST-Zeilen (stabil). Schreib eine systemd-Unit für den Dienst, trag deinen eigenen Benutzer in die Zeile User= ein und nimm Restart=always.

Ağ geçidi yine bağlanıyor…
Akzeptierte Lösung♥ 5

Von Türkçe mit KI übersetzt ·

Du hast bereits den eigenen Zähler des PZEM, energy_wh. Nimm den, und mach dir nicht die Mühe, Energie aus Watt abzuleiten. Ich hatte genau dasselbe, als ich mit demselben Modul den Kühlschrank bei mir zu Hause gemessen habe.Wähle in der Chart-Karte den Schlüssel energy_wh, als Bucket 1 Tag (1d), als Aggregat increase. increase ist für zählerartige Werte gedacht: Es subtrahiert den letzten Wert des vorherigen Buckets vom letzten Wert des jeweiligen Buckets. Wenn der Zähler zurückfällt (wenn du den PZEM zurücksetzt oder er bei 9999 kWh umspringt), zählt es diesen Bucket so, als hätte er bei null begonnen, du siehst also keinen negativen Wert.Der Vorteil: Selbst wenn der ESP32 eine Zeit lang die Verbindung verliert, zählt der Zähler im PZEM weiter, und nach dem Wiederverbinden geht die Energiedifferenz dazwischen nicht verloren. avg × 24 verliert diese Lücke.Die Mitternachtsteilung, die du erwähnst, liegt meines Erachtens hieran: Tagesbuckets werden nach UTC geschnitten, also von Mitternacht bis Mitternacht UTC. Da die Türkei UTC+3 ist, beginnt dein „Tag“ scheinbar um 03:00 Uhr morgens. Wenn du das im Bericht mit einer Zeile erwähnst, ist das kein Problem.Wenn du zusätzlich einen abgeleiteten Schlüssel im Stream willst (zum Beispiel die Differenz pro Messwert), gibt es außerdem den Delta-Block, für die tägliche Summe ist er aber nicht nötig. Beides wird hier erklärt: Abgeleitete Werte.

Ağ geçidi yine bağlanıyor…
Akzeptierte Lösung♥ 2

Bir su projesinde aynı kararı verdik, şöyle yaptık ve çalışıyor:

Hazır bir IO-Link master aldık, Ethernet tarafında Modbus TCP konuşanlardan. Birkaç üreticinin böyle modeli var, her portun proses verisi ve ISDU ile okunan teşhis değerleri Modbus register’larına haritalanıyor. Model seçerken tek şart: dökümanında register haritası açıkça yazıyor olsun.

Sonra iki yol var:

  1. Lisanslı bir ağ geçidi Modbus TCP’yi okuyorsa (hangi protokoller olduğu modele bağlı) master’ı orada tanımlıyorsunuz, her sensör Hermetry’de ayrı child cihaz olarak çıkıyor.
  2. Kendi kutunuzda (bizde bir Pi) pymodbus ile okuyup v1/gw/telemetry ile gönderiyorsunuz:
{"PT-101": {"values": {"p_bar": 3.42, "sensor_temp": 31.5}},
 "LT-102": {"values": {"level_cm": 214, "dirty_lens": 0}}}

Hermetry her ismi ilk raporda child cihaz olarak açıyor. Ağ geçidini eklerken „This device is a gateway“ işaretli olmalı, yoksa v1/gw/* konuları reddediliyor. Teşhis bitlerini 0/1 sayı olarak gönderin ki grafikte görünsün ve alarm kurulabilsin.

Dökümantasyon: Ağ geçidinin arkasındaki cihazlar

Ağ geçidi yine bağlanıyor…
Akzeptierte Lösung♥ 8

Von Türkçe mit KI übersetzt ·

Derya Hanım, vielen Dank, es läuft seit zwei Tagen. Beim ersten Speichern gab die Karte eine Standortwarnung aus; nachdem ich die Anlage als Asset hinzugefügt und die Koordinaten eingegeben hatte, wurde gespeichert. Ich habe den MOSFET mit einem Pull-down angeschlossen, und jetzt blinken die Lampen während des Hochfahrens des Pi nicht mehr. Ein Relais hatte ich auch ausprobiert, aber das Klickgeräusch hat offenbar den Wächter gestört 😄

Ağ geçidi yine bağlanıyor…
♥ 0

İkisi de doğru, ikisini birden düzeltmen lazım.

Baud: ESP’ye bir kez 115200’den kalıcı baud değiştirme komutu gönder. SoftwareSerial 115200’de yazarken genelde sorun çıkarmıyor, okurken bozuyor, o yüzden komut gider. Birkaç deneme gerekebilir:

mySerial.begin(115200);
mySerial.println("AT+UART_DEF=9600,8,1,0,0");
delay(200);
mySerial.begin(9600);
mySerial.println("AT");   // artık temiz OK gelmeli

Güç: Uno’nun 3.3V pini 50 mA civarı veriyor, ESP-01 gönderirken birkaç yüz mA çekiyor. „WIFI DISCONNECT“ ve „busy p…“ tam bunun belirtisi. 5V’tan ayrı bir AMS1117-3.3 ile besle, ESP’nin dibine 100 µF + 100 nF koy. Uno TX → ESP RX hattına da gerilim bölücü (1k/2k), ESP 3.3V seviyesinde.

Hermetry kısmı: cihaz API’si HTTPS bekliyor. AT firmware’inde SSL desteği sürüme göre değişiyor ve ESP-01’in belleğinde zorlanıyor. Benim tavsiyem Uno’yu tamamen çıkarmak: ESP-01’e Arduino core ile kendi sketch’ini yükle, sensörü doğrudan ona bağla, WiFiClientSecure ile POST at.

Ağ geçidi yine bağlanıyor…
Akzeptierte Lösung♥ 4

Von Türkçe mit KI übersetzt ·

Der ESP32 sollte im Deep Sleep eigentlich im Mikroampere-Bereich liegen, die 10 mA könnten vom USB-Chip und der LED auf dem DevKit stammen. Miss noch einmal mit dem nackten Modul.

Ağ geçidi yine bağlanıyor…
♥ 0
Ansicht von 15 Beiträgen – 16 bis 30 (von insgesamt 38)