dtgbot - Domoticz TeleGram BOT

Client tools or tools that can connect with Domoticz. Tools for Windows, iOS, Android, Linux etc.

Moderator: leecollings

Post Reply
Slayer007
Posts: 29
Joined: Wednesday 18 June 2014 23:57
Target OS: Raspberry Pi / ODroid
Domoticz version:
Location: Netherlands
Contact:

Re: dtgbot - Domoticz TeleGram BOT

Post by Slayer007 »

I've read that there's no security in the bot. So anyone that knows the name of my bot, can turn my lights on, for example.
I read in this forum that you can make a user variabele in domoticz. But i can't get it to work. I don't know exactly what to do. Can anyone help me or is there another security that can be implemented.

I don't want to use groups. Just two phones who can talk with the bot seperately.
At first i worked with one of the first telegrams, but somehow that didn't work anymore. This looks a lot more stable, with lost of possibilities. Thanks for the wiki Simon. Works perfect!
simonrg
Posts: 329
Joined: Tuesday 16 July 2013 22:54
Target OS: Raspberry Pi / ODroid
Domoticz version: 3.8807
Location: North East England
Contact:

Re: dtgbot - Domoticz TeleGram BOT

Post by simonrg »

Slayer007 wrote:I've read that there's no security in the bot. So anyone that knows the name of my bot, can turn my lights on, for example.
I read in this forum that you can make a user variabele in domoticz. But i can't get it to work. I don't know exactly what to do. Can anyone help me or is there another security that can be implemented.
There wasn't security in the bot, there is now.

In dtgbot.cfg the name of the Domoticz variable is defined

Code: Select all

WLName = 'TelegramBotWhiteListedIDs'
Then in Domoticz just create a string uservaraible called TelegramBotWhiteListedIDs and put in the chat ids of the clients:

Code: Select all

1234343423|0982384343
Basically separate the chat ids by |
Raspberry Pi 2 B - 2A@5V PSU - Raspbian + Domoticz + RFXtrx(89), LightwaveRF House(dimmers, sockets, wireless/mood switches), Owl CM113, 4 LaCross Temp / Humidity Sensors, 4 Siemens PIR, Smappee, Solaredge, ESP8266
Slayer007
Posts: 29
Joined: Wednesday 18 June 2014 23:57
Target OS: Raspberry Pi / ODroid
Domoticz version:
Location: Netherlands
Contact:

Re: dtgbot - Domoticz TeleGram BOT

Post by Slayer007 »

Yeah,

That's exactly what I did. I put in some dummy id's, to check wether I can still send messages. It's still working alttough my id wasn't in the list.

This is what I put in domoticz.

Am I forgetting something to do?

Edit: Forgot to restart the bot. Now it's working just fine
Attachments
domo.PNG
domo.PNG (14.99 KiB) Viewed 4279 times
Last edited by Slayer007 on Wednesday 19 August 2015 19:09, edited 1 time in total.
MacJL
Posts: 51
Joined: Tuesday 22 April 2014 22:17
Target OS: OS X
Domoticz version: Beta
Location: France
Contact:

Re: dtgbot - Domoticz TeleGram BOT

Post by MacJL »

Hello,

I have this error when trying to obtain temperature :

Code: Select all

/usr/bin/lua5.2: /home/pi/dtgbot/lua//temperature.lua:31: attempt to concatenate global 'Humidity' (a nil value)
stack traceback:
        /home/pi/dtgbot/lua//temperature.lua:31: in function 'temperature'
        /home/pi/dtgbot/lua//temperature.lua:44: in function 'handler'
        /home/pi/dtgbot/dtgbot.lua:293: in function 'HandleCommand'
        /home/pi/dtgbot/dtgbot.lua:400: in function 'on_msg_receive'
        /home/pi/dtgbot/dtgbot.lua:490: in main chunk
        [C]: in ?
MacJL
Posts: 51
Joined: Tuesday 22 April 2014 22:17
Target OS: OS X
Domoticz version: Beta
Location: France
Contact:

