Asystent AI
Wirtualny przełączn...
 
Powiadomienia
Wyczyść wszystko

Wirtualny przełącznik-selektor i skrypt LUA

5 Wpisów
2 Użytkownicy
0 Reactions
2,417 Wyświetleń
(@piotrmackowiak)
Wpisów: 3
Bywalec
Autor tematu
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 
[#1892]

Używam wirtualnego przełącznika do włączania/wyłączania, zmiany kanału w górę/w dół odbiornika radiowego.
Aktualna definicja dla czujnika/przełącznika-selektora  „Radio” zawiera 3 poziomy - 0,10 i 20. A akcje powiązane z tymi poziomami to "script:///home/pi/Pobrane/radio 0" "script:///home/pi/Pobrane/radio 10" i "script:///home/pi/Pobrane/radio 20". Reagują one na stan przełącznika-selektora "wyłączony", "Stacja +" i "Stacja -"

Moim celem jest przeniesienie odpowiednich poleceń z definicji czujnika do skryptu LUA.

Jednak skrypt LUA, jak pokazano poniżej, nie działa. Oczywiście w przypadku korzystania z LUA, definicje akcji z definicji czujnika są usuwane.

local sensor = 'Radio'

commandArray = {}

if (devicechanged[sensor] == 'Wyłączone') then
 os.execute ("/home/pi/Pobrane/radio 0")
elseif (devicechanged[sensor] == 'Stacja +') then
 os.execute ("/home/pi/Pobrane/radio 100")
elseif (devicechanged[sensor] == 'Stacja -') then
 os.execute ("/home/pi/Pobrane/radio 101")
end

return commandArray

Jaki błąd robię? Masz pomysł, żeby coś poprawić / zmodyfikować?


 
Dodane : 12/09/2020 7:42 pm
Tagi tematu
isom
 isom
(@isom)
Wpisów: 5319
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

@piotrmackowiak przypuszczam, że w logach domoticza dostajesz informację że skrypt nie możne wykonać polecenia z powodu braku uprawnień. Chcesz wywołać skrypt z wewnątrz domoticza (skrypt LUA) , więc domoticz powinień mieć uprawnienia do wykonania skryptu "radio"

W dzVents próbował bym tak

os.execute ("sudo/home/pi/Pobrane/radio 0")

albo 

os.execute("runuser -l pi -c /home/pi/Pobrane/radio 0")

Myślę że możesz spróbować


 
Dodane : 12/09/2020 9:52 pm
(@piotrmackowiak)
Wpisów: 3
Bywalec
Autor tematu
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

@isom To nie jest kwestia uprawnień. Skrypt uruchomiony ręcznie z konsoli z użytkownika który jest dedykowany do obsługi Domoticza, wykonuje się prawidłowo. Ponadto kiedy skrypt jest uruchamiany z definicji czujnika, też wykonuje się prawidłowo. Poza tym mam ok 40 różnych skryptów LUA w swojej implementacji Domoticza i wszystkie pracują prawidłowo.

Myślę że to jest jakoś immanentnie związane z definicją samego przełącznika-selektora poziomów i sygnałów jakie generuje. A są to stany "Wyłączone". "Stacja +" i "Stacja -". Tak pokazują logi tego przełącznika, o ile skrypt jest uruchamiany z definicji akcji selektora.

Natomiast po przeniesieniu wyzwalania akcji do skryptu LUA brak jakichkolwiek logów.

Kurcze, dołączył bym zrzut ekranu z definicją przełącznika ale nijak nie mogę dołączyć na tym forum ani pliku jpg ani pdf. Pewnie coś robię nie tak. Ale daję "Załącz plik", niby się pokazuje że dołączyłem ale w wynikowym poście go nie ma.


 
Dodane : 13/09/2020 9:44 am
isom
 isom
(@isom)
Wpisów: 5319
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

@piotrmackowiak nie wiem co to za skrypty , które chcesz uruchamiać z poziomu LUA , skrypty bash uruchamiają się na 100%  może zobacz z linijką print  wtedy powinieneś dostać w logach aktualny stan 

commandArray = {}
if (devicechanged['Radio'] == 'Wyłączone') then
os.execute("/home/...................")
print('Radio OFF')
elseif (devicechanged['Radio'] == 'Stacja +') then
os.execute("/home/...................")
print('Stacja plus')
elseif (devicechanged['Radio'] == 'Stacja -') then
os.execute("/home/...................")
print('Stacja minus')
end
return commandArray

 
Dodane : 13/09/2020 2:28 pm
(@piotrmackowiak)
Wpisów: 3
Bywalec
Autor tematu
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

@isom Kurcze, drugi raz w życiu miałem taką sytuację. W stanie desperacji zrobiłem hex dump pliku ze skryptem LUA i zaczynał się on od jakiegoś "krzaczka". Ten dodatkowy znak nie był widoczny pod vi. No i interpreter LUA "głupiał". Skąd ten znak tam się wziął - nie mam zielonego pojęcia.

Niemniej - problem rozwiązany.


 
Dodane : 13/09/2020 5:26 pm
Udostępnij: