Plugin: Any-Plugin für LoxBerry
Einklappen
X
-
Bin mir nicht sicher - kann sicherlich Christian Fenzl aber beantworten - könnte es sein, dass die Befehle über das NayPlugin als Root ausgeführt werden? Dann müsste auch der SSH Key unter Root und nicht unter dem User loxberry installiert werden.🇺🇦 Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine
LoxBerry - Beyond the Limits
-
Bin mir nicht sicher - kann sicherlich Christian Fenzl aber beantworten - könnte es sein, dass die Befehle über das NayPlugin als Root ausgeführt werden? Dann müsste auch der SSH Key unter Root und nicht unter dem User loxberry installiert werden.
so etwas habe ich mir auch schon gedacht. Die keys liegen jetzt in .ssh Directory (id_rsa, id_rsa.pub und known.hosts). Müssen die jetzt in ein anderes Unterverzeichnis, muss der owner geändert werden? Wenn ja, wie mache ich denn das (Ownership ändern)? Was ist denn normalerweise das su (das ist doch root?) Passwort?
Kommentar
-
Wenn die Befehle als root ausgeführt werden, kannst Du das Verzeichnis .ssh einfach nach /root kopieren (als User root). Und dann ein "chown -R root:root /root/.ssh", um den Eigentümer zu ändern. "su" steht für "switch user", mit "su -" wechslest Du zum Root-User. Das Passwort wurde bei der Installation vergeben und Dir angezeigt. Das hast Du Dir hoffentlich abgespeichert/ausgedruckt.
🇺🇦 Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine
LoxBerry - Beyond the Limits
Kommentar
-
Wenn die Befehle als root ausgeführt werden, kannst Du das Verzeichnis .ssh einfach nach /root kopieren (als User root). Und dann ein "chown -R root:root /root/.ssh", um den Eigentümer zu ändern. "su" steht für "switch user", mit "su -" wechslest Du zum Root-User. Das Passwort wurde bei der Installation vergeben und Dir angezeigt. Das hast Du Dir hoffentlich abgespeichert/ausgedruckt.Kommentar
-
Hallo zusammen,
das Any-Plugin ist wirklich schön, danke!
Ich nutze es aktuell um beispielsweise per "curl -s 'URL' | grep -Po 'RegExp' | tail -c 2 | (cat && echo 'n')" die nächsten Mülltonnen aus einem Abfallkalender der Stadt auszulesen. Klappt alles wunderbar, inkl. Einbindung in Loxone.
Zuletzt hatte ich einen Fall in Verbindung mit MusicCast wo ich gerne den konkreten Befehl fürs AnyPlugin per Loxone zuvor zusammengebaut hätte, z.B. mit dem Text-Generator Baustein. Geht so etwas?
Viele Grüße!Kommentar
-
Hallo Christian,
ich frage, da ich nicht weiß wie ich es aufbauen sollte. Der konkrete Befehl im http-Ausgang wäre z.B. EinName udp command <Shell-Befehl>, wobei ich den <Shell-Befehl> gern übergeben würde als Text den ich vorher erstelle. Kann ich einen Text auf den Ausgang geben und per <v> im Befehl EIN übergeben? -
Müsste sehen, wenn der Ausgang auf Digital=Nein gesetzt ist. -
Hallo Christian,
das probier ich dann mal aus, danke Dir!
-
-
Frage ...
plugin arbeitet ...
befehl schaut so aus ... (der rest vom curl ist an der Stelle irrelevant, ist so lang.)
Command wird ausgeführt, antwort ist im logfile drin, kommt aber nicht per UDP zum MS.
Weiß jemand wieso? Ich habe den Sende UDP Port deshalb mit absicht von default auf 9099 geändert. - hat nichts geändert.
Ich hab auch schon als Antwort rcudp versucht, ändert auch nichts.Zuletzt geändert von Thomas M.; 17.09.2024, 09:35.Kommentar
-
-
plugin deinstalliert - neu installiert
was aufgefallen ist, bisher jedes mal neu installieren - der erste reboot scheitert - der LB kommt micht mehr hoch.
Ich musste jedes Mal in den Keller gehen und beim LB strom aus/ein machen, damit der LB wieder erreichbar war.
Und egal was ich versuche, ich bekomme per UDP garnichts Richtung MS, hm.
Gibts da sowas wie ein known issue zu dem Thema?Kommentar
-
Christian Fenzl Mal vorsichtig bei dir angeklopft ... hast du eine Idee was hier schief läuft?
Jetzt seh ich erst ...
Remote: 192.168.0.111
[Wed Sep 18 21:51:46 2024] tcp2shell2.pl: Use of uninitialized value in concatenation (.) or string at /opt/loxberry/webfrontend/htmlauth/plugins/anyplugin/bin/tcp2shell2.pl line 535.
[Wed Sep 18 21:51:46 2024] tcp2shell2.pl: Use of uninitialized value in concatenation (.) or string at /opt/loxberry/webfrontend/htmlauth/plugins/anyplugin/bin/tcp2shell2.pl line 535.
New guest connection accepted from 192.168.0.111.
Zuletzt geändert von Thomas M.; 18.09.2024, 21:10.Kommentar
-
Ich habe beim Testen ehrlich gesagt keine Probleme mit curl im Any-Plugin.
Definitiv wird die Länge auf 250 Zeichen abgeschnitten, weil Loxone per UDP nicht mehr erlaubt.
Kommt bei dir gar nichts an, oder nur der Anfang?
ich hab dir ein kleines Script getdata.sh gemacht, das legst du irgendwo auf den Loxberry.
Mit nano getdata.sh änderst du die URL und das MQTT Topic.
Mit chmod +x getdata.sh gibst du Ausführungsrechte.
Im MQTT Gateway machst du eine Subscription.
Und mit dem Any Plugin rufst du dann dieses Script auf (absoluten Pfad angeben).
Viel Erfolg!
lg, Christian
(Das ist der Inhalt des Scripts im ZIP, ganz einfach)
Code:#/usr/bin/bash OUTPUT="$(curl -s https://filesampleshub.com/download/code/json/sample1.json)" echo publish to/my/topic $OUTPUT > /dev/udp/127.0.0.1/11884
Angehängte DateienZuletzt geändert von Christian Fenzl; 19.09.2024, 20:08.Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraineKommentar
-
Hello!
Code:###################### Any-Plugin V0.3.1 ###################### Global variables from LoxBerry::System Homedir: /opt/loxberry Plugindir: anyplugin YOUR commands: /opt/loxberry/data/plugins/anyplugin/commands Running user is root Restricted IPs (0): Any-Plugin mode is UNSECURE server waiting for tcp client connection on port 9095 Created udp out socket to 192.168.0.111 on port 9100 ####### New Connection ### 124-8-20 7:26:28 LOCAL TIME ###### Remote: 192.168.0.111 [Fri Sep 20 07:26:28 2024] tcp2shell2.pl: Use of uninitialized value in concatenation (.) or string at /opt/loxberry/webfrontend/htmlauth/plugins/anyplugin/bin/tcp2shell2.pl line 535. [Fri Sep 20 07:26:28 2024] tcp2shell2.pl: Use of uninitialized value in concatenation (.) or string at /opt/loxberry/webfrontend/htmlauth/plugins/anyplugin/bin/tcp2shell2.pl line 535. New guest connection accepted from 192.168.0.111. GUEST: Smartenergy udp command /opt/loxberry/data/plugins/anyplugin/commands/getdata.sh 1. Parameter (Name) is Smartenergy 2. Parameter is udp (will return udp string) 3. Parameter is command (will run following command) No MS defined. Setting to msnr=1 Miniserver used is 1 (Thomsis_Miniserver) Calling exec_command exec_command Commandline: '/opt/loxberry/data/plugins/anyplugin/commands/getdata.sh ' Try to fork Command forked. Exit Code: 0 Output: Note: Unnecessary use of -X or --request, GET is already inferred. % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Trying 98.64.201.92:443... * Connected to backend.energylive.e-steiermark.com (98.64.201.92) port 443 (#0) * ALPN, offering h2 * ALPN, offering http/1.1 * successfully set certificate verify locations: * CAfile: /etc/ssl/certs/ca-certificates.crt * CApath: /etc/ssl/certs } [5 bytes data] * TLSv1.3 (OUT), TLS handshake, Client hello (1): } [512 bytes data] * TLSv1.3 (IN), TLS handshake, Server hello (2): { [122 bytes data] * TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8): { [19 bytes data] * TLSv1.3 (IN), TLS handshake, Certificate (11): { [4065 bytes data] * TLSv1.3 (IN), TLS handshake, CERT verify (15): { [264 bytes data] * TLSv1.3 (IN), TLS handshake, Finished (20): { [52 bytes data] * TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1): } [1 bytes data] * TLSv1.3 (OUT), TLS handshake, Finished (20): } [52 bytes data] * SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384 * ALPN, server accepted to use h2 * Server certificate: * subject: CN=backend.energylive.e-steiermark.com * start date: Sep 15 06:29:00 2024 GMT * expire date: Dec 14 06:28:59 2024 GMT * issuer: C=US; O=Google Trust Services; CN=WR1 * SSL certificate verify ok. * Using HTTP2, server supports multi-use * Connection state changed (HTTP/2 confirmed) * Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0 } [5 bytes data] * Using Stream ID: 1 (easy handle 0x365770) } [5 bytes data] > GET /api/v1/devices/I-10082023-01659002/measurements/latest HTTP/2 > Host: backend.energylive.e-steiermark.com > user-agent: curl/7.74.0 > accept: */* > x-api-key: De3VolMRmU7a8XSnCZhU7-ytFXowmfJrbAlGC7NLTgg > { [5 bytes data] * TLSv1.3 (IN), TLS handshake, Newsession Ticket (4): { [57 bytes data] * TLSv1.3 (IN), TLS handshake, Newsession Ticket (4): { [57 bytes data] * old SSL session ID is stale, removing { [5 bytes data] * Connection state changed (MAX_CONCURRENT_STREAMS == 128)! } [5 bytes data] 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0< HTTP/2 200 < date: Fri, 20 Sep 2024 05:26:43 GMT < content-type: application/json < vary: Origin < vary: Access-Control-Request-Method < vary: Access-Control-Request-Headers < cache-control: no-cache, no-store, max-age=0, must-revalidate < pragma: no-cache < expires: 0 < x-content-type-options: nosniff < strict-transport-security: max-age=31536000; includeSubDomains < x-frame-options: DENY < x-xss-protection: 0 < referrer-policy: no-referrer < set-cookie: SESSION=9b816f41-f864-4c41-8ee8-75897ecec61a; Path=/; Secure; HTTPOnly; SameSite=Lax < access-control-allow-origin: * < access-control-allow-credentials: true < access-control-allow-methods: GET, PUT, POST, DELETE, PATCH, OPTIONS < access-control-allow-headers: DNT,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,Authorization < access-control-max-age: 1728000 < { [5 bytes data] 100 503 0 503 0 0 406 0 --:--:-- 0:00:01 --:--:-- 406 * Connection #0 to host backend.energylive.e-steiermark.com left intact /opt/loxberry/data/plugins/anyplugin/commands/getdata.sh: 3: cannot create /dev/udp/127.0.0.1/11884: Directory nonexistent publish Energylive [{"measurement":"0100010700","timestamp":1726809998 000,"value":450.0},{"measurement":"0100010800","ti mestamp":1726809998000,"value":1.570893E7},{"measu rement":"0100020700","timestamp":1726809998000,"va lue":0.0},{"measurement":"0100020800","timestamp": 1726809998000,"value":460960.0},{"measurement":"er rorCode","timestamp":1726809998000,"value":0.0},{" measurement":"freeHeap8Bit","timestamp":1726809957 000,"value":70048.0},{"measurement":"largestHeapBl ock8Bit","timestamp":1726809957000,"value":51200.0 }] SEND via UDP to MS1: "Smartenergy":Note: Unnecessary use of -X or --request, GET is already inferred. % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0
/opt/loxberry/data/plugins/anyplugin/commands/getdata.sh: 3: cannot create /dev/udp/127.0.0.1/11884: Directory nonexistent
Es kommt weder am MS noch beim Loxberry im MQTT was an.
Der API Abruf funktioniert jedenfalls via skriptZuletzt geändert von Thomas M.; 20.09.2024, 07:47.Kommentar
-
Christian Fenzl
Könnt ich das nicht direkt via UDP an den MS schicken?
echo $OUTPUT > /dev/udp/192.168.0.111/9100
echo $OUTPUT
Der Fehler bleibt der gleiche ...
/opt/loxberry/data/plugins/anyplugin/commands/getdata.sh: 3: cannot create /dev/udp/192.168.0.111/9100: Directory nonexistent
bzw.
/opt/loxberry/data/plugins/anyplugin/commands/getdata.sh: 3: cannot create /dev/udp/127.0.0.1/11884: Directory nonexistent
Vielleicht ist das ja auch das Problem bei mir, da das plugin selbst nichts per udp senden kann und indirekt übers skript gehts auch nicht?!
Bin kein Linuxer, einfach frei interpretiertZuletzt geändert von Thomas M.; 20.09.2024, 08:46.Kommentar
-
Gut möglich, dass dein UDP überhaupt nicht geht vom LoxBerry aus, aber keine Idee, wieso.
Code:echo hallo > /dev/udp/127.0.0.1/8000
Hast du Pihole oder irgendsowas installiert?
Der Vorteil übers MQTT Gateway wäre, dass es dein JSON gleich zerlegt.
LG, ChristianHilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraineKommentar
-
Funktioniert das Script direkt von der Shell?
. /getdata.shHilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraineKommentar
Kommentar