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". R
eagują 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ć?
@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ć
@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.
@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
@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.