Due to the last myopenhab-cloud problem:
I was wondering if there is any chance to get the cloud connection status displayed within a sitemap or to trigger a mail notification from within a rule?
Due to the last myopenhab-cloud problem:
I was wondering if there is any chance to get the cloud connection status displayed within a sitemap or to trigger a mail notification from within a rule?
The easiest way to display it on a sitemap would be use the Webview element to display http://status.openhab.org/check/359410.
Thanks for your answer but as we saw today, the output of
http://status.openhab.org/check/359410
is not reliable⌠So I was thinking if there is the other way round - to check if the OH cloud-connector is onlineâŚ
Ah, I misunderstood. Youâre looking for your OH server to somehow indicate whether or not itâs able to connect to the openHAB cloud. I was reading you the other way around.
Yes right! Yesterday the web-status-page showed everything ok but the openhab-cloud-connector got disconnected⌠As I can see the status-messages in the logfile, I was wondering, if itâs possible to get the status into an itemâŚ
Did you find a solution or an idea to check the myopenhab.org and personal server status in it?
You should be able to query the status page openHAB Cloud - Events (myopenhab.org) from inside a rule using your myopenhab credentials, then parse the contents. Eventually even using the HTTP binding.
To get the online status you may check if this script works: Myopenhab connection state - #12 by Wolfgang_S
After a hint from Ritch, I am now using the logreader-binding to see when cloud gets disconnected. That fits my needs as I wanted to know when the cloud connection gets interrupted (no matter if itâs a local or a remote problem)
Sure! I am just in the migration phase to OH3.1 but I guess it will work the same way like in OH2.5.
So first of all I created a logreader thing:
And as Custom Patterns I used this string (please note the pipe-sign between the 2 strings):
Disconnected from the openHAB Cloud service|Connected to the openHAB Cloud service
I also increased the Refresh Rate from 1000 to 10000 milliseconds as this should be enough and events less than 10 seconds shouldnât create panic.
Basically you need only 2 items - one for the custom event string and the other one is just a virtual switch to display the connection status:
String LogReaderLastCustomEvent "Last custom event [%s]" <error>
{channel="logreader:reader:openhabcloud:lastCustomEvent"}
Switch OpenHAB_CLOUD_connected "OH Cloud Connected [%s]" <network>
And a simple rule which triggers after a custom event string appeared:
rule "LogReader OpenHAB-Cloud"
when
Channel "logreader:reader:openhabcloud:newCustomEvent" triggered
then
if (LogReaderLastCustomEvent.toString.contains("Disconnected from")) {
postUpdate(OpenHAB_CLOUD_connected, OFF)
LineMessage.sendCommand ("Openhab Cloud disconnected")
}
if (LogReaderLastCustomEvent.toString.contains("Connected to")) {
postUpdate(OpenHAB_CLOUD_connected, ON)
LineMessage.sendCommand ("Openhab Cloud connected")
}
end
!!! Please take care to NOT log the LogReaderLastCustomEvent-String with logInfo - you would run into an endless loop (trust me, I know âsomebodyâ who did this ) !!!
Finally a small item in the sitemap:
Text item=OpenHAB_CLOUD_connected valuecolor=[=="OFF"="red",=="ON"="green"]
Here is the result:
A side note:
Thanks!
This got my attention: how do you send to WhatsApp from within OH ?
I think I shot myself in my leg I am not using Whatsapp at all - instead Iâm using the Line Messenger which is offering an official API and Iâm able to even send pictures⌠I just wrote a wrapper-shell-script around and run this with executeCommandLine but I just found this:
Hi @Flip ,
thanks for the script. I am trying to implement this also to control OpenHAB cloud Connection. In my case, I am using Telegram and ask to Reboot computer is connection is lost.
But I have a question and an issue.
The issue is that the rule doesnât work for me. The logreader are actually reading from log and âdetectingâ the line when I have an Connection / Disconnection, but the rule doesnât fire. I have changed the conditions in rule to:
LogReaderLastCustomEvent.state.toString.contains("Disconnected from")
Adding the âstateâ, as the item is a object, not the string itself (havenât tested yet, as the event hasnât fired again).
But, the most worring issue: In a period of 5 minutes, I have 4 events in the log, in this sequence: Disconnected, Connected, Disconnected and finally Connected⌠but⌠the Cloud is really disconnected. So I think that reading the log is not a valid solution, as it really doesnât reflect the real connection state.
Anybody has this issue too?
Thanks in advance.
Ruben
Can you post the whole rule? On my side itâs still working very well. About the 4 entries every 5 minutes - are you sure you are not logging LogReaderLastCustomEvent too?
I have arranged the Rule (was a mistake in my trigger name).
Now the rule is working, and detecting âlast entry on logâ, all is working correctly⌠but the problem (I have to test more) is that the log not reflect really the connection to the cloud, as last Connected to Cloud and really it doesnât connected always.
My actually rule is:
rule "LogReader OpenHAB-Cloud"
when
Channel "logreader:reader:openhablog:newCustomEvent" triggered
then
val telegramAction = getActions("telegram","telegram:telegramBot:Telegram_Bot")
if (LogReaderLastCustomEvent.state.toString.contains("Disconnected from")) {
OpenHAB_CLOUD_connected.postUpdate(OFF)
telegramAction.sendTelegram("Perdua de la connexiĂł amb OH Cloud")
telegramAction.sendTelegramQuery("Vols reiniciar OpenHAB?", "ReiniciarCloud", "Si", "No")
}
if (LogReaderLastCustomEvent.state.toString.contains("Connected to")) {
OpenHAB_CLOUD_connected.postUpdate(ON)
telegramAction.sendTelegram("Connectat amb OH Cloud")
}
end
I am now trying to restart the bundle using (I am on Windows), the client.bat script. It doesnât work because I donât know how to pass the password to the script. If I execute from console, it asks me the password.
Edited: Only have pass the parameter -p to the client.bat, so it solved!
Ruben
There is some bug on Opencloud Connector from last OH version (3.4.1), because is all day reporting Disconnections / Connections to the cloud on Log, and sometimes it really doesnât reflect the connection status really.
Yesterday, a little example, all day was doing this:
Today seems to be more stable at now.
Ruben
As the logreader is not reporting to me a valid solution, as much times it is reporting online when really are offline, I have built a rule to check connection using the web as the Python script, but only using DSL rule. Is not difficult. At now is working, but maybe needs some little extra debug. It test connection every 5 minutes and also have a switch to fire the rule:
rule "Comprovat conexio Cloud"
when
Item checkCloudStatus received command ON or
Time cron "0 0/5 * ? * * *"
then
checkCloudStatus.sendCommand(OFF)
logInfo("Comprovant Cloud...", "Consultant conexiĂł a myopenhab")
val telegramAction = getActions("telegram","telegram:telegramBot:Telegram_Bot")
val headers = newHashMap("user-agent" -> "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:98.0) Gecko/20100101 Firefox/98.0")
val output = sendHttpGetRequest("https://myopenhab.org/login", headers, 5000)
//logInfo("Restposta Login...", output)
var hash = transform("REGEX", ".*name=\"_csrf\" value=\"(.*?)\".*", output)
if (hash === null) return;
logInfo("Valor Hash...", hash)
val outlogin = sendHttpPostRequest("https://myopenhab.org/login?username=XXXXXXXXXX&password=YYYYYYYYYY&_csrf=" + hash)
//logInfo("Login Result...", outlogin)
//<a href="/events?source=openhab" title="Since ">Online</a>
var onlinestatus = transform("REGEX", ".*<a href=\"/events\\?source=openhab\" title=\"Since \">(.*?)</a>.*", outlogin)
if (onlinestatus === null) return;
logInfo("Onlinestatus...", onlinestatus)
if (onlinestatus == "Online") {
if(OpenHAB_CLOUD_connected.state != ON) {
OpenHAB_CLOUD_connected.postUpdate(ON)
telegramAction.sendTelegram("Connectat amb OH Cloud")
}
} else {
if(OpenHAB_CLOUD_connected.state == ON) {
OpenHAB_CLOUD_connected.postUpdate(OFF)
telegramAction.sendTelegram("Perdua de la connexiĂł amb OH Cloud")
telegramAction.sendTelegramQuery("Vols reiniciar Cloud Bundle?", "ReiniciarCloud", "Si", "No")
}
}
end
I borrowed from @Flipâs posts (and a few others) to write this tutorial.