Nouveau : le pare-feu IA surveille toute la plateforme et explique chaque incident en termes simples. Découvrez comment ça marche

Hakan Keskin

hakan_dev

@keskin-h · Membre depuis décembre 2025

Nouveau

Backend geliştirici · yazılım

Sujets
5
Réponses
38
Points
0
Nouveau10 points pour Membre

Toutes mes réponses sur les forums

15 sujets de 16 à 30 (sur un total de 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…
Solution acceptée♥ 5

Traduit de Türkçe par IA ·

J’ai rencontré les deux, dans un projet de pesée.Nom du port : le numéro ttyUSB est attribué selon l’ordre d’énumération, donc ne lui fais pas confiance. Regarde avec ls -l /dev/serial/by-id/, il y a un nom permanent qui contient le numéro de série du convertisseur, utilise-le. Si tu as deux puces identiques sans numéro de série, tu peux les nommer selon le port USB avec une règle udev, mais la plupart du temps by-id suffit.readline : par défaut, il attend
. La plupart des indicateurs terminent leurs lignes par , donc il ne rend jamais la main. De plus, sans timeout, il attend indéfiniment quand le câble est débranché. Voici ce que j’utilise :

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          # pas de données depuis 2 s, journaliser ici
    buf += chunk
    while b'' in buf:
        line, buf = buf.split(b'', 1)
        w = parse_weight(line)   # ex. b'ST,GS,+0012.45kg'
        if w is not None:
            client.publish('v1/telemetry', json.dumps({'weight_kg': w}), qos=1)

Si l’indicateur affiche plusieurs fois par seconde, n’envoie pas chaque ligne. Envoie une fois par seconde, ou seulement les lignes ST (stable). Écris une unit systemd pour le service, mets ton propre utilisateur dans la ligne User=, et utilise Restart=always.

Ağ geçidi yine bağlanıyor…
Solution acceptée♥ 5

Traduit de Türkçe par IA ·

Tu as déjà le compteur propre du PZEM, energy_wh. Utilise-le, inutile de calculer l’énergie à partir des watts. J’ai vécu la même chose en mesurant le réfrigérateur chez moi avec le même module.Dans la carte Chart, sélectionne la clé energy_wh, bucket de 1 jour (1d), agrégat increase. increase est prévu pour les valeurs de type compteur : il soustrait la dernière valeur du bucket précédent à la dernière valeur de chaque bucket. Si le compteur redescend (si tu réinitialises le PZEM ou s’il repasse à zéro à 9999 kWh), il compte ce bucket comme s’il partait de zéro, donc tu ne verras pas de valeur négative.L’avantage : même si l’ESP32 se déconnecte un moment, le compteur continue de compter dans le PZEM, et quand la connexion revient, l’écart d’énergie entre-temps n’est pas perdu. avg × 24 fait perdre ce trou.La coupure à minuit dont tu parles, à mon avis, c’est ceci : les buckets journaliers sont découpés selon l’UTC, de minuit à minuit UTC. Comme la Turquie est en UTC+3, ta « journée » semble commencer à 03:00 du matin. Si tu l’indiques en une ligne dans le rapport, ce ne sera pas un problème.Si tu veux aussi une clé dérivée dans le flux (par exemple la différence à chaque lecture), il existe un bloc Delta, mais il n’est pas nécessaire pour un total journalier. Les deux sont expliqués ici : Valeurs dérivées.

Ağ geçidi yine bağlanıyor…
Solution acceptée♥ 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…
Solution acceptée♥ 8

Traduit de Türkçe par IA ·

Derya Hanım, merci beaucoup, ça fonctionne depuis deux jours. Au premier enregistrement, la carte a affiché un avertissement de position ; après avoir ajouté le site comme actif et saisi les coordonnées, l’enregistrement a fonctionné. J’ai branché le MOSFET avec un pull-down, et maintenant les lampes ne clignotent plus pendant le démarrage du Pi. J’avais aussi essayé un relais, mais le bruit de déclenchement dérangeait apparemment le gardien 😄

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…
Solution acceptée♥ 4

Traduit de Türkçe par IA ·

L’ESP32 devrait en réalité consommer de l’ordre du microampère en deep sleep, les 10 mA proviennent peut-être de la puce USB et de la LED de la carte DevKit. Refais la mesure avec le module nu.

Ağ geçidi yine bağlanıyor…
♥ 0
15 sujets de 16 à 30 (sur un total de 38)