jhhh

let lugarID = 3 // Cambiar según ubicación (1=canchas, 2=baños, 3=cafetería)
let ultimoEnvio = 0
let intervaloEnvio = 2000
let conectado = false
let ultimoPong = 0

// Configurar radio
radio.setGroup(50)
radio.setTransmitPower(7)

// Escuchar respuesta PONG del receptor
radio.onReceivedString(function (receivedString) {
    if (receivedString == "PONG") {
        conectado = true
        ultimoPong = input.runningTime()
        basic.showIcon(IconNames.Yes)
    }
})

// Enviar PING periódicamente para verificar conexión
basic.forever(function () {
    let tiempoActual = input.runningTime()

    // Verificar si seguimos conectados (si no recibimos PONG en 5 segundos)
    if (tiempoActual - ultimoPong > 5000) {
        conectado = false
        basic.showIcon(IconNames.No)
    }

    // Enviar PING cada segundo
    radio.sendString("PING")
    basic.pause(1000)

    // Solo enviar datos si hay conexión
    if (conectado && tiempoActual - ultimoEnvio >= intervaloEnvio) {
        let temp = input.temperature()
        radio.sendNumber(lugarID * 1000 + temp)
        ultimoEnvio = tiempoActual

        // Mostrar temperatura por consola
        serial.writeLine("Temperatura: " + temp)

        if (temp < 27) {
            pins.digitalWritePin(DigitalPin.P01)
            pins.digitalWritePin(DigitalPin.P10)
            serial.writeLine("🔵 P0 encendido (frío)")
        } else if (temp > 33) {
            pins.digitalWritePin(DigitalPin.P00)
            pins.digitalWritePin(DigitalPin.P11)
            serial.writeLine("🔴 P1 encendido (calor)")
        } 
        

        // Mostrar ubicación
        if (lugarID == 1) {
            basic.showString("C"// Canchas
        } else if (lugarID == 2) {
            basic.showString("B"// Baños
        } else if (lugarID == 3) {
            basic.showString("F"// Cafetería
        }

        basic.showNumber(temp)
    }
})

Comentarios

Entradas más populares de este blog

CARRUSEL CON DOM

COMPONENTES EN RACK

Ciclo do while