Class MqttLight
- java.lang.Object
-
- jmri.implementation.AbstractNamedBean
-
- jmri.implementation.AbstractLight
-
- jmri.implementation.AbstractVariableLight
-
- jmri.jmrix.mqtt.MqttLight
-
- All Implemented Interfaces:
java.lang.Comparable<NamedBean>
,java.util.EventListener
,AnalogIO
,PropertyChangeProvider
,DigitalIO
,MqttEventListener
,Light
,NamedBean
,VariableLight
public class MqttLight extends AbstractVariableLight implements MqttEventListener
MQTT implementation of the Light interface.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface jmri.AnalogIO
AnalogIO.AbsoluteOrRelative
-
Nested classes/interfaces inherited from interface jmri.NamedBean
NamedBean.BadNameException, NamedBean.BadSystemNameException, NamedBean.BadUserNameException, NamedBean.DisplayOptions, NamedBean.DuplicateSystemNameException
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
intensityText
(package private) MqttContentParser<Light>
parser
-
Fields inherited from class jmri.implementation.AbstractVariableLight
alarmSyncUpdate, internalClock, minuteChangeListener, mLastTransitionDate, mNextTransitionTs, mTransitionDuration, mTransitionTargetIntensity
-
Fields inherited from class jmri.implementation.AbstractLight
lightControlList, mActive, mCurrentIntensity, mEnabled, mMaxIntensity, mMinIntensity, mState
-
Fields inherited from class jmri.implementation.AbstractNamedBean
listenerRefs, mSystemName, register
-
Fields inherited from interface jmri.Light
FAST_CLOCK_CONTROL, INTERMEDIATE, NO_CONTROL, SENSOR_CONTROL, TIMED_ON_CONTROL, TRANSITIONING, TRANSITIONINGHIGHER, TRANSITIONINGLOWER, TRANSITIONINGTOFULLOFF, TRANSITIONINGTOFULLON, TURNOUT_STATUS_CONTROL, TWO_SENSOR_CONTROL
-
Fields inherited from interface jmri.NamedBean
DISPLAY_NAME_FORMAT, INCONSISTENT, PROPERTY_STATE, QUOTED_NAME_FORMAT, UNKNOWN
-
-
Constructor Summary
Constructors Constructor Description MqttLight(MqttAdapter ma, java.lang.String systemName, java.lang.String userName, java.lang.String sendTopic, java.lang.String rcvTopic)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
dispose()
Deactivate this object, so that it releases as many resources as possible and no longer effects others.protected void
doNewState(int oldState, int newState)
Implement the specific change of state needed by hardware.protected int
getNumberOfSteps()
Provide the number of steps available between min and max intensityvoid
notifyMqttMessage(java.lang.String receivedTopic, java.lang.String message)
void
requestUpdateFromLayout()
Request an update from the layout soft/hardware.protected void
sendIntensity(double intensity)
Send a Dim/Bright commands to the hardware to reach a specific intensity.protected void
sendOnOffCommand(int newState)
Send a On/Off Command to the hardwarevoid
setParser(MqttContentParser<Light> parser)
void
setState(int newState)
Handle a request for a state change.-
Methods inherited from class jmri.implementation.AbstractVariableLight
describeState, getAbsoluteOrRelative, getCommandedAnalogValue, getCurrentIntensity, getMax, getMaxIntensity, getMin, getMinIntensity, getResolution, getState, getTargetIntensity, getTransitionTime, isTransitionAvailable, isTransitioning, newInternalMinute, notifyTargetIntensityChange, setCommandedAnalogValue, setMaxIntensity, setMinIntensity, setObservedAnalogValue, setState, setTargetIntensity, setTransitionTime, startTransition
-
Methods inherited from class jmri.implementation.AbstractLight
activateLight, addLightControl, clearLightControls, deactivateLight, getBeanType, getEnabled, getLightControlList, getState, getUsageReport, notifyStateChange, setEnabled
-
Methods inherited from class jmri.implementation.AbstractNamedBean
addPropertyChangeListener, addPropertyChangeListener, addPropertyChangeListener, addPropertyChangeListener, compareSystemNameSuffix, equals, firePropertyChange, getComment, getDisplayName, getDisplayName, getListenerRef, getListenerRefs, getNumPropertyChangeListeners, getProperty, getPropertyChangeListeners, getPropertyChangeListeners, getPropertyChangeListenersByReference, getPropertyKeys, getSystemName, getUserName, hashCode, removeProperty, removePropertyChangeListener, removePropertyChangeListener, setComment, setProperty, setUserName, toString, toStringSuffix, updateListenerRef, vetoableChange
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface jmri.AnalogIO
getKnownAnalogValue
-
Methods inherited from interface jmri.Light
activateLight, addLightControl, clearLightControls, deactivateLight, getCommandedState, getEnabled, getKnownState, getLightControlList, getState, setCommandedState, setEnabled
-
Methods inherited from interface jmri.NamedBean
addPropertyChangeListener, addPropertyChangeListener, compareSystemNameSuffix, compareTo, getBeanType, getComment, getDisplayName, getDisplayName, getListenerRef, getListenerRefs, getNumPropertyChangeListeners, getProperty, getPropertyChangeListenersByReference, getPropertyKeys, getSystemName, getUsageReport, getUserName, removeProperty, setComment, setProperty, setUserName, toString, updateListenerRef, vetoableChange
-
Methods inherited from interface jmri.beans.PropertyChangeProvider
addPropertyChangeListener, addPropertyChangeListener, getPropertyChangeListeners, getPropertyChangeListeners, removePropertyChangeListener, removePropertyChangeListener
-
Methods inherited from interface jmri.VariableLight
isConsistentState, isConsistentValue
-
-
-
-
Field Detail
-
intensityText
public static java.lang.String intensityText
-
parser
MqttContentParser<Light> parser
-
-
Constructor Detail
-
MqttLight
public MqttLight(MqttAdapter ma, java.lang.String systemName, java.lang.String userName, java.lang.String sendTopic, java.lang.String rcvTopic)
-
-
Method Detail
-
setParser
public void setParser(MqttContentParser<Light> parser)
-
getNumberOfSteps
protected int getNumberOfSteps()
Description copied from class:AbstractVariableLight
Provide the number of steps available between min and max intensity- Specified by:
getNumberOfSteps
in classAbstractVariableLight
- Returns:
- number of steps
-
sendIntensity
protected void sendIntensity(double intensity)
Description copied from class:AbstractVariableLight
Send a Dim/Bright commands to the hardware to reach a specific intensity.- Specified by:
sendIntensity
in classAbstractVariableLight
- Parameters:
intensity
- new intensity
-
sendOnOffCommand
protected void sendOnOffCommand(int newState)
Description copied from class:AbstractVariableLight
Send a On/Off Command to the hardware- Specified by:
sendOnOffCommand
in classAbstractVariableLight
- Parameters:
newState
- new state
-
doNewState
protected void doNewState(int oldState, int newState)
Description copied from class:AbstractLight
Implement the specific change of state needed by hardware.- Overrides:
doNewState
in classAbstractLight
- Parameters:
oldState
- old statenewState
- new state
-
setState
public void setState(int newState)
Description copied from class:AbstractVariableLight
Handle a request for a state change. ON and OFF go to the MaxIntensity and MinIntensity, specifically, and all others are not permittedON and OFF avoid use of variable intensity if MaxIntensity = 1.0 or MinIntensity = 0.0, and no transition is being used.
-
requestUpdateFromLayout
public void requestUpdateFromLayout()
Description copied from interface:VariableLight
Request an update from the layout soft/hardware. May not even happen, and if it does it will happen later; listen for the result.- Specified by:
requestUpdateFromLayout
in interfaceAnalogIO
- Specified by:
requestUpdateFromLayout
in interfaceDigitalIO
- Specified by:
requestUpdateFromLayout
in interfaceLight
- Specified by:
requestUpdateFromLayout
in interfaceVariableLight
-
notifyMqttMessage
public void notifyMqttMessage(java.lang.String receivedTopic, java.lang.String message)
- Specified by:
notifyMqttMessage
in interfaceMqttEventListener
-
dispose
public void dispose()
Description copied from class:AbstractNamedBean
Deactivate this object, so that it releases as many resources as possible and no longer effects others.For example, if this object has listeners, after a call to this method it should no longer notify those listeners. Any native or system-wide resources it maintains should be released, including threads, files, etc.
It is an error to invoke any other methods on this object once dispose() has been called. Note, however, that there is no guarantee about behavior in that case.
Afterwards, references to this object may still exist elsewhere, preventing its garbage collection. But it's formally dead, and shouldn't be keeping any other objects alive. Therefore, this method should null out any references to other objects that this NamedBean contained.
- Specified by:
dispose
in interfaceNamedBean
- Overrides:
dispose
in classAbstractNamedBean
-
-