SuplaSatelIntegrator 2.1.0 - program do integracji Supla z SATEL

User avatar
Duch__
Posts: 1871
Joined: Wed Aug 24, 2016 7:26 pm
Location: Opole

Post

Witam.

Udostępniam kod do integracji central SATEL INTEGRA (24,32,64,128 i 256) z oprogramowaniem SUPLA.
W prezentowanej wersji odczytywany jest stan wejść i przesyłany do chmury SUPLA z informacją o czasie (minuty + sekundy) od ostatniego naruszenia wejścia centrali. Za pomocą wykresów (kanału temperatury :twisted: ) mamy coś w rodzaju pamięci zdarzeń :lol:

Szczegóły w komentarzach do programu.

W załączniku program na ESP8266, ikony czujnika ruchu i czujnika otwarcia drzwi (kontaktronu).

Pozdrawiam, Duch__

SuplaSatelIntegrator 2.1.0.7z

Wersja 2.1.1 viewtopic.php?p=161101#p161101
You do not have the required permissions to view the files attached to this post.
Last edited by Duch__ on Mon Sep 18, 2023 6:10 pm, edited 1 time in total.
Image
User avatar
Duch__
Posts: 1871
Joined: Wed Aug 24, 2016 7:26 pm
Location: Opole

Post

Czy ktoś przetestował program i ma jakieś uwagi?
Image
User avatar
YoMan
Posts: 2594
Joined: Thu Apr 30, 2020 5:18 pm
Location: Częstochowa

Post

Duch__ wrote: Wed Sep 13, 2023 4:38 pm Czy ktoś przetestował program i ma jakieś uwagi?
Jeszcze nie miałem wolnej chwili. Może dzisiaj ;)
YoMan
________________________________________
Wziąłem udział w SOP2023 & SOP2024
User avatar
Robert Błaszczak
Posts: 4230
Joined: Sat Dec 22, 2018 8:55 pm
Location: Zielona Góra

Post

Ja mam Versę Plus, a tu niestety nie ma możliwości integracji. Ale wysyłam na wyjściu OC4 do Supli stan centrali alarmowej (uzbrojona/rozbrojona) i tym stanem wyzwalam reakcje (wyłączenie niektórych urządzeń/świateł) w mieszkaniu.
Pozdrawiam
Robert Błaszczak


Moja prywatna strona: www.blaszczak.pl
User avatar
YoMan
Posts: 2594
Joined: Thu Apr 30, 2020 5:18 pm
Location: Częstochowa

Post

Duch__ wrote: Wed Sep 13, 2023 4:38 pm Czy ktoś przetestował program i ma jakieś uwagi?
Kilka problemów rozwiązałem samodzielnie ( :D ) i program sie kompiluje i działa na 256. Dzisiaj test na 128 (nie miałem wczoraj danych dostępowych)
Powstaje kilka pytań:
1. Podczas kompilacji o co tutaj może chodzić? To są jakieś błędy? Czy się nie przejmować?:

Code: Select all

C:\Users\Admin\AppData\Local\Temp\.arduinoIDE-unsaved2023813-10648-xi7z2w.dadva\sketch_sep13a\sketch_sep13a.ino: In function 'void SATEL_ANALIZA()':
C:\Users\Admin\AppData\Local\Temp\.arduinoIDE-unsaved2023813-10648-xi7z2w.dadva\sketch_sep13a\sketch_sep13a.ino:806:19: warning: 'void* __builtin_memset(void*, int, unsigned int)' writing 50 bytes into a region of size 49 overflows the destination [-Wstringop-overflow=]
  806 |     SATEL_DATA[A] = 0xFF;
      |     ~~~~~~~~~~~~~~^~~~~~
C:\Users\Admin\AppData\Local\Temp\.arduinoIDE-unsaved2023813-10648-xi7z2w.dadva\sketch_sep13a\sketch_sep13a.ino:807:19: warning: 'void* __builtin_memset(void*, int, unsigned int)' writing 50 bytes into a region of size 49 overflows the destination [-Wstringop-overflow=]
  807 |     SATEL_D_RX[A] = 0xFF;                 //Zapisujemy wszystkie bufory 0xFF
      |     ~~~~~~~~~~~~~~^~~~~~
C:\Users\Admin\AppData\Local\Temp\.arduinoIDE-unsaved2023813-10648-xi7z2w.dadva\sketch_sep13a\sketch_sep13a.ino:808:19: warning: 'void* __builtin_memset(void*, int, unsigned int)' writing 50 bytes into a region of size 49 overflows the destination [-Wstringop-overflow=]
  808 |     SATEL_D_TX[A] = 0xFF;
      |     ~~~~~~~~~~~~~~^~~~~~
C:\Users\Admin\AppData\Local\Temp\.arduinoIDE-unsaved2023813-10648-xi7z2w.dadva\sketch_sep13a\sketch_sep13a.ino: In function 'void SATEL_Odczytaj()':
C:\Users\Admin\AppData\Local\Temp\.arduinoIDE-unsaved2023813-10648-xi7z2w.dadva\sketch_sep13a\sketch_sep13a.ino:556:21: warning: 'void* __builtin_memset(void*, int, unsigned int)' writing 50 bytes into a region of size 49 overflows the destination [-Wstringop-overflow=]
  556 |       SATEL_DATA[A] = 0xFF;
      |       ~~~~~~~~~~~~~~^~~~~~
C:\Users\Admin\AppData\Local\Temp\.arduinoIDE-unsaved2023813-10648-xi7z2w.dadva\sketch_sep13a\sketch_sep13a.ino:557:21: warning: 'void* __builtin_memset(void*, int, unsigned int)' writing 50 bytes into a region of size 49 overflows the destination [-Wstringop-overflow=]
  557 |       SATEL_D_RX[A] = 0xFF;
      |       ~~~~~~~~~~~~~~^~~~~~
C:\Users\Admin\AppData\Local\Temp\.arduinoIDE-unsaved2023813-10648-xi7z2w.dadva\sketch_sep13a\sketch_sep13a.ino:558:21: warning: 'void* __builtin_memset(void*, int, unsigned int)' writing 50 bytes into a region of size 49 overflows the destination [-Wstringop-overflow=]
  558 |       SATEL_D_TX[A] = 0xFF;
      |       ~~~~~~~~~~~~~~^~~~~~

2. Co oznacza wartość "termometru"? Ilość naruszeń w okresie czasu?
3. Czy każdy "termometr" to jedna linia we/wy? Jeżeli chciałbym objąć wszystkie linie to muszę zwiększyć ilość linii w każdym miejscu gdzie jest "wyliczanka do 10"? Czy mogę pominąć nieużywane? np. 4,5,6,15,20 czy też muszą być wszystkie po kolei do najwyższej?
4. Gdybym potrzebował coś na kształt sensora/krańcówki w supli to zakładam, że musiałbym zmienić te linie:

Code: Select all

auto czujnik_1 = new VirtualThermometer;   // Deklarujemy jesli chcemy mieć wykresy naruszeń
auto czujnik_2 = new VirtualThermometer;
auto czujnik_3 = new VirtualThermometer;
auto czujnik_4 = new VirtualThermometer;
auto czujnik_5 = new VirtualThermometer;
auto czujnik_6 = new VirtualThermometer;
ale nie bardzo wiem na co i czy to wystarczy. Teoretycznie można obejść ustawiając warunek temperatury poniżej 240 ale jakieś to mało "eleganckie"
5. Gdzie można zmienić domyślną nazwę urządzenia SUPLA-ESP8266 ?
YoMan
________________________________________
Wziąłem udział w SOP2023 & SOP2024
User avatar
Duch__
Posts: 1871
Joined: Wed Aug 24, 2016 7:26 pm
Location: Opole

Post

YoMan wrote: Thu Sep 14, 2023 7:59 am
Duch__ wrote: Wed Sep 13, 2023 4:38 pm Czy ktoś przetestował program i ma jakieś uwagi?
Kilka problemów rozwiązałem samodzielnie ( :D ) i program sie kompiluje i działa na 256. Dzisiaj test na 128 (nie miałem wczoraj danych dostępowych)
Powstaje kilka pytań:
1. Podczas kompilacji o co tutaj może chodzić? To są jakieś błędy? Czy się nie przejmować?:

