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
-
NEW
- Posts: 28
- Joined: Thu Apr 15, 2021 5:28 pm
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 wrote: Sun Apr 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
-
klew
- Posts: 13911
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
- Has thanked: 136 times
- Been thanked: 137 times
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
Najlepsze suple dla Twojego domu 
-
NEW
- Posts: 28
- Joined: Thu Apr 15, 2021 5:28 pm
ok, więc mam taki kod ale nie czyta mi temperatury co i gdzie powinienem dopisać?klew wrote: Sun Apr 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();
}
-
klew
- Posts: 13911
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
- Has thanked: 136 times
- Been thanked: 137 times
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.
Najlepsze suple dla Twojego domu 
-
NEW
- Posts: 28
- Joined: Thu Apr 15, 2021 5:28 pm
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 wrote: Wed Apr 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);
-
NEW
- Posts: 28
- Joined: Thu Apr 15, 2021 5:28 pm
Mam jeszcze jedno pytanie czy można i ewentualnie jak i gdzie do kodu by ustawić statyczny adres ip i nazwę urządzenia?
-
krycha88
- Posts: 5575
- Joined: Fri Nov 16, 2018 7:25 am
- Been thanked: 5 times
A nie lepiej przypisać stały IP po stronie routera?NEW wrote: Wed Apr 21, 2021 8:09 pm Mam jeszcze jedno pytanie czy można i ewentualnie jak i gdzie do kodu by ustawić statyczny adres ip i nazwę urządzenia?
https://gui-generic-builder.supla.io/
-
klew
- Posts: 13911
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
- Has thanked: 136 times
- Been thanked: 137 times
Aktualnie nie ma opcji ustawiania stałego adresu IP. Najlepszą praktyką jest zarządzanie adresami IP po stronie routera/serwera DHCP.NEW wrote: Wed Apr 21, 2021 8:09 pm Mam jeszcze jedno pytanie czy można i ewentualnie jak i gdzie do kodu by ustawić statyczny adres ip i nazwę urządzenia?
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.
Najlepsze suple dla Twojego domu 
-
Robert Błaszczak
- Posts: 5222
- Joined: Sat Dec 22, 2018 8:55 pm
- Location: Zielona Góra
- Has thanked: 37 times
- Been thanked: 27 times
Nazwa urządzenia:
Odnośnie adresu IP to zdecydowanie sensowniej zarezerwować sobie w DHCP.
Code: Select all
SuplaDevice.setName("xxxxx")Pozdrawiam
Robert Błaszczak
Moja prywatna strona: www.blaszczak.pl
Robert Błaszczak
Moja prywatna strona: www.blaszczak.pl
