New Telegram Binding - Tester and Feedback welcome

I use this version with 2.5.M1 and it’s not working perfect but quite well
https://github.com/Belgadon/openhab2-addons/releases/download/2.4.0.M5_telegramBot1/org.openhab.binding.telegram-2.4.0-SNAPSHOT.jar

I suppose Alex is now working in include it in the official OH2 bindings
Regards
Lorenzo

Hey @ZzetT,
for whatever reason I’m getting the following error when trying to execute a rule:

    An error occurred during the script execution: index=2, size=2

This is my script:

    val telegramAction = getActions("telegram","telegram:telegramBot:102b929e")
    telegramAction.sendTelegram("Test")

If I remove the sendTelegram line, the error goes away. The bot seems to be configured correctly. Do I have to uninstall the old Telegram Action or what am I doing wrong here?

UPDATE:
If I’m trying to send a message with response options, I get the following exception:

telegramAction.sendTelegram("It is evening, and the garage door is still open. Do you want me to close it?", "Reply_Garage", "Yes", "No")

2019-07-13 19:24:42.777 [WARN ] [binding.telegram.bot.TelegramActions] - Failed to send telegram: 
org.telegram.telegrambots.meta.exceptions.TelegramApiRequestException: Error sending message
	at org.telegram.telegrambots.meta.api.methods.send.SendMessage.deserializeResponse(SendMessage.java:169) ~[?:?]
	at org.telegram.telegrambots.meta.api.methods.send.SendMessage.deserializeResponse(SendMessage.java:23) ~[?:?]
	at org.telegram.telegrambots.bots.DefaultAbsSender.sendApiMethod(DefaultAbsSender.java:748) ~[?:?]
	at org.telegram.telegrambots.meta.bots.AbsSender.execute(AbsSender.java:47) ~[?:?]
	at org.openhab.binding.telegram.bot.TelegramActions.sendTelegram(TelegramActions.java:156) ~[?:?]
	at org.openhab.binding.telegram.bot.TelegramActions.sendTelegram(TelegramActions.java:250) ~[?:?]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:?]
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.invokeOperation(XbaseInterpreter.java:1086) ~[?:?]
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.invokeOperation(XbaseInterpreter.java:1061) ~[?:?]
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._invokeFeature(XbaseInterpreter.java:1047) ~[?:?]
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.invokeFeature(XbaseInterpreter.java:992) ~[?:?]
	at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.invokeFeature(ScriptInterpreter.java:151) ~[?:?]
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:772) ~[?:?]
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:220) ~[?:?]
	at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:447) ~[?:?]
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:228) ~[?:?]
	at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.evaluate(XbaseInterpreter.java:190) ~[?:?]
	at org.eclipse.smarthome.model.script.runtime.internal.engine.ScriptImpl.execute(ScriptImpl.java:82) ~[?:?]
	at org.eclipse.smarthome.model.rule.runtime.internal.engine.RuleEngineImpl.lambda$2(RuleEngineImpl.java:341) ~[?:?]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:?]
	at java.lang.Thread.run(Thread.java:748) [?:?]

Cheers,
Florian

You have to pass the bot name which you configured in the Thing settings to the sendTelegram action first.

like:

actions.sendTelegram("botName", "Test")

Hi Kristof,

thanks, this is not documented correctly then, @ZzetT: https://github.com/ZzetT/openhab2-addons/blob/master/bundles/org.openhab.binding.telegram/README.md

Yes because I think it was copied from the original Telegram Action README page.
However the version posted here is really old and has some problems (at least on my side, but confirmed by @ZzetT), hope he can provide a new version soon, as the migration to the new build server is almost complete.

I’ve this working now but how can I convert the old syntax into a working one. With the state of an item.

sendTelegram("jeroen", "Oh je, %s staat nog steeds niet aan straat!", Abfall12.toString)

That should works.

actions.sendTelegram("jeroen", "Oh je, "+Abfall12.toString+" staat nog steeds niet aan straat!")

Hello,

I’m complete new with openHAB but already have a full system of Fibaro working.
openHAB installed to play with because i’m looking for other systems.
First test for me is Solaredge and sending day data to telegram.
Got solaredge in my system and 2 things linked that give a value in control. (day consumption)
Now I want to send this value to telegram on specific time

telegram default message on specific time got it working.
I thought something like this but that isn’t give the value of solaredge.

rule "Send telegram with Fixed Message"
when
   Time cron "0 43 09 ? * *"
then
   sendTelegram("bot1", "things solaredge:generic:bc922031:aggregate_day#consumption")
end

sorry for the noob question

Which version of telegram binding are you using?

I see that I have action-telegram - 1.13.0 in my system
installed it directly from what I could find in search box of openHAB actions

Ok, so u are using action not binding. This topic is not related with that plugin.

Documentation for that is here.

But if you want configure correctly it should looks like this.

rule "Send telegram with Fixed Message"
when
   Time cron "0 43 09 ? * *"
then
   sendTelegram("bot1",  "item Foo changed to %s", FooItem.state.toString)
end

FooItem is your item binded to solaredge:generic:bc922031:aggregate_day#consumption

Of course if your item is number then you can use

sendTelegram("bot1",  "item Foo changed to %.1f", (FooItem.state as Number).floatValue)

got it workoing now and get the picture of system better.

rule "Send telegram with Fixed Message"
when
   Time cron "0 45 21 ? * *"
then
   sendTelegram("bot1", "SolarEdge dagverbruik is %.4s", SolarEdge_Aggregate_day_Consumption.state.toString)
end