Re: dtgbot - Domoticz TeleGram BOT

Post by MacJL »

And another one with specials caracters in Devices names :

Code: Select all

Succesfully handled incoming request
TelegramBotOffset 726956497
JSON request <http://127.0.0.1:8080/json.htm?type=command&param=updateuservariable&idx=2&vname=TelegramBotOffset&vtype=integer&vvalue=726956497>
.{"ok":true,"result":[]}
.{"ok":true,"result":[]}
.{"ok":true,"result":[{"update_id":726956497,
"message":{"message_id":198,"from":{"id":xxxxxx,"first_name":"xxxxxxx","last_name":"xxxxxx","username":"xxxxxx"},"chat":{"id":xxxxxx,"first_name":"xxxxxx","last_name":"xxxxxx","username":"xxxxxx"},"date":1439995113,"text":"\/temperature \"V\u00e9randa\""}}]}
Message: 1
update_id       726956497
/temperature "Véranda"
No on WhiteList: 2
WhiteList: xxxxxx
WhiteList: xxxxxx
Handle command function started with /temperature "Véranda" and xxxxxx
JSON request <http://127.0.0.1:8080/json.htm?type=devices&order=name>
V randa does not exist
https://api.telegram.org/botxxxxxx:xxxxxx/sendMessage?timeout=60&chat_id=xxxxxx&reply_to_message_id=198&text=V+randa+does+not+exist
200
MacJL
Posts: 51
Joined: Tuesday 22 April 2014 22:17
Target OS: OS X
Domoticz version: Beta
Location: France
Contact:

Re: dtgbot - Domoticz TeleGram BOT

Post by MacJL »

I have created a simple script that add the chat ids to telegram TelegramBotWhiteListedIDs user variable.
The steps :

# Stop dtgbot
sudo service dtgbot stop
sleep 60
# Send a telegram message to the bot
# Execute the script
chmod +x authorize.bash
./authorize.bash
# Restart dtgbot
sudo service dtgbot start

If you want to add the script to the git repository and the wiki page, you can do it.

The content of authorize.bash

Code: Select all

#!/bin/bash

# Getting Domoticz user variables
JMESSAGES=$( curl -sS "https://api.telegram.org/bot$TelegramBotToken/getUpdates" )

# Getting Telegram Bot last messages
DOMOVAR=$( curl -sS "http://$DomoticzIP:$DomoticzPort/json.htm?type=command&param=getuservariables")

# Parsing User variable "TelegramBotWhiteListedIDs" Value and IDX
DOMOVAR_VAL=$( echo $DOMOVAR | jq -c '.result[]|select(.Name == "TelegramBotWhiteListedIDs").Value' | sed "s/\"//g" )
DOMOVAR_IDX=$( echo $DOMOVAR | jq -c '.result[]|select(.Name == "TelegramBotWhiteListedIDs").idx'   | sed "s/\"//g" )

# For each user or group chat
echo $JMESSAGES | jq -c .result[].message.chat | sort -u | while read line
do
        FIRSTNAME=$(  echo $line | jq -c .first_name | sed "s/\"//g" )
        LASTNAME=$(   echo $line | jq -c .last_name  | sed "s/\"//g" )
        USERNAME=$(   echo $line | jq -c .username   | sed "s/\"//g" )
        GROUPTITLE=$( echo $line | jq -c .title      | sed "s/\"//g" )
        CHATID=$(     echo $line | jq -c .id         | sed "s/\"//g" )

        # Gessing if it's a user or a group chat
        if [[ $GROUPTITLE == "null" ]]
        then
                DESTNAME="user $FIRSTNAME $LASTNAME, $USERNAME with chat id : \"$CHATID\""
        else
                DESTNAME="group $GROUPTITLE with chat id : \"$CHATID\""
        fi

        # Is the CHATID already authorized?
        if [ $( echo "|$DOMOVAR_VAL|" | sed "s/\"/\|/g" | grep "|$CHATID|" | wc -l ) -eq 1 ]
        then
                echo "The $DESTNAME is already authorized"
        else
                echo "Adding $DESTNAME to $DOMOVAR_VAL"
                DOMOVAR_VAL="$DOMOVAR_VAL|$CHATID"
                curl -sS "http://$DomoticzIP:$DomoticzPort/json.htm?type=command&param=updateuservariable&idx=$DOMOVAR_IDX&vname=TelegramBotWhiteListedIDs&vtype=2&vvalue=$DOMOVAR_VAL" | jq -c .status
        fi
done
simonrg
Posts: 329
Joined: Tuesday 16 July 2013 22:54
Target OS: Raspberry Pi / ODroid
Domoticz version: 3.8807
Location: North East England
Contact:

Re: dtgbot - Domoticz TeleGram BOT

Post by simonrg »

MacJL wrote:Hello,

I have this error when trying to obtain temperature :

Code: Select all

/usr/bin/lua5.2: /home/pi/dtgbot/lua//temperature.lua:31: attempt to concatenate global 'Humidity' (a nil value)
stack traceback:
        /home/pi/dtgbot/lua//temperature.lua:31: in function 'temperature'
        /home/pi/dtgbot/lua//temperature.lua:44: in function 'handler'
        /home/pi/dtgbot/dtgbot.lua:293: in function 'HandleCommand'
        /home/pi/dtgbot/dtgbot.lua:400: in function 'on_msg_receive'
        /home/pi/dtgbot/dtgbot.lua:490: in main chunk
        [C]: in ?
All my temperature sensors return Humidity as well, so it always works for me, ;) , obviously not all temperature sensors do, the code needs to check the type of the sensor and then only return humidity from ones that do. If you replace these routines in temperature.lua with the code below, then it should work ok:

Code: Select all

function get_temperature(DeviceName)
  idx = idx_from_name(DeviceName,'devices')
  if idx == nil then
    return DeviceName, -999, -999, 0
  end
-- Determine temperature
  t = server_url.."/json.htm?type=devices&rid=" .. idx
  print ("JSON request <"..t..">");
  jresponse, status = http.request(t)
  decoded_response = JSON:decode(jresponse)
  result = decoded_response["result"]
  record = result[1]
  Temperature = record["Temp"]
  if record["Type"] == "Temp + Humidity" then
    Humidity = record["Humidity"]
  else
    Humidity = -999
  end
  LastUpdate = record["LastUpdate"]
  DeviceName = record["Name"]
  return DeviceName, Temperature, Humidity, LastUpdate;
end

function temperature(DeviceName)
  local response = ""
  DeviceName, Temperature, Humidity, LastUpdate = get_temperature(DeviceName)
  if Temperature == -999 then
    print(DeviceName..' does not exist')
    return 1, DeviceName..' does not exist'
  end
  if Humidity ~= -999 then
    print(DeviceName .. ' temperature is ' .. Temperature .. '°C and relative humidity is ' .. Humidity .. '%')
    response = DeviceName.. ' ' .. Temperature .. '°C & ' .. Humidity .. '%'
  else
    print(DeviceName .. ' temperature is ' .. Temperature .. '°C')
    response = DeviceName.. ' ' .. Temperature .. '°C'
  end
  return status, response;
end
I have updated the master branch in github with these corrections, thanks.
Raspberry Pi 2 B - 2A@5V PSU - Raspbian + Domoticz + RFXtrx(89), LightwaveRF House(dimmers, sockets, wireless/mood switches), Owl CM113, 4 LaCross Temp / Humidity Sensors, 4 Siemens PIR, Smappee, Solaredge, ESP8266
simonrg
Posts: 329
Joined: Tuesday 16 July 2013 22:54
Target OS: Raspberry Pi / ODroid
Domoticz version: 3.8807
Location: North East England
Contact:

Re: dtgbot - Domoticz TeleGram BOT

Post by simonrg »

MacJL wrote:I have created a simple script that add the chat ids to telegram TelegramBotWhiteListedIDs user variable.
The steps :
Spoiler: show
# Stop dtgbot
sudo service dtgbot stop
sleep 60
# Send a telegram message to the bot
# Execute the script
chmod +x authorize.bash
./authorize.bash
# Restart dtgbot
sudo service dtgbot start

