Powiadomienia
Wyczyść wszystko

OpenHAB Miernik analogowe wejście ESP

11 Wpisów
2 Użytkownicy
0 Reactions
1,209 Wyświetleń
(@budziolesp)
Wpisów: 6
Bywalec
Autor tematu
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 
[#2065]

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: 4083
Szefu Admin Zasłużony dla Forum, Patron Strony
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

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
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

@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: 4083
Szefu Admin Zasłużony dla Forum, Patron Strony
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

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
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

@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: 4083
Szefu Admin Zasłużony dla Forum, Patron Strony
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

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
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

@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: 4083
Szefu Admin Zasłużony dla Forum, Patron Strony
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

@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
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

@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
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

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: 4083
Szefu Admin Zasłużony dla Forum, Patron Strony
Translate
English
Spanish
French
German
Italian
Portuguese
Russian
Chinese
Japanese
Korean
Arabic
Hindi
Dutch
Polish
Turkish
Vietnamese
Thai
Swedish
Danish
Finnish
Norwegian
Czech
Hungarian
Romanian
Greek
Hebrew
Indonesian
Malay
Ukrainian
Bulgarian
Croatian
Slovak
Slovenian
Serbian
Lithuanian
Latvian
Estonian
 

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: