Novedad: el cortafuegos de IA supervisa toda la plataforma y explica cada incidente con palabras sencillas. Vea cómo funciona

Hakan Keskin

hakan_dev

@keskin-h · Se unió el diciembre 2025

Recién llegado

Backend geliştirici · yazılım

Temas
5
Respuestas
38
Puntos
0
Recién llegado10 puntos para Miembro

Respuestas de foro creadas

Viendo 15 entradas – de la 16 a la 30 (de 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…
Solución aceptada♥ 5

Traducido del Türkçe por IA ·

Viví las dos cosas, en un proyecto de báscula.Nombre del puerto: el número ttyUSB se asigna según el orden de enumeración, así que no te fíes de él. Revisa con ls -l /dev/serial/by-id/, ahí hay un nombre permanente que contiene el número de serie del convertidor, úsalo. Si tienes dos chips iguales sin números de serie, puedes nombrarlos por puerto USB con una regla udev, pero casi siempre basta con by-id.readline: por defecto espera
. La mayoría de los indicadores terminan las líneas con , así que nunca retorna. Además, si no pones timeout, espera para siempre cuando se desconecta el cable. Esto es lo que uso:

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          # sin datos durante 2 s, registrar aquí
    buf += chunk
    while b'' in buf:
        line, buf = buf.split(b'', 1)
        w = parse_weight(line)   # p. ej. b'ST,GS,+0012.45kg'
        if w is not None:
            client.publish('v1/telemetry', json.dumps({'weight_kg': w}), qos=1)

Si el indicador imprime varias veces por segundo, no envíes cada línea. Envía una vez por segundo, o solo las líneas ST (estable). Escribe una unit de systemd para el servicio, pon tu propio usuario en la línea User= y usa Restart=always.

Ağ geçidi yine bağlanıyor…
Solución aceptada♥ 5

Traducido del Türkçe por IA ·

Ya tienes el contador propio del PZEM, energy_wh. Úsalo, no te compliques derivando la energía a partir de los vatios. Yo viví lo mismo al medir el frigorífico de casa con el mismo módulo.En la tarjeta Chart, selecciona la clave energy_wh, bucket de 1 día (1d), agregado increase. increase está pensado para valores tipo contador: resta el último valor del bucket anterior al último valor de cada bucket. Si el contador retrocede (si reinicias el PZEM o si vuelve a cero en 9999 kWh), cuenta ese bucket como si hubiera empezado desde cero, así que no verás un valor negativo.La ventaja es que, aunque el ESP32 se desconecte un tiempo, el contador sigue contando en el PZEM, y al reconectarse la diferencia de energía de ese intervalo no se pierde. avg × 24 pierde ese hueco.La partición a medianoche que mencionas creo que se debe a esto: los buckets diarios se cortan según UTC, de medianoche a medianoche UTC. Como Turquía es UTC+3, tu «día» parece empezar a las 03:00. Si lo anotas en una línea en el informe, no será un problema.Si además quieres una clave derivada en el flujo (por ejemplo, la diferencia en cada lectura), existe el bloque Delta, pero no es necesario para el total diario. Ambos se explican aquí: Valores derivados.

Ağ geçidi yine bağlanıyor…
Solución aceptada♥ 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…
Solución aceptada♥ 8

Traducido del Türkçe por IA ·

Derya Hanım, muchas gracias, lleva funcionando dos días. En el primer guardado la tarjeta mostró una advertencia de ubicación; al añadir el sitio como activo e introducir las coordenadas, se guardó. Conecté el MOSFET con pull-down y ahora las luces ya no parpadean mientras arranca la Pi. También había probado con un relé, pero el chasquido molestaba al vigilante 😄

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…
Solución aceptada♥ 4

Traducido del Türkçe por IA ·

El ESP32 debería estar en el nivel de microamperios en deep sleep, los 10 mA podrían venir del chip USB y del LED de la DevKit. Vuelve a medir con el módulo desnudo.

Ağ geçidi yine bağlanıyor…
♥ 0
Viendo 15 entradas – de la 16 a la 30 (de un total de 38)