supla-device na Linux

User avatar
klew
Posts: 8765
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

shimano73 wrote: Wed Oct 12, 2022 10:31 am Usunąłem różne inne kopie w innych lokalizacjach , zostawiłem tylko w folderze z którego uruchamiam program.
Zmieniając w nim nazwę na "name: Wyse SUPLA " pojawia sie ona w logach
Sprawdziłem jeszcze raz u siebie, nawet wrzuciłem całego Twojego configa i u mnie ładuje się poprawnie.

Spróbuj wstawić np:

Code: Select all

security_level: test
W logu powinien pojawić się błąd w tym stylu:

Code: Select all

DEBUG[1665571416.301441] Main storage not configured
ERR[1665571416.301513] Config file YAML error: yaml-cpp: error at line 8, column 17: bad conversion
DEBUG[1665571416.301527] Security level: 0
Jeśli się nie pojawi, to znaczy, że z jakiegoś powodu nie próbuje u Ciebie tego czytać.
Jaka architektura procka jest na tym Dellu? 32/64 bity?
Widzimy się na Supla Offline Party vol. 2 :!:
User avatar
shimano73
Posts: 1998
Joined: Sun Feb 28, 2016 12:27 pm
Location: Orzesze

Post

Niestety nie pojawia się ten bład , nadal jest

Code: Select all

DEBUG[1665571852.519632] Main storage not configured
DEBUG[1665571852.519924] Security level: 0

Ten mój Dell Wyse dx0d z prockiem AMD G-T48E z arcitekturą 64bit

EDIT: Przeglądałem swoją pocztę i zauważyłem że ten dell jakimś cudem się zarejestrował ( o godz 12:42) co też widać na moim koncie ale cały czas jest offline i connection fail
W elektronice jak nie wiadomo o co chodzi to zwykle chodzi o zasilanie

Wezmę udział w Supla Offline Party 2024 :)
User avatar
klew
Posts: 8765
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

shimano73 wrote: Wed Oct 12, 2022 11:06 am Niestety nie pojawia się ten bład , nadal jest
Sprawdź proszę u siebie w źródłach, czy te metody są takie same:
https://github.com/SUPLA/supla-device/b ... g.cpp#L171
oraz:
https://github.com/SUPLA/supla-device/b ... pc.cpp#L85

Możesz też spróbować dodać w powyższych miejscach jakieś dodatkowe logi:

Code: Select all

SUPLA_LOG_INFO("  *** TEST 1");
itd.

Z Twoich logów wygląda jakby ta metoda getUInt8 się nie odpalała. Ona jakiś czas temu nie była zaimplementowana - dodawałem ją aby dało się ten security_level ustawić na Linuxie, ale w wersji 22.10.03 ona już jest.
Widzimy się na Supla Offline Party vol. 2 :!:
User avatar
shimano73
Posts: 1998
Joined: Sun Feb 28, 2016 12:27 pm
Location: Orzesze

Post

klew wrote: Thu Oct 13, 2022 10:27 am
shimano73 wrote: Wed Oct 12, 2022 11:06 am Niestety nie pojawia się ten bład , nadal jest
Sprawdź proszę u siebie w źródłach, czy te metody są takie same:
https://github.com/SUPLA/supla-device/b ... g.cpp#L171
oraz:
https://github.com/SUPLA/supla-device/b ... pc.cpp#L85

Możesz też spróbować dodać w powyższych miejscach jakieś dodatkowe logi:

Code: Select all

SUPLA_LOG_INFO("  *** TEST 1");
itd.

Z Twoich logów wygląda jakby ta metoda getUInt8 się nie odpalała. Ona jakiś czas temu nie była zaimplementowana - dodawałem ją aby dało się ten security_level ustawić na Linuxie, ale w wersji 22.10.03 ona już jest.
Wygląda na to że te metody sa identyczne , próbowałem dodać te logi ale czy muszę coś kompilować czy wystarczy że odpalę program na nowo .
Bo jesli nic nie musze kompilować to po wstawieniu

Code: Select all

SUPLA_LOG_INFO("  *** TEST 1");
czy

Code: Select all

