SUPLA Events - "zdarzenia"

piotr.bieda@post.pl
Posty: 35
Rejestracja: pt lis 15, 2019 7:07 pm

Cześć,

Postanowiłem przejść do walki z Supla Events :)

Napotkałem problem z automatycznym wykonywaniem linków.
Ustawiłem dwa zdarzenia, które wykonują się jeżeli wywołuje bezpośrednio linki w przeglądarce. Nie chcą natomiast wykonywać się automatycznie.
Zauważyłem tylko że przy wywołaniu ręcznym event.yml dostaję taki oto komunikat:

Kod: Zaznacz cały

pi@raspberrypi:~ $ docker exec -u www-data supla-cloud php bin/console supla:unofficial:simulate-events --dispatch

In Parser.php line 474:

  Unable to parse at line 5 (near "webhooks https://192.168.1.25:444/api/scen
  es/public/08aed033-c2d5-48d0-92dd-3ef9440a3e7e").


supla:unofficial:simulate-events [--dispatch] [-h|--help] [-q|--quiet] [-v|vv|vvv|--verbose] [-V|--version] [--ansi] [--no-ansi] [-n|--no-interaction] [-e|--env ENV] [--no-debug] [--] <command>
Mój plik events.yml wygląda następująco:

Kod: Zaznacz cały

events:
  - condition: state(2).on # when the channel with ID324 changes its state to ON
    webhooks https://192.168.1.25:444/api/scenes/public/08aed033-c2d5-48d0-92dd-3ef9440a3e7e

  - condition: not state(2).on # when the channel with ID324 changes its state to OFF
    webhooks: https://192.168.1.25:444/api/scenes/public/4e7d6dd4-5815-4c47-b268-129df461184e

Tak swoją drogą dałoby się może wywoływać same linki z supla scripts np. co 5 sekund?
Warunki mam wpisane w scenach więc nie musiałbym ich powtarzać.
Awatar użytkownika
lukfud
Posty: 2087
Rejestracja: czw lis 23, 2017 11:33 pm
Lokalizacja: Warszawa

Wstaw " : " po "webhooks"
https://www.facebook.com/groups/supladiy/
piotr.bieda@post.pl
Posty: 35
Rejestracja: pt lis 15, 2019 7:07 pm

Dzięki :)

Ale na laika wyszedłem :)
Zobaczyłem dopiero jak napisałeś :)
Może to ta pora.

Jeszcze raz dzięki, działa!
piotr.bieda@post.pl
Posty: 35
Rejestracja: pt lis 15, 2019 7:07 pm

