Plugin: Any-Plugin für LoxBerry
Einklappen
X
-
Irgendwo, zb /opt/meinedateien/
Die RAM-Disk wurde beim Backup der Commands voll. Deswegen hat er nicht alles kopiert.Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraineKommentar
-
Hallo Zusammen,
ich steh grad vor einem kleinen Problem.
Ich möchte gerne einen Teil der Benachrichtigungen an einen externen Chat leiten.
Hierzu nutze möchte ich die Chat Funktion des Synology NAS / NVS benutzen.
Ziel soll sein, die Texte (Nachricht, Anhänge, etc.) über einen Statusbaustein zu generieren.
Die API des Synology Chats lautet
Code:curl -X POST \ --data-urlencode 'payload={"text": "This is a test"}' \ https://DS_IP/webapi/entry.cgi?api=SYNO.Chat.External&XXXXX
Umformatiert für das AnyPlugin müsste der Code wie folgt lauten.
Code:CHAT off command curl -X POST "https://ADRESSE.synology.me:5001/webapi/entry.cgi?api=SYNO.Chat.External&method=incoming&version=2&token=XXXXX" -H "Content-Type: application/x-www-form-urlencoded" -d "payload=%7B%22text%22%3A%20%22Hallo%22%7D"
Für die dynamik ist der Code aber unpraktisch, wegen dem urlencode/urldecode. "Hallo" kann so nicht z.b. durch <v1> ersetzt werden, um dort den Text des Statusbausteins einzufügen.
Man kann den Code jedoch auch mit folgender Änderung absenden.
Code:CHAT off command curl -X POST "https://ADRESSE.synology.me:5001/webapi/entry.cgi?api=SYNO.Chat.External&method=incoming&v ersion=2&token=XXXXX" -H "Content-Type: text/plain" -d "payload={\"text\": \"Hallo\"}"
Jedoch machen dann beim Einbau von <v1> die \ anscheinend beim AnyPlugin Probleme.
Jemand eine Idee, wie man das ganze umsetzten könnte?
Bash gehört noch nicht zu meinen Kompetenzen.
Meine letzte Idee wäre der Weg über die AnyPlugin Makro Funktion und in diese dann eine urlencode Funktion zu integrieren.
Code:CHAT off synologychat "Hier steht dann die Nachricht"
Vielleicht überseh ich auch etwas....
Viele GrüßeZuletzt geändert von Gast; 30.12.2021, 18:53.Kommentar
-
Hier ein einfaches Beispielscript für LoxBerry XL:
https://github.com/mschlenstedt/Loxb...ology_chat.php
Hinein damit ins /opt/loxberry/webfrontend/html/XL/user/ Verzeichnis, und aufrufen vom Miniserver per
HTTP-Ausgang: http://loxberry
HTTP Ausgangs-Befehl: /XL/user/synology_chat.php?text=Hier steht mein Text.
Nicht getestet, hab keine Synology.
Du kannst es vorher vom Browser aus testen, ob es korrekt funktioniert.
Wenn du einen Fehler findest, übernehme ich deine Weiterentwicklung gerne zurück ins LoxBerry-Repo.
lg, Christian
PS: Was LoxBerry XL ist und wie das funktioniert, findest du im Wiki.Zuletzt geändert von Christian Fenzl; 30.12.2021, 22:16.Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraineKommentar
-
Hallo Zusammen und vielen Dank für Euren Einsatz. Ich bin am herumprobieren mit dem AnyPlugin.
Ich hoffe, das ich das Plugin richtig verstanden habe:
Meine Anforderung:
Ich möchte einen Record einer Web Datenbank in der Loxone auslesen. Die Datenbank übergibt Json und ist mit einem Bearer Token gesichert.
- Also ich stelle in der config einen Virtuellen http Ausgang auf die IP der Loxberry mit dem Port der AnyPlugin.
- Dann sende ich den Befehl (bei EIN) zum Plugin und sollte als Antwort den request der Anfrage im konfigurierten (AnyPlugin) UDP Virtuellen Eingang erscheinen (wenn dien Befehlserkennung stimmt.
-Die GET Anfrage ist nicht lokal sondern geht auf das WEB.
Würde das so funktionieren oder habe ich ein Verständnisproblem?
Wenn das so funktioniert habe ich die Shell Anfrage im Virtuellen Ausgang Folgendermaßen zusammengebaut:
Test{Parameter1 Name} udp{parameter2} command curl -X GET "https://api.adalo.com/v0/apps/{APPID}/collections/{collectionID}/{RECORDID}" -H "Content-Type: application/json" -H "Authorization: Bearer {TOKEN}"
-Die Anfrage funktioniert un CURL wenn ich z.B. auf REQBIN teste.
-Das Schreib ich in der Config in Befehl bei ein (header brauch ich keinen das das bereits im Befehl steht)
Nach dem absetzten des Befehls in der Config bekomme ich folgendes im Log von ANYPlugin:
####### New Connection ### 122-8-7 9:27:14 LOCAL TIME ######
Remote: {IP Miniserver}
New guest connection accepted from {IP Miniserver}.
GUEST: GET Test%20udp%20command%20curl%20-X%20GET%20%22https://api.adalo.com/v0/apps/{APPID}/collections/{collectionID}/{RECORDID}/{RECORDID}%22%20-H%20%20%22Content-Type:%20application/json%22%20-H%20%20%22Authorization:%20Bearer%{TOKEN}%22 HTTP/1.1Host: {IPLoxberry}:9095
User-Agent: [en]
Content-Type: application/json" -H "Authorization: Bearer {TOKEN}"; charset=utf-8
Connection: close
Test udp command curl -X GET "https://api.adalo.com/v0/apps/{APPID}/collections/{collectionID}/{RECORDID}" -H "Content-Type: application/json
Authorization: Bearer {TOKEN}
1. Parameter (Name) is GET
2. Parameter undefined - set to rc
3. Parameter is undefined - QUITTING guest
Argument "adalo.com/v0/apps/{APPID}/c..." isn't numeric in numeric lt (<) at /opt/loxberry/webfrontend/cgi/plugins/anyplugin/bin/tcp2shell2.pl line 289.
ERROR: Given number of Miniserver (adalo.com/v0/apps/{APPID}/collections/{collectionID}/{RECORDID}%22%20-h%20%20%22content-type:%20application/json%22%20-h%20%20%22authorization:%20bearer%{TOKEN}) does not exist - QUITTING guest
Doing nothing, client good bye!
Kann mir eventuell jemand sagen wo ich was falsch mache - oder bin ich total auf dem Holzweg? Vielen dank für eure Hilfe. und Liebe Grüsse
Kommentar
-
Kannst du bitte Screenshots von virtuellem Ausgang und Virtuellem Ausgangsbefehl machen.
Das Plugin empfängt
GET Test%20….
sollte aber empfangen
Test udp command curl -X …
Sendest du wirklich an
tcp://loxberry:9095
und nicht etwa an
http://loxberry:9095
Zuletzt geändert von Christian Fenzl; 07.09.2022, 15:21.Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraineKommentar
-
Hallo Christian.
Danke für die Antwort. Ich glaube der Screenshot ist nicht Notwendig, da ich natürlich auf http://loxberry:9095 und nicht auf TCP gesendet habe.
Da sieht man mal wieder das man sich Beschreibungen durchlesen sollte - Das habe ich leider nur überflogen.
Das heißt aber im Umkehrschluss, dass es eigentlich schon alles so funktionieren sollte?
ich teste das mal gleich und melde gleich mich zurück. Danke für die Hilfe
Kommentar
-
Hallo Miteinander - Hat alles perfekt funktioniert vielen dank - jetzt gehts an die Befehlserkennung Das Plugin hat die Werte zurückgesendet. in der Config ist noch keine Ausgabe da. Das werde ich jetzt weiter testen. Super und vielen Dank!!!Kommentar
-
Hallo Danke nochmal für die Hilfe aber ich habe jetzt eine Verständnis Frage Vielleicht kann mir da noch jemand auf die Sprünge helfen:
Ich bekomme Folgendes im Log zurück:
{"id":2,"tes34":"5656","Imagephoto":{"url":"htt ps://adalo-uploads.imgix.net/XXX.jpeg","size":2150703,"width":4032," height":3024,"filename":"2022-02-25 14-25-03.jpeg"},"created_at":"2022-09-01T09:28:58.088Z","updated_at":"2022-09-01T09:28:58.088Z"}
SEND via UDP to MS1: "Test": % Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
Grün sind die Richtigen Werte aber an den Miniserver wird das Orangene gesendet hier finde ich keine Werte die ich ich Erkennen kann. Im Udp Monitor finde ich dann auch den orangen Text.
Muss ich hier noch etwas einstellen oder verstehe ich es nicht?
Kommentar
-
Probier mal zusätzlich den Parameter -sHilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraineKommentar
-
Hallo Miteinander,
Rückmeldung
Christian - Vielen Dank. Und danke für das AnyPlugin - läuft tadellos - somit kann man mit dem Miniserver jede Rest "anzapfen" und Kommunizieren - wenn man den entsprechenden Token hat
Ich habe es so gemacht:
Parameter 1: Name (ist zum Identifizieren welche Antwort man bekommen hat - wenn mehr als eine Anfrage zum UDP gesendet wir.
Parameter 2: Ich habe rcudp benutzt - udp würde auch laufen.
Parameter 3: in meinem Fall der Curl Befehl
Parameter 4: das "-s" damit auch die abgefragten werte zum udp gelangen
UDP Eingang Mit der IP Adresse der Loxberry versehen und die Sendeadresse eingeben - entsprechende Befehlserkennung - und schon hat man den Wert den man von der API Request braucht.
AnyPlugin ist echt genial. Vielen DankKommentar
-
Hallo Christian,
Klasse Plugin.
Ich frage alle 10 Sec eine Webpage ab und über nehme dann die Werte im Miniserver, klappt auch alles wunderbar.
Nur quillt so langsam dann das Logfile über, nach 2 Tagen (nach einem Loxberry Neustart) sind es nun schon 20 MB. Kann man irgendwie die Ausgabe ins Logfile unterdrücken? in den Einstellungen im Anyplugin ist ja nicht, auch in der Pluginverwaltung ist nix. Oder irgendwie alle x Tage die Log löschen/archivieren?
Beste Grüße DirkKommentar
-
Welche Logfiles hast du denn?
Weil das Plugin imho gar keine separaten Logfiles schreibt, sondern alles nach STDERR piped.Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraineKommentar
-
Könntest du mal an der Shell als root anmelden und machen:
chown loxberry:loxberry /opt/loxberry/log/plugins/anyplugin/tcp2shell.log
und dann mal ein bisschen über eine Stunde warten, ob das File dann vom LoxBerry zusammengeräumt wird.
Ich glaube, die LoxBerry Aufräumroutine hat keine Rechte auf das File.
Danke und lg,
Christian
Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraineKommentar
Kommentar