@ZzetT Alex, any chance to finish work and publish to official release?

Is there any chance to add socks5 proxy support?

1 Like

This works thanks!

Hey @ZzetT,
Since a couple of weeks, from time to time, a Telegram binding fail to send message.
Let’s say: 1 of 5 message fails.
Similar error than Florian.
It seems random failure, not the same message and not always the same rule…
Have you a similar issue?
Any binding update to fix it?

Thanks Lorenzo

Hey,

is there a problem with sending pictures?

My Rule:

actions.sendTelegramPhoto("MyOH2Bot", "http://192.168.178.10/snapshot.cgi?stream=1", "Test")

This is the failure:

11:37:20.877 [WARN ] [.binding.telegram.bot.TelegramActions] - Failed to send telegram photo:
org.telegram.telegrambots.meta.exceptions.TelegramApiRequestException: Error sending photo
        at org.telegram.telegrambots.meta.api.methods.send.SendPhoto.deserializeResponse(SendPhoto.java:146) ~[?:?]
        at org.telegram.telegrambots.bots.DefaultAbsSender.execute(DefaultAbsSender.java:205) ~[?:?]
        at org.openhab.binding.telegram.bot.TelegramActions.sendTelegramPhoto(TelegramActions.java:195) ~[?:?]
        at org.openhab.binding.telegram.bot.TelegramActions.sendTelegramPhoto(TelegramActions.java:259) ~[?:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.invokeOperation(XbaseInterpreter.java:1086) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.invokeOperation(XbaseInterpreter.java:1061) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._invokeFeature(XbaseInterpreter.java:1047) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.invokeFeature(XbaseInterpreter.java:992) ~[?:?]
        at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.invokeFeature(ScriptInterpreter.java:151) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:772) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:220) ~[?:?]
        at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:447) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:228) ~[?:?]
        at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]
        at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.evaluate(XbaseInterpreter.java:190) ~[?:?]
        at org.eclipse.smarthome.model.script.runtime.internal.engine.ScriptImpl.execute(ScriptImpl.java:82) ~[?:?]
        at org.eclipse.smarthome.model.rule.runtime.internal.engine.RuleEngineImpl.lambda$2(RuleEngineImpl.java:341) ~[?:?]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:?]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:?]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [?:?]
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [?:?]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:?]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:?]
        at java.lang.Thread.run(Thread.java:748) [?:?]

Hi, I had similar problem and as workaround I first download a jpg file with a curl command and later send the file with Telegram as per example below:

executeCommandLine("wget -O /etc/openhab2/html/Camera1.png http://192.168.178.10/snapshot.cgi?stream=1")

actions.sendTelegramPhoto("mybot","file:///etc/openhab2/html/Camera1.png", "Cam1")

Don’t know if this can help you.
Regards
Lorenzo

Nice idea! Thx!

It’s weird. Every second message works.
Normal Text message works every time.

sendTelegramPhoto works only every second time with a local file.

This is the error:

2019-08-31 20:23:08.604 [INFO ] [lipse.smarthome.io.net.exec.ExecUtil] - executed commandLine ‘wget -O /etc/openhab2/html/Camera1.png http://192.168.178.3/test.jpg

2019-08-31 20:23:08.627 [WARN ] [binding.telegram.bot.TelegramActions] - Failed to send telegram photo:

org.telegram.telegrambots.meta.exceptions.TelegramApiException: Unable to send photo

at org.telegram.telegrambots.bots.DefaultAbsSender.execute(DefaultAbsSender.java:207) ~[?:?]

at org.openhab.binding.telegram.bot.TelegramActions.sendTelegramPhoto(TelegramActions.java:207) ~[?:?]

at org.openhab.binding.telegram.bot.TelegramActions.sendTelegramPhoto(TelegramActions.java:259) ~[?:?]

at sun.reflect.GeneratedMethodAccessor103.invoke(Unknown Source) ~[?:?]

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]

at java.lang.reflect.Method.invoke(Method.java:498) ~[?:?]

at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.invokeOperation(XbaseInterpreter.java:1086) ~[?:?]

at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.invokeOperation(XbaseInterpreter.java:1061) ~[?:?]

at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._invokeFeature(XbaseInterpreter.java:1047) ~[?:?]

at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.invokeFeature(XbaseInterpreter.java:992) ~[?:?]

at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.invokeFeature(ScriptInterpreter.java:151) ~[?:?]

at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:772) ~[?:?]

at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:220) ~[?:?]

at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]

at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]

at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:447) ~[?:?]

at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:228) ~[?:?]

at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]

at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:204) ~[?:?]

at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.evaluate(XbaseInterpreter.java:190) ~[?:?]

at org.eclipse.smarthome.model.script.runtime.internal.engine.ScriptImpl.execute(ScriptImpl.java:82) ~[?:?]

at org.eclipse.smarthome.model.rule.runtime.internal.engine.RuleEngineImpl.lambda$2(RuleEngineImpl.java:341) ~[?:?]

at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:?]

at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:?]

at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) [?:?]

at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) [?:?]

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:?]

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:?]

at java.lang.Thread.run(Thread.java:748) [?:?]

Caused by: java.io.IOException: java.util.NoSuchElementException

at org.telegram.telegrambots.bots.DefaultAbsSender.sendHttpPostRequest(DefaultAbsSender.java:806) ~[?:?]

at org.telegram.telegrambots.bots.DefaultAbsSender.execute(DefaultAbsSender.java:205) ~[?:?]

... 28 more

Hi,
It seems the sendphoto message is send too early, add a delay between the two commands.
Regards
Lorenzo