Nie bardzo rozumiem Twój problem , przecież jak masz zdalny dostęp , to wystarczy pobrać na telefon apke domoticz , wpisać dane do logowania i masz wszystko w jednym . Nie trzeba się za każdym razem logować do dataplicity.
A sceny czy grupy w domoticz tworzy się błyskawicznie .
Domoticz - integracja
@dar3cz3k czy mógłbyś potwierdzić działanie twojego skryptu, bo robię u siebie tak jak opisujesz ale za żadne skarby domoticz nie pobiera mi odczytów z mojego sonoff'a. W logach widzę stałą temperaturę 0,0 C.dar3cz3k_ pisze: ↑ndz sty 13, 2019 2:38 pm Ja zrobiłęm to w następujący sposób
W Sprzęt tworzysz nowe urządzenie
Type HTTP/HTTPS poller
Method: GET
Content Type: aplication/json
URL: <wygenerowany link z serwera SUPLA>
Commands: <dowolna_nazwa.lua>
Rafraichr:60
następnie tworzysz virtualny sensor
Type: temperature
po utworzeniu interesuje nas parametr idx:
następnie utworzyłem skrypl dowolna_nazwa.lua w Domoticz\scripts\lua_parsers
gdzie local id = idx - u mnie to był numer 64
local id = 64
local s = domoticz_applyJsonPath(s,'.temperature')
domoticz_updateDevice(id,'',s)
edit: w logach cały czas mam taki błąd: Error: CLuaHandler (applyJsonPath from LUA) : Incorrect parameters type
edit2: już doszedłem, brakowało
-- Retrieve the request content
s = request['content'];
to całość skryptu:
local id = 64
local s = domoticz_applyJsonPath(s,'.temperature')
domoticz_updateDevice(id,'',s)
widzę, że @wojtas567 znalazł zdecydowanei lepszy sposób
viewtopic.php?p=37417#p37417
Hej,arek156 pisze: ↑wt lut 26, 2019 9:26 pm Hej
Dzięki za info, chyba coś źle rozumiem z linkiem bezpośrednim...
Link bezpośredni mam wygenerowany z supla.fracz.com ale wygląda zupełnie inaczej niż ten podeslany przez Ciebie.
Skąd w takim razie wygenerować bezpośredni link do supli zainstalowanej w sonoff?
AKTUALIZACJA
Jednak wszystko działa, wprowadzałem nie ten link
Mam jeszcze pytanie, czy jest możliwa jakas synchronizacja statusów, tzn jak włącze urządzenie z aplikacji supla to domoticz tego nie widzi, natomiast jak włączę w domoticzu to oczywiście stan w supli się zmienia.
rozpracowałem aktualizację statusów w domoticzu. Tworzymy skrypt .sh i instalujemy apkę "jq"
Kod: Zaznacz cały
#!/bin/bash
content=$(curl -s 'https://LINKSUPLADOODCZYTU/read')
STATUS=$(jq '.on' <<< "${content}" )
if [[ $STATUS == *"true"* ]]; then
curl -s -i -H "Accept: application/json" "http://IPSERWERDOMTICZ/json.htm?type=command&c=getauth¶m=udevice&IDX=11&nvalue=1;"
else
curl -s -i -H "Accept: application/json" "http://IPSERWERDOMOTICZ/json.htm?type=command&c=getauth¶m=udevice&IDX=11&nvalue=0;"
fi
jq wyciąga to co chcemy z jsona.
Skrypt sprawdza status gniazdka z linku bezpośredniego, a następnie wysyła go do wirtualnego przełącznika w domoticzu. Jeśli wyłączymy przełącznik ręcznie lub przez google home to zaktualizuje się w domoticzu.
Trzeba go ustawić w crontabie, żeby wykonywał się co określony czas i uaktualniał status przełącznika.
Nowy skrypt, który sprawdza status w domoticzu i dopiero zmienia stan wirtualnego przełącznika (Poprzedni cały czas odkładał się w logach i włączał co jakiś czas już włączony przełącznik)
PS. po utworzeniu skryptu trzeba mu nadać uprawnienia w terminalu np."sudo chmod +x sciezka do skyptu.sh"
Kod: Zaznacz cały
#!/bin/bash
LINKSUPLA="link"
DOMOTICZIDX="idx"
IPDOMOTICZ="ip:port"
content=$(curl -s 'http://'$IPDOMOTICZ'/json.htm?type=devices&rid='$DOMOTICZIDX'')
STATUS_DOMOTICZ=$(grep Status <<< "${content}" )
content=$(curl -s $LINKSUPLA)
STATUS_SUPLA=$(jq '.on' <<< "${content}" )
if [[ $STATUS_DOMOTICZ == *'"Status" : "Off",'* ]] && [[ $STATUS_SUPLA == *'false'* ]]; then
sleep 1;
elif [[ $STATUS_DOMOTICZ == *'"Status" : "On",'* ]] && [[ $STATUS_SUPLA == *'true'* ]]; then
sleep 1;
elif [[ $STATUS_DOMOTICZ == *'"Status" : "Off",'* ]] && [[ $STATUS_SUPLA == *'true'* ]]; then
curl -s -i -H "Accept: application/json" "http://"$IPDOMOTICZ"/json.htm?type=command&c=getauth¶m=udevice&idx="$DOMOTICZIDX"&nvalue=1";
elif [[ $STATUS_DOMOTICZ == *'"Status" : "On",'* ]] && [[ $STATUS_SUPLA == *'false'* ]]; then
curl -s -i -H "Accept: application/json" "http://"$IPDOMOTICZ"/json.htm?type=command&c=getauth¶m=udevice&idx="$DOMOTICZIDX"&nvalue=0";
else
sleep 1;
fi
- Tworzymy w domoticzu wirtualny przełącznik i w urządzeniach sprawdzamy jego IDX.
- Zastępujemy w skrypcie pole "IDX. Tworzymy link bezpośredni w supli na urządzeniu i dajemy mu możliwość odczytu.
- Kopiujemy link w "LINK BEZPOSREDNI SUPLA DO ODCZYTU" w skrypcie.
- Wpisujemy ip domoticza wraz z portem.
- Skrypt wrzucamy gdzieś w katalogu użytkownika (LINUX) i wpisujemy w terminalu "crontab -e" na dole pliku wpisujemy np "*/5 * * * * /sciezka/do/pliku/skrypt.sh" (10 oznacz, że będzie wykonywał się co 5 minut).
PS. po utworzeniu skryptu trzeba mu nadać uprawnienia w terminalu np."sudo chmod +x sciezka do skyptu.sh"