Code: Select all

C:\Users\Admin\AppData\Local\Temp\.arduinoIDE-unsaved2023813-10648-xi7z2w.dadva\sketch_sep13a\sketch_sep13a.ino: In function 'void SATEL_ANALIZA()':
C:\Users\Admin\AppData\Local\Temp\.arduinoIDE-unsaved2023813-10648-xi7z2w.dadva\sketch_sep13a\sketch_sep13a.ino:806:19: warning: 'void* __builtin_memset(void*, int, unsigned int)' writing 50 bytes into a region of size 49 overflows the destination [-Wstringop-overflow=]
  806 |     SATEL_DATA[A] = 0xFF;
      |     ~~~~~~~~~~~~~~^~~~~~
C:\Users\Admin\AppData\Local\Temp\.arduinoIDE-unsaved2023813-10648-xi7z2w.dadva\sketch_sep13a\sketch_sep13a.ino:807:19: warning: 'void* __builtin_memset(void*, int, unsigned int)' writing 50 bytes into a region of size 49 overflows the destination [-Wstringop-overflow=]
  807 |     SATEL_D_RX[A] = 0xFF;                 //Zapisujemy wszystkie bufory 0xFF
      |     ~~~~~~~~~~~~~~^~~~~~
C:\Users\Admin\AppData\Local\Temp\.arduinoIDE-unsaved2023813-10648-xi7z2w.dadva\sketch_sep13a\sketch_sep13a.ino:808:19: warning: 'void* __builtin_memset(void*, int, unsigned int)' writing 50 bytes into a region of size 49 overflows the destination [-Wstringop-overflow=]
  808 |     SATEL_D_TX[A] = 0xFF;
      |     ~~~~~~~~~~~~~~^~~~~~
C:\Users\Admin\AppData\Local\Temp\.arduinoIDE-unsaved2023813-10648-xi7z2w.dadva\sketch_sep13a\sketch_sep13a.ino: In function 'void SATEL_Odczytaj()':
C:\Users\Admin\AppData\Local\Temp\.arduinoIDE-unsaved2023813-10648-xi7z2w.dadva\sketch_sep13a\sketch_sep13a.ino:556:21: warning: 'void* __builtin_memset(void*, int, unsigned int)' writing 50 bytes into a region of size 49 overflows the destination [-Wstringop-overflow=]
  556 |       SATEL_DATA[A] = 0xFF;
      |       ~~~~~~~~~~~~~~^~~~~~
C:\Users\Admin\AppData\Local\Temp\.arduinoIDE-unsaved2023813-10648-xi7z2w.dadva\sketch_sep13a\sketch_sep13a.ino:557:21: warning: 'void* __builtin_memset(void*, int, unsigned int)' writing 50 bytes into a region of size 49 overflows the destination [-Wstringop-overflow=]
  557 |       SATEL_D_RX[A] = 0xFF;
      |       ~~~~~~~~~~~~~~^~~~~~
C:\Users\Admin\AppData\Local\Temp\.arduinoIDE-unsaved2023813-10648-xi7z2w.dadva\sketch_sep13a\sketch_sep13a.ino:558:21: warning: 'void* __builtin_memset(void*, int, unsigned int)' writing 50 bytes into a region of size 49 overflows the destination [-Wstringop-overflow=]
  558 |       SATEL_D_TX[A] = 0xFF;
      |       ~~~~~~~~~~~~~~^~~~~~

2. Co oznacza wartość "termometru"? Ilość naruszeń w okresie czasu?
3. Czy każdy "termometr" to jedna linia we/wy? Jeżeli chciałbym objąć wszystkie linie to muszę zwiększyć ilość linii w każdym miejscu gdzie jest "wyliczanka do 10"? Czy mogę pominąć nieużywane? np. 4,5,6,15,20 czy też muszą być wszystkie po kolei do najwyższej?
4. Gdybym potrzebował coś na kształt sensora/krańcówki w supli to zakładam, że musiałbym zmienić te linie:

Code: Select all

