to retreive to information about my solar-panales I need to use a token which is 30 minutes valid. Retreiving this works fine. I con not retreive a token evry few minutes, otherwise I run into an error (to many request or so).
My proposed solution:
Create 2 Domoticx variables: 1 holding the last token value, and 1 holding the last timestamp a token was retreived. Whenever a script needs the token, first check is the timestamp is > 25 minutes old. If so, get a new token from Huawei, otherwise use the token from the Domoticz variable.
This all works fine except writing a new token to the Domoticz variable. In a small testing script this works, but when adding more logic to it, it fails

Code: Select all
# Write new token to Domoticz
myVarName=Huawei_XSRF_token
echo -----
echo "myDomoticzURL: "$myDomoticzURL
echo "myToken: "$myToken
echo "myVar: "$myVarName
echo -----
echo
echo "$myDomoticzURL/json.htm?type=command¶m=updateuservariable&vname=$myVarName&vtype=2&vvalue=$myToken"
echo -----
echo
myURL="$myDomoticzURL/json.htm?type=command¶m=updateuservariable&vname=$myVarName&vtype=2&vvalue=$myToken"
echo "myURL: "$myURL
curl "$myURL"
Code: Select all
-----
myDomoticzURL: http://192.168.178.34:8080
myToken: x-hg5jsbo83xtik7ddtd7zen1c1jumnv48iqampg9htjdglf091g49jsg89gnttgtd9dju5humk5vyemc8ers87sg8dirs45k4ZZZZZk0beremukhcvx3wemumo5dd6lnu
myVar: Huawei_XSRF_token
-----
http://192.168.178.34:8080/json.htm?type=command¶m=updateuservariable&vname=Huawei_XSRF_token&vtype=2&vvalue=x-hg5jsbo83xtik7ddtd7zen1c1jumnv48iqampg9htjdglf091g49jsg89gnttgtd9dju5humk5vyemc8ers87sg8dirs45k4ZZZZZk0beremukhcvx3wemumo5dd6lnu
-----
myURL: http://192.168.178.34:8080/json.htm?type=command¶m=updateuservariable&vname=Huawei_XSRF_token&vtype=2&vvalue=x-hg5jsbo83xtik7ddtd7zen1c1jumnv48iqampg9htjdglf091g49jsg89gnttgtd9dju5humk5vyemc8ers87sg8dirs45k4ZZZZZ0beremukhcvx3wemumo5dd6lnu
curl: (3) URL using bad/illegal format or missing URL

What works is this script:
Code: Select all
#!/bin/bash
# Set enviroment
#####################################
setEnvironment () {
mydir=`dirname $0`
myTempFile=$mydir/results.$$
source $mydir/HuaweiSolar.env
#source $mydir/get_token.sh
}
CheckToken () {
myVarName=Huawei_XSRF_token
myToken="x-YYyZzjsbo83xtik7ddtd7zen1c1jumnv48iqampg9htjdglf091g49jsg89gnttgtd9dju5humk5vyemc8ers87sg8dirs45k4XXXXXXXeremukhcvx3wemumo5dd6lnuZZZ"
echo -----
echo "myDomoticzURL: "$myDomoticzURL
echo "myToken: "$myToken
echo "myVar: "$myVarName
echo -----
echo
curl "$myDomoticzURL/json.htm?type=command¶m=updateuservariable&vname=$myVarName&vtype=2&vvalue=$myToken"
}
setEnvironment
CheckToken
Thanks,
Jeroen