If you want to add the script to the git repository and the wiki page, you can do it.

The content of authorize.bash

Code: Select all

#!/bin/bash

# Getting Domoticz user variables
JMESSAGES=$( curl -sS "https://api.telegram.org/bot$TelegramBotToken/getUpdates" )

# Getting Telegram Bot last messages
DOMOVAR=$( curl -sS "http://$DomoticzIP:$DomoticzPort/json.htm?type=command&param=getuservariables")

# Parsing User variable "TelegramBotWhiteListedIDs" Value and IDX
DOMOVAR_VAL=$( echo $DOMOVAR | jq -c '.result[]|select(.Name == "TelegramBotWhiteListedIDs").Value' | sed "s/\"//g" )
DOMOVAR_IDX=$( echo $DOMOVAR | jq -c '.result[]|select(.Name == "TelegramBotWhiteListedIDs").idx'   | sed "s/\"//g" )

# For each user or group chat
echo $JMESSAGES | jq -c .result[].message.chat | sort -u | while read line
do
        FIRSTNAME=$(  echo $line | jq -c .first_name | sed "s/\"//g" )
        LASTNAME=$(   echo $line | jq -c .last_name  | sed "s/\"//g" )
        USERNAME=$(   echo $line | jq -c .username   | sed "s/\"//g" )
        GROUPTITLE=$( echo $line | jq -c .title      | sed "s/\"//g" )
        CHATID=$(     echo $line | jq -c .id         | sed "s/\"//g" )

        # Gessing if it's a user or a group chat
        if [[ $GROUPTITLE == "null" ]]
        then
                DESTNAME="user $FIRSTNAME $LASTNAME, $USERNAME with chat id : \"$CHATID\""
        else
                DESTNAME="group $GROUPTITLE with chat id : \"$CHATID\""
        fi

        # Is the CHATID already authorized?
        if [ $( echo "|$DOMOVAR_VAL|" | sed "s/\"/\|/g" | grep "|$CHATID|" | wc -l ) -eq 1 ]
        then
                echo "The $DESTNAME is already authorized"
        else
                echo "Adding $DESTNAME to $DOMOVAR_VAL"
                DOMOVAR_VAL="$DOMOVAR_VAL|$CHATID"
                curl -sS "http://$DomoticzIP:$DomoticzPort/json.htm?type=command&param=updateuservariable&idx=$DOMOVAR_IDX&vname=TelegramBotWhiteListedIDs&vtype=2&vvalue=$DOMOVAR_VAL" | jq -c .status
        fi
done
:shock: Great piece of bashing, :D my only hesitation is that it adds another dependency to jq that I am sort of keen to remove just because it is not immediately available in Raspberry Pi repository, I am tempted to translate your code into Lua and include it as new command for the bot, i.e. if either you have no whitelisted ids or your id is already whitelisted, then command /whitelist 10 would whitelist any ids that have been recieved in the last 10 minutes.
Raspberry Pi 2 B - 2A@5V PSU - Raspbian + Domoticz + RFXtrx(89), LightwaveRF House(dimmers, sockets, wireless/mood switches), Owl CM113, 4 LaCross Temp / Humidity Sensors, 4 Siemens PIR, Smappee, Solaredge, ESP8266
User avatar
bizziebis
Posts: 182
Joined: Saturday 19 October 2013 14:00
Target OS: Raspberry Pi / ODroid
Domoticz version: 3.8805
Location: The Netherlands
Contact:

Re: dtgbot - Domoticz TeleGram BOT

Post by bizziebis »

Is dtgbot Raspberry only? I followed your steps but get :

Code: Select all

//usr/bin/lua5.2: error loading module 'socket.core' from file '/usr/local/lib/lua/5.2/socket/core.so':
        /usr/local/lib/lua/5.2/socket/core.so: cannot open shared object file: No such file or directory