Zbyt długo się nie nacieszyłem :(
Postanowiłem ogarnąć powrót supli po zaniku zasilania.

Po restarcie już eventy nie działają.
Cała supla (db, cloud, server) + supla scripts uruchamiają się prawidłowo.

Natomiast po wymuszeniu eventów pokazuje się taki komunikat.

Kod: Zaznacz cały

pi@raspberrypi:~ $ docker exec -u www-data supla-cloud php bin/console supla:uno                                                                                     fficial:simulate-events --dispatch


  There are no commands defined in the "supla:unofficial" namespace.

  Did you mean one of these?
      supla
      supla:clean
      supla:oauth
      supla:user


pi@raspberrypi:~ $
Widziałem że ktoś miał już wcześniej taki problem ale nie opisał dokładnie co było przyczyną.

Próbowałem:

Kod: Zaznacz cały

pi@raspberrypi:~ $ docker exec -u www-data supla-cloud php bin/console cache:warmup

 // Warming up the cache for the prod environment with debug
 // false

 [OK] Cache for the "prod" environment (debug=false) was successfully warmed.

pi@raspberrypi:~ $ 

Kod: Zaznacz cały

pi@raspberrypi:~/supla-docker $ docker-compose stop
Stopping supla-server ... done
Stopping supla-cloud  ... done
Stopping supla-db     ... done
pi@raspberrypi:~/supla-docker $ docker-compose rm -f
Going to remove supla-server, supla-cloud, supla-db
Removing supla-server ... done
Removing supla-cloud  ... done
Removing supla-db     ... done
pi@raspberrypi:~/supla-docker $ ./supla.sh start
Starting SUPLA containers
Creating supla-db ... done
Creating supla-cloud ... done
Creating supla-server ... done
SUPLA containers has been started.
pi@raspberrypi:~/supla-docker $
Efekt cały czas ten sam :(

Miałem też problem po restarcie, musiałem ręcznie zatrzymywać: docker stop nginx-web, bo inaczej supla-cloud krzyczał że port 433 już jest zajęty. Na marginesie po restarcie wszystko wstaje oprócz supla-cloud, ale jak ręcznie uruchomie to nie ma problemu...
Awatar użytkownika
fracz
Posty: 2256
Rejestracja: pt paź 28, 2016 10:56 pm
Lokalizacja: Kraków

Jak uruchamiasz kontenery po restarcie maszyny?
piotr.bieda@post.pl
Posty: 35
Rejestracja: pt lis 15, 2019 7:07 pm

W pliku /etc/rc.local mam

Kod: Zaznacz cały

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi
sudo /home/pi/supla-docker/docker-compose rm -fs
sudo bash /home/pi/supla-docker/supla.sh start &
exit 0
Sprawdziłem też logi i przy starcie mam jakieś błędy :(

Kod: Zaznacz cały

pi@raspberrypi:~ $ ./supla-docker/supla.sh restart
Stopping SUPLA containers
Stopping supla-server ... done
Stopping supla-db     ... done
SUPLA containers has been stopped.
Starting SUPLA containers
Starting supla-db ... done
Starting supla-cloud ... done
Starting supla-server ... done
SUPLA containers has been started.
pi@raspberrypi:~ $ docker logs --tail=50 supla-cloud


supla:clean:passed-io-client-registration-dates
-----------------------------------------------

Client registration expiration date - cleared: 0
I/O Device registration expiration date - cleared: 0

supla:clean:disable-demo-client-apps
------------------------------------

Clients to disable: 0


In DefinitionErrorExceptionPass.php line 37:

  Cannot autowire service "SuplaBundle\Command\SimulateEventsCommand": argume
  nt "$channelStateGetter" of method "__construct()" has type "SuplaApiBundle
  \Model\ChannelStateGetter\ChannelStateGetter" but this class was not found.



In DefinitionErrorExceptionPass.php line 37:

  Cannot autowire service "SuplaBundle\Command\SimulateEventsCommand": argume
  nt "$channelStateGetter" of method "__construct()" has type "SuplaApiBundle
  \Model\ChannelStateGetter\ChannelStateGetter" but this class was not found.


2019-11-24 20:27:21,503 WARN received SIGTERM indicating exit request
2019-11-24 20:27:21,504 INFO waiting for apache, cron to die
2019-11-24 20:27:21,505 INFO stopped: cron (terminated by SIGTERM)
[Sun Nov 24 20:27:21.589944 2019] [mpm_prefork:notice] [pid 53] AH00169: caught SIGTERM, shutting down
2019-11-24 20:27:21,624 INFO stopped: apache (exit status 0)

In DefinitionErrorExceptionPass.php line 37:

  Cannot autowire service "SuplaBundle\Command\SimulateEventsCommand": argume
  nt "$channelStateGetter" of method "__construct()" has type "SuplaApiBundle
  \Model\ChannelStateGetter\ChannelStateGetter" but this class was not found.



In DefinitionErrorExceptionPass.php line 37:

  Cannot autowire service "SuplaBundle\Command\SimulateEventsCommand": argume
  nt "$channelStateGetter" of method "__construct()" has type "SuplaApiBundle
  \Model\ChannelStateGetter\ChannelStateGetter" but this class was not found.


pi@raspberrypi:~ $ docker ps
CONTAINER ID        IMAGE                        COMMAND                  CREATED             STATUS              PORTS                                      NAMES
94d64d54331f        supla/supla-server:arm32v7   "/usr/bin/server-ent…"   3 hours ago         Up 13 seconds       0.0.0.0:2015-2016->2015-2016/tcp           supla-server
4e316abe017a        hypriot/rpi-mysql:5.5        "/entrypoint.sh mysq…"   7 hours ago         Up 16 seconds       3306/tcp                                   supla-db
0806bac32231        suplascripts_suplascripts    "docker-php-entrypoi…"   8 hours ago         Up 3 hours          0.0.0.0:81->80/tcp, 0.0.0.0:444->443/tcp   suplascripts
8e0a06bb6724        hypriot/rpi-mysql:5.5        "/entrypoint.sh mysq…"   8 hours ago         Up 3 hours          3306/tcp                                   suplascripts-db
Awatar użytkownika
fracz
Posty: 2256
Rejestracja: pt paź 28, 2016 10:56 pm
Lokalizacja: Kraków

W międzyczasie wyszła aktualizacja clouda (v2.3.17), a te operacje (usuwanie i startowanie kontenerów) powodują, że pobiera się najnowsza wersja.

Spróbuj wykonać ręcznie ./supla.sh upgrade

A następnie jeszcze raz wkopiuj komendę i konfigurację eventów (one będą zawsze tracone przy aktualizacji).
Awatar użytkownika
michael
Posty: 1299
Rejestracja: śr lis 09, 2016 8:00 am
Lokalizacja: Wojkowice

fracz pisze: pn lis 25, 2019 9:22 am A następnie jeszcze raz wkopiuj komendę i konfigurację eventów (one będą zawsze tracone przy aktualizacji).
Od siebie dodam, że u mnie sama przebudowa cache nie wystarczyła. Musiałem dodatkowo zrestartować kontenery i wszystko dopiero wtedy poprawnie ruszyło.
:mrgreen: :mrgreen: :mrgreen:
piotr.bieda@post.pl
Posty: 35
Rejestracja: pt lis 15, 2019 7:07 pm

Poskutkowała następująca procedura:

Kod: Zaznacz cały

./supla.sh stop
docker-compose rm -f
./supla.sh start
Następnie pełna procedura instalacji events stąd: https://gist.github.com/fracz/9aa9923ae ... f09113fa63

I na koniec:

Kod: Zaznacz cały

docker exec -u www-data supla-cloud php bin/console supla:unofficial:simulate-events --dispatch
Pozostał mi jeden problem. Po restarcie wstaje tylko suplascripts a supla cloud, server i db nie.
Jak odpalę ręcznie to wszystko dobrze i eventy tez działają.

Nie mogę dojść o co chodzi przy stracie maliny.
Uruchamianie supli z /etc/rc.local nic u mnie nie daje.

Stworzyłem plik supla-clean.sh

Kod: Zaznacz cały

#!/bin/sh
cd /home/pi/supla-docker
docker-compose rm -fs
./supla.sh start
który uruchamiam w crontab

Kod: Zaznacz cały

* * * * * /usr/bin/docker exec -u www-data supla-cloud php bin/console supla:unofficial:simulate-events
@reboot sh /home/pi/supla-docker/clean-boot.sh >/home/pi/logs/cronlog 2>&1
Nie działa :(
Ale zrobiłem sobie logi gdzie wykazuje poniższy błąd:

Kod: Zaznacz cały

pi@raspberrypi:~/logs $ cat cronlog
/home/pi/supla-docker/clean-boot.sh: 3: /home/pi/supla-docker/clean-boot.sh: docker-compose: not found
Starting SUPLA containers
./supla.sh: linia 37: docker-compose: nie znaleziono polecenia
Czy macie może pojęcie czym to jest spowodowane?
Próbowałem

Kod: Zaznacz cały

pi@raspberrypi:~ $ sudo chmod +x /pi/local/bin/docker-compose
chmod: nie ma dostępu do '/pi/local/bin/docker-compose': Nie ma takiego pliku ani katalogu
Awatar użytkownika
michael
Posty: 1299
Rejestracja: śr lis 09, 2016 8:00 am
Lokalizacja: Wojkowice

Namierz ścieżkę docker-compose poleceniem:

Kod: Zaznacz cały

which docker-compose
:mrgreen: :mrgreen: :mrgreen:
ODPOWIEDZ

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