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

Esra Ş.

esra.dev

@esra_s29 · Se unió el octubre 2025

Recién llegado

Backend geliştirici · yazılım · sahada 8 yıl

Temas
3
Respuestas
26
Puntos
0
Recién llegado10 puntos para Miembro

Respuestas de foro creadas

Viendo 15 entradas – de la 1 a la 15 (de un total de 26)

Oğuz Bey doğru yerde. Bir su pompası istasyonunda birebir aynısını yaşamıştım, iki ayrı sebebi var.

1) Linux açılış mesajlarını ve login konsolunu seri porta veriyor, 115200’deki çöp o. cmdline.txt’ten console=serial0,115200 kısmını sil. Ya da raspi-config > Interface Options > Serial Port: login shell Hayır, donanım Evet. serial-getty servisinin de kapalı olduğunu kontrol et.

2) Asıl kalıcı çözüm DE/RE pini. Pi açılırken GPIO17 bir süre tanımsız kalıyor, MAX485 vericiyi açık bırakabiliyor, hatta gelen her şey sayaca gidiyor. DE/RE’den GND’ye 10k pull-down koy, pin sürülmediği sürece modül dinleme modunda kalsın.

Bir de Zero 2 W’de serial0 varsayılan olarak mini UART’a gidiyor, onun baud’u çekirdek saatine bağlı. Bluetooth’u kapatıp PL011’i al:

# config.txt
enable_uart=1
dtoverlay=disable-bt
# script
inst = minimalmodbus.Instrument("/dev/ttyAMA0", 1)
inst.serial.baudrate = 9600
inst.serial.timeout = 0.5
inst.clear_buffers_before_each_transaction = True

Sayaç kilitlendiğinde clear_buffers da işe yarıyor, yarım kalmış bir cevabı bir sonraki sorguya taşımıyor.

Kayıtta yoksa olmamıştır.
Solución aceptada♥ 4

Çok mantıklı, uyguladım. PPK2 ile uyku 6,8 µA, uyanma döngüsü ortalama 1,4 s’de 88 mA çıktı. Cihaz artık her mesajda enerji.mAs ve pil.v gönderiyor, grafikte sum ile günlük toplamı görüyorum, günde 18 mAh civarı. 2×AA ile kabaca 4 ay ediyor, beklediğimden kısa, WiFi bağlanma süresini kısaltmaya çalışacağım. INA219’u da çekmeceye kaldırdım.

Kayıtta yoksa olmamıştır.
♥ 0

Pasif taramaya geçtim, 30 sensörün hepsi 10 saniye içinde görünüyor, hiç bağlantı hatası yok. Dakikada bir tek gw mesajı gidiyor. Sensörlerden 12’si şifreli yayını destekliyor, onlara bindkey tanımladık, kalanları değiştirme listesine koyduk.

Kayıtta yoksa olmamıştır.
♥ 1

Traducido del Türkçe por IA ·

Ampliar la ventana aumenta el retraso, hay que hacer lo contrario. Tuve el mismo problema una vez mientras trabajaba con drones.La fuente del retraso es el promedio en sí: un promedio móvil de 20 lecturas llega con unos 1 segundo de retraso, y el error crece a medida que aumenta la velocidad de giro. La falta de calibración que mencionó Büşra Hanım también explica la diferencia entre el giro a la derecha y a la izquierda.La solución es combinarlo con el giroscopio. El giroscopio detecta la rotación al instante pero se desvía lentamente, el magnetómetro es lento pero no se desvía. Un filtro complementario combina ambos:

// dt = 0.1 s, gz = derece/s (z ekseni jiroskop)
float a = 0.98;
heading = a * (heading + gz * dt) + (1 - a) * magHeading;
// 0/360 geçişini düzelt
float fark = magHeading - heading;
if (fark > 180) heading += 360 * (1 - a);
if (fark < -180) heading -= 360 * (1 - a);
heading = fmod(heading + 360, 360);

Si la placa no tiene giroscopio, añadir un MPU6050 es la forma más barata. Primero, haga girar el barco dos vueltas completas en el agua y realice la calibración hard/soft iron.El problema del 180 es aparte: un ángulo no se puede promediar. El promedio de 359 y 1 da 180. El gráfico semanal lee valores agregados por hora y la función predeterminada es average. En el gráfico del rumbo, cambie la función a last, y para el análisis envíe heading_sin y heading_cos junto al rumbo; su promedio sale correctamente.

