X-Git-Url: https://git.realraum.at/?a=blobdiff_plain;f=r3-netstatus%2Fmain.go;h=da2101643eb550e0ee58be893e7f7a6c3c1ee8d1;hb=9b57ad36fa772a94f8f38321a88f2b1df1818a51;hp=8851c74385225e097b30aea4cb74a8fd38dcd298;hpb=3532254fdc34a8649a2894e8e746a4bf61947bde;p=svn42.git diff --git a/r3-netstatus/main.go b/r3-netstatus/main.go index 8851c74..da21016 100644 --- a/r3-netstatus/main.go +++ b/r3-netstatus/main.go @@ -10,15 +10,15 @@ import ( ) type SpaceState struct { - present bool - buttonpress_until int64 + present bool + buttonpress_until int64 door_locked bool door_shut bool } var ( presence_socket_path_ string - xmpp_presence_events_chan_ chan interface{} + xmpp_presence_events_chan_ chan interface{} xmpp_login_ struct {jid string; pass string} xmpp_bot_authstring_ string xmpp_state_save_dir_ string @@ -27,11 +27,11 @@ var ( //------- func init() { - flag.StringVar(&xmpp_login_.jid, "xjid", "realrauminfo@realraum.at/Tuer", "XMPP Bot Login JID") - flag.StringVar(&xmpp_login_.pass, "xpass", "", "XMPP Bot Login Password") - flag.StringVar(&xmpp_bot_authstring_, "xbotauth", "", "String that user use to authenticate themselves to the bot") - flag.StringVar(&presence_socket_path_,"presencesocket", "/var/run/tuer/presence.socket", "Path to presence socket") - flag.StringVar(&xmpp_state_save_dir_,"xstatedir","/flash/var/lib/r3netstatus/", "Directory to save XMPP bot state in") + flag.StringVar(&xmpp_login_.jid, "xjid", "realrauminfo@realraum.at/Tuer", "XMPP Bot Login JID") + flag.StringVar(&xmpp_login_.pass, "xpass", "", "XMPP Bot Login Password") + flag.StringVar(&xmpp_bot_authstring_, "xbotauth", "", "String that user use to authenticate themselves to the bot") + flag.StringVar(&presence_socket_path_,"presencesocket", "/var/run/tuer/presence.socket", "Path to presence socket") + flag.StringVar(&xmpp_state_save_dir_,"xstatedir","/flash/var/lib/r3netstatus/", "Directory to save XMPP bot state in") flag.Parse() } @@ -39,23 +39,23 @@ func init() { func EventToXMPP(ps *pubsub.PubSub, xmpp_presence_events_chan_ chan <- interface{}) { events := ps.Sub("presence","door","buttons") - var present, locked, shut bool + var present, locked, shut bool = false, true, true var who string = "Unknown" for eventinterface := range(events) { switch event := eventinterface.(type) { case PresenceUpdate: present = event.Present - xmpp_presence_events_chan_ <- r3xmppbot.XMPPPresenceEvent{Present: present, Who: who, DoorLock: locked, DoorShut: shut, Button: false} + xmpp_presence_events_chan_ <- r3xmppbot.XMPPPresenceEvent{Present: present, Who: who, DoorLock: locked, DoorShut: shut, Ts: event.Ts} case DoorCommandEvent: who = event.Who - xmpp_presence_events_chan_ <- fmt.Sprintln("DoorCommandEvent",event) + xmpp_presence_events_chan_ <- fmt.Sprintln("DoorCommand:",event.Command, "using", event.Using, "by", event.Who, time.Unix(event.Ts,0)) case DoorStatusUpdate: locked = event.Locked shut = event.Shut - xmpp_presence_events_chan_ <- fmt.Sprintln("DoorStatusUpdate",event) + xmpp_presence_events_chan_ <- fmt.Sprintln("DoorStatus:",r3xmppbot.IfThenElseStr(event.Locked, "locked","unlocked"), r3xmppbot.IfThenElseStr(event.Shut, "shut","ajar"), time.Unix(event.Ts,0)) case ButtonPressUpdate: - xmpp_presence_events_chan_ <- r3xmppbot.XMPPPresenceEvent{Present: present, Who: who, DoorLock: locked, DoorShut: shut, Button: true} + xmpp_presence_events_chan_ <- r3xmppbot.XMPPPresenceEvent{Present: present, Who: who, DoorLock: locked, DoorShut: shut, Button: true, Ts: event.Ts} } } } @@ -69,18 +69,18 @@ func main() { return } defer bot.StopBot() - - newlinequeue := make(chan string) + + newlinequeue := make(chan string, 1) ps := pubsub.New(1) //~ brn := brain.New() defer close(newlinequeue) defer ps.Shutdown() //~ defer brn.Shutdown() - + ticker := time.NewTicker(time.Duration(7) * time.Minute) - go ReadFromUSocket(presence_socket_path_, newlinequeue) go EventToWeb(ps) go EventToXMPP(ps, xmpp_presence_events_chan_) + go ReadFromUSocket(presence_socket_path_, newlinequeue) for { select { case e := <-newlinequeue: