7 Commits

Author SHA1 Message Date
308ca8caab debug app connection
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2024-01-14 16:02:12 +01:00
1b3429184a ingress 4
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2024-01-14 15:32:13 +01:00
a7262d99cc ingress 3
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2024-01-14 15:28:30 +01:00
6be68d4dee ingress
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2024-01-14 15:18:07 +01:00
54eeb17e9b ingress
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2024-01-14 15:16:45 +01:00
4a56fea33b timestamp added
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2024-01-14 15:09:41 +01:00
0215d2efd1 mqtt stuff 4
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/tag/woodpecker Pipeline was successful
2024-01-14 15:03:26 +01:00
4 changed files with 58 additions and 11 deletions

View File

@ -25,8 +25,46 @@ spec:
- name: MQTT_BROKER
value: mqtt://emqx01-anonymous-cluster-internal.broker.svc.cluster.local:1883
- name: MQTT_TOPIC
value: Locative/Event
value: locative/event
- name: GIN_MODE
value: release
ports:
- containerPort: 8080
protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
name: locative
spec:
type: ClusterIP
selector:
app: locsrv
ports:
- name: http
targetPort: 8080
port: 80
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: locative
annotations:
cert-manager.io/cluster-issuer: letsencrypt-production-http
spec:
tls:
- hosts:
- locative.hottis.de
secretName: locative-cert
rules:
- host: locative.hottis.de
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: locative
port:
number: 80

View File

@ -24,7 +24,7 @@ func New() *DatabaseHandle {
} else {
db.dbh = conn
db.initialized = true
//log.Println("Database connection opened")
log.Println("Database connection opened")
}
return &db
}

View File

@ -2,6 +2,7 @@ package main
import (
"log"
"time"
"github.com/gin-gonic/gin"
"net/http"
"encoding/json"
@ -30,12 +31,12 @@ type locativeEvent struct {
Latitude string `json:"latitude"`
Longitude string `json:"longitude"`
Person string `json:"person"`
Timestamp string `json:"timestamp"`
}
func main() {
router := gin.Default()
ch := make(chan locativeEvent)
dbh := database.New()
mqtt := mqtt.New()
@ -47,6 +48,7 @@ func main() {
person, err := dbh.GetPersonById(event.Device)
event.Person = person
event.Location = event.Id
event.Timestamp = time.Now().Format("2006-01-02 15:04:05 MST")
event.Id = ""
if err != nil {
log.Printf("Person unknown: %v", err)
@ -56,18 +58,23 @@ func main() {
log.Printf("Unable to marshal event: %v", err2)
} else {
log.Printf("Message: %s", message)
mqtt.Publish(string(message))
err := mqtt.Publish(person, string(message))
if err != nil {
log.Printf("Failed to publish: %v", err)
}
}
}
}
}()
router.POST("/location", func(c *gin.Context) {
var body locativeEvent
err, data := c.GetRawData()
log.Printf("raw: %v, %s", err, data)
err := c.ShouldBindJSON(&body)
if err != nil {
c.JSON(http.StatusBadRequest, gin.H { "error": err.Error() })
var body locativeEvent
err1 := c.ShouldBindJSON(&body)
if err1 != nil {
c.JSON(http.StatusBadRequest, gin.H { "error": err1.Error() })
return
}

View File

@ -31,19 +31,21 @@ func New() *MqttHandle {
}
mqttHandle.pubTopic = os.Getenv("MQTT_TOPIC")
if mqttHandle.pubTopic != "" {
if mqttHandle.pubTopic == "" {
log.Printf("No topic set")
mqttHandle.initialized = false
}
log.Printf("MQTT connection established")
return &mqttHandle
}
func (self *MqttHandle) Publish(message string) error {
func (self *MqttHandle) Publish(topicPost string, message string) error {
if ! self.initialized {
return fmt.Errorf("MQTT connection not initialized")
}
token := self.client.Publish(self.pubTopic, 0, false, message)
topic := fmt.Sprintf("%s/%s", self.pubTopic, topicPost)
token := self.client.Publish(topic, 0, true, message)
token.Wait()
if token.Error() != nil {
return fmt.Errorf("MQTT publish failed: %v", token.Error())