last_frontdoor_ajar = event
case r3events.BackdoorAjarUpdate:
xmpp_presence_events_chan <- r3xmppbot.XMPPMsgEvent{Msg: fmt.Sprintf("Backdoor is %s (%s)",IfThenElseStr(event.Shut,"now shut.","ajar!"),time.Unix(event.Ts,0).String()), DistributeLevel: r3xmppbot.R3OnlineOnlyInfo, RememberAsStatus: false}
+ case r3events.GasLeakAlert:
+ xmpp_presence_events_chan <- r3xmppbot.XMPPMsgEvent{Msg: fmt.Sprintf("ALERT !! GasLeak Detected !!! (%s)", time.Unix(event.Ts,0).String()), DistributeLevel: r3xmppbot.R3NeverInfo, RememberAsStatus: false}
case r3events.BoreDoomButtonPressEvent:
xmpp_presence_events_chan <- r3xmppbot.XMPPMsgEvent{Msg: button_msg, DistributeLevel: r3xmppbot.R3OnlineOnlyInfo}
xmpp_presence_events_chan <- button_status
xmpp_presence_events_chan <- present_status
last_buttonpress = 0
}
-
+ // Try to XMPP Ping the server and if that fails, quit XMPPBot
+ if bot.PingServer(900) == false && bot.PingServer(900) == false && bot.PingServer(900) == false && bot.PingServer(900) == false{ return }
case r3events.DoorProblemEvent:
xmpp_presence_events_chan <- r3xmppbot.XMPPMsgEvent{Msg: fmt.Sprintf("Door Problem: %s. SeverityLevel: %d (%s)",event.Problem, event.Severity, time.Unix(event.Ts,0).String()), DistributeLevel: r3xmppbot.R3OnlineOnlyInfo, RememberAsStatus: false}
}
} else {
Syslog_.Printf("Error starting XMPP Bot: %s", xmpperr.Error())
}
- time.Sleep(5 * time.Second)
+ time.Sleep(10 * time.Second)
}
}
go RunXMPPBot(ps, zmqctx)
// --- receive and distribute events ---
- ticker := time.NewTicker(time.Duration(7) * time.Minute)
+ ticker := time.NewTicker(time.Duration(6) * time.Minute)
for {
select {
case e := <-zmqsub.In():