stack traceback:
        [C]: in ?
        [C]: in function 'require'
        /usr/local/share/lua/5.2/socket.lua:12: in main chunk
        [C]: in function 'require'
        /usr/local/share/lua/5.2/socket/http.lua:10: in main chunk
        [C]: in function 'require'
        /home/pi/dtgbot/dtgbot.lua:65: in main chunk
        [C]: in ?
Edit: Nevermind, I see I have to find them myself and compile. Maybe next time ;)
simonrg
Posts: 329
Joined: Tuesday 16 July 2013 22:54
Target OS: Raspberry Pi / ODroid
Domoticz version: 3.8807
Location: North East England
Contact:

Re: dtgbot - Domoticz TeleGram BOT

Post by simonrg »

bizziebis wrote:Is dtgbot Raspberry only? I followed your steps but get :
Spoiler: show

Code: Select all

//usr/bin/lua5.2: error loading module 'socket.core' from file '/usr/local/lib/lua/5.2/socket/core.so':
        /usr/local/lib/lua/5.2/socket/core.so: cannot open shared object file: No such file or directory
stack traceback:
        [C]: in ?
        [C]: in function 'require'
        /usr/local/share/lua/5.2/socket.lua:12: in main chunk
        [C]: in function 'require'
        /usr/local/share/lua/5.2/socket/http.lua:10: in main chunk
        [C]: in function 'require'
        /home/pi/dtgbot/dtgbot.lua:65: in main chunk
        [C]: in ?
Edit: Nevermind, I see I have to find them myself and compile. Maybe next time ;)
What system are you on? You may find they are available to install from the system repository or compilation shouldn't be too difficult.
Raspberry Pi 2 B - 2A@5V PSU - Raspbian + Domoticz + RFXtrx(89), LightwaveRF House(dimmers, sockets, wireless/mood switches), Owl CM113, 4 LaCross Temp / Humidity Sensors, 4 Siemens PIR, Smappee, Solaredge, ESP8266
MacJL
Posts: 51
Joined: Tuesday 22 April 2014 22:17
Target OS: OS X
Domoticz version: Beta
Location: France
Contact:

Re: dtgbot - Domoticz TeleGram BOT

Post by MacJL »

simonrg wrote: All my temperature sensors return Humidity as well, so it always works for me, ;) , obviously not all temperature sensors do, the code needs to check the type of the sensor and then only return humidity from ones that do. If you replace these routines in temperature.lua with the code below, then it should work ok:
Spoiler: show
function get_temperature(DeviceName)
idx = idx_from_name(DeviceName,'devices')
if idx == nil then
return DeviceName, -999, -999, 0
end
-- Determine temperature
t = server_url.."/json.htm?type=devices&rid=" .. idx
print ("JSON request <"..t..">");
jresponse, status = http.request(t)
decoded_response = JSON:decode(jresponse)
result = decoded_response["result"]
record = result[1]
Temperature = record["Temp"]
if record["Type"] == "Temp + Humidity" then
Humidity = record["Humidity"]
else
Humidity = -999
end
LastUpdate = record["LastUpdate"]
DeviceName = record["Name"]
return DeviceName, Temperature, Humidity, LastUpdate;
end

function temperature(DeviceName)
local response = ""
DeviceName, Temperature, Humidity, LastUpdate = get_temperature(DeviceName)
if Temperature == -999 then
print(DeviceName..' does not exist')
return 1, DeviceName..' does not exist'
end
if Humidity ~= -999 then
print(DeviceName .. ' temperature is ' .. Temperature .. '°C and relative humidity is ' .. Humidity .. '%')
response = DeviceName.. ' ' .. Temperature .. '°C & ' .. Humidity .. '%'
else
print(DeviceName .. ' temperature is ' .. Temperature .. '°C')
response = DeviceName.. ' ' .. Temperature .. '°C'
end
return status, response;
end
I have updated the master branch in github with these corrections, thanks.
Still the same issue with this update. In fact, this sensor is a not a temperature only sensor, but a temperature + Humidity + barometer sensor. If you need more logs, I can provides them.
simonrg
Posts: 329
Joined: Tuesday 16 July 2013 22:54
Target OS: Raspberry Pi / ODroid
Domoticz version: 3.8807
Location: North East England
Contact:

Re: dtgbot - Domoticz TeleGram BOT

Post by simonrg »

MacJL wrote:Still the same issue with this update. In fact, this sensor is a not a temperature only sensor, but a temperature + Humidity + barometer sensor. If you need more logs, I can provides them.
There is a new version on github now.
Spoiler: show

Code: Select all

function get_temperature(DeviceName)
  idx = idx_from_name(DeviceName,'devices')
  if idx == nil then
    return DeviceName, -999, -999, -999, 0
  end
  Temperature = -999
  Humidity = -999
  Pressure = -999
-- Determine temperature
  t = server_url.."/json.htm?type=devices&rid=" .. idx
  print ("JSON request <"..t..">");
  jresponse, status = http.request(t)
  decoded_response = JSON:decode(jresponse)
  result = decoded_response["result"]
  record = result[1]
  DeviceType = record["Type"]
  if DeviceType == "Temp" then
    Temperature = record["Temp"]
  else
    if DeviceType == "Humidity" then
      Humidity = record["Humidity"]
    else
      if DeviceType == "Temp + Humidity" then
        Temperature = record["Temp"]
        Humidity = record["Humidity"]
      else
        if DeviceType == "Temp + Humidity + Baro" then
          Temperature = record["Temp"]
          Humidity = record["Humidity"]
          Pressure = record["Barometer"]
        end
      end
    end
  end
  LastUpdate = record["LastUpdate"]
  DeviceName = record["Name"]
  return DeviceName, Temperature, Humidity, Pressure, LastUpdate;
end

function temperature(DeviceName)
  local response = ""
  DeviceName, Temperature, Humidity, Pressure, LastUpdate = get_temperature(DeviceName)
  if Temperature == -999 and Humidity == -999 and Pressure == -999 then
    print(DeviceName..' does not exist')
    return 1, DeviceName..' does not exist'
  else
    if Temperature == -999 and Pressure == -999 then
      print(DeviceName .. ' relative humidity is ' .. Humidity .. '%')
      response = DeviceName.. ' ' .. Humidity .. '%'
    else  
      if Pressure ~= -999 then
        print(DeviceName .. ' temperature is ' .. Temperature .. '°C, relative humidity is ' .. Humidity .. '% and pressure is '.. Pressure..'hPa')
        response = DeviceName.. ' ' .. Temperature .. '°C & ' .. Humidity .. '% & '.. Pressure .. 'hPa'
      else
        if Humidity ~= -999 then
          print(DeviceName .. ' temperature is ' .. Temperature .. '°C and relative humidity is ' .. Humidity .. '%')
          response = DeviceName.. ' ' .. Temperature .. '°C & ' .. Humidity .. '%'
        else
          print(DeviceName .. ' temperature is ' .. Temperature .. '°C')
          response = DeviceName.. ' ' .. Temperature .. '°C'
        end
      end
    end
  end
  return status, response;
end
Raspberry Pi 2 B - 2A@5V PSU - Raspbian + Domoticz + RFXtrx(89), LightwaveRF House(dimmers, sockets, wireless/mood switches), Owl CM113, 4 LaCross Temp / Humidity Sensors, 4 Siemens PIR, Smappee, Solaredge, ESP8266
MacJL
Posts: 51
Joined: Tuesday 22 April 2014 22:17
Target OS: OS X
Domoticz version: Beta
Location: France
Contact:

Re: dtgbot - Domoticz TeleGram BOT

Post by MacJL »

Thanks!

Ther is no mare crashes, but it reply 'Salon does not exist', even If ther is a Temp Sensor that is called 'Salon'.It seems to be the fact that I have two devices which are called Salon : A temperature Sensor, and a switch :

Code: Select all

