NEWS
[Neuer Adapter] nextcloud talk messenger
-
@johen
Ist eine eigene Installation auf CentOS 8 auf einem Ionos Cloud Server.
Eine andere Sache die mir gerade aufgefallen ist: Bei beiden Installationen funktionieren die Push Nachrichten in die Android App nicht. Die Notifications App ist in beiden Installationen aktiviert. Bei dem managed von tab.digital kommt aber die Meldung, dass die App aus Stabilitätsgründen nicht aktiviert werden kann. -
@schoemi
Bin etwas verwirrt mit den verschiedenen Nextcloud Installationen die du hast und bei welcher was geht und was nicht.Bei dem managed von tab.digital kommt aber die Meldung, dass die App aus Stabilitätsgründen nicht aktiviert werden kann.
Dachte da funktioniert der Adapter?
Es sollte reichen die Nextcloud App Talk(spreed) zu installieren.
Anbei Infos zum Setup und Anforderungen https://nextcloud-talk.readthedocs.io/en/latest/system-requirements/ - einen Hinweis dass die Talk App die Notification App benötigt habe ich nicht gefunden, bei mir war jedoch die Notification standardmäßig aktiviert.
Eine sehr einfache Möglichkeit Nextcloud aufzusetzen ist über die offiziellen docker / docker compose Projekte im .example Ordner auf https://github.com/nextcloud/docker -
@hydrotec / all
es gibt ein neues Release 0.3.0, welche das File Sharing ermöglicht.
Im log darauf achten, dass nctalkclient 1.4.0 verwendet wird: "nctalk.0 2022-01-07 14:46:06.456 info Debug Event START nctalkclient 1.4.0"Es gibt zwei neue Parameter zu konfigurieren - der Upload-Pfad und ob bereits vorhandene Dateien überschrieben werden dürfen
und es sind drei neue iobroker Objekte im Unterverzeichnis "ShareFile" hinzugekommen
Beispiel NextcloudPath - hier muss die Datei bereits in nextcloud hochgeladen und verfügbar sein
Setze Wert auf: /talk/existingfile.jpgBeispiel für ...ShareFile.URL
Setze Wert auf: {"filename": "webupload.png", "url": "https://raw.githubusercontent.com/jjqoie/iobroker.nctalk/main/img/nctalk-objects.png"}Das Datenformat für "UploadShareObj" schaut wie folgt aus: {'filename':'tests123.png','data':{'type':'Buffer','data':[137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,11,64,0,0,7,8,8,6,0,0,0,175,....}
Beispiel für "UploadShareObj" zusammen mit dem javascript adaptervar https = require("https"); var options = { host: 'raw.githubusercontent.com', port: 443, path: '/jjqoie/iobroker.nctalk/main/img/nctalk-objects.png', method: 'GET', }; https.get(options, function(res) { res.setEncoding('binary'); let chunks = []; res.on('data', (chunk) => { chunks.push(Buffer.from(chunk, 'binary')); }); res.on('end', () => { let binary = Buffer.concat(chunks); // binary is now a Buffer that can be used as Uint8Array or as // any other TypedArray for data processing in NodeJS or // passed on via the Buffer to something else. //console.log(JSON.stringify(binary)); //require("fs").writeFile("test.jpg", binary, () => { //}); const imgNextcloud = { filename: "tests123.png", data: binary } setState("nctalk.0.kjf53yuu.ShareFile.UploadShareObj", imgNextcloud); }); });
PS: Der Upload Ordner ist notwendig, da bei Talk nur Dateien/Bilder, welche sich bereits in Nextcloud befinden geteilt/angezeigt werden können und der Adapter diese vorher per webdav in diesen Ordner hochlädt.
-
Hallo Jochen,
jetzt hast du mich etwas abgehängt.
Wenn ich bei den Einstellungen den UploadPath eintrage, wird er in Nextcloud angelegt.
Der Einfachheit hab ich "/Talk" (ist auf Nextcloud schon vorhanden) eingetragen.
Wenn ich von Benutzer "karsten" über das mobile ein Bild an Benutzer "iobroker" versende,
wird es vom Adapter korrekt erkannt. (denke ich mal so )
Doch mit dem Senden eines Bildes von "iobroker" an "karsten" komme ich nicht ganz mit.
Sorry bin mit javascript noch nicht so fit.
Angenommen ich habe folgendes file "/opt/iobroker/iobroker-data/tmp/dafang01/dafang01.jpg"
Wohin muss ich das uploaden, bzw. wie kann ich das versenden?Gruß, Karsten
-
@hydrotec
...ShareFile.URL funktioniert nur für alles was direkt via http/https Zugriff erreichbar ist.Ok verstehe dein Usecase, die Datei befindet sich lokal auf der Festplatte.
Hierzu muss das Beispiel Script für "UploadShareObj" angepasst werden, so dass der Dateiinhalt (byte für byte) nicht von einem https Zugriff in den Abreitsspeicher kommt und dann an UploadShareObj übergeben wird, sondern über ein fs.readfile("/opt/iobroker/iobroker-data/tmp/dafang01/dafang01.jpg", null); encoding müsste null sein um ein Buffer Typ zu bekommen (habs aber nicht getestet) https://nodejs.dev/learn/reading-files-with-nodejs -
Dankeschön für die schnelle Rückmeldung.
Werde mir das im Laufe des Wochenendes noch einmal genauer ansehen.
Angenehmes Wochende
Gruß, Karsten -
habs mal schnell probiert bei mir hats funktioniert...
Werde diese Funktion noch direkt mit in den Adapter aufnehmen und ein weiteres iobroker Objekt hierfür anlegen...var fs = require("fs"); fs.readFile("/opt/iobroker/iobroker-data/tmp/dafang01/dafang01.png", null , (err, data) => { if (err) { console.error(err) return } const fileNextcloud = { filename: "tests123.png", data: data } //console.log(fileNextcloud) setState("nctalk.0.kjf53yuu.ShareFile.UploadShareObj", fileNextcloud); })
PS: Das Datenformat für "UploadShareObj" schaut wie folgt aus: {'filename':'tests123.png','data':{'type':'Buffer','data':[137,80,78,71,13,10,26,10,0,0,0,13,73,72,68,82,0,0,11,64,0,0,7,8,8,6,0,0,0,175,....}
-
Nach ein paar Versuchen funktioniert der Versand eines Bildes.
const fs = require('fs'); fs.readFile('/opt/iobroker/iobroker-data/tmp/dafang01/dafang01.jpg', (err, data) => { if (err) { console.error(err) return } const fileNextcloud = { filename: "dafang01.jpg", data: data } //console.log(fileNextcloud) setState('nctalk.0.karsten.ShareFile.UploadShareObj', fileNextcloud); })
Was mir aufgefallen ist, das das Vorschaubild in der Talk-App nicht aktualisiert wird.
Erst wenn ich die App neu starte.
Denke mal das es eher an der App und nicht am Adapter liegt.Werde diese Funktion noch direkt mit in den Adapter aufnehmen und ein weiteres iobroker Objekt hierfür anlegen...
Für mich, als js-noob, wäre das echt hilfreich.
Gruß, Karsten
-
@hydrotec
Eine Frage hätte ich - hab gesehen dafang ist eine Webcam - wie kommt hier der Schnappschuss auf die lokale Platte ? -
Bei mir mit blockly
wget --quiet --output-document /opt/iobroker/iobroker-data/tmp/dafang01/dafang01.jpg --user <username> --password <password> https://192.168.XXX.XXX/cgi-bin/currentpic.cgi --no-check-certificate
-
das könntest du auch direkt über ShareFile.URL machen
{"filename": "snapshot.jpg", "url": "https://username:password@192.168.XXX.XXX/cgi-bin/currentpic.cgi"}
da snapshot.jpg nun immer gleich ist, wird dies in nextcloud immer überschrieben und dir geht die Historie verloren.
Hier könntest du ein script schreiben, welches ein Zähler oder das Datum/Uhrzeit an "filename" mit anhängt und so hast du automatisch ein Archiv. -
@johen
Super was Ihr hier macht.Ich hatte am WE auch mehrmals versucht einfache Texte zu senden.
Wie aktuell auch verschiedenes z.B. Waschmaschine/Trockner fertig, Licht ist noch an usw..
Also nichts großes, aber sobald ich den Adapter an habe, wird meine Nextcloud auf hosting.de total ausgebremst, alles lädt sehr verlangsamt, auch Zugriffe auf andere Bereiche innerhalb der Nextcloud. Die App braucht ewig, bis alles geladen ist. Texte kommen sehr zeitverzögert im Bereich ca. 5 - 60 sec..Habe da die 500er Version bei hosting. Dachte mir mit kurzen Befehlen usw. kann doch Talk nicht die ganze Cloud ausbremsen. Ok, wenn hier mit allen 6 Benutzern viel los währ bestimmt, aber ich hatte ja nur vom ioBroker- Benutzer zu mir gesendet/empfangen. Also nur 2 Benutzer, welche Talk benutzen.
Sobald ich den Adapter im ioBroker ausschaltete, lief die Cloud wieder wie am Schnürchen ohne zu haken.
Also für eine Managed Nextcloud bei z.B. Hosting nichts?
-
@csr Ich lese hier aus Interesse das auch mal zu nutzen mit. Die Managed Nextcloud kannte ich noch nicht, danke dafür.
Evtl. Liegt dein Problem an dieser Fussnote:
-
@fredf ja, diese Fußnote kenne ich.
Talk funktioniert ja selbst mit 6 Benutzern einwandfrei. Im Familienchat kein Problem, nur wenn der Adapter hinzugeschaltet wird, wird alles ausgebremst.
Somit ist die Nutzung von Talk kein Problem, nur in Verbindung mit dem Adapter. -
@johen sagte in [Neuer Adapter] nextcloud talk messenger:
das könntest du auch direkt über ShareFile.URL machen
{"filename": "snapshot.jpg", "url": "https://username:password@192.168.XXX.XXX/cgi-bin/currentpic.cgi"}Funktioniert so leider nicht.
{"filename": "snapshot.jpg", "url": "https://<username>:<password>@192.168.XXX.XXX/cgi-bin/currentpic.cgi"}
Kann es sein, das es am selbstsignierten Zertifikat der WebCam liegt?
EDIT 11.01.2022
Hat sich erledigt. (siehe hier)
@csr sagte in [Neuer Adapter] nextcloud talk messenger:
...
Somit ist die Nutzung von Talk kein Problem, nur in Verbindung mit dem Adapter.Nextcloud Talk braucht extrem viele Ressourcen.
Vermutlich wird dein hostet Nextcloud mit 6 Benutzern gerade so noch flüssig laufen.
Zum vergleichen.
Den verwende ich ionos nextcloud
Gruß, Karsten
-
@hydrotec sagte in [Neuer Adapter] nextcloud talk messenger:
Nextcloud Talk braucht extrem viele Ressourcen.
Vermutlich wird dein hostet Nextcloud mit 6 Benutzern gerade so noch flüssig laufen.Nur war bei dem Test keiner der anderen Aktiv.
Es waren immer nur ich und der Adapter (iobroker- Benutzer aktiv) als ich testete.
Welche nutzt Du 500 oder lese ich das falsch?
-
@csr sagte in [Neuer Adapter] nextcloud talk messenger:
Nur war bei dem Test keiner der anderen Aktiv.
Es waren immer nur ich und der Adapter (iobroker- Benutzer aktiv) als ich testete.
Talk wird im Hintergrund für alle Benutzer aktiv gehalten.
(kann ja sein das der dritte Benutzer sich auch die App installiert) -
@csr sagte in [Neuer Adapter] nextcloud talk messenger:
Welche nutzt Du 500 oder lese ich das falsch?
1000 GB für 9€/Mon.
-
@csr
Wenn ich heute Abend am PC bin schick ich zu diesem Thema mal ein paar Hintergrund Infos - soviel vorweg der Adapter erzeugt nicht viel Traffic pro Chatraum 2 http request pro min - der Traffic ist wirklich gering und es liegt an der API welche ein sog "long polling request" für den server darstellt. Ich bin auch am überlegen eineAlternativ Polling Option auf Client Seite umzusetzen was mit mehr Requests (EDIT: traffic wird weiterhin klein sein denke so etwa 1KB pro Anfrage) und die Reaktionszeit auf neue Nachrichten evtl. leicht erhöht, da dann nun nur alle N ms auf neue Nachrichten geprüft wird aber dafür wird der API call auf Server Seite sofort quittiert…Bin grad auf einen anderen Ansatz gestoßen... Falls jemand zufällig Entwickler für nextcloud ist, gerne direkt PN an mich
Denke für die meisten sind diese Details nicht wirklich relevant... -
Seh gerade hatte dazu schon was geschrieben...
@johen said in [Neuer Adapter] nextcloud talk messenger:
An alle die Performance Probleme (stark verlängerte Reaktionszeiten bis zu 30sec) mit Ihrer Nextcloud Instance sehen, sollten unbedingt ihre FPM Einstellungen prüfen, vor allem wenn die offizielle docker compose Installation mit NGINX (https://github.com/nextcloud/docker) verwendet wurde. Hier sind die Standardeinstellungen für max_children gleich 5, was für Talk zu wenig ist.
Im fpm_app container ist die Config hier zu finden. Bitte beachten, dass mit der Config unten auch mal 8GB RAM benötigt wird vor allem beim Bilder anschauen.
/usr/local/etc/php-fpm.d/www.confpm = dynamic
pm.max_children = 32
pm.start_servers = 12
pm.min_spare_servers = 8
pm.max_spare_servers = 16
pm.max_requests = 1000Weiterführende Links:
https://www.technik-blog.eu/2018/08/php-fpm-einstellungen-optimieren.html
https://www.kinamo.be/en/support/faq/determining-the-correct-number-of-child-processes-for-php-fpm-on-nginx
https://help.nextcloud.com/t/nextcloudpi-and-talk-configuration-incompatible/79469https://nextcloud-talk.readthedocs.io/en/latest/system-requirements/#webserver
https://github.com/nextcloud/spreed/issues/6738