Kayıtta yoksa olmamıştır.
Solución aceptada♥ 7

Traducido del Türkçe por IA ·

¿Vas a usar la MAC como nombre del dispositivo o en un campo aparte? Como nombre no se leerá muy bien.

Kayıtta yoksa olmamıştır.
♥ 0

Pi OS’ta netplan yok Hakan, ayarı NetworkManager’da yapmak lazım. Bizim sahadaki kutularda da aynısı vardı.

NetworkManager iki yerde rastgele MAC kullanabiliyor: tarama sırasında ve bağlantının kendisinde. İkisini de kapatın:

# /etc/NetworkManager/conf.d/99-sabit-mac.conf
[device]
wifi.scan-rand-mac-address=no

[connection]
wifi.cloned-mac-address=permanent
ethernet.cloned-mac-address=permanent

Ayrıca mevcut bağlantı profili kendi değerini taşıyorsa global ayarı ezer, onu da düzeltin:

nmcli -f 802-11-wireless.cloned-mac-address con show "saha-wifi"
sudo nmcli con modify "saha-wifi" 802-11-wireless.cloned-mac-address permanent
sudo systemctl restart NetworkManager

stable değeri de var, her ağ için sabit ama gerçek olmayan bir MAC verir. Sizin rezervasyon gerçek MAC’e yapıldığı için permanent doğru seçenek. Yeniden başlatıp ip link show wlan0 çıktısında link/ether ile permaddr aynı mı bakın.

Kayıtta yoksa olmamıştır.
Solución aceptada♥ 9

Traducido del Türkçe por IA ·

Ilgaz tiene razón con el AP, pero el takeover en el log dice otra cosa, y la causa real es la última frase que escribiste.En Hermetry cada dispositivo tiene una sola sesión. Cuando llega una segunda conexión del mismo dispositivo, se cierra la primera y se toma su lugar. Si 60 cajas se conectan con el mismo token, Hermetry las ve como un único dispositivo: cada conexión nueva tira la anterior, la que cae vuelve a conectarse, y el bucle no termina nunca. Un dispositivo que hace esto de forma continua desde dos redes se retiene un tiempo, y eso es la notificación «takeover fight». Normalmente las conexiones están repartidas, por eso no lo habías notado; al volver la luz y bajar las 60 a la vez, explotó.Qué hacer:1. Cada caja con sus propias credenciales. En lugar de añadir los 200 dispositivos uno a uno, puedes hacer una importación masiva por CSV desde la página Imports (hasta 1.000 filas por archivo). Primero muestra una ejecución en seco, y los tokens de los dispositivos nuevos vienen en un archivo que solo se puede descargar una vez. Como alternativa, puedes usar una clave de provisioning en el perfil para que cada dispositivo obtenga su propio token en el primer arranque.2. Añade un retardo aleatorio antes de reconectar. Si llega CONNACK 3, espera y reintenta, pero no dejes que todos lo hagan en el mismo segundo:

uint32_t backoff = 2000 + (esp_random() % 8000);   // 2-10 sn
if (!mqtt.connected()) { delay(backoff); mqtt.connect(id, token, ""); }

3. Keepalive entre 30 y 300 segundos. 60 está bien.4. No confíes en un único AP doméstico para 200 cajas; repártelas entre 2-3 APs empresariales.Los detalles de sesión y CONNACK están en la página de MQTT.

Kayıtta yoksa olmamıştır.
Solución aceptada♥ 5

Traducido del Türkçe por IA ·