.{"ok":true,"result":[]}
.{"ok":true,"result":[{"update_id":726956523,
"message":{"message_id":249,"from":{"id":34862038,"first_name":"Jean-Laurent","last_name":"Girod","username":"macjl"},"chat":{"id":34862038,"first_name":"Jean-Laurent","last_name":"Girod","username":"macjl"},"date":1440071800,"text":"\/temperature Salon"}}]}
Message: 1
update_id       726956523
/temperature Salon
No on WhiteList: 2
WhiteList: xxxxxxxxxx
Handle command function started with /temperature Salon and xxxxxxxxxx
JSON request <http://127.0.0.1:8080/json.htm?type=devices&order=name>
25
58
JSON request <http://127.0.0.1:8080/json.htm?type=devices&rid=58>
Salon does not exist
https://api.telegram.org/botxxxxxx:xxxxxx/sendMessage?timeout=60&chat_id=xxxxxx&reply_to_message_id=249&text=Salon+does+not+exist
200
Succesfully handled incoming request
TelegramBotOffset 726956524
JSON request <http://127.0.0.1:8080/json.htm?type=command&param=updateuservariable&idx=2&vname=TelegramBotOffset&vtype=integer&vvalue=726956524>
Maybe you should send a reply for each device with the same name, instead of just the last one?
simonrg
Posts: 329
Joined: Tuesday 16 July 2013 22:54
Target OS: Raspberry Pi / ODroid
Domoticz version: 3.8807
Location: North East England
Contact:

Re: dtgbot - Domoticz TeleGram BOT

Post by simonrg »

MacJL wrote:Thanks!

Ther is no mare crashes, but it reply 'Salon does not exist', even If ther is a Temp Sensor that is called 'Salon'.It seems to be the fact that I have two devices which are called Salon : A temperature Sensor, and a switch :
Spoiler: show

Code: Select all

.{"ok":true,"result":[]}
.{"ok":true,"result":[{"update_id":726956523,
"message":{"message_id":249,"from":{"id":34862038,"first_name":"Jean-Laurent","last_name":"Girod","username":"macjl"},"chat":{"id":34862038,"first_name":"Jean-Laurent","last_name":"Girod","username":"macjl"},"date":1440071800,"text":"\/temperature Salon"}}]}
Message: 1
update_id       726956523
/temperature Salon
No on WhiteList: 2
WhiteList: xxxxxxxxxx
Handle command function started with /temperature Salon and xxxxxxxxxx
JSON request <http://127.0.0.1:8080/json.htm?type=devices&order=name>
25
58
JSON request <http://127.0.0.1:8080/json.htm?type=devices&rid=58>
Salon does not exist
https://api.telegram.org/botxxxxxx:xxxxxx/sendMessage?timeout=60&chat_id=xxxxxx&reply_to_message_id=249&text=Salon+does+not+exist
200
Succesfully handled incoming request
TelegramBotOffset 726956524
JSON request <http://127.0.0.1:8080/json.htm?type=command&param=updateuservariable&idx=2&vname=TelegramBotOffset&vtype=integer&vvalue=726956524>
Maybe you should send a reply for each device with the same name, instead of just the last one?
For time being if you change the name of the temperature sensor would be easiest.

In the long term I should really make the logic deal with multiple names, but it has implications for other parts of the code, so needs a little bit of thought.
Raspberry Pi 2 B - 2A@5V PSU - Raspbian + Domoticz + RFXtrx(89), LightwaveRF House(dimmers, sockets, wireless/mood switches), Owl CM113, 4 LaCross Temp / Humidity Sensors, 4 Siemens PIR, Smappee, Solaredge, ESP8266
Slayer007
Posts: 29
Joined: Wednesday 18 June 2014 23:57
Target OS: Raspberry Pi / ODroid
Domoticz version:
Location: Netherlands
Contact:

Re: dtgbot - Domoticz TeleGram BOT

Post by Slayer007 »

Can anyone help with this. A couple of days ago I installed the new TelegramBot from simonrg. Everything went very well and works fine now.
Now I tried to do the same for my parents, but the dtgbot doesn't start up. With the command: sudo service dtgbot start, it says: Starting Telegram....
But nothing happens. When I try: sudo service dtgbot status it says: dtgbot is not running.

