Posiadam kilka modułów esp8266 Wemos D1 z espeasy do których mam podłączone czujniki temperatury wilgotności itp.
Wszystkie parametry z tych czujników są wysyłane do domoticza.
Kupiłem wczoraj wyświetlacz oled ssd 1306 podłączyłem do wemosa powiedzmy ESP1 i teraz pytanie.
Chciałbym wyświetlać temperatury z czujników podłączonych do wemosa ESP2 na wyświetlaczu oled podłączonym do ESP1
Ktoś mógłby mnie nakierować jak to zrobić np link do takiego artykułu, bo nie jestem w stanie tego wygooglować
Z góry dziękuje za zainteresowanie
2. to musisz włączyć na wszystkich modułach, które mają w tym uczestniczyć. Na urządzeniu, do którego masz podłączony czujnik zaznaczacz by wyniki wysyłał do tego kontrolera tak jak do innych np. Domoticz.
3. moduły, które mają odbierać - WAŻNE - tę linie na którym masz czujnik (Task) musisz mieć wolną na kliencie. Jeśli masz czujnki jako task1, to task1 na kliencie zostawiasz puste. Restartujesz esp i automatycznie pojawia się na pozostałych esp, na których włączone jest p2p. Pozostaje włączyć dane zadanie i skonfigurować wyświetlacz.
@pawell32 cześć
dzięki za zainteresowanie
uruchomiłem to ale jakoś nie chce mi przesyłać wartości tzn. temperatur, napięć i mocy.
1. Screen esp1 do którego są podłączone czujniki
2. Screen esp2 do którego są przesyłane czujniki. Widać, że je przesłał do esp2, ale nie przesyła wartości. Jakiś pomysł?
Poniżej ustawienia esp1 wysyłającego dane
Podsumowując wszystko działa tylko nie przesyła wartości czujników.
Sprawdzałem na innych stronach z instrukcjami i powinno działać a nie działa.
@adamdudek musisz włączyć te zadania, które chcesz odbierać.
po każdej operacji restart obydwóch esp
@pawell32 cześć
Załączyłem i dalej bez zmian czujniki się pojawiają od szczała , ale nie pokazują wartości. Sprawdzałem na kilku innych forach i instrukcja wygląda dokładnie tak jak pisałeś i wszystkim rusza od kopa tylko nie u mnie.
Dałem sobie spokój z tym i udało mi się uruchomić tego oleda wysyłając dane bezpośrednio z Domoticza.
Bardzo dziękuje koledze za pomoc.
A jak wysyłasz dane z domoticza na wyświetlacz ?
@adamdudek tez miałem z tym problem na początku, jak nie wysyłało danych to wyłączałem wysyłanie do p2p, restart i ponownie włączałem.
tworzysz zdarzenie lua gdzie Bojler 1 - to nazwa czujnika w domoticzu który chcesz przesłać do esp
192.168.0.160 to adres esp do którego podłączony jest wyświetlacz oled
local NazwaCzujnika="Bojler 1"
commandArray = {}
if devicechanged[NazwaCzujnika] then
commandArray['OpenURL']='192.168.0.160/control?cmd=oled,1,1,CWU-1:'..otherdevices_svalues[NazwaCzujnika]..'*C'
end
return commandArray
Mam kilka pytań dotyczących wyświetlacza ssd1306
1. Chcąc wyświetlić w każdej linii wyświetlacza inny czujnik muszę tworzyć kolejne zdarzenie lua dla każdej linni. I tak żeby wyświetlić 8 czujników w ośmiu liniach tworze 8 zdarzeń co jest bez sensu i robi się niepotrzebnie tyle zdarzeń. Pytanie jak zmodyfikować poniższe dwa kody na kod a żeby można było w jednym zdarzeniu wyświetlić dwa czujniki, bo niestety nie znam języka lua?
Poniżej zamieściłem dwa kody jak je teraz zapisać w jednym pliku a żeby oba działały poprawnie??
local NazwaCzujnika="Bojler 1"
commandArray = {}
if devicechanged[NazwaCzujnika] then
commandArray['OpenURL']='192.168.0.160/control?cmd=oled,1,1,CWU-1:'..otherdevices_svalues[NazwaCzujnika]..'C'
end
return commandArray
local NazwaCzujnika="Bojler 2"
commandArray = {}
if devicechanged[NazwaCzujnika] then
commandArray['OpenURL']='192.168.0.160/control?cmd=oled,2,1,CWU-2:'..otherdevices_svalues[NazwaCzujnika]..'*C'
end
return commandArray
2. Jak zmienić powyższy kod a żeby wyświetlały mi sie temperatury bez miejsc po przecinku?
W domoticzu wyświetlają się bez przecinków, bo w esp do którego mam podłączonego DS18B20 zaznaczyłem, że ma wysyłać bez miejsc po przecinku. Co ciekawe na oledzie wyświetla z dwoma miejscami po przecinku.
@adamdudek spraedź jeszcze czy nie powtarzają ci się numery.
każde esp musi mieć inny numer i co ważne - różne od 0
@adamdudek jeszcze dwie rzeczy mi się przypomniały:
1. sprawdź czy w tools->advanced masz ustwiony port
2. zauważyłem, że starsze wersje działają inaczej. mam starsze wersje i działa to od strzała. teraz robiłem sterownik dot matrix`a i danych bezpośrednio z pzem mi nie wysyła, natomiast jak zrobiłem dummy i przekopiowałem tam dane to już tak. Ponadto nie widziałem, by wcześniej było takie ustawinie wewnątrz
tak wygląda u mnie
@pawell32 cześć
Załączyłem i dalej bez zmian czujniki się pojawiają od szczała , ale nie pokazują wartości. Sprawdzałem na kilku innych forach i instrukcja wygląda dokładnie tak jak pisałeś i wszystkim rusza od kopa tylko nie u mnie.
Dałem sobie spokój z tym i udało mi się uruchomić tego oleda wysyłając dane bezpośrednio z Domoticza.
Bardzo dziękuje koledze za pomoc.
Zeby bezproblemowo wyswietlalo wartosci z jednego noda na drugim przez P2P to Task ID musza byc na obydwu takie same. Krotko mowiac czujniki musza byc na tej samej pozycji Task
Ja do wyświetlania używam OLED na ESPEasy czujniki mam na AFE. Dlatego też wartości wysyłam przez domoticz skrypem w LUA.
U mnie w jednej linii zawsze wyświetlam temperaturę z dworu, inne dane zmieniają się na dole.
Przykładowy skrypt dla jednego czujnika temperatury.
return { on = { devices = { 89, }, --timer = { 'every minute'}, system = { 'start', }, }, -- logging = { level = domoticz.LOG_DEBUG, marker = 'post data' }, execute = function(dz, devices) local Temp1 = dz.devices(89) dz.openURL('http://10.0.0.68/control?cmd=TaskValueSet,2,1,"' .. tostring(Temp1.temperature) .. '"' ) dz.openURL('http://10.0.0.68/control?cmd=TaskValueSet,2,2,"' .. tostring(Temp1.humidity) .. '"' ) end }
W ESPEasy mam ustawione w Devices tak:
Definiuje sobie wyświetlacz oled oraz Generic - Dummy Device
Teraz tak do "Generic - Dummy Device" wysyłam dane z domoticza i dopiero potem oled się sam aktualizuje. Dzięki temu mogę też określić ilość miejsc po przecinku.
W Urządzeniu oled w liniach mam coś takiego
Parter[TempParter#Temp]°C/[TempParter#Hum]%
Jak kto by był zainteresowany to udało mi się użyć do wyświetlania temperatury i innych danych MQTT Import z ESPEasy. Pomijam w ten sposób całkowicie Domoticza. Chociaż przechwytuję komunikaty do niego.
To pochwal się.
Najważniejsze by to było najnowsze ESPEasy. Konfigurację przeprowadziłem dla ostatniej wersji z grudnia 2022r.
Jak ktoś nie ma to w zakładce Controllers dodajemy "Domoticz MQTT" i konfigurujemy go.
W zakład
ce "Devices" dodajemy "Generic - MQTT Import" i konfigurujemy go. Można np. tak jak poniżej.
W "Generic - MQTT Import" ustawiamy pola:
Name - przez tą nazwę będziemy się odwoływać do zmiennych zawartych w MQTT Import.
"Parse JSON messages: Yes", "Generate events for accepted topics: Check","Deduplicate events:Check"
"MQTT Topic" w polu "Topic" podajemy "domoticz/in" i "idx" - to pole jest dla nas obowiązkowe.
W pozostałych wierszach wyodrębniamy zmienne, które potrzebujemy. można podać np. nvalue wtedy mamy zmienne z tego pola lub svalue wtedy z tego. Może się zdarzyć, że w svalue będzie więcej niż jedna wartość jak svalue=12,13,14 wtedy piszemy svalue;1 i mamy pierwszą wartość "12", dla svalue;2 będzie druga wartość "13", itd.
Dodajemy też "Generic - Dummy Device" do których będziemy przesyłać dane z "Generic - MQTT Import" oraz potem będzie je odczytywał sterownik ekranu oled.
U mnie zostały te same czujniki co 2 posty wyżej. Każda wartość jest ustawiana poleceniem "TaskValueSet,x,y,<>" ("TaskValueSet,2,1,<>") gdzie polecenie "TaskValueSet" ustawia zmienną, "x" to numer urządzenia z pola tabeli "task", "y" to numer zmiennej.
Wszystko to odbywa się za pomocą "Rules".
Ja mam takie polecenia.
on MqttDomoticzImport#idx=89 do TaskValueSet,2,1,[MqttDomoticzImport#value1] TaskValueSet,2,2,[MqttDomoticzImport#value2] TaskValueSet,2,3,[MqttDomoticzImport#value3] endon on MqttDomoticzImport#idx=111 do TaskValueSet,3,1,[MqttDomoticzImport#value1] TaskValueSet,3,2,[MqttDomoticzImport#value2] endon on MqttDomoticzImport#idx=109 do TaskValueSet,4,1,[MqttDomoticzImport#value1] TaskValueSet,4,2,[MqttDomoticzImport#value2] endon on MqttDomoticzImport#idx=91 do TaskValueSet,6,1,[MqttDomoticzImport#value1] endon on MqttDomoticzImport#idx=93 do TaskValueSet,6,2,[MqttDomoticzImport#value1] endon on MqttDomoticzImport#idx=92 do TaskValueSet,7,1,[MqttDomoticzImport#value1] endon on MqttDomoticzImport#idx=94 do TaskValueSet,7,2,[MqttDomoticzImport#value1] endon
Ps. W międzyczasie dodałem do "TempDwor" jeszcze ciśnienie atmosferyczne dlatego mam trzy zmienne a nie dwie jak poprzednio.
Cześć, gdzie popełniam błąd?
chce wyświetlicz idx 31 z domoticz o nazwie Moc TTL na oled.(moc z SDM630 jako info o mocy oddanej i pobranej wczasie rzeczywistym)
1.uruchomiłem mqtt na esp
2.dodałem generic mqtt na esp
3.dodałem generic dummy na esp
4.dodałem rules dla jednego czujnika
efekt niestety mizerny- walczę już długo i widzię ze gdzieś bład popełniam ..
mam jakies dziwne dane na mqtt
Jak bede miał na Generic dummy to na oled chyba sobie poradzę ale do tego momentu potrzebuje wsparcia.
W 4 powinieneś mieć
on MqttDomoticzImport#idx=39 do TaskValueSet,3,1,[MqttDomoticzImport#value1] endon
brakuje "endon" u ciebie.
mam ale niestety nie działa i tak pokazuje dziwne dane w samych mqtt. czujnik to jedna dana moc ttl w watach (sdm 630) a tam w logach jak widac rożne dane niespójne z tym czujnikiemW 4 powinieneś mieć
on MqttDomoticzImport#idx=39 do TaskValueSet,3,1,[MqttDomoticzImport#value1] endon
brakuje "endon" u ciebie.
Bo to niestety tak tu działa. W tabeli gdzie pokazuje dane z MQTTImport dane się będą zmieniać. W zależności od tego co nadaje temat "domoticz/in". Index będzie za każdym razem inny. Dopiero jak pokaże się IDX który potrzebujesz, tutaj to 39, to dopiero reguła ma go przenieś do DummyDevices.
PS:
W Tools->Advanced Settings masz zaznaczone pola
Rules: |
Enable Rules Cache: |