No es la velocidad en baudios, es la tensión. Si mediste -9 V, la respuesta ya está ahí.La señal RS-232 oscila aproximadamente entre ±3 y ±15 V y su lógica es invertida: en reposo es negativa, el «1» es negativo y el «0» es positivo. La UART de la Pi, en cambio, es TTL de 3,3 V, de 0 a 3,3 V, con lógica normal. Al conectarlas directamente, tanto el nivel como la polaridad son incorrectos, y esos caracteres basura en la salida son exactamente lo que cabe esperar. Además, aplicar una tensión negativa y unos 9 V al GPIO15 puede dañar el pin. Desconéctalo ya; es cuestión de suerte que la Pi siga en buen estado.En dos de mis instalaciones hice el mismo trabajo y usé dos caminos:1. Módulo MAX3232 (MAX3232, no MAX232; funciona a 3,3 V). VCC a los 3,3 V de la Pi, el lado TTL a GPIO14/15 y el lado RS-232 al DB9. 2. La opción más limpia: un convertidor USB-RS232 (chip PL2303 o FTDI). Aparece como /dev/ttyUSB0 y no tienes que tocar nada del GPIO.Sobre la pantalla de inicio de sesión: la consola serie de la Pi está abierta en /dev/serial0. En raspi-config > Interface > Serial Port, responde No a «login shell over serial» y Sí a «serial port hardware».Y sobre el cruce de TX/RX: no sabemos si la báscula es DCE o DTE. Si no llegan datos, intercambia los pines 2 y 3.Enviar los datos a Hermetry después es sencillo: con paho y un token de acceso, publicas en v1/telemetry:

import re, json, serial
import paho.mqtt.client as mqtt

c = mqtt.Client(client_id="kantar-1")
c.username_pw_set(TOKEN, "")
c.tls_set()
c.connect(BROKER_HOST, 8883, keepalive=60)
c.loop_start()

s = serial.Serial('/dev/ttyUSB0', 9600, timeout=2)
while True:
    line = s.readline().decode('ascii', 'ignore')
    m = re.search(r'(-?d+.d+)s*kg', line)
    if m:
        c.publish("v1/telemetry", json.dumps({"weight_kg": float(m.group(1))}), qos=1)
Kayıtta yoksa olmamıştır.
Solución aceptada♥ 8

Traducido del Türkçe por IA ·

Hakan, revisa la documentación, no existe nada de eso. Hermetry no tiene un informe prefabricado programado ni enviado por correo electrónico, lo indica claramente. Pero la vía que funciona hoy es esta, nosotros hicimos exactamente eso en una fábrica textil:Medición: para 38A, consigue un SCT-013-050 (salida de 1V), conéctalo al ADC del ESP32 con un bias de 1,65V y haz el cálculo RMS al estilo EmonLib directamente en el dispositivo. Haz que el dispositivo envíe un current_a cada 30 segundos. Si necesitas kWh reales, necesitarás un analizador de energía con Modbus en riel DIN. Acepta un margen de error del 10 % con pinza + cosφ estimado.Potencia y energía: en el root flow, coloca un bloque Calculate antes de Save telemetry y deriva power_kw. Los detalles están en la página de valores derivados.

expr:   round(1.732 * 400 * msg.payload.current_a * 0.85 / 1000, 2)
target: msg.payload.power_kw

Informe: coloca una tarjeta de gráfico en el panel, establece la agrupación por día y, en la configuración de la tarjeta, marca Download data (CSV). A fin de mes, cambia la ventana a Este mes y descarga el Excel. Si quieres automatizarlo, un pequeño script puede obtener los valores diarios de la API de history con agg=sum, o con increase si envías un contador, y el correo lo enviarás tú mismo.

Kayıtta yoksa olmamıştır.
Solución aceptada♥ 8

Bunal Bey’in dediğine katılıyorum, eğik girişi Mx/My ile görmek güzel ama pahalı. Çoğu atölyede tek eksenli yük hücresi + strok ölçümü (bir lineer potansiyometre ya da enkoder) ile kuvvet-yol eğrisi alınıyor, eğik giriş zaten eğrinin şeklinden belli oluyor.

Forge kısmı: dokümanlarda Forge’un kendi sayfasını bulamadım, o yüzden parça bazlı kaydı nasıl yaptığını söyleyemem, neyi kapsadığını satış tarafına sormak lazım. Bu iş için şart da değil.

Normal IoT eklentisiyle şöyle yapabilirsiniz, biz bir müşteride böyle kurduk:

Presin yanında küçük bir kontrolcü (ESP32 + HX711 ya da endüstriyel bir yük hücresi amplifikatörü) her geçmede eğriyi yerelde örnekliyor, geçme bitince tek bir kayıt gönderiyor:

