Supla Pushover x4 cd

Masz pomysł na funkcjonalność lub koncepcję na rozwój projektu. Opisz wszystko tutaj.
zzrr
Posts: 525
Joined: Wed Oct 26, 2022 7:35 pm

Post

klew wrote: Wed Apr 19, 2023 1:51 pm Spróbuję wieczorem przyjrzeć się jeszcze raz temu co wysłałeś.
ok. Super. Dzięki
User avatar
klew
Posts: 9704
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

zzrr wrote: Wed Apr 19, 2023 2:35 pm ok. Super. Dzięki
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();
}

Dodałem też sprawdzenie czy "send" się powiodło (w logach zobaczysz failed lub success).

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);
To zmiana zmniejszająca bufory dla szyfrowanych połączeń, przez co trochę mniej pamięci jest potrzebne do połączenia.

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 ?
zzrr
Posts: 525
Joined: Wed Oct 26, 2022 7:35 pm

Post

Właśnie miałem pytać czy coś się zadziało w temacie czy brak czasu. Już sprawdzam.
zzrr
Posts: 525
Joined: Wed Oct 26, 2022 7:35 pm

Post

:P :P :P :P :P :P

@klew .... !!! w końcu odpocznę od tego. Stary... jesteś wielki. Wiedziałem :P
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ę.
zzrr
Posts: 525
Joined: Wed Oct 26, 2022 7:35 pm

Post

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
nebraska
Posts: 101
Joined: Thu Dec 08, 2022 3:00 pm

Post

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?
User avatar
klew
Posts: 9704
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

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?
Możesz w tym pliku "pushover.cpp" w metodzie "send", przed każdym "return false" wstawić jakiś log:
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 ?
nebraska
Posts: 101
Joined: Thu Dec 08, 2022 3:00 pm

Post

Ok Wstawiłem do drugiego printa nie dochodzi.

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("&timestamp=")+_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
User avatar
klew
Posts: 9704
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

nebraska wrote: Fri Apr 21, 2023 12:47 pm Ok Wstawiłem do drugiego printa nie dochodzi.
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 ?
nebraska
Posts: 101
Joined: Thu Dec 08, 2022 3:00 pm

Post

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.

Return to “Pomysły i koncepcje”