Push button take a long time for update

Hi there,

I have push button in my project with different other six variable but when pressing this push button take along time (about ten minute for change its state). other variable working fine.

Thank you in advance for your help.

i fully did not understand your issue, but adding the code might help a bit.

I use OPC server and Windows MQTT to send data to kayenne.

can you provide more info on how are you doing this.

I think the problem in Kayenne because when press the push botton execute the order and display wait and continue in busy state untel I pres on setting of the push button.

it is how cayenne works. You need to publish the actuator data back https://developers.mydevices.com/cayenne/docs/cayenne-mqtt-api/#cayenne-mqtt-api-mqtt-messaging-topics-send-actuator-updated-value

hi, whenever my arduino starts, the LED is set to off by default. I tried publishing to the v1/username/things/clientid/data/channel topic with a value of “0” to make sure that the Light switch actuator widget on the dashboard is turned off.
I’m also using the same publish function (to the same topic, with the values of “1” and “0”) to synchronize the state of the dashboard and some internal code.
But it doesn’t work. Is this the correct way of doing this?

This is the setup() code:
#define username “xxx”
#define password “xxx”
#define clientID “xxx”
#define SWITCH_DATA_CHANNEL “v1/” username “/things/” clientID “/data/5”

// Set your MAC address and IP address here
const PROGMEM byte mac = { 0xFe, 0x32, 0x53, 0x24, 0xE3, 0x7E };

// Make sure to leave out the http and slashes!
#define cayserver “mqtt.mydevices.com

// Ethernet and MQTT related objects
EthernetClient cayEthClient;
PubSubClient cayClient(cayEthClient);

void setup()
{
// Useful for debugging purposes
Serial.begin(9600);

// Start the ethernet connection
Serial.println(F(“Begin Ethernet”));
Ethernet.begin(mac);

// Ethernet takes some time to boot!
delay(3000);
Serial.println(Ethernet.localIP());

// Set the MQTT server to the server stated above ^
cayClient.setServer(cayserver, 1883);
cayClient.setCallback(caysubscribeReceive);

//turn the LED status off by default
pinMode(ACTUATOR_PIN, OUTPUT);
Serial.println(F(“OFF”));
digitalWrite(ACTUATOR_PIN, LOW);
if (!cayClient.connected()) {
cayreconnect();
}
Serial.println(cayClient.publish(SWITCH_DATA_CHANNEL, SWITCHOFF));
}

we no longer support, changing the actuator state from the device.

Thanks. So I guess I would need to add a generic sensor widget to reflect the state on the device, or is there a better way to do it?

we no longer support, changing the actuator state from the device.

Refering to:
https://developers.mydevices.com/cayenne/docs/cayenne-mqtt-api/#cayenne-mqtt-api-manually-publishing-subscribing
is the step “Send Actuator Updated Value” still valid?

unfortunately I have also a problem to get the button working:
I receive the subscribed channel 1, e.g.: v1/xxx/things/xxx/cmd/1
ovxDq4o9qsHwrFI,0

From my understanding of your documentation the device has to

  1. Send Actuator Updated Value
    e.g.: pub v1/xxx/things/xxx/data/1 payload=0

  2. Send command response
    e.g.: pub v1/xxx/things/xxx/response payload=ok,ovxDq4o9qsHwrFI

Unfortunately the button stays in wait loop (rotating circles)
Somethinx may have changed in the protocol? Please help!
I am using MQTT.fx.
Thanks, Holger

you can do that, but the actuator widget should hold the last state.

as mentioned … the button widget stays in wait loop (rotating circles) …
Please can you update your documentation, or at least post here, how to work with the button widget.
Subscribing works, but what answer(s) PUB is required back to the widget?