{"part_no": "RY-24117", "f_peak_kn": 12.8, "stroke_mm": 18.4, "ok": 1}

part_no metin olarak son değer görünüyor, sayılar grafikte, her kayıt geçmişte duruyor ve dışa aktarılabiliyor. Profilde f_peak_kn için üst/alt sınırlı bir alarm kuralı, ok == 0 için ayrı bir kural. Günlük adet için bir pano kartında ok anahtarının toplamı yeterli. Ham eğrinin tamamını göndermeyin, kontrolcünün SD kartında tutun, gerekirse müşteri istediğinde çıkarırsınız. CSV için: Verileri dışa aktarma.

Kayıtta yoksa olmamıştır.
Solución aceptada♥ 7

Bu cihazı geçen yıl bir müşteride okudum, üç tane tuzağı var, büyük ihtimalle üçüne birden takıldınız 🙂

1. Baud: SDM120 fabrikadan 2400 baud geliyor, 9600 değil. Menüden değiştirmediyseniz 2400 kullanın, 8N1.

2. Fonksiyon kodu: ölçümler input register’larda, holding’de değil. Yani FC04, readInputRegisters. Gerilim 30001 yani adres 0x0000, akım 0x0006, aktif güç 0x000C, toplam aktif enerji 0x0156.

3. Veri tipi: her değer iki register’lık 32 bit float, büyük sonlu (yüksek word önce).

float regsToFloat(uint16_t hi, uint16_t lo) {
  uint32_t v = ((uint32_t)hi << 16) | lo;
  float f; memcpy(&f, &v, 4); return f;
}

if (node.readInputRegisters(0x0000, 2) == node.ku8MBSuccess) {
  float volts = regsToFloat(node.getResponseBuffer(0), node.getResponseBuffer(1));
}

Bir de istekler arasında en az 100-200 ms bekleyin, ucuz analizörler peş peşe sorguya kızıyor. Hermetry’ye gönderirken enerjiyi kümülatif kWh olarak gönderin, günlük tüketimi orada «increase» ile alırsınız.

Kayıtta yoksa olmamıştır.
Solución aceptada♥ 6

Traducido del Türkçe por IA ·

No la calcula, Ilgaz, y ese fue también mi error en el primer proyecto. Hermetry no calcula zonas a partir de la posición ni de balizas BLE, y no hay polígono de geofence. La etiqueta, o la pasarela que la oye, decide por sí misma la habitación y envía el nombre de la zona. La solución lista para seguimiento de personal está montada exactamente así: la clave zone es un nombre de zona o outside.Para tu escala, mi recomendación es BLE. UWB es para precisión submétrica; a nivel de habitación no compensa. La configuración sería así:

  1. Un receptor BLE fijo por habitación (basta un ESP32, enchufado a la toma). Todos envían el RSSI de las etiquetas a un servidor local o a una Pi.
  2. La Pi elige para cada etiqueta la habitación que la oyó más fuerte en los últimos 10-15 segundos, y pone una histéresis (no cambiar a una nueva habitación si no es al menos 6 dB más fuerte); si no, la silla de la puerta saltará entre dos habitaciones.
  3. La Pi se conecta como pasarela y reporta cada etiqueta como dispositivo hijo:
v1/gw/telemetry
{
  "pompa-07":   {"values": {"zone": "A-3-314", "zone_id": 3314, "battery": 81}},
  "sandalye-12": {"values": {"zone": "A-2-208", "zone_id": 2208, "battery": 64}}
}

Añadí zone_id a propósito: zone es texto, y las claves de texto no tienen historial en gráficas, solo se ve el último valor. Para la pregunta «¿dónde estuvo la bomba ayer?» necesitas un código numérico.En Sites & Assets crea las habitaciones con el tipo Room o con tu propio tipo ZONE, y mantén sus códigos iguales a los nombres que envía la pasarela. Para el panel de árbol y las listas, la asociación again la hace la pasarela.La página de la solución lista describe muy bien el modelo, puedes adaptarlo desde allí: Personel takibi.

Kayıtta yoksa olmamıştır.
Solución aceptada♥ 1
Viendo 15 entradas – de la 1 a la 15 (de un total de 26)