SUPLA_LOG_DEBUG("  *** TEST 1");
nic się nie wyświetla w terminalu,
Na próbę wstawiłem równiez
[code[
securityLevel = 2;
[/code]
ale w terminalu nadal wyświetla sie 0


EDIT : OK, zrobiłem "make -j10" , skompilowało sie z tym "securityLevel = 2;" i po uruchomieniu udało sie połączyć z serwerem supli i urządzenie się zarejestrowało

EDIT: Zmieniłem na

Code: Select all

      cfg->getUInt8("security_level", &securityLevel);
      SUPLA_LOG_DEBUG("Security level: %d", securityLevel);
      if (securityLevel > 2) {
        securityLevel = 0;
    

i w terminalu wyświetla sie "Security level: 50" przy security_level: 2 ustawionym w pliku supla-device.yaml
a "Security level: 49" przy security_level: 1
W elektronice jak nie wiadomo o co chodzi to zwykle chodzi o zasilanie

Wezmę udział w Supla Offline Party 2024 :)
przygod
Posts: 97
Joined: Wed Jul 17, 2019 9:31 am

Post

Melduję że na RPI też działa (oczywiście po poprawce na securityLevel = 2 opisanej wyżej w wątku).
Dzięki!
User avatar
klew
Posts: 8765
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

shimano73 wrote: Thu Oct 13, 2022 2:35 pm EDIT: Zmieniłem na

Code: Select all

      cfg->getUInt8("security_level", &securityLevel);
      SUPLA_LOG_DEBUG("Security level: %d", securityLevel);
      if (securityLevel > 2) {
        securityLevel = 0;
    

i w terminalu wyświetla sie "Security level: 50" przy security_level: 2 ustawionym w pliku supla-device.yaml
a "Security level: 49" przy security_level: 1
Spróbuj:

Code: Select all

      SUPLA_LOG_DEBUG("Security level: %d", securityLevel);
      cfg->getUInt8("security_level", &securityLevel);
      SUPLA_LOG_DEBUG("Security level: %d", securityLevel);
 


Oraz dodaj jakieś printy do tej metody getUInt8 w linux_yaml_config.cpp

Ewentualnie:

Code: Select all

make clean
make -j10

;)
Widzimy się na Supla Offline Party vol. 2 :!:
przygod
Posts: 97
Joined: Wed Jul 17, 2019 9:31 am

Post

Czy kanał VirtualRelay już jest obsługiwany i czy mógłbym użyć do uruchamiania skryptów? Jeśli tak, to może jakaś podpowiedź na temat gdzie poczytać na definicji tego kanału?
Przepraszam jeśli TBD zinterpretowałem jako To Be Described zamiast To Be Designed :)
Last edited by przygod on Sat Oct 15, 2022 6:56 am, edited 1 time in total.
User avatar
shimano73
Posts: 1998
Joined: Sun Feb 28, 2016 12:27 pm
Location: Orzesze

Post

klew wrote: Fri Oct 14, 2022 11:49 am
shimano73 wrote: Thu Oct 13, 2022 2:35 pm EDIT: Zmieniłem na

Code: Select all

      cfg->getUInt8("security_level", &securityLevel);
      SUPLA_LOG_DEBUG("Security level: %d", securityLevel);
      if (securityLevel > 2) {
        securityLevel = 0;
    

i w terminalu wyświetla sie "Security level: 50" przy security_level: 2 ustawionym w pliku supla-device.yaml
a "Security level: 49" przy security_level: 1
Spróbuj:

Code: Select all

      SUPLA_LOG_DEBUG("Security level: %d", securityLevel);
      cfg->getUInt8("security_level", &securityLevel);
      SUPLA_LOG_DEBUG("Security level: %d", securityLevel);
 


Oraz dodaj jakieś printy do tej metody getUInt8 w linux_yaml_config.cpp

Ewentualnie:

Code: Select all

make clean
make -j10

;)
próba wykonana

Code: Select all

EBUG[1665789099.14401] Supla - starting initialization
DEBUG[1665789099.14496] Main storage not configured
DEBUG[1665789099.14689] SecurityLevel before : 0
DEBUG[1665789099.14788] Security level after: 50
DEBUG[1665789099.14831]   *** TEST 1
to co zauważyłem tp metoda getuint8 ze znaku '2' robi jej kod ascii - '50'

EDIT:
Dokonałem małej modyfikacji , zmieniłem

Code: Select all

*result =config[key].as<uint8_t>();
na

Code: Select all

*result =config[key].as<int>();
i teraz konwersja przebiega poprawnie, przynajmniej w zakresie liczb dodatnich :)
W elektronice jak nie wiadomo o co chodzi to zwykle chodzi o zasilanie

Wezmę udział w Supla Offline Party 2024 :)
User avatar
klew
Posts: 8765
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

shimano73 wrote: Fri Oct 14, 2022 11:15 pm

i teraz konwersja przebiega poprawnie, przynajmniej w zakresie liczb dodatnich :)
I zagadka rozwiązana :)
Pewnie na Twojej platformie uint8_t jest zdefiniowany jako char a biblioteka od yaml stwierdziła że chcemy odczytać znak ascii.
Dzięki! Poprawię to w bibliotece
Widzimy się na Supla Offline Party vol. 2 :!:
bigthomas
Posts: 234
Joined: Mon Aug 12, 2019 3:35 pm

Post

Udało mi się uruchomić, jednak nie ma informacji z Froniusa:

Code: Select all

DEBUG[1667041669.194548] Fronius connecting 1
INFO[1667041669.194614] Establishing NOT encrypted connection with: xxx.xxx.xxx.xxx (port: 80)
DEBUG[1667041669.238258] Reading data from Fronius: 666
DEBUG[1667041669.254868] Fronius fetch completed
W pliku konfiguracyjnym mam tylko wirtualny przekaźnik i tego froniusa. Przekaźnik działa OK.

Return to “supla-dev”