33 lines
926 B
Python
33 lines
926 B
Python
# An improved version of MqttSignalHead.py by GitHub user ggee.
|
|
# https://github.com/JMRI/JMRI/issues/12767
|
|
#
|
|
# This script does not require any manual configuration
|
|
# but works out of the box.
|
|
|
|
import java
|
|
import java.beans
|
|
import jmri
|
|
import apps
|
|
|
|
# 0 = Dark
|
|
# 1 = Red
|
|
# 2 = Flashing Red
|
|
# 4 = Yellow
|
|
# 8 = Flashing Yellow
|
|
# 16 = Green
|
|
# 32 = Flashing Green
|
|
|
|
mqttAdapter = jmri.InstanceManager.getDefault( jmri.jmrix.mqtt.MqttSystemConnectionMemo ).getMqttAdapter()
|
|
mqttSignalTopic = mqttAdapter.getOptionState("14")
|
|
|
|
class SignalHeadChanger( java.beans.PropertyChangeListener ):
|
|
|
|
def propertyChange( self, event ):
|
|
if (event.propertyName == "Appearance") :
|
|
signalHead = event.source
|
|
mqttAdapter.publish(mqttSignalTopic + signalHead.getSystemName(), signalHead.getAppearanceName())
|
|
|
|
listener = SignalHeadChanger( )
|
|
for signal in signals.getNamedBeanSet():
|
|
signal.addPropertyChangeListener(listener)
|