This is my log fil:

Code: Select all

/usr/bin/lua5.2: /home/pi/dtgbot/dtgbot.lua:291: bad argument #1 to 'lower' (string expected, got nil)
stack traceback:
	[C]: in function 'lower'
	/home/pi/dtgbot/dtgbot.lua:291: in function 'HandleCommand'
	/home/pi/dtgbot/dtgbot.lua:400: in function 'on_msg_receive'
	/home/pi/dtgbot/dtgbot.lua:490: in main chunk
	[C]: in ?
What went wrong? I can send messages to the id's with http, so my bot is working, only the dtgbot isn't.

Thnx!
User avatar
G3rard
Posts: 669
Joined: Wednesday 04 March 2015 22:15
Target OS: -
Domoticz version: No
Location: The Netherlands
Contact:

Re: dtgbot - Domoticz TeleGram BOT

Post by G3rard »

Did you try the chmod as described in this post http://www.domoticz.com/forum/viewtopic ... 279#p49972
Not using Domoticz anymore
Slayer007
Posts: 29
Joined: Wednesday 18 June 2014 23:57
Target OS: Raspberry Pi / ODroid
Domoticz version:
Location: Netherlands
Contact:

Re: dtgbot - Domoticz TeleGram BOT

Post by Slayer007 »

Yes, everything has it's rights
User avatar
G3rard
Posts: 669
Joined: Wednesday 04 March 2015 22:15
Target OS: -
Domoticz version: No
Location: The Netherlands
Contact:

Re: dtgbot - Domoticz TeleGram BOT

Post by G3rard »

Did you try a reboot?
Not using Domoticz anymore
Slayer007
Posts: 29
Joined: Wednesday 18 June 2014 23:57
Target OS: Raspberry Pi / ODroid
Domoticz version:
Location: Netherlands
Contact:

Re: dtgbot - Domoticz TeleGram BOT

Post by Slayer007 »

Yep! And tried to remove everything and start over, but that also doesn't work. :-(

Edit1:

I think it does have something to do with authorization. Check both images. One of them is mine and one of them are my parents. I don't know in which authorization I have to look.

Edit2: I think it works now. The uservariable in domoticz was set on 1. When I changed it to 2 it started. After that I've got a lot of messages till it crashed again. I requested the latest integer uservariable and changed it 1 higher. After that it's still working. Hope for a long time!

Thnx for thinking. Maybe it was helpful to other people.
Attachments
Knipsel1.PNG
Knipsel1.PNG (10.97 KiB) Viewed 4143 times
Knipsel.PNG
Knipsel.PNG (9.17 KiB) Viewed 4143 times
simonrg
Posts: 329
Joined: Tuesday 16 July 2013 22:54
Target OS: Raspberry Pi / ODroid
Domoticz version: 3.8807
Location: North East England
Contact:

Re: dtgbot - Domoticz TeleGram BOT

Post by simonrg »

Slayer007 wrote:Yep! And tried to remove everything and start over, but that also doesn't work. :-(

Edit1:

I think it does have something to do with authorization. Check both images. One of them is mine and one of them are my parents. I don't know in which authorization I have to look.

Edit2: I think it works now. The uservariable in domoticz was set on 1. When I changed it to 2 it started. After that I've got a lot of messages till it crashed again. I requested the latest integer uservariable and changed it 1 higher. After that it's still working. Hope for a long time!

Thnx for thinking. Maybe it was helpful to other people.
The message shows unauthorized response from Domoticz, it looks like your Domoticz needs authentication, so not really a Telegram issue.

Which uservariable did you change?
Raspberry Pi 2 B - 2A@5V PSU - Raspbian + Domoticz + RFXtrx(89), LightwaveRF House(dimmers, sockets, wireless/mood switches), Owl CM113, 4 LaCross Temp / Humidity Sensors, 4 Siemens PIR, Smappee, Solaredge, ESP8266
Post Reply

Who is online

Users browsing this forum: No registered users and 0 guests