09-23-2022, 11:15 PM
Przedstawiony sposób integracji LK z OH będzie dotyczył oprogramowania OH v3.3.0 pracującego na raspberry PI 4 z systemem OS Lite 32bit i lan kontrolera v2.0. Większość konfiguracji przeprowadziłem z poziomu przeglądarki, choć są wyjątki i pewne funkcjonalności wymagają dodania plików konfiguracyjnych do odpowiednich folderów w OH. Dane z LK pobieram z pliku XML, który jest dostępny pod adresem http://192.168.X.X/st0.xml. Oczywiście w miejsce X należy wstawić właściwy adres IP dla posiadanego LK. Aby ułatwić sobie pracę zastosowałem nazewnictwo wejść i wyjść zgodne z plikiem XML.
- W pierwszej kolejności instalujemy HTTP Bindings i taki typ wiązania wybieramy przy dodawaniu LK do sekcji things. Następnie wpisujemy w pola:
Base URL - adres IP LK
Authentication Mode - Basic Authentication
State Method - GET, Command Method - POST
Content Type - text/plain
- Kolejny krok to dodanie kanałów typu switch, w tym celu przechodzimy na zakładkę channels i klikamy dodaj kanał. Następnie wpisujemy w pola:
State Transformation - REGEX:(?:.*<out0>(.*?)<.out0>.*)
State URL Extension - st0.xml
Command URL Extension - outs.cgi?out0=%2$s
On Value - 0
Off Value - 1
Read/Write Mode - Read/Write
- Czynność powtarzamy dodając kolejne wyjścia zmieniając pola <outX> od 0 do 5. Aby LK pobierał dane należy zainstalować RegEx Transformation. Do kanałów wyjściowych dodajemy items. Wybieramy typ switch a po utworzeniu dodajemy Metadata, stateDescription Pattern - %s
Przykładowa strona OH do sterowania LK.
Kod:
sitemap server label="LK Serwer" {
Frame label="LK2" {
Frame label="Digital Outputs Control" {
Switch icon="switch" item=lk2out0 label="lk2out0"
Switch icon="switch" item=lk2out1 label="lk2out1"
Switch icon="switch" item=lk2out2 label="lk2out2"
Switch icon="switch" item=lk2out3 label="lk2out3"
Switch icon="switch" item=lk2out4 label="lk2out4"
Switch icon="switch" item=lk2out5 label="lk2out5"
}
Frame label="ANALOG Inputs State" {
Text item=lk2ia0 label="Temperatura płytki"
Text item=lk2ia1 label="Napięcie zasilania" icon="none"
Text item=lk2ia2 label="Inp1"
Text item=lk2ia3 label="Inp2"
Text item=lk2ia4 label="Inp3"
Text item=lk2ia5 label="Inp4"
Text item=lk2ia6 label="Inp5"
Text item=lk2ia7 label="Inp6"
Text item=lk2ia8 label="Inp7"
Text item=lk2ia9 label="Inp8"
Text item=lk2ia10 label="Inp9"
}
Frame label="Digital Inputs State" {
Text icon="my_siren" label="INP1D" item=lk2di0
Text icon="my_siren" label="INP2D" item=lk2di1
Text icon="my_siren" label="INP3D" item=lk2di2
Text icon="my_siren" label="INP4D" item=lk2di3
}
}
}
To tyle jeżeli chodzi o sterowanie przekaźnikami, w kolejnych wpisach dodam odczyt z wejść analogowych i cyfrowych.