Powiadomienia
Wyczyść wszystko

OpenHAB Miernik analogowe wejście ESP

11 Wpisów
2 Użytkownicy
0 Likes
668 Wyświetleń
(@budziolesp)
Wpisów: 6
Bywalec
Autor tematu
 

Witam 

Zaczynam zabawę z OpenHab  , podchodziłem do tego parę razy i nie dawałem rady ( brak znajomości j. Angielskiego )  ale ,że kwarantanna zatrzymała mnie dłużej w domu dałem radę odpalić OH .

Potrafię już sterować przekaźnikami , odczytywać czujnik AM2301 

Bardzo dużo pomógł mi translator od wujka Goggla 🙂 

Zatrzymałem się na odczycie wejścia analogowego  ANALOG::{"A0":....} a może dokładnie nie nad odczytem lecz na konwersji z odczytu 0 - 1024 . do np. odczytu prądu w zakresie 0A - 5A.

Jak to mogę zrobić ?

 

p.s 

Nie mogę do tego tematu dodać *.jpg ??

 
Dodane : 10/12/2020 7:01 pm
adrian
(@adrian)
Wpisów: 3981
Szefu Admin Zasłużony dla Forum, Patron Strony
 

Wejście analogowe w ESP8266 służy do pomiaru napięcia z zakresie od 0 do 1V (bez dzielnika)

Cyfrowy odczyt 1 = 0,0009765625 V

Oczywiście znając rezystancję odbiornika, napięcie - obliczysz prąd, natomiast ESP pójdzie z dymem przy większych prądach - nie pamiętam ilę udźwignie ale to w jakiś miliamperach max

PS. Załączniki nie można dodawać w pierwszym poście - chyba od drugiego da radę

 
Dodane : 10/12/2020 7:59 pm
(@budziolesp)
Wpisów: 6
Bywalec
Autor tematu
 

@adrian

Dzięki za odpowiedz , ale chyba źle sformułowałem moje pytanie .

Chodzi mi oto , że na nóżkę ESP ADC0 A0 podłączam ( poprzez dzielnik ) Układ ACS712 lub MH-Sensor series , na wyjściu tych układów jest odpowiednio napięcie od 0V do 5V poprzez dzielnik na układ ESP wchodzi od 0V do 1 V . Tak więc

napięcie wejściowe waha się w zakresie 0-5V, a z przetwornika ADC otrzymujemy 1024 wartości (liczymy od 0 do 1023).

Tą nazwę pomiar amperów to dałem tylko przykładowo

Czyli na sensorze zbliżania np:

1024 = 5 cm

850 = 4,15 cm

500 = 2,44 cm

350 = 1,70 cm

x= (1*5cm)/1024

1 = 0 cm

i ja taką wartość potrzebuję żeby się wyświetlała czyli wartość = (wynik*5)/1024

moje ustawienia

.sitemap 

sitemap MojDom label="Mój Dom"

{

/* Switch - przełącznik */

Frame label="Pokój 1"
{
Switch item=Dioda1 icon="light"
Switch item=Dioda2 icon="light"
Switch item=Dioda3 icon="light"
Switch item=Dioda4 icon="light"
}

/* Pomiar temperatury */
Frame label="Pokój 2"
{
Text item=Termometr1 label="Temperatura Duży [%.1f °C]" icon="temperature" valuecolor=[<20="orange",>22="green",>23="red",<=24="blue"]
Text item=Wilgotnosc1 label="Wilgotność Duży [%.1f %%]" icon="Humidity"

}

/* Pomiar analogowy */
Frame label="Pokój 3"
{
Text item=Ampery icon="light"
}

}

.items

Number Ampery "Mój Amperomierz [%d mA]" { channel="mqtt:topic:Ampery:Ampery" }

.things

Thing mqtt:topic:Ampery "Wejscie Analogowe" (mqtt:broker:MosquittoMqttBroker) {
Channels:
/* */

Type number : Ampery "Amperomierz" [
stateTopic="tele/Plytka186/SENSOR",
transformationPattern="JSONPATH:$.ANALOG.A0"
]

}

Na pewno muszę coś wpisać w .rules i zmienić coś w .items 

 

p.s żeby dodać zdjęcie muszą być dwa tematy ? Jak będę mógł przy następnej odpowiedzi dodać jpg może będzie łatwiej wytłumaczyć 🙂 , bo dalej nie mogę dodać .

 
Dodane : 10/12/2020 9:40 pm
adrian
(@adrian)
Wpisów: 3981
Szefu Admin Zasłużony dla Forum, Patron Strony
 

ten item Ampery  ma już te wartości z zakresu 0 ... 1023 

 
Dodane : 10/12/2020 10:20 pm
(@budziolesp)
Wpisów: 6
Bywalec
Autor tematu
 

@adrian

Tak właśnie tam są te wartości 0 - 1024 , a ja tam potrzebuję mieć 0 cm ...... 5 cm  czyli  zamiast "Mój Amperomierz [%d mA]" muszę tam wstawić tą zmienna ze wzoru

wartość = ("Mój Amperomierz [%d mA]"*5)/1024

 

ale nie wiem jak 🙁 

 Screenshot 20201210 155723
 
Dodane : 10/12/2020 10:57 pm
adrian
(@adrian)
Wpisów: 3981
Szefu Admin Zasłużony dla Forum, Patron Strony
 

Zrób dodatkowy item w *.items

Number Odleglosc "Odleglosc [%.2f cm]"
 
Zrób regułę w *.rules
 
import java.lang.Math.*
import org.openhab.core.library.types.DecimalType

rule "Konwersja z adc do cm"
when
Item Ampery changed 
then
Odleglosc.sendCommand((Ampery.state as DecimalType)*5/1024)
end
 
Dodaj do sitemap
 
   Text item=Odleglosc
 
 
Dodane : 10/12/2020 11:38 pm
(@budziolesp)
Wpisów: 6
Bywalec
Autor tematu
 

@adrian

Zrobiłem tak jak pisałeś

do .sitemap dodałem

Text item=Odleglosc icon="incline"

Utworzyłem 

Odleglosc.items

Number Odleglosc" Odleglosc [%.2f cm]"      -  po Number Odleglosc ma być spacja ? czy tak jak jest bez spacji " Odleglosc [%.2f cm]" ?

Utworzyłem

Ampery.rules             ( Nie wie czy dobrze rozumuje )

import java.lang.Math.*                                                           ( Muszę coś doinstalować ?Co to jest ? )
import org.openhab.core.library.types.DecimalType               ( Muszę coś doinstalować ? Co to jest ?)

rule "Konwersja z adc do cm"                                                 ( Nazwa reguły - tylko dla mojej wiedzy czy gdzieś ta nazwa będzie potrzebna )
when                                                                                        (Kiedy
Item Ampery changet                                                                wartość Ampery się zmieni  np. logi Ampery changed from 353 to 213
then                                                                                           wtedy     
Odleglosc.sendCommand((Ampery.state asDecimalType)*5/1024) wartość Odleglosc będzie = to co w (Ampery)*5/1024 ) 
end

 

Przy uruchomieniu tej reguły w log-ach 

2020-12-11 10:57:38.020 [WARN ] [el.core.internal.ModelRepositoryImpl] - Configuration model 'Ampery.rules' has errors, therefore ignoring it: [9,39]: extraneous input 'asDecimalType' expecting ')'

2020-12-11 10:57:27.284 [vent.ItemStateChangedEvent] - Ampery changed from 910 to 877

inna regułę jak uruchamiam

2020-12-11 10:57:27.773 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'VoiceControl.rules'

 

Na ekranie brak wartości w Odleglosc 

 

 

Screenshot 20201211 101629
 
Dodane : 11/12/2020 11:33 am
adrian
(@adrian)
Wpisów: 3981
Szefu Admin Zasłużony dla Forum, Patron Strony
 

@budziolesp wklej tutaj dokładnie co wprowadziłeś bo mixujesz w treści swoje pytania, jakieś zmany i nie wiem co tam masz w kodzie na koniec wpisane i z jakiego powodu nie działa

 
Dodane : 11/12/2020 12:30 pm
(@budziolesp)
Wpisów: 6
Bywalec
Autor tematu
 

