Supla scripts (1.0 - stare)

Post Reply
User avatar
fracz
Posts: 1603
Joined: Fri Oct 28, 2016 10:56 pm
Location: Rybna

Sat May 13, 2017 11:03 pm

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.

Code: Select all

<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.

Code: Select all

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:

Code: Select all

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:

Code: Select all

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

Code: Select all

git pull
php composer.phar install --no-dev --optimize-autoloader
Last edited by fracz on Tue Oct 03, 2017 1:55 pm, edited 9 times in total.
User avatar
fracz
Posts: 1603
Joined: Fri Oct 28, 2016 10:56 pm
Location: Rybna

Sat May 13, 2017 11:12 pm

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
Last edited by fracz on Tue Jun 13, 2017 7:05 am, edited 8 times in total.
User avatar
fracz
Posts: 1603
Joined: Fri Oct 28, 2016 10:56 pm
Location: Rybna

Sat May 13, 2017 11:15 pm

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.

Code: Select all

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) Viewed 10977 times

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

Code: Select all

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?

Code: Select all

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).
Last edited by fracz on Tue May 23, 2017 4:40 pm, edited 2 times in total.
User avatar
fracz
Posts: 1603
Joined: Fri Oct 28, 2016 10:56 pm
Location: Rybna

Sat May 13, 2017 11:23 pm

reserved
bicker
Posts: 345
Joined: Tue Feb 02, 2016 8:18 am

Mon May 15, 2017 8:08 am

Witam, ciekawe czy i kiedy te funkcjonalności przejdą do produkcyjnych serverów supli ?
nie każdy ma w domu malinkę..
User avatar
fracz
Posts: 1603
Joined: Fri Oct 28, 2016 10:56 pm
Location: Rybna

Mon May 15, 2017 9:03 am

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).
User avatar
nowy1
Posts: 322
Joined: Fri Jul 01, 2016 11:51 am
Location: Warszawa

Tue May 23, 2017 11:05 am

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

Code: Select all

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# 
User avatar
michael
Posts: 1007
Joined: Wed Nov 09, 2016 8:00 am
Location: Wojkowice

Tue May 23, 2017 11:09 am

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.
Kabel ucięty na miarę zawsze jest za krótki...
User avatar
pzygmunt
Posts: 7065
Joined: Tue Jan 19, 2016 9:26 am
Location: Paczków
Contact:

Tue May 23, 2017 11:13 am

nowy1 wrote:
Tue May 23, 2017 11:05 am
Witam,
mam problem po zainstalowaniu dostaje taki błąd

Code: Select all

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
User avatar
nowy1
Posts: 322
Joined: Fri Jul 01, 2016 11:51 am
Location: Warszawa

Tue May 23, 2017 11:32 am

pzygmunt wrote:
Tue May 23, 2017 11:13 am
nowy1 wrote:
Tue May 23, 2017 11:05 am
Witam,
mam problem po zainstalowaniu dostaje taki błąd

Code: Select all

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
Post Reply