Supla scripts (1.0 - stare)

Awatar użytkownika
fracz
Posty: 2256
Rejestracja: pt paź 28, 2016 10:56 pm
Lokalizacja: Kraków

Supla scripts to zestaw małych skryptów w PHP, które za pomocą dodanego do SUPLA Cloud w wersji 2.0 API wzbogacają Suplę o nowe funkcjonalności. Kod źródłowy skryptów znajduje się na GitHubie: https://github.com/fracz/supla-scripts/tree/v1.0

Wersja v2.0 skryptów z interfejsem użytkownika i możliwością założenia konta bez instalacji skryptów u siebie jest dyskutowana w tym wątku: viewtopic.php?f=24&t=2359

Jakość tych rozwiązań należy traktować jako prototypowe, więc czasem mogą nie działać oraz nie być na tyle bezpieczne na ile być powinny (szczególnie, jeśli będą działać po HTTP a nie HTTPS). Jeśli oczekujesz większej stabilności, bezpieczeństwa i wygody użytkowania lub konfiguracji, musisz poczekać na oficjalne dodanie tych funkcjonalności do projektu (raczej wszystkie są prędzej czy później planowane).

Wstępne wymagania
Musisz mieć swój serwer / VPS / Raspberry / coś podobnego. Linux, który jest dostępny po sieci z miejsca gdzie chcesz mieć dostęp do skryptów i z którego widać Twojego clouda. Skrypty nie muszą być zainstalowane na tym samym serwerze co Cloud. W szczególności, możesz używać skryptów na swoim serwerze i korzystać z oficjalnego Clouda. Jeśli używasz przygotowanego obrazu z Supla Cloud, Twój system operacyjny powinien spełniać wszystkie wymagania (możesz przejść do instalacji).

Jeśli używasz innego serwera niż ten z obrazu uruchomieniowego supli, upewnij się że na serwerze jest Apache (lub coś podobnego) i PHP 5.6+ z rozszerzeniem curl. Apache powinien mieć włączony rewrite (włączysz go komendą a2enmod rewrite). Katalog, w którym są skrypty powinien pozwalać na używanie w nim plików .htaccess. Najczęściej wystarczy w pliku /etc/apache2/sites-available/000-default.conf dopisać poniższy kod, upewniając się w tym katalogu (niekoniecznie bezpośrednio) będą zainstalowane skrypty.

Kod: Zaznacz cały

<Directory "/var/www">
  AllowOverride All
</Directory>
Instalacja
Jak już masz serwer, wykonaj na nim następujące komendy w katalogu, do którego dostęp jest przez przeglądarkę (na ogół jest to /var/www/html). Na początku klonuje się repozytorium ze skryptami, potem instaluje się Composer wg instrukcji stąd https://getcomposer.org/download/, potem instalują się zależności projektu a na koniec tworzony jest przykładowy plik konfiguracyjny.

Kod: Zaznacz cały

