Ponownie: polecam przesiąść się na nową bibliotekę. Tam masz obsługę DSa i przycisków prawie za darmo.
Obsługę LCD trzeba sobie dołożyć.
Co do Twojego kodu, to masz tam dużo delay. Ogólnie nie należy używać delay bo blokuje wykonanie całego programu.
Można zamiast delay używać millis, ale wymaga to przebudowania tych funkcji.
Poszukaj sobie w google opisów jak używać millis zamiast delay
esp8266-01s + LCD1602A + DS18B20 + SUPLA
klew, jestem za zielony by sobie z tym sam poradzić tak od razu ale zainstalowałem bibliotekę jak radziłeś i wyskoczył błąd:klew pisze: ↑ndz kwie 18, 2021 10:18 am Ponownie: polecam przesiąść się na nową bibliotekę. Tam masz obsługę DSa i przycisków prawie za darmo.
Obsługę LCD trzeba sobie dołożyć.
Co do Twojego kodu, to masz tam dużo delay. Ogólnie nie należy używać delay bo blokuje wykonanie całego programu.
Można zamiast delay używać millis, ale wymaga to przebudowania tych funkcji.
Poszukaj sobie w google opisów jak używać millis zamiast delay
DallasTemperature:9:2: error: #elif without #if
#elif defined(ARDUINO_ARCH_ESP8266) || defined(ARDUINO_ARCH_ESP32)
^
DallasTemperature:12:2: error: #endif without #if
#endif
^
Znaleziono wiele bibliotek w "Ethernet.h"
Wykorzystane: C:\Users\Lenovo V110\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\libraries\Ethernet
Niewykorzystane: C:\Program Files (x86)\Arduino\libraries\Ethernet
exit status 1
#elif without #if
poczytałem ale nie wiem co dalej i jak to ogarnąć:
Jeśli chcecie to na ESP skompilować, to trzeba define'y w proto.h i srpc.h przerzucić do sekcji dla ESP:
w proto:
#define SPROTO_WITHOUT_OUT_BUFFER
w srpc:
#define SRPC_WITHOUT_OUT_QUEUE
#define SRPC_WITHOUT_IN_QUEUE
Ciężko odgadnąć co się dzieje patrząc na fragment komunikatów bez kodu.
Wygląda jakby brakowało ifdefa na początku. Jeśli wziąłeś jakiś gotowy przykład z biblioteki, to mogłeś coś przypadkiem na początku pliku usunąć.
Weź zwykły przykład z biblioteki, nic tam nie usuwaj, tylko uzupełnij dane zgodnie z komentarzami i zobacz czy działa
Wygląda jakby brakowało ifdefa na początku. Jeśli wziąłeś jakiś gotowy przykład z biblioteki, to mogłeś coś przypadkiem na początku pliku usunąć.
Weź zwykły przykład z biblioteki, nic tam nie usuwaj, tylko uzupełnij dane zgodnie z komentarzami i zobacz czy działa
Widzimy się na Supla Offline Party vol. 2
ok, więc mam taki kod ale nie czyta mi temperatury co i gdzie powinienem dopisać?klew pisze: ↑ndz kwie 18, 2021 6:56 pm Ciężko odgadnąć co się dzieje patrząc na fragment komunikatów bez kodu.
Wygląda jakby brakowało ifdefa na początku. Jeśli wziąłeś jakiś gotowy przykład z biblioteki, to mogłeś coś przypadkiem na początku pliku usunąć.
Weź zwykły przykład z biblioteki, nic tam nie usuwaj, tylko uzupełnij dane zgodnie z komentarzami i zobacz czy działa
czy możesz mi pomóc dopisać // CHANNEL4 - Czujnik, // CHANNEL5 - Przycisk i wytłumaczyć co mogę z tym zrobić ciekawego // CHANNEL5 - Virtualny Przekaźnik ?
#include <SuplaDevice.h>
#include <supla/network/esp_wifi.h>
#include <supla/sensor/DS18B20.h>
#include <supla/control/relay.h>
#include <supla/control/virtual_relay.h>
#include <supla/control/button.h>
#ifdef ARDUINO_ARCH_AVR
#include <supla/network/ethernet_shield.h>
uint8_t mac[6] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05};
Supla::EthernetShield ethernet(mac);
#elif defined(ARDUINO_ARCH_ESP8266) || defined(ARDUINO_ARCH_ESP32)
Supla::ESPWifi wifi("******", "********");
#endif
void setup() {
Serial.begin(115200);
char GUID[SUPLA_GUID_SIZE] = {***}; //https://www.supla.org/arduino/get-guid
char AUTHKEY[SUPLA_AUTHKEY_SIZE] = {***}; //https://www.supla.org/arduino/get-authkey
//----------------------------------------------------------------------------------------------------------------------------------------------------------------------
// CHANNEL0-3 - Thermometer DS18B20 - 4 termometry DS18B20 na pinie 2. Adres DS można pominąć, gdy na pinie jest tylko jedno urządzenie
DeviceAddress ds1addr = {0x28, 0xFF, 0xC8, 0xAB, 0x6E, 0x18, 0x01, 0xFC};
//DeviceAddress ds2addr = {0x28, 0xFF, 0x54, 0x73, 0x6E, 0x18, 0x01, 0x77};
//DeviceAddress ds3addr = {0x28, 0xFF, 0x55, 0xCA, 0x6B, 0x18, 0x01, 0x8D};
//DeviceAddress ds4addr = {0x28, 0xFF, 0x4F, 0xAB, 0x6E, 0x18, 0x01, 0x66};
new Supla::Sensor::DS18B20(2, ds1addr);
//new Supla::Sensor::DS18B20(2, ds2addr);
//new Supla::Sensor::DS18B20(2, ds3addr);
//new Supla::Sensor::DS18B20(2, ds4addr);
// CHANNEL4 - Przekaźnik
auto r1 = new Supla::Control::Relay(3); //przekaźnik na pin1 sterowany stanem wysokim
//auto r2 = new Supla::Control::Relay(3);
//auto r3 = new Supla::Control::Relay(3);
//auto r4 = new Supla::Control::Relay(3, false); //przekaźnik na pin2 sterowany stanem niskim
// CHANNEL4 - Czujnik
// CHANNEL5 - Przycisk
// CHANNEL5 - Virtualny Przekaźnik
//new Supla::Control::VirtualRelay();
//----------------------------------------------------------------------------------------------------
SuplaDevice.begin(GUID, // Global Unique Identifier
"svr**.supla.org", // SUPLA server address
"*************@gmail.com", // Email address used to login to Supla Cloud
"**********"); // Authorization key
}
void loop() {
SuplaDevice.iterate();
}
Jeśli używasz tylko jednego DSa, to nie trzeba podawać jego adresu "ds1addr". Dodaj go taką komendą: "new Supla::Sensor::DS18B20(2);"
Adres DSów jest konieczny, gdy chcesz na jednym GPIO podpiąć kilka termometrów DS. Wtedy będąc pod kompem możesz sobie w logach zobaczyć wszystkie adresy wykrytych DSów i odpowiednio je ustawić w tym zmiennych "ds1addr", "ds2addr" itd.
Zakładam, że adresu ds1addr nie zmieniałeś na swój, tylko zostawiłeś to co było podane w przykładzie - z tego powodu on nie działa, bo Twój DS na 99,999% ma inny adres
Co do przycisku, czujnika, wirtualnego przekaźnika - ja nie wymyślę do czego możesz tego potrzebować .
Przyciski służą z reguły do sterowania kanałami przekaźnika, oświetlenia, i jeszcze kilka innych opcji.
Czunik/sensor binarny - tam z reguły podłącza się coś co daje sygnał 0 lub 1 i to jest przekazywane do Supli. W cloud możesz sobie konfigurować, że np. ten sygnał oznacza "zamknięte drzwi", albo "masz pocztę", albo jeszcze coś innego.
Writualny przekaźnik, to taki hak na braki zmiennych w Supli i w skryptach fracza. Pozwala na ustawianie stanu przekaźnika, który w rzeczywistości jest ustawiany tylko w pamięci układu. Więc można to traktować jako zmienna typu bool, której możesz używać w niektórych zastosowaniach.
Adres DSów jest konieczny, gdy chcesz na jednym GPIO podpiąć kilka termometrów DS. Wtedy będąc pod kompem możesz sobie w logach zobaczyć wszystkie adresy wykrytych DSów i odpowiednio je ustawić w tym zmiennych "ds1addr", "ds2addr" itd.
Zakładam, że adresu ds1addr nie zmieniałeś na swój, tylko zostawiłeś to co było podane w przykładzie - z tego powodu on nie działa, bo Twój DS na 99,999% ma inny adres
Co do przycisku, czujnika, wirtualnego przekaźnika - ja nie wymyślę do czego możesz tego potrzebować .
Przyciski służą z reguły do sterowania kanałami przekaźnika, oświetlenia, i jeszcze kilka innych opcji.
Czunik/sensor binarny - tam z reguły podłącza się coś co daje sygnał 0 lub 1 i to jest przekazywane do Supli. W cloud możesz sobie konfigurować, że np. ten sygnał oznacza "zamknięte drzwi", albo "masz pocztę", albo jeszcze coś innego.
Writualny przekaźnik, to taki hak na braki zmiennych w Supli i w skryptach fracza. Pozwala na ustawianie stanu przekaźnika, który w rzeczywistości jest ustawiany tylko w pamięci układu. Więc można to traktować jako zmienna typu bool, której możesz używać w niektórych zastosowaniach.
Widzimy się na Supla Offline Party vol. 2
dzięki z wskazówki, mam pytanie jak się sprawdza i gdzie logi na kompie i jak urzywać funkcji: //new Supla::Control::DimmerLeds(1);klew pisze: ↑śr kwie 21, 2021 8:19 am Jeśli używasz tylko jednego DSa, to nie trzeba podawać jego adresu "ds1addr". Dodaj go taką komendą: "new Supla::Sensor::DS18B20(2);"
Adres DSów jest konieczny, gdy chcesz na jednym GPIO podpiąć kilka termometrów DS. Wtedy będąc pod kompem możesz sobie w logach zobaczyć wszystkie adresy wykrytych DSów i odpowiednio je ustawić w tym zmiennych "ds1addr", "ds2addr" itd.
Zakładam, że adresu ds1addr nie zmieniałeś na swój, tylko zostawiłeś to co było podane w przykładzie - z tego powodu on nie działa, bo Twój DS na 99,999% ma inny adres
Co do przycisku, czujnika, wirtualnego przekaźnika - ja nie wymyślę do czego możesz tego potrzebować .
Przyciski służą z reguły do sterowania kanałami przekaźnika, oświetlenia, i jeszcze kilka innych opcji.
Czunik/sensor binarny - tam z reguły podłącza się coś co daje sygnał 0 lub 1 i to jest przekazywane do Supli. W cloud możesz sobie konfigurować, że np. ten sygnał oznacza "zamknięte drzwi", albo "masz pocztę", albo jeszcze coś innego.
Writualny przekaźnik, to taki hak na braki zmiennych w Supli i w skryptach fracza. Pozwala na ustawianie stanu przekaźnika, który w rzeczywistości jest ustawiany tylko w pamięci układu. Więc można to traktować jako zmienna typu bool, której możesz używać w niektórych zastosowaniach.
//new Supla::Control::RGBLeds(2);
Aktualnie nie ma opcji ustawiania stałego adresu IP. Najlepszą praktyką jest zarządzanie adresami IP po stronie routera/serwera DHCP.
Co masz na myśli przez "nazwę urządzenia"?
Odnośnie RGB i Dimmera, to tu masz stary artykuł na ten temat: https://majsterkowo.pl/arduino-i-smartf ... -led-rgbw/
Tylko on był robiony na starej bibliotece. W nowej używamy jeden mosfet mniej - czyli dajesz bezpośrednio po jednym mosfecie dla R, G, B, W.
Widzimy się na Supla Offline Party vol. 2
- Robert Błaszczak
- Posty: 3970
- Rejestracja: sob gru 22, 2018 8:55 pm
- Lokalizacja: Zielona Góra
- Kontakt:
Nazwa urządzenia:
Odnośnie adresu IP to zdecydowanie sensowniej zarezerwować sobie w DHCP.
Kod: Zaznacz cały
SuplaDevice.setName("xxxxx")
Pozdrawiam
Robert Błaszczak
Moja prywatna strona: www.blaszczak.pl
Robert Błaszczak
Moja prywatna strona: www.blaszczak.pl