ok. Super. Dzięki
Supla Pushover x4 cd
-
- Posts: 9704
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
Poniżej lekko wyczyszczony kod z niektórych "zbędnych" zmiennych globalnych, które trochę pamięci mogły zjadać.
Code: Select all
#include <Arduino.h>
#include <SuplaDevice.h>
#include <supla/network/esp_wifi.h>
#include <supla/control/relay.h>
#include <supla/control/button.h>
#include <supla/control/action_trigger.h>
#include <supla/storage/littlefs_config.h>
#include <supla/network/esp_web_server.h>
#include <supla/network/html/device_info.h>
#include <supla/network/html/protocol_parameters.h>
#include <supla/network/html/status_led_parameters.h>
#include <supla/network/html/wifi_parameters.h>
#include <supla/network/html/custom_text_parameter.h>
//// #include <supla/device/supla_ca_cert.h>
//// #include <supla/events.h>
#include <supla/storage/eeprom.h>
#include <supla/sensor/binary.h>
#include <Pushover.h>
Supla::Eeprom eeprom;
Supla::ESPWifi wifi;
Supla::LittleFsConfig configSupla;
Supla::EspWebServer suplaServer; //po zakomentowaniu działa PUSHOVER
Supla::Html::DeviceInfo htmlDeviceInfo(&SuplaDevice);
Supla::Html::WifiParameters htmlWifi;
Supla::Html::ProtocolParameters htmlProto;
Supla::Html::StatusLedParameters htmlStatusLed;
#define RELAY_GPIO 12 // D6
#define BUTTON_CFG_RELAY_GPIO 0 // D3
#define LED 13 // D7
#define BUTT 5 // D1
bool stan_alarmu = false;
char PUSH_USER[200] = {};
char PUSH_API_KEY[200] = {};
const char PARAM1[] = "param1"; // PUSH_API_KEY
const char PARAM2[] = "param2"; // PUSH_USER
// Supla::Control::Relay *r1 = nullptr;
// Supla::Sensor::VirtualBinary *r2 = nullptr;
// Supla::Control::ActionTrigger *at1 = nullptr;
// RH_ASK driver(2000, 4, NOT_A_PIN); // ESP8266: do not use pin 11 D2
enum NoweAkcje
{
MOJA_AKCJA_1,
MOJA_AKCJA_2
};
class MojaAkcja : public Supla::ActionHandler {
public:
MojaAkcja(){};
void handleAction(int event, int action) override {
// SUPLA_LOG_DEBUG("Handle action: %d %d", event, action);
if (action == MOJA_AKCJA_1) {
// SUPLA_LOG_DEBUG("MOJA_AKCJA_1_START!");
digitalWrite(LED, HIGH);
Pushover po = Pushover(PUSH_API_KEY, PUSH_USER, UNSAFE);
po.setMessage("Testnotification");
po.setDevice("galaxynote8");
po.setTitle("kuku");
po.setSound("bike");
if (po.send()) {
SUPLA_LOG_DEBUG("Pushover send success!");
} else {
SUPLA_LOG_DEBUG("Pushover send failed!");
}
Serial.println(PUSH_API_KEY);
Serial.println(PUSH_USER);
}
if (action == MOJA_AKCJA_2) {
digitalWrite(LED, LOW);
SUPLA_LOG_DEBUG("MOJA_AKCJA_1_STOP!");
}
}
};
void setup()
{
Serial.begin(9600);
wifi.enableSSL(false);
new Supla::Html::CustomTextParameter(PARAM1, "Pushover API Key", 100);
new Supla::Html::CustomTextParameter(PARAM2, "Pushover USER Key", 100);
//new Supla::Html::CustomTextParameter(PARAM2, "Pushover Sound", 100);
pinMode(LED, OUTPUT);
Supla::Sensor::Binary *r2 = new Supla::Sensor::Binary(BUTT, true, true);
auto buttonCfgRelay =
new Supla::Control::Button(BUTTON_CFG_RELAY_GPIO, false, true);
MojaAkcja *custMojaAkcja = new MojaAkcja;
r2->addAction(MOJA_AKCJA_1, custMojaAkcja, Supla::ON_TURN_ON);
r2->addAction(MOJA_AKCJA_2, custMojaAkcja, Supla::ON_TURN_OFF);
buttonCfgRelay->setHoldTime(5000);
buttonCfgRelay->setMulticlickTime(500);
buttonCfgRelay->addAction(Supla::TOGGLE_CONFIG_MODE, SuplaDevice, Supla::ON_HOLD);
////SuplaDevice.setSuplaCACert(suplaCACert);
////SuplaDevice.setSupla3rdPartyCACert(supla3rdCACert);
SuplaDevice.setName("Pushover Garaż_woda");
SuplaDevice.begin();
if (Supla::Storage::ConfigInstance()->getString(PARAM1, PUSH_API_KEY, 200))
{
SUPLA_LOG_DEBUG(" **** Param[%s]: %s", PARAM1, PUSH_API_KEY);
}
else
{
SUPLA_LOG_DEBUG(" **** Param[%s] is not set", PARAM1);
}
if (Supla::Storage::ConfigInstance()->getString(PARAM2, PUSH_USER, 200))
{
SUPLA_LOG_DEBUG(" **** Param[%s]: %s", PARAM2, PUSH_USER);
}
else
{
SUPLA_LOG_DEBUG(" **** Param[%s] is not set", PARAM2);
}
}
void loop()
{
SuplaDevice.iterate();
}
Jeśli to nie zadziała, to wejdź do katalogu gdzie masz zainstalowane biblioteki dla Arduino, znajdź katalog Pushover i w pliku Pushover.cpp w tym miejscu: https://github.com/ArduinoHannover/Push ... er.cpp#L49
wstaw
Code: Select all
client->setBufferSizes(1024, 512);
Jeśli to też nie pomoże to daj znać, będę szukał dalej. Zbierz logi z informacjami o wolnej pamięci, tak aby było widać ile przybyło.
Kiedy będzie Supla Offline Party / SOP#2025 ?
-
- Posts: 525
- Joined: Wed Oct 26, 2022 7:35 pm
Właśnie miałem pytać czy coś się zadziało w temacie czy brak czasu. Już sprawdzam.
-
- Posts: 525
- Joined: Wed Oct 26, 2022 7:35 pm
@klew .... !!! w końcu odpocznę od tego. Stary... jesteś wielki. Wiedziałem
Zadziałał dopiero wpis w bibliotece. Sam kod uporządkowany który przysłałeś zachowywał się tak samo jak wcześniej.
Musiałem tylko zmienić -> na "." ale to oczywiście szczegół.
Kurna klew... wielkie dzięki że się nad tym pochyliłeś. Zaraz jeszcze sprawdzę ile to zaoszczędziło faktycznie pamięci i wstawię.
-
- Posts: 525
- Joined: Wed Oct 26, 2022 7:35 pm
RAM_SETUP_poczatek : 33952 setBufferSizes RAM_SETUP_poczatek : 32904 + 1048
RAM_SETUP_koniec: 26416 setBufferSizes RAM_SETUP_koniec: 27448 + 1032
RAM_iterate: 23472 setBufferSizes RAM_iterate: 26904 + 3432
RAM_SETUP_koniec: 26416 setBufferSizes RAM_SETUP_koniec: 27448 + 1032
RAM_iterate: 23472 setBufferSizes RAM_iterate: 26904 + 3432
-
- Posts: 101
- Joined: Thu Dec 08, 2022 3:00 pm
Ja próbowałem według tego co @klew napisał jest wpis w bibliotece client.setBufferSizes(1024, 512); i u mnie wywala Pushover send failed!
Co może być nie tak?
Co może być nie tak?
-
- Posts: 9704
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
Możesz w tym pliku "pushover.cpp" w metodzie "send", przed każdym "return false" wstawić jakiś log:nebraska wrote: Fri Apr 21, 2023 12:19 pm Ja próbowałem według tego co @klew napisał jest wpis w bibliotece client.setBufferSizes(1024, 512); i u mnie wywala Pushover send failed!
Co może być nie tak?
Serial.println(" *** Test 1");
etc
Jak odpalisz program, to w logach będziesz widział, w którym miejscu "send" się nie powiódł. Daj znać, to będziemy szukać przyczyny dalej.
Kiedy będzie Supla Offline Party / SOP#2025 ?
-
- Posts: 101
- Joined: Thu Dec 08, 2022 3:00 pm
Ok Wstawiłem do drugiego printa nie dochodzi.
a to w monitorze portu
Code: Select all
boolean Pushover::send(void) {
WiFiClientSecure client;
if (_unsafe) {
client.setInsecure();
}
client.setBufferSizes(1024, 512);
if (!client.connect("api.pushover.net", 443)) {
Serial.println(" *** Test 1111");
return false;
}
String post = String("token=")+_token+"&user="+_user+"&title="+_title+"&message="+_message+"&device="+_device+"&url="+_url+"&url_title="+_url_title+"&priority="+_priority+"&retry="+_retry+"&expire="+_expire+"&sound="+_sound;
if (_timestamp != 0) post += String("×tamp=")+_timestamp;
if (_html == true) post += String("&html=1");
String http = String("POST /1/messages.json HTTP/1.1\r\nHost: api.pushover.net\r\nConnection: close\r\nContent-Length: ")+post.length()+"\r\n\r\n"+post;
client.print(http);
int timeout_at = millis() + _timeout;
while (!client.available() && timeout_at - millis() < 0) {
client.stop();
Serial.println(" *** Test 2222");
return false;
}
String line;
while (client.available() != 0) {
if (client.read() == '{') break;
}
line = client.readStringUntil('\n');
return line.indexOf("\"status\":1") != -1 || line.indexOf("200 OK") != -1;
}
a to w monitorze portu
Code: Select all
*** Test 1111
Pushover send failed!
an--------------------oym
um-------------------eig
-
- Posts: 9704
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
Czyli na "client.connect" się wysypuje.
Wyrzuć tą wstawkę setBufferSizes i sprawdź jeszcze raz.
Sprawdź też ile masz wolnej pamięci.
Kiedy będzie Supla Offline Party / SOP#2025 ?
-
- Posts: 101
- Joined: Thu Dec 08, 2022 3:00 pm
Wyrzuciłem tą linie tak samo.
Wstawiłem w 3 miejscach jak pisałeś o tym wcześniej ESP.getFreeHeap(); tylko dziwne że nie pokazuje ilości RAM żadnej info wciskam rst i nic.
Wstawiłem w 3 miejscach jak pisałeś o tym wcześniej ESP.getFreeHeap(); tylko dziwne że nie pokazuje ilości RAM żadnej info wciskam rst i nic.