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
-
s_pol
- Posts: 36
- Joined: Fri Mar 08, 2019 9:13 pm
@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_ wrote: Sun Jan 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'];
-
dar3cz3k_
- Posts: 128
- Joined: Wed Mar 07, 2018 10:20 pm
- Location: Brudzowice
- Has thanked: 3 times
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
-
shirou93
- Posts: 3
- Joined: Sun Mar 31, 2019 11:15 am
Hej,arek156 wrote: Tue Feb 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"
Code: Select all
#!/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
-
wojtas567
- Posts: 2334
- Joined: Sun Apr 03, 2016 7:16 pm
- Location: Olsztyn
Napisz jeszcze gdzie ten skrypt trzeba wysłać, co to za aplikacja i po co?
Pozdrawiam
Wojtek
Wojtek
-
shirou93
- Posts: 3
- Joined: Sun Mar 31, 2019 11:15 am
jq wyciąga to co chcemy z jsona.wojtas567 wrote: Sun Mar 31, 2019 3:01 pm Napisz jeszcze gdzie ten skrypt trzeba wysłać, co to za aplikacja i po co?
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.
-
arek156
- Posts: 6
- Joined: Wed Dec 13, 2017 8:51 pm
@shirou93 czy mógłbyś trochę łopatologicznie opisać gdzie wrzucić ten skrypt i co za aplikację zainstalować (jq)?
Bedę wdzięczy za pomoc ....
Bedę wdzięczy za pomoc ....
-
shirou93
- Posts: 3
- Joined: Sun Mar 31, 2019 11:15 am
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"
Code: Select all
#!/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"
-
karok1
- Posts: 3
- Joined: Mon Nov 04, 2019 7:03 pm
Czy da się dostosować ten skrypt do odczytu statusu z rolet
