Cześć, mam prośbę o wsparcie w doprowadzeniu dwóch skryptów do oczekiwanego przeze mnie działania.
1. Sterowanie oświetleniem w wiatrołapie przez czujkę PIR i dwie zmienne:
Ogólnie to działa, lecz jak światło się zapali to nie da się zgasić światła przyciskiem, gaśnie i momentalnie się zapala. Oświetlenie gaśnie samo po 60s (domyślny czas zmiany stanu czujki) + 20s jak nie wykryje ruchu. Problemu nie ma jak w warunku jest tylko jedna zmienna, obojętnie która (dla jasności Ryśka to kot 🙂 )
2. Mama taki skrypt, nie mojego autorstwa, do robienia zdjęć z kamery gdy ktoś zadzwoni do drzwi:
return {
on = {
devices = {'Dzwonek'},
},
execute = function(domoticz, device)
if(device.state == 'On') then
local teleTok = **********************
local chatId = '***************************
local snapFile = '/home/pi/domoticz/scripts/camera_'
local domoReq = 'http://******************/cgi-bin/snapshot.cgi'
local camName = 'Kamera'
os.execute('wget -O "'..snapFile..camName..'.jpg" "'..domoReq..'"')
os.execute('curl -s -X POST "https://api.telegram.org/bot'..teleTok..'/sendPhoto?chat_id='..chatId..'" -F photo="@'..snapFile..camName..'.jpg"')
os.execute("rm " ..snapFile..camName..'.jpg')
end
end
}
Chciałbym aby zdjęcie nie było robione po każdym naciśnięciu klawisza dzwonka, tylko np. z przerwą 5 s pomiędzy naciśnięciami.
@szmydu w skrypcie foto - telegram można zmienić
execute = function(domoticz, device) if(device.state == 'On') then
na
execute = function(domoticz, device) if device.state =='On' and device.lastUpdate.secondsAgo > 4 then
to spowoduje że po pierwszym naciśnięciu dzwonka zostanie wysłana fotka i następne naciśnięcia muszą być w odstępach dłuższych niż 4 sek.
Przy pierwszym nie pomogę bo nic nie wiadomo , skryptu widać kawałek , nie wiadomo po co są zmienne , szczególnie ta z kotem i nie widzę powodu żeby oświetlenie dało się wyłączyć przyciskiem skoro jest aktywowane czujnikiem a przycisk nie występuje w skrypcie
Dzięki za skrypt do foto, co do światła w wiatrołapie to działa to tak. Włącznik na ścianie jest podpięty pod arduino i przez MySensors jest widoczny w Domoticzu. W skrypcie ten włącznik to "Ośw. wiatrołap". Zmienna Dzień ustawiana jest na 1 pomiędzy wschodem i zachodem słońca, a RyśkaNaWyganiu ustawiana jest na 1 gdy kot nocuje w wiatrołapie. Czujka PIR ma zapalać światło gdy Dzień = 0 i RyśkaNaWyganiu = 0 (żeby kot nie zapalał światła jak jest w wiatrołapie). Wcześniej wkleiłem tylko fragment bo w jednym skrypcie w kolejnych "else if" mam następne czujki PIR obsłużone. Przeniosłem obsługę czujki PIR w wiatrołapie do osobnego skryptu dla przejrzystości. Cały skrypt wygląda tak:
i jak czujka PIR zaświeci światło i gasi, lecz niemożliwe jest zgaszenie przyciskiem. Jak usunę zmienne to skrypt wygląda tak :
i czujka ładnie zapala światło i gasi. Możliwe jest też gaszenie przyciskiem.
Zmieniłem w skrypcie linijkę którą wskazałeś na:
if device.state =='On' and device.lastUpdate.secondsAgo > 4 then
lecz niestety to nie działa. Zdjęcia przestały w ogóle przychodzić. Poprawiłem na :
if (device.state =='On' and device.lastUpdate.secondsAgo > 4) then
lecz też nic to nie dało.
W logu domoticza jest:
2021-05-11 14:33:18.273 (Arduino - dzwonkowe) Light/Switch (Dzwonek) 2021-05-11 14:33:18.371 Status: dzVents: Info: Handling events for: "Dzwonek", value: "Off" 2021-05-11 14:33:18.371 Status: dzVents: Info: ------ Start internal script: Dzwonek - zdjęcie: Device: "Dzwonek (Arduino - dzwonkowe)", Index: 49 2021-05-11 14:33:18.371 Status: dzVents: Info: ------ Finished Dzwonek - zdjęcie
@szmydu dziwne to trochę, wklej taki skrypt zmieniając dane na swoje i wrzuć logi
return { on = { devices = {'Dzwonek'}, }, logging = { level = domoticz.LOG_DEBUG, marker = Fotka_dzwonek, }, execute = function(dz, device) if device.state == 'On' and device.lastUpdate.secondsAgo > 4 then dz.log('Ktoś dzwoni do drzwi') local teleTok = 'xxxxxxxxxxxxxxxxxxxxx' local chatId = 'xxxxxxxxxxxxxxx' local snapFile = '/home/pi/domoticz/scripts/camera_' local domoReq = 'http://adres kamery' local camName = 'Nazwa kamery' os.execute('wget -O "'..snapFile..camName..'.jpg" "'..domoReq..'"') os.execute('curl -s -X POST "https://api.telegram.org/bot'..teleTok..'/sendPhoto?chat_id='..chatId..'" -F photo="@'..snapFile..camName..'.jpg"') os.execute("rm " ..snapFile..camName..'.jpg') dz.log('Foto poszło ') end end }
Co do blockly to napisz jak - czym zmieniasz tą zmienną kot , to może coś zrobię w dzVents
Uruchomiłem ten skrypt i zdjęcie nie doszło. W logach jest:
2021-05-11 21:31:20.265 (Arduino - dzwonkowe) Light/Switch (Dzwonek) 2021-05-11 21:31:20.161 Status: User: Admin initiated a switch command (49/Dzwonek/On) 2021-05-11 21:31:20.359 Status: dzVents: Info: Handling events for: "Dzwonek", value: "On" 2021-05-11 21:31:20.359 Status: dzVents: Info: ------ Start internal script: Dzwonek 2: Device: "Dzwonek (Arduino - dzwonkowe)", Index: 49 2021-05-11 21:31:20.359 Status: dzVents: Info: ------ Finished Dzwonek 2 2021-05-11 21:31:21.399 (Arduino - dzwonkowe) Light/Switch (Dzwonek) 2021-05-11 21:31:21.544 Status: dzVents: Info: Handling events for: "Dzwonek", value: "Off" 2021-05-11 21:31:21.544 Status: dzVents: Info: ------ Start internal script: Dzwonek 2: Device: "Dzwonek (Arduino - dzwonkowe)", Index: 49 2021-05-11 21:31:21.544 Status: dzVents: Info: ------ Finished Dzwonek 2
Po usunięciu fragmentu " and device.lastUpdate.secondsAgo > 4 " zdjęcia dochodzą.
Co do zmiennej Kot, to steruje nią zwykły wirtualny przycisk i zdarzenie w blockly. Gdy ON to zmienna przyjmuje wartość 1 gdy OFF to zmienna przyjmuje wartość 0.
PS. Gdzie można znaleźć jakieś materiały do dzVents ? Jest opis struktury w domoticzu jak się dodaje nowy skrypt, i z nim się zapoznałem, ale cała zabawa zaczyna się po poznaniu funkcji i metod. Jest gdzieś jaki ich wykaz i opis ? Nie chciałbym za każdym razem zawracać głowy jak wpadnę na kolejny pomysł automatyzacji w domu 🙂
To co widać u Ciebie to u mnie jest wtedy gdy aktywuję przełącznik w czasie krótszym niż 4 sek . Mam przełącznik "test" pierwsze włączenie wyzwala skrypt i wysyła fotkę , kolejne trzy włączenia w odstępach krótszych niż 4 sek daje w logu to sam co u Ciebie i oczywiście nie wysyła fotek bo tak ma być
2021-05-12 10:08:25.849 Status: dzVents: Info: Handling events for: "test", value: "On" 2021-05-12 10:08:25.849 Status: dzVents: Info: ------ Start internal script: Foto: Device: "test (Czujniki użytk)", Index: 474 2021-05-12 10:08:25.849 Status: dzVents: Info: Ktoś dzwoni do drzwi 2021-05-12 10:08:29.876 Status: dzVents: Info: Foto poszło 2021-05-12 10:08:29.876 Status: dzVents: Info: ------ Finished Foto 2021-05-12 10:08:30.082 Status: dzVents: Info: Handling events for: "test", value: "Off" 2021-05-12 10:08:30.082 Status: dzVents: Info: ------ Start internal script: Foto: Device: "test (Czujniki użytk)", Index: 474 2021-05-12 10:08:30.082 Status: dzVents: Info: ------ Finished Foto 2021-05-12 10:08:30.219 Status: dzVents: Info: Handling events for: "test", value: "On" 2021-05-12 10:08:30.219 Status: dzVents: Info: ------ Start internal script: Foto: Device: "test (Czujniki użytk)", Index: 474 2021-05-12 10:08:30.219 Status: dzVents: Info: ------ Finished Foto 2021-05-12 10:08:32.120 Status: dzVents: Info: Handling events for: "test", value: "Off" 2021-05-12 10:08:32.120 Status: dzVents: Info: ------ Start internal script: Foto: Device: "test (Czujniki użytk)", Index: 474 2021-05-12 10:08:32.121 Status: dzVents: Info: ------ Finished Foto 2021-05-12 10:08:33.582 Status: dzVents: Info: Handling events for: "test", value: "On" 2021-05-12 10:08:33.582 Status: dzVents: Info: ------ Start internal script: Foto: Device: "test (Czujniki użytk)", Index: 474 2021-05-12 10:08:33.582 Status: dzVents: Info: ------ Finished Foto 2021-05-12 10:08:35.669 Status: dzVents: Info: Handling events for: "test", value: "Off" 2021-05-12 10:08:35.670 Status: dzVents: Info: ------ Start internal script: Foto: Device: "test (Czujniki użytk)", Index: 474 2021-05-12 10:08:35.670 Status: dzVents: Info: ------ Finished Foto 2021-05-12 10:08:36.887 Status: dzVents: Info: Handling events for: "test", value: "On" 2021-05-12 10:08:36.887 Status: dzVents: Info: ------ Start internal script: Foto: Device: "test (Czujniki użytk)", Index: 474 2021-05-12 10:08:36.887 Status: dzVents: Info: ------ Finished Foto 2021-05-12 10:08:38.920 Status: dzVents: Info: Handling events for: "test", value: "Off" 2021-05-12 10:08:38.920 Status: dzVents: Info: ------ Start internal script: Foto: Device: "test (Czujniki użytk)", Index: 474 2021-05-12 10:08:38.920 Status: dzVents: Info: ------ Finished Foto
Pytanie , jaką masz wersję domoticz a co za tym idzie Dzvents ?
Domoticz jest w wersji 2020.2. Dokładnie:
Version: 2020.2
Build Hash: b63341bc0
Compile Date: 2020-04-26 13:47:55
dzVents Version: 3.0.2
Python Version: 3.7.3 (default, Jul 25 2020, 13:03:44) [GCC 8.3.0]
Na forum domoticza znalazłem taki wpis:
Tjalling94 wrote: ↑Tuesday 22 September 2020 22:01I'm running some dzVents scripts that use the 'lastUpdate' from the triggeredDevice. For some months the lastUpdate is the current time (or 1-2 sec old) while expect it to be the time it was updated before this script was called. I can't figure out what's wrong.This is a bug in latest Stable. It was fixed in build 12002
Można kombinować inną metodą zablokować wysyłanie fotek przy kolejnych szybkich wciśnięciach, ale opóźni to wysłanie fotki a nie o to tu chodzi , nie korzystam już ze starej wersji domoticz , dlatego u mnie działa bez problemu . Co powstrzymuje Cię przed aktualizacją ? Zrób kopię systemu na wszelki wypadek i wrzuć 2021.1 , ta wersja jest już od miesiąca
Niestety nie działa dobrze machinon theme pod nową wersją a z niego korzystam. Dokładnie nie działają wykresy.
No właśnie o te wykresy temperatur chodzi. Wszystko sie ładnie otwierało tylko samego wykresu (linii) nie było. Czyściłem cały cache przeglądarki i nic to nie dało, więc wróciłem do 2020.2. Ale widzę, że ponownie muszę zrobić update. Skoro u ciebie działa to u mnie też musi. Co ciekawe wykresy z opcji "własny wykres" rysowały się prawidłowo.
@szmydu mam dwa serwery z machinon i na obu wykresy działają wstawiam fotki z drugiego
Zrobiłem ponownie aktualizację. Wyczyściłem cały cache przeglądarki i jak kliknę w jakikolwiek termometr to mam taki widok:
Na 2020.2 wykresy są widoczne. Co w takim razie mogę robić źle ? Tak jak poprzednio wykres własny działa:
PS. Modyfikacja skryptu do zdjęć na nowej wersji działa. Z oświetleniem też sobie poradziłem. Wystarczyło dodać kolejną zmienną przechowującą informację o tym czy oświetlenie włączone przez PIR i jak tak, to już nie zapalać, aż do kolejnego wykrycia ruchu. Gotowy działający skrypt w blockly (może komuś się przyda):
Nierozwiązany zostaje tylko temat wykresów na najnowszej wersji 🙁
@szmydu przypuszczalnie masz starą wersję motywu , aktualizuj do wer 1.17.1 , albo przejdź na wersję beta . W obu przypadkach wykresy powinny działać.
Mam na głównym serwerze machinon .beta 1.17.2, a na slave wersję stable 1.17.1
Mam
Machinon theme V.1.17.1
Jak próbuję zaktualizować (git pull) to dostaję informację "Already up to date.". Jak go podbić do 1.71.2 ?
@szmydu wersja 1.17.2 to wersja beta , więc jak chcesz to musisz zainstalować motyw w wersji beta ( mogą być dwa obok siebie )
Ale w wersji 1.17.1 wykresy powinny działać , bo taką mam na jednym serwerze a fragment wykresu wstawiłem wcześniej
Sprawdź , przełącz się na domyślny motyw , wyczyść cache i wróć do machinon , albo zobacz na innej przeglądarce
Dziwna sprawa bo na innych motywach wszystko jest ok. Problem dotyczy tylko machiniona. Sprawdzałem na Chrome, Firefox i Edge. Zainstalowałem też Operę i wykresów brak 🙁 więc to raczej nie cache.
Skąd wziąć machinion w wersji 1.17.2 ? Tu : https://github.com/domoticz/Machinon jest tylko 1.16.2 jako najnowsza.
W tym poście też piszą o problemie z wykresami, lecz rozwiązania brak -> https://www.domoticz.com/forum/viewtopic.php?f=8&t=24084&sid=dbd9e99193c0692ec6887f164592855d&start=640
Machinon is not showing my electricity chart (gas is working fine)
All charts are empty.
When switching to default theme, I do have graphs.Is this a known issue?
Doinstaluj
cd domoticz/www/styles git clone https://github.com/domoticz/machinon.git machinon-beta cd machinon-beta git checkout beta sudo /etc/init.d/domoticz.sh restart
Po tym będziesz miał wybór między beta a stable tak jak na moim zrzucie powyżej
Przejście na betę rozwiązało problem 🙂 Ciekawe, że jak usunąłem katalog machinon i pociągnąłem od nowa wersje stable, po czy zrestartowałem domoticza i wyczyściłem cały cache z przeglądarki, to i tak wykresy nie działały. Coś w tej wersji stable musi być nie tak, choć o dziwo u ciebie działa dobrze.
Kolejny raz dzięki za pomoc.
Podepnę się do tematu:
Mam stację pogodową która odczytuje mi łączne opady w ciągu dnia
Chcę odczytywać te wartości i sterować nimi przełącznik - zrobiłem to tak
Problem jest w tym że mi to nie działa - włącznik jest cały czas w stanie wł (mimo spełnienia warunków.
Grzebiąc w urządzeniach zobaczyłem że wartości jakie podaje stacja wyglądają tak:
Stąd pewnie jest problem z ich odczytaniem.
Czy jest jakiś sposób żeby zmusić domoticza do odczytywania wartości wg danych wskazywanych z pierwszego rysunku ?