EthernetClient ethClient; //ЗДЕСЬ КОМЕНТИРУЮ И КОПИРУЮ В ДРУГОЕ МЕСТО НИЖЕ
PubSubClient client(server, 1883, callback, ethClient);
перенёс их ниже как подсказали эта ошибка исчезла и вот теперь уже несколько дней мучаюсь с ошибкой 58 строка
DHT DHT; ошибка no matching function for call to 'DHT::DHT()'
я думаю что проблема с библиотекой но я несколько установил проблема не исчезла . IDE 16.6
но пробовал и другие если кому не сложно выложите библиотеку DHT с которой этот скетч компилируется ну и заодно свой скетч и версию IDE. сейчас у меня ват такой скетч
#include <Ethernet.h> // Ethernet shield
#include <PubSubClient.h> // MQTT
#include <Servo.h>
#include <DHT.h>
#include <OneWire.h>
#include <DallasTemperature.h>
Servo servo;
byte mac[] = { 0xC1, 0x7C, 0x38, 0x41, 0x89, 0x12 };
byte server[] = { 192, 168, 1, 190 }; //IP Брокера
byte ip[] = { 192, 168, 1, 167 }; //IP Клиента (Arduino)
//EthernetClient ethClient; //ЗДЕСЬ КОМЕНТИРУЮ И КОПИРУЮ В ДРУГОЕ МЕСТО НИЖЕ
//PubSubClient client(server, 1883, callback, ethClient);
#define id_connect "myhome-kitchen"
#define Prefix_subscribe "myhome/Kitchen/"
///////////////Объявляем порты ввода-вывода
#define ServoPin 3 //Порт к которому подключен сервопривод
const int start_DI_pin [] = {2, 4, 5}; // Порты Ввода
int n_DI_pin = sizeof(start_DI_pin) / sizeof(start_DI_pin[0]) - 1; //Вычисляем длинну массива
const int start_DO_pin [] = {6, 7}; //Порты Вывода
int n_DO_pin = sizeof(start_DO_pin) / sizeof(start_DO_pin[0]) - 1; //Вычисляем длинну массива
int DI[] = {0, 0, 0};
int old_DI[] = {0, 0};
///////////////////////////Переменные для работы с освещением//////////////////////////////////////
int ServoAngle = 100; //Угол сервопривода при включении
int flag = 0;
int flag2 = 0;
int pause = 0;
//------------------------------------------- Sensors -------------------------------------------//
const int MQ7_Pin = A0; // Куда подключили MQ7
//int MQ7Value = 0;
int MQ7Value = analogRead(MQ7_Pin);
const int foto_Pin = A1; // устанавливаем входную ногу для Фоторезистора
//unsigned int fotoValue = 0; // цифровое значение фоторезистора
unsigned int fotoValue = analogRead(foto_Pin);
#define ONE_WIRE_BUS 8
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature DS_sensors(&oneWire);
// 28 FF F2 5C 53 15 2 97
DeviceAddress addr_T1 = { 0x28, 0xFF, 0xF2, 0x5C, 0x53, 0x15, 0x02, 0x97 };
float T1 = 0;
DHT DHT;
#define DHT22_PIN 9
float Hout = 0;
float Tout = 0;
//#define DHTPIN 2 // Номер пина, к которому подсоединен датчик
//#define DHTTYPE DHT22 // Задаём тип DHT датчика
//DHT dht(DHTPIN, DHTTYPE);
////////////////////////////////////////////////////////////////////////////
void callback(char* topic, byte* payload, unsigned int length) {
payload[length] = '\0';
// Serial.print(topic);
// Serial.print("=");
String strTopic = String(topic);
String strPayload = String((char*)payload);
// Serial.println(strPayload);
callback_iobroker(strTopic, strPayload);
}
EthernetClient ethClient; //ЗДЕСЬ КОМЕНТИРУЮ И КОПИРУЮ В ДРУГОЕ МЕСТО НИЖЕ
PubSubClient client(server, 1883, callback, ethClient);
////////////////////////////////////////////////////////////////////////////
void setup() {
//Serial.begin(57600);
// Serial.println("start");
//Объявляем порты Digital inputs/outputs
for (int i = 0 ; i <= n_DI_pin; i++) {
pinMode (start_DI_pin , INPUT);
}
digitalWrite(5, HIGH); //Окно
digitalWrite(4, HIGH); //Объемник
for (int i = 0 ; i <= n_DO_pin; i++) {
pinMode (start_DO_pin , OUTPUT);
}
Ethernet.begin(mac, ip);
if (client.connect(id_connect)) {
getSensors();
control();
// client.publish("myhome/Kitchen/Change_Counter", "0");
// client.publish("myhome/Kitchen/Temp_room", "0");
// client.publish("myhome/Kitchen/Humidity_room", "0");
// client.publish("myhome/Kitchen/Temp_radiator", "0");
// client.publish("myhome/Kitchen/Temp_in", "0");
// client.publish("myhome/Kitchen/Lux", "0");
// client.publish("myhome/Kitchen/Servo", "0");
// client.publish("myhome/Kitchen/MQ7", "0");
client.subscribe("myhome/Kitchen/#");
}
}
/////////////////////////////////////////////////////////////////////////
void loop() {
client.loop();
control();
getSensors();
if (!client.connected()) {
if (client.connect(id_connect)) {
control();
getSensors();
client.subscribe("myhome/Kitchen/#");
}
}
}
и отдельно Functionsm
void callback_iobroker(String strTopic, String strPayload){
if (strTopic == "myhome/Kitchen/Servo"){
ServoAngle=strPayload.toInt();
if (ServoAngle >= 0 && ServoAngle <= 255){
servo.attach(ServoPin);
//delay(200); //ждем 2 секунды
servo.write(ServoAngle); //ставим вал под 0
delay(1000); //ждем 2 секунды
//client.publish("myhome/Kitchen/Servo", b);
servo.detach();
}
}
}
////////////////////////////////////Брокеру/////////////////////////////////////
void control(){
if(digitalRead(5)==HIGH && flag==0) { //если окно открыто
client.publish("myhome/Kitchen/Window", "1");
flag=1;
}
if(digitalRead(5)==LOW && flag==1){//если окно закрыто
client.publish("myhome/Kitchen/Window", "0");
flag=0;//обнуляем переменную flag
}
if(digitalRead(4)==HIGH && flag2==0) { // Если есть движение
client.publish("myhome/Kitchen/Motion", "1");
flag2=1;
}
if(digitalRead(4)==LOW && flag2==1){// Если нет движения
client.publish("myhome/Kitchen/Motion", "0");
flag2=0;//обнуляем переменную flag
}
}
///////////////////////////////Данные сенсоров////////////////////////////////////
void getSensors () {
MQ7Value = analogRead(MQ7_Pin);
fotoValue = analogRead(foto_Pin); // считываем значение с фоторезистора
// ServoAngle = analogRead(2);
//Обработка данных датчика DHT22. Подключение к порту цифровому P9 Arduino
//Глобальные переменные Hout и Tout типа флоат - влажность (%) и температура (град. С)
if (DHT.read22(DHT22_PIN)== DHTLIB_OK) {
Hout = DHT.humidity;
Tout = DHT.temperature;
}
if (Hout == 0 || Tout == 0){
delay (1000);
if (DHT.read22(DHT22_PIN)== DHTLIB_OK) {
Hout = DHT.humidity;
Tout = DHT.temperature;
}
}
//Обработка данных цифровых датчиков температуры типа DS18B20.
//Шина 1-Wire на цифровой пин P8 Arduino.
//Подключено 2 датчика температуры, адреса задаются в секции глобальных констант "Sensors"
//Три значение температуры T1, T2, типа float (град. С).
DS_sensors.requestTemperatures();
T1 = DS_sensors.getTempC(addr_T1);
///////////////////////Паблик данных сенсоров////////////////////////
if (pause == 50 || pause == 0){
char b[5];
String char_Hout = String(Hout);
char_Hout.toCharArray(b,5);
client.publish("myhome/Kitchen/Humidity_room", b);
String char_Tout = String(Tout);
char_Tout.toCharArray(b,5);
client.publish("myhome/Kitchen/Temp_room", b);
String char_T1 = String(T1);
char_T1.toCharArray(b,5);
client.publish("myhome/Kitchen/Temp_radiator", b);
String char_fotoValue = String(fotoValue);
char_fotoValue.toCharArray(b,4);
client.publish("myhome/Kitchen/Lux", b);
String char_ServoAngle = String(ServoAngle);
char_ServoAngle.toCharArray(b,4);
client.publish("myhome/Kitchen/Servo", b);
String char_MQ7Value = String(MQ7Value);
char_MQ7Value.toCharArray(b,4);
client.publish("myhome/Kitchen/MQ7", b);
pause = 1;
}
else pause++;
}
а вот скетч целиком http://forum.iobroker.net/download/file.php?id=2951
Можете подсказать отчего у меня всё так получается.
Заранее всем спасибо за ответы жду ответов