openHAB 4.1.1
when I use blockly rule to determine thing status and send notification to telegram I have a problem
Script execution of rule with UID ‘scratchpad’ failed: org.graalvm.polyglot.PolyglotException: TypeError: invokeMember (getThing) on org.openhab.core.model.script.actions.Things failed due to: Unknown identifier: getThing
Generated code is here
var currentState;
var things = Java.type('org.openhab.core.model.script.actions.Things');
currentState = things.getThing('yandexstation:scenarios:71769518f3:7f3fda28b7').status;
if (currentState == 'ONLINE') {
things.getActions('telegram', 'telegram:telegramBot:ce29dc2f29').sendTelegram('✅ Яндекс-сценарии [1] доступны');
} else {
things.getActions('telegram', 'telegram:telegramBot:ce29dc2f29').sendTelegram('‼️❌ Яндекс-сценарии [1] не доступны');
}
The problem is here
var things = Java.type('org.openhab.core.model.script.actions.Things');
Telegram block generates variable things which already exists in openhab-js and has different methods.
utilities:
- component: UtilityJavaType
config:
javaClass: org.openhab.core.model.script.actions.Things
name: things
I renamed the variable to thingsHelper and put it everywhere in {{utility:things}}
instead of things
{{utility:things}}
new block code is here
uid: telegram
tags:
- marketplace:130507
props:
parameters: []
parameterGroups: []
timestamp: Jan 11, 2024, 12:07:39 PM
component: BlockLibrary
config:
name: Telegram
slots:
blocks:
- component: BlockType
config:
args0:
- name: MESSAGE
type: input_value
- name: BOT
type: input_value
colour: "#2ea5d8"
helpUrl: ""
inputsInline: true
lastDummyAlign0: right
message0: send on Telegram %1 from bot %2
nextStatement: ""
previousStatement: ""
tooltip: ""
type: message
slots:
code:
- component: BlockCodeTemplate
config:
template: >
{{utility:thingsHelper}}.getActions('telegram', {{input:BOT}}).sendTelegram({{input:MESSAGE}});
toolbox:
- component: PresetInput
config:
fields:
TEXT: What's up?
name: MESSAGE
shadow: true
type: text
- component: PresetInput
config:
name: BOT
shadow: true
type: oh_thing
- component: BlockType
config:
args0:
- name: ATTACHMENT_TYPE
type: field_dropdown
align: right
options:
- - photo
- Photo
- - animation
- Animation
- - video
- Video
- name: URL
type: input_value
align: right
- name: CAPTION
type: input_value
align: right
- name: BOT
type: input_value
align: right
lastDummyAlignRight0: true
colour: "#2ea5d8"
helpUrl: ""
inputsInline: false
lastDummyAlign0: right
message0: send %1 on Telegram %2 with caption %3 from bot %4
nextStatement: ""
previousStatement: ""
tooltip: ""
type: message_attachment
slots:
code:
- component: BlockCodeTemplate
config:
template: >
{{utility:thingsHelper}}.getActions('telegram', {{input:BOT}}).sendTelegram{{field:ATTACHMENT_TYPE}}({{input:URL}}, {{input:CAPTION}});
toolbox:
- component: PresetInput
config:
fields:
TEXT: URL or filename
name: URL
shadow: true
type: text
- component: PresetInput
config:
fields:
TEXT: caption
name: CAPTION
shadow: true
type: text
- component: PresetInput
config:
name: BOT
shadow: true
type: oh_thing
- component: BlockType
config:
args0:
- name: URL
type: input_value
align: right
- name: USERNAME
type: input_value
align: right
- name: PASSWORD
type: input_value
align: right
- name: CAPTION
type: input_value
align: right
- name: BOT
type: input_value
align: right
lastDummyAlignRight0: true
colour: "#2ea5d8"
helpUrl: ""
inputsInline: false
lastDummyAlign0: right
message0: send photo on Telegram %1 username %2 password %3 with caption %4 from bot %5
nextStatement: ""
previousStatement: ""
tooltip: ""
type: message_attachment_photo_with_creds
slots:
code:
- component: BlockCodeTemplate
config:
template: >
{{utility:thingsHelper}}.getActions('telegram', {{input:BOT}}).sendTelegramPhoto({{input:URL}}, {{input:CAPTION}}, {{input:USERNAME}}, {{input:PASSWORD}});
toolbox:
- component: PresetInput
config:
fields:
TEXT: URL or filename
name: URL
shadow: true
type: text
- component: PresetInput
config:
fields:
TEXT: caption
name: CAPTION
shadow: true
type: text
- component: PresetInput
config:
fields:
TEXT: user
name: USERNAME
shadow: true
type: text
- component: PresetInput
config:
fields:
TEXT: pass
name: PASSWORD
shadow: true
type: text
- component: PresetInput
config:
name: BOT
shadow: true
type: oh_thing
- component: Separator
config:
gap: 48
- component: BlockType
config:
args0:
- name: MESSAGE
type: input_value
align: right
- name: BOT
type: input_value
align: right
- name: REPLY_ID
type: input_value
align: right
- name: BUTTONS
type: field_input
align: right
lastDummyAlignRight0: true
colour: "#2ea5d8"
helpUrl: ""
inputsInline: false
lastDummyAlign0: right
message0: ask on Telegram %1 from bot %2 use reply id %3 with buttons %4
nextStatement: ""
previousStatement: ""
tooltip: ""
type: query
slots:
code:
- component: BlockCodeTemplate
config:
template: >
{{utility:thingsHelper}}.getActions('telegram', {{input:BOT}}).sendTelegramQuery({{input:MESSAGE}}, {{input:REPLY_ID}}, {{field:BUTTONS}});
toolbox:
- component: PresetInput
config:
fields:
TEXT: Turn off the lights?
name: MESSAGE
shadow: true
type: text
- component: PresetField
config:
name: BUTTONS
value: "'Yes', 'No'"
- component: PresetInput
config:
fields:
TEXT: replyId
name: REPLY_ID
shadow: true
type: text
- component: PresetInput
config:
name: BOT
shadow: true
type: oh_thing
- component: BlockType
config:
args0:
- name: MESSAGE
type: input_value
align: right
- name: REPLY_ID
type: input_value
align: right
- name: BOT
type: input_value
align: right
lastDummyAlignRight0: true
colour: "#2ea5d8"
helpUrl: ""
inputsInline: false
lastDummyAlign0: right
lastDummyAlign1: right
message0: reply on Telegram %1 to reply id %2 from bot %3
nextStatement: ""
previousStatement: ""
tooltip: ""
type: answer
slots:
code:
- component: BlockCodeTemplate
config:
template: >
{{utility:thingsHelper}}.getActions('telegram', {{input:BOT}}).sendTelegramAnswer({{input:REPLY_ID}}, {{input:MESSAGE}});
toolbox:
- component: PresetInput
config:
fields:
TEXT: Ok!
name: MESSAGE
shadow: true
type: text
- component: PresetInput
config:
fields:
TEXT: replyId
name: REPLY_ID
shadow: true
type: text
- component: PresetInput
config:
name: BOT
shadow: true
type: oh_thing
utilities:
- component: UtilityJavaType
config:
javaClass: org.openhab.core.model.script.actions.Things
name: thingsHelper