git clone https://github.com/fracz/supla-scripts.git
cd supla-scripts
curl -s http://getcomposer.org/installer | php
php composer.phar install --no-dev --optimize-autoloader
cp config.php.sample config.php
Następnie otwórz plik config.php i wpisz w nim dane konieczne do komunikacji z API (dostęp do tych ustawień znajdziesz w Twoim cloudzie tak jak napisano tutaj: https://github.com/SUPLA/api-client-php#configuration).

Poza konfiguracją dostępu do Cloud, w tym pliku znajdują się również dwie opcje pozwalające na określenie logowania za pomocą HTTP Basic Auth do samych skryptów jako mini zabezpieczenie przed nieuprawnionym dostępem.

Jeśli wszystko robisz z roota, upewnij się że Apache będzie mógł pisać w katalogu z logami, przypisując go do użytkownika i grupy www-data:

Kod: Zaznacz cały

chown -R www-data:www-data supla-scripts/logs
chmod g+s supla-scripts/logs
Jeśli wszystko dobrze skonfigurowałeś, to po wykonaniu następującej komendy powinieneś w konsoli zobaczyć listę swoich urządzeń wraz z kanałami:

Kod: Zaznacz cały

php devices/devices.php
Aktualizacja
W katalogu supla-scripts wykonaj

Kod: Zaznacz cały

git pull
php composer.phar install --no-dev --optimize-autoloader
Ostatnio zmieniony wt paź 03, 2017 1:55 pm przez fracz, łącznie zmieniany 9 razy.
Awatar użytkownika
fracz
Posty: 2256
Rejestracja: pt paź 28, 2016 10:56 pm
Lokalizacja: Kraków

Widgety
Widgety za pomocą dostarczonych skrptów mogą zmieniać stan kanału na wybrany, robić toggle (pierwsze wciśnięcie włącz, drugie wyłącz itd), aktywować sceny lub odczytywać temperaturę.
Sceny
viewtopic.php?f=9&t=2059

Termostat
viewtopic.php?f=9&t=2046

Wykonywanie akcji w zależności od lokalizacji
viewtopic.php?f=9&t=2098

Sterowanie komendami głosowymi
viewtopic.php?f=9&t=1969&start=10#p9643

Historia temperatur (ekstremum i średnia)
Przykładowe requesty tu: https://github.com/fracz/supla-scripts# ... ture-stats
Przykład wykorzystania w widgecie: viewtopic.php?f=9&t=2045&start=10#p9615

Prosty pilot do taśmy RGB z predefiniowanymi kolorami
viewtopic.php?f=9&t=2110

Powiadomienia na urządzenia mobilne
viewtopic.php?f=9&t=2121
Ostatnio zmieniony wt cze 13, 2017 7:05 am przez fracz, łącznie zmieniany 8 razy.
Awatar użytkownika
fracz
Posty: 2256
Rejestracja: pt paź 28, 2016 10:56 pm
Lokalizacja: Kraków

Skąd wziąć id kanału?
Po uruchomieniu następującej komendy w katalogu supla-scripts otrzymasz listę swoich urządzeń oraz kanałów, wraz z identyfikatorami.

Kod: Zaznacz cały

php devices/devices.php
ID kanału możesz też podglądnąć w Cloud. Po wejściu w edycję kanału id jest widoczne w URLu.
idkanalu.jpg
idkanalu.jpg (82.52 KiB) Przejrzano 25216 razy

Jak sprawdzić na jakim adresie Cloud API oczekuje połączeń?
W katalogu z cloudem (domyślnie /var/www/html) wykonaj poniższą komendę:

Kod: Zaznacz cały

php bin/console debug:router | grep put_channels
Przedostatnia wartość w wyświetlonej linii to host, na którym API oczekuje połączeń. Ta wartośc powinna być podana w opcji SUPLA_SERVER w konfiguracji skryptów.


Jaki adres SUPLA_SERVER podać, gdy konfiguruję skrypty na tym samym RaspberryPI na którym uruchomiony jest SUPLA-CLOUD?

Kod: Zaznacz cały

define('SUPLA_SERVER', 'raspberrypi');

Nie działają adresy URL, które są podane w instrukcjach
Na przykładzie temperatury: jeśli nie działa wywołanie twojamalina.eu/supla-scripts/temperature/1234 ale działą twojamalina.eu/supla-scripts/temperature/temperature.php?channel=1234 to znaczy że jest coś nie tak z modułem rewrite apache. Upewnij się, że zainstalowany jest moduł rewrite (a2enmod rewrite) oraz że dodałeś odpowiednią konfigurację dla katalogu ze skryptami (szukaj AllowOverride 2 posty wyżej).
Ostatnio zmieniony wt maja 23, 2017 4:40 pm przez fracz, łącznie zmieniany 2 razy.
Awatar użytkownika
fracz
Posty: 2256
Rejestracja: pt paź 28, 2016 10:56 pm
Lokalizacja: Kraków

reserved
bicker
Posty: 469
Rejestracja: wt lut 02, 2016 8:18 am

Witam, ciekawe czy i kiedy te funkcjonalności przejdą do produkcyjnych serverów supli ?
nie każdy ma w domu malinkę..
Awatar użytkownika
fracz
Posty: 2256
Rejestracja: pt paź 28, 2016 10:56 pm
Lokalizacja: Kraków

Nie trzeba mieć malinki. Wystarczy jakiś zwykły mini hosting współdzielony z PHP. Nie wiem czy nawet nie ma darmowych.

Teoretycznie mógłbym uruchomić wersję skryptów hostowanych u siebie, ale mam mieszane uczucia ze względu na znaczne obniżenie bezpieczeństwa takiego rozwiązania (dane logowania do API musiałyby być przesyłane po HTTP).
Awatar użytkownika
nowy1
Posty: 339
Rejestracja: pt lip 01, 2016 11:51 am
Lokalizacja: Warszawa

Witam,
mam problem po zainstalowaniu dostaje taki błąd

Kod: Zaznacz cały

root@NanoPi2:/var/www/html/supla-scripts# php devices/devices.php
PHP Fatal error:  Call to undefined function Supla\ApiClient\curl_init() in /var/www/html/supla-scripts/vendor/supla/api-client/src/SuplaApiClient.php on line 69
root@NanoPi2:/var/www/html/supla-scripts# 
Awatar użytkownika
michael
Posty: 1299
Rejestracja: śr lis 09, 2016 8:00 am
Lokalizacja: Wojkowice

Nie wiem czy to będzie problemem, ale u mnie ta ścieżka to /var/www/html/web/supla-scripts
i pięknie działa.
:mrgreen: :mrgreen: :mrgreen:
Awatar użytkownika
pzygmunt
Posty: 18335
Rejestracja: wt sty 19, 2016 9:26 am
Lokalizacja: Paczków
Kontakt:

nowy1 pisze: wt maja 23, 2017 11:05 am Witam,
mam problem po zainstalowaniu dostaje taki błąd

Kod: Zaznacz cały

root@NanoPi2:/var/www/html/supla-scripts# php devices/devices.php
PHP Fatal error:  Call to undefined function Supla\ApiClient\curl_init() in /var/www/html/supla-scripts/vendor/supla/api-client/src/SuplaApiClient.php on line 69
root@NanoPi2:/var/www/html/supla-scripts# 
Doinstaluj curl-a dla php7
Awatar użytkownika
nowy1
Posty: 339
Rejestracja: pt lip 01, 2016 11:51 am
Lokalizacja: Warszawa

pzygmunt pisze: wt maja 23, 2017 11:13 am
nowy1 pisze: wt maja 23, 2017 11:05 am Witam,
mam problem po zainstalowaniu dostaje taki błąd

Kod: Zaznacz cały

root@NanoPi2:/var/www/html/supla-scripts# php devices/devices.php
PHP Fatal error:  Call to undefined function Supla\ApiClient\curl_init() in /var/www/html/supla-scripts/vendor/supla/api-client/src/SuplaApiClient.php on line 69
root@NanoPi2:/var/www/html/supla-scripts# 
Doinstaluj curl-a dla php7
dziekuje

drugi błąd to wpisywałem https://svr1.supla.org zamiast svr1.supla.org
ODPOWIEDZ

Wróć do „Projekty użytkowników”