Страница 1 из 1

Current Monitor

Добавлено: Ср мар 22, 2017 9:39 pm
annakin
Ребята добрый день, я ещё не сильно разобрался с MQTT так что не пинайте сильно.
Имеем датчик SCT 013
Собрал схему для него по этой теме: viewtopic.php?f=8&t=73#p441
И шас пытаюсь отправить код на MQTT Брокер так :
SPOILERSPOILER_SHOW

Код: Выделить всё

#ifdef PowerMonitor

#define volt   "home/433toMQTT/voltage"
#define curr  "home/433toMQTT/current"


void electroInit() {
  emon1.current(1, 111.1);             // Current: input pin, calibration.
}

void PowerMonitorInt(){
  double Irms = emon1.calcIrms(1480);  // Calculate Irms only

//  Serial.print(Irms*230.0);         // Apparent power
//  Serial.print(" ");
 // Serial.println(Irms); 

 // client.publish(volt,5698);
  client.publish(curr,Irms*220.0);
  
}
мне выдаёт такую ошибку:

Код: Выделить всё

no matching function for call to 'PubSubClient::publish(const char [23], String&)'
Подскажите, что я делаю не так ?

Re: Current Monitor

Добавлено: Ср мар 22, 2017 9:46 pm
serghei
А сам датчик прицеплен а Ардуине? Тогда в сериале должен увидеть мощность. Вообще библиотека более правильное решение. А по MQTT не подскажу.

Re: Current Monitor

Добавлено: Ср мар 22, 2017 10:12 pm
annakin
Вот код полностью, если возникнут вопросы.
Шас сам читаю в нэте что я не так делаю.
Кстати использую IDE 1.8.1

Re: Current Monitor

Добавлено: Ср мар 22, 2017 10:22 pm
DimSun75
annakin писал(а):Ребята добрый день, я ещё не сильно разобрался с MQTT так что не пинайте сильно.
Имеем датчик SCT 013
Собрал схему для него по этой теме: viewtopic.php?f=8&t=73#p441
И шас пытаюсь отправить код на MQTT Брокер так :
SPOILERSPOILER_SHOW

Код: Выделить всё

#ifdef PowerMonitor

#define volt   "home/433toMQTT/voltage"
#define curr  "home/433toMQTT/current"


void electroInit() {
  emon1.current(1, 111.1);             // Current: input pin, calibration.
}

void PowerMonitorInt(){
  double Irms = emon1.calcIrms(1480);  // Calculate Irms only

//  Serial.print(Irms*230.0);         // Apparent power
//  Serial.print(" ");
 // Serial.println(Irms); 

 // client.publish(volt,5698);
  client.publish(curr,Irms*220.0);
  
}
 
мне выдаёт такую ошибку:

Код: Выделить всё

no matching function for call to 'PubSubClient::publish(const char [23], String&)' 
Подскажите, что я делаю не так ?
У вас Irms типа duble, а методу PubSubClient::publish требуется String. По изучайте где-то здесь https://www.arduino.cc/en/Tutorial/StringConstructors

Re: Current Monitor

Добавлено: Ср мар 22, 2017 10:24 pm
annakin
Пасиб )) За наводку.

Re: Current Monitor

Добавлено: Чт мар 23, 2017 1:22 am
annakin
Разобрался ))
Всё таки Мануалы это хорошая штука ))
Вот как должно быть:

Код: Выделить всё

    dtostrf (value, 4, 5, buff_message);
    client.publish(curr, buff_message);