@adrian

Dzięki za pomoc , nie wiem co źle skopiowałem , ale działa .Twoja podpowiedz zbliży mnie do dalszego programowania .

Próbowałem też robić po swojemu zrobić to co chciałem ,ale jest jedno "ale" , a mianowicie odległość pokazuje mi w cm , ale tylko raz przy ponownym pomiarze odległości  zmienia się tylko zmienna analogowa ( czyli u mnie pomiar ) 

A zrobiłem to tak :

mojDom.sitemap

sitemap MojDom label="Mój Dom"

{

Frame label="Pokój 1"
{
Switch item=Dioda1 icon="light"
Switch item=Dioda2 icon="light"
Switch item=Dioda3 icon="light"
Switch item=Dioda4 icon="light"
}

/* Switch - przełącznik */
Frame label="Pokój 2"
{

Text item=Termometr1 label="Temperatura Duży [%.1f °C]" icon="temperature" valuecolor=[<20="orange",>22="green",>23="red",<=24="blue"]
Text item=Wilgotnosc1 label="Wilgotność Duży [%.1f %%]" icon="Humidity"

}

/* pomiar odległości */

Frame label="Pokój 3"
{
Text item=Pomiar icon="light"
Text item=Odleglosc icon="incline"
}

}

 

Pomiar.items

Number Pomiar "Wartość Analogowa [%d A0]" { channel="mqtt:topic:Ampery:Ampery" }

 

Odleglosc.items

Number Odleglosc" Odleglosc [%.1f cm]"

 

pomiar.rules

var Number x = Pomiar.state
var Number cm
var Number wartosc = 5

rule"Konwersja_z_adc_do_cm"
when
Item Pomiar changed

then
cm = ( x * wartosc ) / 1024

sendCommand(Odleglosc , cm)

end

logi

2020-12-11 13:40:42.329 [vent.ItemStateChangedEvent] - Pomiar changed from 1024 to 32
2020-12-11 13:40:42.792 [ome.event.ItemCommandEvent] - Item 'Odleglosc' received command 0.15625000
2020-12-11 13:40:42.799 [vent.ItemStateChangedEvent] - Odleglosc changed from NULL to 0.15625000

Tu widać jak pomiar jest 32 a odleglosc 0,15

przy następnym pomiarze

020-12-11 13:42:52.275 [vent.ItemStateChangedEvent] - Pomiar changed from 1024 to 883
2020-12-11 13:42:52.289 [ome.event.ItemCommandEvent] - Item 'Odleglosc' received command 0.15625000

2020-12-11 13:43:02.287 [vent.ItemStateChangedEvent] - Pomiar changed from 883 to 1024
2020-12-11 13:43:02.295 [ome.event.ItemCommandEvent] - Item 'Odleglosc' received command 0.15625000

Pomiar się zmienia ale odleglosc pozostaje taka sama 

 

 Po pojemu
 
Dodane : 11/12/2020 3:51 pm
(@budziolesp)
Wpisów: 6
Bywalec
Autor tematu
 

A powiedz mi co to jest ? Co to robi ?

import java.lang.Math.*
import org.openhab.core.library.types.DecimalType
 
Dodane : 11/12/2020 3:52 pm
adrian
(@adrian)
Wpisów: 3981
Szefu Admin Zasłużony dla Forum, Patron Strony
 

dodatkowe biblioteki, które czasami są potrzebne, żeby robić nie standardowe działania

np, to

Ampery.state as DecimalType

wymaga:

import org.openhab.core.library.types.DecimalType

 

ta potencjalnie może zostac usunięta: import java.lang.Math.*

nie chciało mi się sprawdzać 😉

 

W tym Twoim X będzie zawsze miało jedną wartość, nie zmieni się, wiec nie zadziała


rule"Konwersja_z_adc_do_cm"
when
Item Pomiar changed

then
cm = ( x * wartosc ) / 1024

sendCommand(Odleglosc , cm)

end

bo to coś

var Number x = Pomiar.state

zapisze do X wartośc Pomiar.state jak zapiszesz plik lub ponownie uruchomisz OH2

 
Dodane : 11/12/2020 8:16 pm
Udostępnij: