NEWS
[Neuer Adapter] nextcloud talk messenger
-
-
@johen sagte in [Neuer Adapter] nextcloud talk messenger:
Wieviel "chat rooms" hast du, welche abgefragt werden?
Grundsätzlich noch die selbe Einstellung wie hier beschrieben.
(Log Ausgabe auf Info eingestellt, sonst keine Änderung)Genau das ist die Ursache (nextcloud bzw reverse proxy gibt http 502 zurück), warum der Adapter vor dem bugfix aus dem Tritt kam. ...
Ist, vermutlich von mir, missverständlich ausgedrückt gewesen.
Wollte damit eigentlich nur aufzeigen, das seit dem Update (nctalkclient@1.3.0),
zum ersten mal eine Meldung im Log gab.
Dennoch Dankeschön für deine ausführliche Erklärung zu dem HTTP-Statuscode.Wie gesagt, was Textnachrichten versenden/empfangen angeht, funktioniert der Adapter einwandfrei.
(Sobald die Übertragung von Bildern funktioniert, ist telegram auf meinem System verschwunden )Gruß, Karsten
-
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://help.nextcloud.com/t/nextcloudpi-and-talk-configuration-incompatible/79469
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 -
Hallo @johen,
ich habe Deinen Adapter problemlos installieren und verbinden können.
Die Chatrooms (1 Gruppenchat und ein 1:1 Chat mit dem ioBroker-User der NC) wurden auch problemlos erkannt.
Senden von Nextcloud an ioBroker funktioniert. Allerdings werden Nachrichten an den Nextcloud-Server nicht zugestellt.Das Log sieht so aus:
nctalk.0 2022-01-05 12:08:20.688 info Debug Event WaitNewMessages IN ghkduwk5 nctalk.0 2022-01-05 12:08:20.688 info Debug Event WaitNewMessages done nctalk.0 2022-01-05 12:08:20.688 info Debug Event WaitNewMessages - Talk timeout empty reply after no new message was received Zur Info: ghkduwk5 ist ein One to One Chat. Es funktioniert aber auch bei Gruppenchats nicht.
Edit: Bei einer anderen managed NC Instanz (tab.digital) klappt es. (Teil des Logs wie im Posting hierunter empfohlen entfert).
Danke für eine Hilfestellung!
-
Debug Event WaitNewMessages - Talk timeout empty reply after no new message was received
Die Meldung bedeutet, dass keine Neue Nachricht in den letzten 30sec gab und die Kommunikation mit dem Server an sich ohne Fehler funktioniert.
Leider bekomme ich aus den Logs nicht mehr Infos nicht heraus. Ist das ein Testserver wo es nicht funktioniert?Bitte beachte, dass aktuell die Log Ausgabe nicht darauf achten, sensitive Informationen zu schwärzen (ist noch ein Todo), daher würde ich empfehlen folgende Zeile zu löschen bzw. alle token oder ähnliche Passphrase zu löschen : Debug Event{"statusCode":304..............
-
@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