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 ) mamy coś w rodzaju pamięci zdarzeń
Szczegóły w komentarzach do programu.
W załączniku program na ESP8266, ikony czujnika ruchu i czujnika otwarcia drzwi (kontaktronu).
Pozdrawiam, Duch__
Wersja 2.1.1 viewtopic.php?p=161101#p161101
SuplaSatelIntegrator 2.1.0 - program do integracji Supla z SATEL
-
- Posts: 1871
- Joined: Wed Aug 24, 2016 7:26 pm
- Location: Opole
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.
-
- Posts: 1871
- Joined: Wed Aug 24, 2016 7:26 pm
- Location: Opole
Czy ktoś przetestował program i ma jakieś uwagi?
-
- Posts: 4230
- Joined: Sat Dec 22, 2018 8:55 pm
- Location: Zielona Góra
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
Robert Błaszczak
Moja prywatna strona: www.blaszczak.pl
-
- Posts: 2594
- Joined: Thu Apr 30, 2020 5:18 pm
- Location: Częstochowa
Kilka problemów rozwiązałem samodzielnie ( ) 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;
| ~~~~~~~~~~~~~~^~~~~~
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;
5. Gdzie można zmienić domyślną nazwę urządzenia SUPLA-ESP8266 ?
YoMan
________________________________________
Wziąłem udział w SOP2023 & SOP2024
________________________________________
Wziąłem udział w SOP2023 & SOP2024
-
- Posts: 1871
- Joined: Wed Aug 24, 2016 7:26 pm
- Location: Opole
YoMan wrote: ↑Thu Sep 14, 2023 7:59 amKilka problemów rozwiązałem samodzielnie ( ) 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ć?:2. Co oznacza wartość "termometru"? Ilość naruszeń w okresie czasu?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; | ~~~~~~~~~~~~~~^~~~~~
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: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"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;
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ę.
-
- Posts: 4230
- Joined: Sat Dec 22, 2018 8:55 pm
- Location: Zielona Góra
Pozdrawiam
Robert Błaszczak
Moja prywatna strona: www.blaszczak.pl
Robert Błaszczak
Moja prywatna strona: www.blaszczak.pl
-
- Posts: 2594
- Joined: Thu Apr 30, 2020 5:18 pm
- Location: Częstochowa
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),0Duch__ 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.
YoMan
________________________________________
Wziąłem udział w SOP2023 & SOP2024
________________________________________
Wziąłem udział w SOP2023 & SOP2024
-
- Posts: 2594
- Joined: Thu Apr 30, 2020 5:18 pm
- Location: Częstochowa
tego nie mogłem namierzyćRobert Błaszczak wrote: ↑Thu Sep 14, 2023 9:52 am Ad 5
W void setup()Code: Select all
SuplaDevice.setName("NAZWA URZĄDZENIA");
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
________________________________________
Wziąłem udział w SOP2023 & SOP2024
-
- Posts: 4230
- Joined: Sat Dec 22, 2018 8:55 pm
- Location: Zielona Góra
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
Robert Błaszczak
Moja prywatna strona: www.blaszczak.pl