This is what I'm using:
Public Sub PublishDoorStatus()
//Thread.ClearHardwareEvent()
Thread.Sleep(10000) '10ms debounce delay
If Door_Status <> ReedSwitch Then
Door_Status = ReedSwitch
Dim jData As Json = New Json
jData.Add("time", GetTimestamp())
jData.Add("Door", Door_Status)
MQTT.Publish("Data", jData, QoS.AtLeastOnce)
//MQTT.Publish("Door", Door_Status, QoS.AtLeastOnce)
MQTT.BeaconPublish(dataType.DOOR, Door_Status)
LedGreenFlash()
End If
End Sub
Shared Event ReedSwitchChanged()
TimeSinceDoorClosed = Device.Uptime()
TimeSinceKnockTriggered = 0
PublishDoorStatus()
//PublishDoorStatus() //call twice to deal with rapid door cycling...
End Event
Door_Status is a shared boolean, defined in the class.
See my other post here
http://mcthings.createaforum.com/support/datetime-issues/msg1587/#msg1587for example output.