Programowanie ESP8266 z Arduino IDE

yugodriver
Posts: 24
Joined: Mon Mar 14, 2016 2:36 pm

Post

Dzień dobry,

Jakiś czas temu napisałem w Arduino IDE (dla płytki ESP8266) program do obsługi pieca. Chciałbym do niego dodać możliwość podglądu aktualnej temperatury za pomocą Supli. Niestety mam błąd kompilacji. Program wygląda nastepująco (oczywiście nie cały a tylko część dotycząca supli):

Code: Select all

#include <ESP8266WiFi.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <SuplaDevice.h>

byte temperatura = 0;
char GUID[SUPLA_GUID_SIZE] = {tu wkleiłem GUID ze strony};
byte mac[6];

void setup() {
  WiFi.macAddress(mac);
  supla(); }

void loop() {
  sensors.requestTemperatures();
  temperatura = sensors.getTempCByIndex(0); 
  
  SuplaDevice.iterate(); }

void supla() {

  SuplaDevice.addDS18B20Thermometer();

  SuplaDevice.begin(GUID,              // Global Unique Identifier 
                    mac,               // Ethernet MAC address
                    "svr1.supla.org",  // SUPLA server address
                    moje ID,                // Location ID 
                    "moje haslo");           // Location Password
    
}
Proszę o pomoc
Last edited by yugodriver on Thu Oct 13, 2016 11:16 pm, edited 1 time in total.
User avatar
pzygmunt
Posts: 19512
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków

Post

Screen błędu ?

Tutaj masz przykład dla NodeMCU programowanego z Arduino IDE
https://github.com/SUPLA/arduino/tree/m ... plaNodeMCU
yugodriver
Posts: 24
Joined: Mon Mar 14, 2016 2:36 pm

Post

Błąd wygląda tak:

Code: Select all

Arduino:1.6.5 (Windows 7), Płyta:"WeMos D1 mini, 80 MHz, Serial, 921600, 4M (3M SPIFFS)"

UWAGA: biblioteka SuplaDevice działa na architekturze(/architekturach) [avr] i może nie być kompatybilna z obecną płytką która działa na [esp8266] architekturze(/architekturach) .



In file included from piec_supla.ino:4:0:
C:\Users\Administrator\Documents\Arduino\libraries\SuplaDevice/SuplaDevice.h:61:1: warning: 'typedef' was ignored in this declaration [enabled by default]
 };
 ^
In file included from C:\Users\Administrator\Documents\Arduino\libraries\SuplaDevice/SuplaDevice.h:113:0,
                 from piec_supla.ino:4:
C:\Users\Administrator\Documents\Arduino\libraries\SuplaDevice/supla_main_helper._cpp_:67:3: error: 'UNKNOWN' does not name a type
   UNKNOWN ETHERNET LIBRARY 
   ^

Błąd kompilacji.
User avatar
pzygmunt
Posts: 19512
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków

Post

To jest celowe zabezpieczenie jak biblioteka nie "wykryje" biblioteki komunikacyjnej.
Przed
#include <SuplaDevice.h>
trzeba dodać
#define SUPLADEVICE_CPP


i zrobić implementację

// Supla.org ethernet layer
int supla_arduino_tcp_read(void *buf, int count) {
_supla_int_t size = client.available();

if ( size > 0 ) {
if ( size > count ) size = count;
return client.read((uint8_t *)buf, size);
};

return -1;
};

int supla_arduino_tcp_write(void *buf, int count) {
return client.write((const uint8_t *)buf, count);
};

bool supla_arduino_svr_connect(const char *server, int port) {
return client.connect(server, 2015);
}

bool supla_arduino_svr_connected(void) {
return client.connected();
}

void supla_arduino_svr_disconnect(void) {
client.stop();
}

void supla_arduino_eth_setup(uint8_t mac[6], IPAddress *ip) {

// Serial.println("WiFi init");
WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) {
delay(500);
// Serial.print(".");
}

//Serial.print("\nlocalIP: ");
//Serial.println(WiFi.localIP());
//Serial.print("subnetMask: ");
//Serial.println(WiFi.subnetMask());
//Serial.print("gatewayIP: ");
//Serial.println(WiFi.gatewayIP());
}

SuplaDeviceCallbacks supla_arduino_get_callbacks(void) {
SuplaDeviceCallbacks cb;

cb.tcp_read = &supla_arduino_tcp_read;
cb.tcp_write = &supla_arduino_tcp_write;
cb.eth_setup = &supla_arduino_eth_setup;
cb.svr_connected = &supla_arduino_svr_connected;
cb.svr_connect = &supla_arduino_svr_connect;
cb.svr_disconnect = &supla_arduino_svr_disconnect;
cb.get_temperature = NULL;
cb.get_temperature_and_humidity = NULL;
cb.get_rgbw_value = NULL;
cb.set_rgbw_value = NULL;

return cb;
}
User avatar
pzygmunt
Posts: 19512
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków

Post

yugodriver
Posts: 24
Joined: Mon Mar 14, 2016 2:36 pm

Post

Prawie działa:

'SuplaDeviceCallbacks' has no member named 'get_temperature'

i nie wiem co dalej :-(
User avatar
pzygmunt
Posts: 19512
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków

Post

Masz jakąś starą wersję ?
yugodriver
Posts: 24
Joined: Mon Mar 14, 2016 2:36 pm

Post

chodzi o Arduino IDE (1.6.5), biblioteke supla czy o jeszcze coś innego?
User avatar
pzygmunt
Posts: 19512
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków

Post

Bibliotekę SuplaDevice
yugodriver
Posts: 24
Joined: Mon Mar 14, 2016 2:36 pm

Post

Wgrałem najnowszą wersję biblioteki - wyszło super. Supla wykryła moduł prawidłowo jako termometr. Brakuje tylko odczytu temperatury.

Proszę jeszcze o podpowiedz jak zmienić program tak aby temperatura była pobierana ze zmiennej "temperatura"?

Return to “Pomoc”