No, esta no es una buena solución. La pinza Zener en su circuito no hace nada útil. En general, causará más disipación que solo una resistencia en serie con el LED.
Dijo que el LED cae 1.2 V cuando está encendido, pero no a qué corriente desea ejecutarlo. Digamos 1 mA para escoger algo. Incluso con un CTR (índice de transferencia actual), todavía tienes mucha capacidad actual en la salida para controlar algo así como un pullup bajo de 10 kΩ.
Con 24 V aplicados y el LED bajando 1.2 V, otra cosa debe eliminar los 22.8 V. restantes. También sabemos que la corriente debe ser de aproximadamente 1 mA. Dada una tensión y una corriente deseada, podemos calcular la resistencia que permitiría que esa corriente fluya: (22.8 V) / (1 mA) = 22.8 kΩ. El valor común de 20 kΩ funcionará bien.
Ahora que hemos seleccionado un valor, veamos a qué se derivan los otros parámetros. (22.8 V) / (20 kΩ) = 1.14 mA, que es suficiente para controlar el LED como se explicó anteriormente. La potencia disipada por la resistencia es (22.8 V) 2 / (20 kΩ) = 26 mW. Eso es tan poco que le costará notar un aumento de temperatura en un paquete 0805 con su dedo, y ciertamente está bien dentro de las especificaciones, incluso para una resistencia pequeña.
Aquí está el circuito general del que estoy hablando:
Este optoacoplador en particular tiene un CTR de 3. Eso significa que con 1.14 mA en, puede soportar hasta 3.4 mA en la salida. Incluso con 5 V en el otro extremo de un pullup, este circuito solo requiere una capacidad de salida de 500 µA. Puede hacer esto al revés y ver qué tan bajo puede ser soportado un pullup: (5 V) / (3.4 mA) = 1.5 kΩ. Un pullup de 2 kΩ, por ejemplo, estaría bien dentro de las especificaciones aquí.
Dado que está intentando detectar un evento que dura 1 segundo, una recuperación mayor como 10 kΩ o lo que sea que esté integrado en su microcontrolador debería funcionar bien. Si la sincronización de los bordes es inferior a 20 µs, entonces necesita usar un opto-acoplador diferente, que probablemente tendrá un CTR más bajo.