Thanks for the help.
Now i followed this guide instead:(Arduino, MQTT, Cayenne)
It worked little better for me.
Now i can turn on the light for R0 and R1 on my Controllino Maxi Automation.
I use channel 22 and 23.
The Pinout is here: https://www.controllino.biz/wp-content/uploads/2018/12/CONTROLLINO-MAXI-Automation-Pinout-1.jpg
But the strange thing for me now is that the light turns on on R0 and R1 but the Relay is not opend and closed, only the light changes.
I put my code below
=========================================================
#include <SPI.h>
#include <Controllino.h>
/*
This example shows how to connect to Cayenne using an Ethernet W5100 shield and send/receive sample data.
The CayenneMQTT Library is required to run this sketch. If you have not already done so you can install it from the Arduino IDE Library Manager.
Steps:
- Set the Cayenne authentication info to match the authentication info from the Dashboard.
- Compile and upload the sketch.
- A temporary widget will be automatically generated in the Cayenne Dashboard. To make the widget permanent click the plus sign on the widget.
*/
//#define CAYENNE_DEBUG // Uncomment to show debug messages
#define CAYENNE_PRINT Serial // Comment this out to disable prints and save space
#include <CayenneMQTTEthernet.h>
// Cayenne authentication info. This should be obtained from the Cayenne Dashboard.
char username = “#################################”;
char password = "#################################;
char clientID = “#################################”;
#define VIRTUAL_CHANNEL_22 22
#define VIRTUAL_CHANNEL_23 23
#define ACTUATOR_PIN_22 22 // Do not use digital pins 0 or 1 since those conflict with the use of Serial.
#define ACTUATOR_PIN_23 23
void setup() {
Serial.begin(9600);
pinMode(ACTUATOR_PIN_22, OUTPUT);
pinMode(ACTUATOR_PIN_23, OUTPUT);
Cayenne.begin(username, password, clientID);
}
void loop() {
Cayenne.loop();
}
// This function is called when data is sent from Cayenne.
CAYENNE_IN(VIRTUAL_CHANNEL_22)
{
// Write value to turn the relay switch on or off. This code assumes you wire your relay as normally open.
if (getValue.asInt() == 0) {
digitalWrite(ACTUATOR_PIN_22, HIGH);
}
else {
digitalWrite(ACTUATOR_PIN_22, LOW);
}
}
CAYENNE_IN(VIRTUAL_CHANNEL_23)
{
// Write value to turn the relay switch on or off. This code assumes you wire your relay as normally open.
if (getValue.asInt() == 0) {
digitalWrite(ACTUATOR_PIN_23, HIGH);
}
else {
digitalWrite(ACTUATOR_PIN_23, LOW);
}
}
// Default function for sending sensor data at intervals to Cayenne.
// You can also use functions for specific channels, e.g CAYENNE_OUT(1) for sending channel 1 data.
CAYENNE_OUT_DEFAULT()
{
// Write data to Cayenne here. This example just sends the current uptime in milliseconds on virtual channel 0.
Cayenne.virtualWrite(0, millis());
// Some examples of other functions you can use to send data.
Cayenne.celsiusWrite(1, 23.0);
Cayenne.luxWrite(2, 700);
Cayenne.virtualWrite(3, 50, TYPE_PROXIMITY, UNIT_CENTIMETER);
}
// Default function for processing actuator commands from the Cayenne Dashboard.
// You can also use functions for specific channels, e.g CAYENNE_IN(1) for channel 1 commands.
CAYENNE_IN_DEFAULT()
{
CAYENNE_LOG(“Channel %u, value %s”, request.channel, getValue.asString());
//Process message here. If there is an error set an error message using getValue.setError(), e.g getValue.setError(“Error message”);
}