auto czujnik_1 = new VirtualThermometer;   // Deklarujemy jesli chcemy mieć wykresy naruszeń
auto czujnik_2 = new VirtualThermometer;
auto czujnik_3 = new VirtualThermometer;
auto czujnik_4 = new VirtualThermometer;
auto czujnik_5 = new VirtualThermometer;
auto czujnik_6 = new VirtualThermometer;
ale nie bardzo wiem na co i czy to wystarczy. Teoretycznie można obejść ustawiając warunek temperatury poniżej 240 ale jakieś to mało "eleganckie"
5. Gdzie można zmienić domyślną nazwę urządzenia SUPLA-ESP8266 ?

AD1. "Błędy" w czasie kompilacji nie stanowią problemu, nawet nie wiem kiedy się one pojawiły.
AD2. Naruszenie linii zeruje licznik_sekund i licznik_minut wyjścia, tak więc jak "czujnik temperatury" wskazuje 0.0stC to znaczy że w tej chwili nastąpiło naruszenie. Wartość 0.3stC oznacza że 30 sekund temu nastąpiło naruszenie, a wartość 10.5 że 10 minut i 50 sekund temu nastąpiło ostatnie naruszenie.
AD3. Jeden czujnik temperatury = jeden linia wejściowa / wyjściowa / strefa lub co się tam ustawi.
AD4. Tak. Przyjęcie przez czujnik wartości 240 oznacza że ponad 4h temu nastąpiło ostatnie naruszenie danego czujnika. Wartość ta została dobrana w związku z tym żeby były widoczne zmiany na wykresach. Każdy spadek wartości bliskiej 0 (serwer zaokrągla wyniki) odczytujemy jako naruszenie linii.
AD5. Tutaj nie pomogę.
Image
User avatar
Robert Błaszczak
Posts: 4230
Joined: Sat Dec 22, 2018 8:55 pm
Location: Zielona Góra

Post

Ad 5

W void setup()

Code: Select all

SuplaDevice.setName("NAZWA URZĄDZENIA");
Pozdrawiam
Robert Błaszczak


Moja prywatna strona: www.blaszczak.pl
User avatar
YoMan
Posts: 2594
Joined: Thu Apr 30, 2020 5:18 pm
Location: Częstochowa

Post

Duch__ wrote: Thu Sep 14, 2023 9:37 am
AD2. Naruszenie linii zeruje licznik_sekund i licznik_minut wyjścia, tak więc jak "czujnik temperatury" wskazuje 0.0stC to znaczy że w tej chwili nastąpiło naruszenie. Wartość 0.3stC oznacza że 30 sekund temu nastąpiło naruszenie, a wartość 10.5 że 10 minut i 50 sekund temu nastąpiło ostatnie naruszenie.
No to u mnie działa nieco inaczej tzn. generalnie co 10s przeskakuje o 0,2 a tylko czasami o 0,1 (np. 6,2 - 6,4 - 6,6 - 7,1 - 7,3 - 7,4) poza tym zdarza się pokazać x,6 co chyba nie powinno mieć miejsca bo powinien przeskoczyc na (x+1),0
YoMan
________________________________________
Wziąłem udział w SOP2023 & SOP2024
User avatar
YoMan
Posts: 2594
Joined: Thu Apr 30, 2020 5:18 pm
Location: Częstochowa

Post

Robert Błaszczak wrote: Thu Sep 14, 2023 9:52 am Ad 5

W void setup()

Code: Select all

SuplaDevice.setName("NAZWA URZĄDZENIA");
tego nie mogłem namierzyć :)
Dla nauki i wyjaśnienia: ta nazwa która jest to jest wstawiana domyślnie (wpisana w bibliotekę)?
YoMan
________________________________________
Wziąłem udział w SOP2023 & SOP2024
User avatar
Robert Błaszczak
Posts: 4230
Joined: Sat Dec 22, 2018 8:55 pm
Location: Zielona Góra

Post

Tak, jest wpisana w bibliotekę i jest automatycznie podstawiana, jeśli w kodzie brak deklaracji własnej nazwy.
Pozdrawiam
Robert Błaszczak


Moja prywatna strona: www.blaszczak.pl

Return to “Nowości”