Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arduino 通过PubSubClient发布值_Arduino_Publish Subscribe_Mqtt - Fatal编程技术网

Arduino 通过PubSubClient发布值

Arduino 通过PubSubClient发布值,arduino,publish-subscribe,mqtt,Arduino,Publish Subscribe,Mqtt,我尝试了以下代码,使用Arduino将值发布到Mosquitto代理上。代码似乎是正确的,但一旦我编译/验证,就会抛出以下错误。原因是什么?我如何克服这个问题 #include <SPI.h> #include <Ethernet.h> #include <PubSubClient.h> #define CLIENTID "ArduinoSensor" #define TOPICNAME "sensor/temperature" #define POLLI

我尝试了以下代码,使用Arduino将值发布到Mosquitto代理上。代码似乎是正确的,但一旦我编译/验证,就会抛出以下错误。原因是什么?我如何克服这个问题

#include <SPI.h>
#include <Ethernet.h>
#include <PubSubClient.h>


#define CLIENTID "ArduinoSensor"
#define TOPICNAME "sensor/temperature"
#define POLLINTERVAL 120000

void callback(char topic, byte payload, unsigned int length){
//Do nothing as we are publishing ONLY.
}

byte mac [] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED} ;
byte server [] = { 85, 119, 83, 194 };
EthernetClient ethClient;
PubSubClient arduinoClient(server, 1883, callback, ethClient) ;
unsigned long boardTime = 0 ;
float sensedTemperature = 0;
char charTemperature [20];


void setup(void) {
Serial.begin(9600);
//Connect to the MQTT server - test.mosquitto.org
beginConnection() ;
}

//Initialise MQTT connection
void beginConnection() {
Serial.begin(9600);
Ethernet.begin(mac) ;   //using the address assigned through DHCP 
int connRC = arduinoClient.connect(CLIENTID) ;
if (!connRC) {
Serial.println(connRC) ;
Serial.println("Could not connect to MQTT Server");
Serial.println("Please reset the arduino to try again");
delay(100);
exit(-1);
}
else {
Serial.println("Connected to MQTT Server...");
}
}

void loop(void) {
boardTime = millis();
if ((boardTime % POLLINTERVAL) == 0) {
  getTemp();
  dtostrf(sensedTemperature,5,2,charTemperature) ;
  arduinoClient.publish(TOPICNAME, charTemperature) ;
}
}

void getTemp() {
// Send the command to get temperatures
delay(100);
sensedTemperature = analogRead(2);   //temperature sensor at analog pin 2 on Arduino.
delay(150);
}

有什么建议吗?

错误消息告诉您传递给构造函数的回调函数的签名不正确

你有:

void callback(char topic, byte payload, unsigned int length){
应该是:

void callback(char* topic, byte* payload, unsigned int length) {
请注意
主题
有效负载
参数的
*

void callback(char* topic, byte* payload, unsigned int length) {