W Domoticzu jest taka funkcja SetPoint. Czy jest możliwość wysyłania tej wartości do ESP Easy na ESP8266 np. do utworzonego Generic - Dummy Device? Potrzebuję zrobić na ESP termostat z możliwością ustawienia temperatury w Domoticzu. Jak to ogarnąć?
@dzozef nie znam espeasy, ale zapytam w jakim celu chcesz pchać nastawę termostatu do tego ESP? Przecież termostat dużo łatwiej zrobisz w samym Domoticz. Miałoby to sens gdyby ten termostat miał działać bez udziału Domoticza, ale skoro zadana ma być z Domoticz to bez niego i tak nic z tego.
Chodzi o to żeby ESP było samodzielnym regulatorem po zerwaniu połączenia WI-Fi. Czasami się tak zdarza. W Domoticzu ustawiam temperaturę a regulator na ESP ją wykonuje nawet po zerwaniu połączenia WI-Fi.
W Domoticzu jest taka funkcja SetPoint. Czy jest możliwość wysyłania tej wartości do ESP Easy na ESP8266 np. do utworzonego Generic - Dummy Device? Potrzebuję zrobić na ESP termostat z możliwością ustawienia temperatury w Domoticzu. Jak to ogarnąć?
możliwość jest. tu masz opis komend:
https://www.letscontrolit.com/wiki/index.php/ESPEasy_Command_Reference
jak potrzebujesz dokładniej to podaj więcej szczegółów. Nie wiem jaki masz wyświetlacz, jak działa ten "termostat". Ogólnie wartości wysyłasz po mqtt lub http, a resztę ogarniasz regułami w espeasy.
Wysyłanie po http ogarniam. Wpisując np. http://192.168.69.46/control?cmd=GPIO,12,0 mogę sterować pinem GPIO-12. Ale nie mam pojęcia jakiej komendy użyć żeby wysłać wartość setpointu. Może źle składam polecenie? Używałem takie: http://192.168.69.46/SendTo taskValueSet 5,1,Settings -nie działa
Powtórzę, nie znam ESPEasy , ale gdybym miał taki plan, to najpierw w domoticz odczyt tego SetPoint , jego wartość zapisana do zmiennej, którą może odczytać ESP i dopiero wysyłka.
Przykład dla http i tasmoty
http://192.168.1.11/cm?cmnd=mem1%2022
Taki url ustawia wartość zmiennej mem1 na 22 i tą wartość mogę odczytać w konsoli tasmoty, oraz podstawić w regule termostatu
Jeśli w ESPEasy masz do dyspozycji jakieś zmienne to może warto zamiast próbować wysyłać to do wirtualnego urządzenia wysłać do zmiennej, a jej wartość podstawić w swoim termostacie.
Wysyłanie po http ogarniam.
Po pierwsze zmiana stanu gpio to tylko część, czytaj dalej. Po drugie nie podałeś jak masz to zrobione i do czego konkretnie się masz odnieść.
Jeśli odnosisz się do Dummy to:
http://ip/control?cmd=taskvalueset,12,1,23 12 - nr zadania, 1 - numer, 23 - wartość jaką wprowadzasz.
@pawell32 To polecenie działa - http://192.168.69.45/control?cmd=GPIO,12,0. To polecenie - http://192.168.69.45/control?cmd=TaskValueSet 5,1,25 -już nie. Tylko nie chodzi mi o ręczne przesłanie jednej wartości do ESP Easy. Chodzi o to aby po zmianie ustawienia w Domoticzu:
ta informacja poszła do ESP do Dummy Device.
Może nie da się w ten sposób i trzeba to zrobić z użyciem skryptu. Niestety w pisaniu skryptów nie mam doświadczenia.
@dzozef 1. pokaż jak wygląda u Ciebie to espeasy, u mnie takie polecania działają
2. by sterować to z Domoticza trzeba za pomocą skryptu, kiedyś coś takiego chyba robiłem. Odczytujesz wartość dummy w Domoticz i wysyłasz do espeasy. Nie wiem czy w blockly tego nie da się zrobić.
@pawell32 Nie wiem co dokładnie chcesz zobaczyć:
To jest testowy ESP. Na razie nic nie chodzi na nim.
na co chcesz wysłać? masz dual
zmień i sprawdź
No w tasku 5 mam Generic-Dummy Device tyle że w momencie robienia zdjęcia były w dualu. Dodałem single i też nic. Z Domoticza mam taki log: Error opening url: http://192.168.69.45/SendTo TaskValueSet 7,1,22
http://10.10.10.27/control?cmd=taskvalueset,12,1,24.1
jaki masz interwał?
Przepraszam ale do dzisiaj byłem poza domem. Zauważyłem błąd w mojej składni: http://192.168.69.45/control?cmd=taskvalueset, [tutaj miałem spacje zamiast przecinka]5,1,25 Teraz wysyła wartość do Dummy. Połowa sukcesu. Teraz jeszcze pytanie jak zamienić stałą wartość na wartość ustawioną?
@dzozef spóbuj taki skrypt dcvents:
local NazwaCzujnika="czujnik" commandArray = {} if devicechanged[NazwaCzujnika] then commandArray['OpenURL']='192.168.69.45/control?cmd=taskvalueset,5,1:'..otherdevices_svalues[NazwaCzujnika]..' ' end return commandArray
u mnie działa i wysyła dane z czujnika. Z termostatu nie zadziałało mi, trzeba nieco to przerobić. Ja nie wiem co idzie nie tak.
Z termostatu nie zadziałało mi, trzeba nieco to przerobić
Pierwsze to nie jest skrypt dzVents, tylko LUA. a nie działa z termostatem, bo termostat sam się nie aktualizuje tak jak czujnik.
Skrypt musi być wyzwalany czasem, albo termostat musi się aktualizować co jakiś czas.
Witam.
Ja mam właśnie zrbione w taki sposób jak pisze @isom.
Mam 2 skrypty.
Jeden updatuje wartość po zmianie wartości termostatu a drugi co jakiś czas.
Pewnie to nie jest to eleganckie ale zrobiłem kilka lat temu i nadal działa 😀
przekaz setpoint w momencie zmiany w domoticzu:
commandArray = {}
for deviceName,deviceValue in pairs(devicechanged) do
print ("Device based event fired on '"..deviceName.."', value '"..tostring(deviceValue).."'");
if (deviceName=='Termostat Parents Bedroom') then
commandArray[1]={['OpenURL'] = " usunięty link }
end
end
return commandArray
upadte setpoint co jakiś czas (10min):
commandArray = {}
local m = os.date('%M')
if (m % 10== 0) then
print("Update termostatow co 10 min")
local parents_value = tonumber(otherdevices_svalues['Termostat Parents Bedroom']);
commandArray[1]={['OpenURL'] = " usunięty link }
end
return commandArray
Rozumiem jak to powinno działać ale niestety nie potrafię pisać skryptów. W Blockly jeszcze coś potrafię poskładać ale w Lua to na tą chwilę za dużo. Gdyby ktoś podpowiedział jakie zmienne do czego służą.
Witam.
Tu nie bardzo jest co tłumaczyć.
commandArray = {} --przypisanie zmiennej m minut z czasu sytemowego local m = os.date('%M') --warunek: jezeli reszta z dzielenia zmiennej m przez 10 wynosi 0 (czyli jezeli jest pelna 10 minuta czasu rzeczywistego) to: if (m % 10 == 0) then -- przypisz zmiennej 'wartosc_termostatu' zamieniona na liczbe wartosc textowa z urzadzenia w Domoticzu o nazwie 'Nazwa_termostatu' local wartosc_termostatu = tonumber(otherdevices_svalues['Nazwa_termostatu']); --wpisz do tablicy Array komende ktora wysle event o nazwie 'SetPoint' z wartoscia rowna zmiennej 'wartosc termostatu' na adres IP Twojego ESP Easy commandArray[1]={['OpenURL'] = "adres_IP_ESPEasy/control?cmd=event,SetPoint="..(wartosc_termostatu) } -- koniec warunku if end --poczatek petli przez tabele urzadzen ze zmainami for deviceName,deviceValue in pairs(devicechanged) do --warunek: jezeli nazwa urzadzenia jest rowna nazwie Twojego termostatu w Domoticz ('Nazwa_termostatu') to if (deviceName=='Nazwa_termostatu') then --wpisz do tablicy Array komende ktora wysle event o nazwie 'SetPoint' z wartoscia rowna obiektowi 'deviceValue' na adres IP Twojego ESP Easy commandArray[1]={['OpenURL'] = "adres_IP_ESPEasy/control?cmd=event,SetPoint="..(deviceValue) } --koniec warunku end --koniec petli end return commandArray
W rules ESP musisz sobie utworzyć coś w Stylu:
on SetPoint do TaskValueSet 6,1,%eventvalue% endon
Jak dalej nie ogarniesz to napisz jak się nazywa Twój termostat w Domoticzu, jaki jest adres IP ESP który ma te dane odebrać i numer urządzenia.