homeean: Fregata Mail & IM API

Das hier ist der Thread für die Fregata Mail & IM API, welche von der Doku des homeean-Skripts aus verlinkt wird. Hier können alle Fragen rund um die Nutzung der API gestellt und Anwendungsbeispiele geteilt werden.

Fregata stellt eine REST API zur Verfügung mit deren Hilfe EINFACH via Webhooks Mails via SMTP, Instant Messages (an Telegram & Wechat) und Messages an Slack verschickt werden können.

Dieser Thread ist Teil des homeean-Skripts für die einfache Installation von Tools & APIs auf einem neuinstallierten RaspBerry PI zur Nutzung mit dem homee oder anderen Gateways, welche Webhooks unterstützen.

Das homeean-Skript kann hier generiert werden:
https://himpler.com/homeean

Die Dokumentation zu homeean findet sich hier:
https://www.homeepedia.de/books/homeean

Die Dokumentation zu Fregata im selben homeepedia-Buch unter:
https://www.homeepedia.de/books/homeean/page/fregata

Generelle Diskussionen zu homeean finden hier statt:

Mehr generelle Infos zum Fregata-Paket gibt es hier: https://github.com/xuqingfeng/fregata

Die APIs sind im Detail hier dokumentiert: https://xuqingfeng.github.io/fregata/api.html

ich bekomme bei:
go get github.com/xuqingfeng/fregata/cmd/fregatad

.go/src/github.com/gorilla/mux/mux.go:122: req.URL.EscapedPath undefined (type *url.URL has no field or method EscapedPath)
.go/src/github.com/gorilla/mux/regexp.go:171: req.URL.EscapedPath undefined (type *url.URL has no field or method EscapedPath)
.go/src/github.com/gorilla/mux/regexp.go:281: req.URL.EscapedPath undefined (type *url.URL has no field or method EscapedPath)

ich teste selbst noch mal heute abend…

1 Like

Gerade getestet - meine Fehlermeldung war:

Defaults env_keep += GOPATH
package github.com/xuqingfeng/fregata/cmd/fregata: cannot download, $GOPATH not set. For more details see: go help gopath

Im Script steht das:

mkdir /home/pi/.go

Das Verzeichnis wurde wie folgt angelegt:

rwxr-xr-x 2 root root 4096 Mar 8 21:39 .go

Nächster Schritt Script:

echo export GOPATH=/home/pi/.go >> /home/pi/.bashrc

Der Path wurde am Ende der .bashrc appended:

# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi
export GOPATH=/home/pi/.go

Nächster Schritt Script:

echo Defaults env_keep += "GOPATH" | sudo tee --append /etc/sudoers.d/env_keep
. /home/pi/.bashrc

Im angelegten File /etc/sudoers.d/env_keep steht folgendes:

Defaults env_keep += GOPATH

–> @stfnhmplr haben wir da den Fehler?

Weil es keine ausreichenden Berechtigungen gibt bzw. das File fehlerhaft angelegt ist (Du willst Go in die Sudoers legen?) kann der nachfolgende go get Befehl nicht funktionieren, oder?

Ich denke, dass ist mal wieder der Fehler. Ich dachte eigentlich (habs ja auch getestet), dass das Problem behoben ist. Scheinbar hat sich in meinen Test aber irgendwo ein Fehler eingeschlichen.

Kurze Fehlerbeschreibung bzw. mein Verständnis davon: In den env Variablen muss der GOPATH gesetzt werden. Das Problem ist der Aufruf des Bash Scripts mit sudo. Der GOPATH wird mit den üblichen Befehlen nicht richtig gesetzt. Daher die Anweisung

die dann auch für sudo den GOPATH korrekt setzen soll. Ich denke es ist keine gute Idee, die Installation komplett als root auszuführen (vgl. Vorschlag zur Harmony-API die ja inzwischen funktioniert). Daher hatte ich mir das zusammengebastelt. Es gibt im Netz auch diverese Hinweise den Pfad GOROOT zu setzen, allerdings wird a) davon abgeraten und b) hat es bei einem Test auch nicht funktioniert.

Wenn ich den Befehl noch richtig im Kopf habe, kann man sich mit go env bzw. dann sudo go env die Umgebungsvariablen anzeigen lassen.
Ich vermute, dass bei letzterem der GOPATH leer ist.

Ich hoffe meine Beschreibung des Problems ist halbwegs verständlich. Wenn du, @chrisLE oder sonst jemand eine Lösung hat, nehme ich die gerne. Mir selbst fehlen da leider ein paar weiterführende Linux Kenntnisse.

Das Script kann ich zum nachlesen heut Nachmittag auch mal hier reinsetzen.

2 Like

Vielleicht muss in das Script einfach noch ein „chmod 777“ rein um die Rechte der Ordner im Homeverzeichnis richtig zu setzen?

Schaffst Du es heute mal @stfnhmplr den konkreten Änderungsvorschlag zu schicken? Ich bin heute bis zum späten Abend offline…

Hier ist das Script:

sudo apt-get install -y golang
mkdir -p /home/pi/.go
echo export GOPATH=/home/pi/.go >> /home/pi/.bashrc
echo Defaults env_keep += "GOPATH" | sudo tee --append /etc/sudoers.d/env_keep
. /home/pi/.bashrc
go get github.com/xuqingfeng/fregata/cmd/fregata
go get github.com/xuqingfeng/fregata/cmd/fregatad
cp /home/pi/.go/src/github.com/xuqingfeng/fregata/etc/fregata.conf /home/pi/.go/bin/
wget https://s3.amazonaws.com/build-tool/setup-files/fregata.service
sudo mv fregata.service /etc/systemd/system/fregata.service
sudo systemctl daemon-reload
sudo systemctl enable fregata
sudo systemctl start fregata

So weit ich das beurteilen kann läuft es.

Habe die Befehle ausgeführt und keinen error bekommen.

hallo,
go get github.com/xuqingfeng/fregata/cmd/fregata klappt bei mir und die datei fregata wird heruntergeladen
bei “go get github.com/xuqingfeng/fregata/cmd/fregatad” bekomme ich immer noch die fehler:

github.com/gorilla/mux

.go/src/github.com/gorilla/mux/mux.go:122: req.URL.EscapedPath undefined (type *url.URL has no field or method EscapedPath)
.go/src/github.com/gorilla/mux/regexp.go:171: req.URL.EscapedPath undefined (type *url.URL has no field or method EscapedPath)
.go/src/github.com/gorilla/mux/regexp.go:281: req.URL.EscapedPath undefined (type *url.URL has no field or method EscapedPath)

Kann ich nicht von jemandem die fregatad herunterladen und in das .go/bin verzeichnis legen?

Ich habe die Ursache inzwischen eingrenzen können. Das setzen der sudo Umgebungsvariablen erfordert ein Ab- und wieder Anmelden. Dann klappt die Installation. Ich weiß, dass man die normalen env variablen durch den source Befehl neu laden kann. Weiß jemand, wie das für sudo möglich ist?

Klappt jetzt!
bei mir wurde immer die alte go version 1.3.1 installiert. habe dann nach

die 1.9 version installiert.

Jetzt funktioniert die mail mit fregata!

Danke!

Der homeepedia-Wiki-Eintrag zu Fregata mit einer detaillierteren Konfigurationsanleitung findet sich hier:

https://www.homeepedia.de/books/homeean/page/fregata

1 Like