Добрый день, очень надеюсь на вашу помощь, так как зашел в тупик.
Хочу забирать температуру с датчика, по mqtt и в конечном увидеть её в Zabbix
Но зашел в ступор ещё на получение её в мониторе, при проверке.
Код ниже
#include <UIPEthernet.h>
#include <PubSubClient.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define CLIENT_ID "ArduinoMQTT"
#define TOPIC "temperature"
#define PUBLISH_DELAY 5000
#define ONE_WIRE_BUS 2
uint8_t mac[6] = {0x00,0x01,0x02,0x03,0x04,0x05};
IPAddress mqttServer(10,3,14,96);
EthernetClient ethClient;
PubSubClient mqttClient;
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
long previousMillis;
void setup() {
// setup serial communication
Serial.begin(9600);
while(!Serial) {};
Serial.println(F("MQTT Arduino Demo"));
Serial.println();
// setup ethernet communication using DHCP
if(Ethernet.begin(mac) == 0) {
Serial.println(F("Unable to configure Ethernet using DHCP"));
for(;;);
}
Serial.println(F("Ethernet configured via DHCP"));
Serial.print("IP address: ");
Serial.println(Ethernet.localIP());
Serial.println();
// setup mqtt client
mqttClient.setClient(ethClient);
mqttClient.setServer(mqttServer, 1883);
Serial.println(F("MQTT client configured"));
// setup MS18B20 sensor
Serial.println("Dallas Temperature IC Control Library Demo");
// Start up the library
sensors.begin();
Serial.println();
Serial.println(F("Ready to send data"));
previousMillis = millis();
}
void loop() {
// it's time to send new data?
if(millis() - previousMillis > PUBLISH_DELAY) {
sendData();
previousMillis = millis();
}
mqttClient.loop();
}
void sendData() {
char msgBuffer[50];
Serial.print("Requesting temperatures...");
sensors.requestTemperatures(); // Send the command to get temperatures
float t = sensors.getTempCByIndex(0);
Serial.print("Temperature: ");
Serial.println(t);
if(mqttClient.connect(CLIENT_ID)) {
mqttClient.publish(TOPIC, dtostrf(t, 6, 2, msgBuffer));
}
}
Что происходит в мониторе:
MQTT Arduino Demo
Ethernet configured via DHCP
IP address: 10.3.14.145
MQTT client configured
Dallas Temperature IC Control Library Demo
Ready to send data
Requesting temperatures…Temperature: -127.00
Собственно -127 отсутствие или не возможность достучаться до датчика. Но, если взять стандартный код, что предложен на Гите, по подключению датчика и работе через DallasTemp…
то показывается температура спокойно. Собственно подключение по пинам правильное и датчик рабочий.
Может есть какой-то нюанс, который я не могу заметить при взаимодействие mqtt и ds18b20 через Dallas, OneWire?