Czy ktoś doradzi jak podejść do tematu integracji z domoticzem sterowników sterowanych po http żeby domoticz odpytywał o stan przekażnika. Sterownik komunikuje go po http://numer_ip/values tj. 0 dla przekaźnika wyłączonego; 1 dla zwartego podawane w kolejnych linijkach obrazujących stan danego przekaźnika. Jest jakis sposób, żeby odczytać tak podany stan?
@jajen podajesz stanowczo za mało informacji, sam fakt że możesz załączyć przekaźnik wysyłając komendę http nic nikomu nie mówi. Czy załączenie tego przekaźnika jest jakoś raportowane np w aplikacji na telefon, chodzi o to że np załączasz z laptopa a stan w aplikacji telefon się aktualizuje i odwrotnie też, jeżeli nie czy jesteś w stanie zaingerować w kod programu dla tych przekaźników ? Bez takich informacji nikt nie będzie zgadywał.
Nie ma żadnej aplikacji. Sterowanie wygląda tak jak poniżej (przykładowe komendy)
http://192.168.9.19/?cmd=1 pierwszy pk załacza
http://192.168.9.19/?cmd=0 pierwszy pk rozłącza
http://192.168.9.19/?cmd=3 drugi pk załącza
http://192.168.9.19/?cmd=2 drugi pk rozłącza
i tak dalej. Sterownik sam nie wysyła informacji zwrotnej. Trzeba się o nią zapytać komendą http://192.168.9.19/values W odpowiedzi sterownik pokazuje na pierwszym miejscu status pierwszego przekaźnika (1 albo 0), na drugim drugiego (1 albo 0), a w kolejnych linijkach są inne dane (np. wartość temperatury, wartość ciśnienia). Fajnie byłoby też móc wyciągnąć informacje z kolejnych linijek (o temperaturze, ciśnieniu itd). Ale priorytetem jest dla mnie status przekaźników. Chciałbym to zrobić bez ingerowania w kod sterownika.
wklej tutaj odpowiedz po http://192.168.9.19/values dokladnie w takiej formie jak jest to przedstawiane
0
1
0
0
1650
Cztery pierwsze wartości to stan przekazników, piąta to temperatura czujnika (16,50C).
jezeli to jest zawsze tak wyswietlane, to da cos sie zrobic np. skryptem basha i cronem (bedzie jakas zwloka przy okreslaniu stanu), ale to juz nie dzis, jutro rano do roboty
dobra skoro juz wiemy, ze sie publikuje do pliku, to reszta raczej prosta.
Musimy doinstalowac bc (pakiet dla liczb zmiennoprzecinkowych w bashu) oraz warto miec clienta mqtt
sudo apt-get update
sudo apt-get install mosquitto-client
sudo apt-get install bc
a w skrypcie np cos takiego:
#!/bin/bash
#curl "http://192.168.9.19/values" > zmienne.txt
P1=`awk "NR == 1" zmienne.txt`
P2=`awk "NR == 2" zmienne.txt`
P3=`awk "NR == 3" zmienne.txt`
P4=`awk "NR == 4" zmienne.txt`
temp1=`awk "NR == 5" zmienne.txt`
#temp="$["$temp1/100" | bc]"
temp=`echo "scale=1;$temp1/100" | bc `
echo "$P1 $P2 $P3 $P4 $temp"
#dla pierwszego przekaznika (do wyboru mqtt (publikuje jednoczesnie stan dla
#przelacznika tekstowego i on/off) lub http), pozostale analogicznie, IDX - wstaw swoj numerek;)
if [[ $P1 == 1]]; then
mosquitto_pub -t 'domoticz/in' -m '{"command":"udevice","idx":IDX,"nvalue":1,"svalue":"Aktywny"}'
# curl "http://IP:PORT/json.htm?type=command¶m=switchlight&idx=IDX&switchcmd=On"
else
mosquitto_pub -t 'domoticz/in' -m '{"command":"udevice","idx":IDX,"nvalue":0,"svalue":"nieAktywny"}'
# curl "http://IP:PORT/json.htm?type=command¶m=switchlight&idx=IDX&switchcmd=Off"
fi
#dla temperatury
mosquitto_pub -t 'domoticz/in' -m '{ "idx":IDX, "nvalue":0, "svalue": "'$temp'" }'
i oczywiscie skrypt do crona, czestotliwosc odpytywania zalezna od koniecznosci sprawdzania czestotliwosci stanu przekaznikow i publikowania temperatury, nie bardzo mam jak sprawdzic w tej chwili, czyli daj znac czy dziala;)