X-Git-Url: https://git.realraum.at/?a=blobdiff_plain;f=r3-netstatus%2Fsockettoevent.go;fp=r3-netstatus%2Fsockettoevent.go;h=0000000000000000000000000000000000000000;hb=70bd6ea215fdd1dbd2eb9556ff4aa0a2acde24bc;hp=e1f33794d4dbdc80f26251ef558579479cbdff14;hpb=4c36e4d9f491d1f75295e7c8a3c31e5aaa59acc8;p=svn42.git diff --git a/r3-netstatus/sockettoevent.go b/r3-netstatus/sockettoevent.go deleted file mode 100644 index e1f3379..0000000 --- a/r3-netstatus/sockettoevent.go +++ /dev/null @@ -1,132 +0,0 @@ -package main - -import ( - pubsub "github.com/tuxychandru/pubsub" - "regexp" - "strconv" - "bufio" - "time" - //~ "./brain" - "net" - ) - -var ( - re_presence_ *regexp.Regexp = regexp.MustCompile("Presence: (yes|no)(?:, (opened|closed), (.+))?") - re_status_ *regexp.Regexp = regexp.MustCompile("Status: (closed|opened), (opening|waiting|closing|idle), (ajar|shut).*") - re_command_ *regexp.Regexp = regexp.MustCompile("(open|close|toggle|reset)(?: +(Card|Phone|SSH|ssh))?(?: +(.+))?") - re_button_ *regexp.Regexp = regexp.MustCompile("PanicButton|button\\d?") - re_temp_ *regexp.Regexp = regexp.MustCompile("temp0: (\\d+\\.\\d+)") - re_photo_ *regexp.Regexp = regexp.MustCompile("photo0: (\\d+)") -) - - -type PresenceUpdate struct { - Present bool - Ts int64 -} - -type DoorStatusUpdate struct { - Locked bool - Shut bool - Ts int64 -} - -type DoorCommandEvent struct { - Command string - Using string - Who string - Ts int64 -} - -type ButtonPressUpdate struct { - Buttonindex int - Ts int64 -} - -type TempSensorUpdate struct { - Sensorindex int - Value float64 - Ts int64 -} - -type IlluminationSensorUpdate struct { - Sensorindex int - Value int64 - Ts int64 -} - -type TimeTick struct { - Ts int64 -} - -type MovementSensorUpdate struct { - Sensorindex int - Ts int64 -} - -func ParseSocketInputLine(line string, ps *pubsub.PubSub) { //, brn *brain.Brain) { - match_presence := re_presence_.FindStringSubmatch(line) - match_status := re_status_.FindStringSubmatch(line) - match_command := re_command_.FindStringSubmatch(line) - match_button := re_button_.FindStringSubmatch(line) - match_temp := re_temp_.FindStringSubmatch(line) - match_photo := re_photo_.FindStringSubmatch(line) - - //~ log.Println("ParseSocketInputLine",line) - var tidbit interface{} - ts := time.Now().Unix() - if match_presence != nil { - if match_presence[2] != "" { ps.Pub(DoorStatusUpdate{match_presence[2] == "closed", true, ts}, "door"); } - tidbit = PresenceUpdate{match_presence[1] == "yes", ts} - //~ brn.Oboite("presence", tidbit) - ps.Pub(tidbit, "presence") - } else if match_status != nil { - tidbit = DoorStatusUpdate{match_status[1] == "closed", match_status[3] == "shut", ts} - //~ brn.Oboite("door", tidbit) - ps.Pub(tidbit, "door") - } else if match_command != nil { - tidbit = DoorCommandEvent{match_command[1], match_command[2], match_command[3], ts} - //~ brn.Oboite("doorcmd", tidbit) - ps.Pub(tidbit, "door") - } else if match_button != nil { - //~ brn.Oboite("button0", ts) - ps.Pub(ButtonPressUpdate{0, ts}, "buttons") - } else if match_temp != nil { - newtemp, err := strconv.ParseFloat((match_temp[1]), 32) - if err == nil { - //~ brn.Oboite( "temp0", newtemp) - ps.Pub(TempSensorUpdate{0, newtemp, ts}, "sensors") - } - } else if match_photo != nil { - newphoto, err := strconv.ParseInt(match_photo[1], 10, 32) - if err == nil { - //~ brn.Oboite("photo0", newphoto) - ps.Pub(IlluminationSensorUpdate{0, newphoto, ts}, "sensors") - } - } else if line == "movement" { - //~ brn.Oboite("movement", ts) - ps.Pub(MovementSensorUpdate{0, ts}, "movements") - } -} - -func ReadFromUSocket(path string, c chan string) { -ReOpenSocket: - for { - presence_socket, err := net.Dial("unix", path) - if err != nil { - //Waiting on Socket - time.Sleep(5 * time.Second) - continue ReOpenSocket - } - presence_reader := bufio.NewReader(presence_socket) - for { - line, err := presence_reader.ReadString('\n') - if err != nil { - //Socket closed - presence_socket.Close() - continue ReOpenSocket - } - c <- line - } - } -} \ No newline at end of file