[GELÖST] LaMetric Homematic Skript, welches über CURL seit Jahren eine Notifikation versendet - geht nicht mehr

Einrichtung, Nutzung und Hilfe zu RaspberryMatic (OCCU auf Raspberry Pi)

Moderatoren: jmaus, Co-Administratoren

steffen1234
Beiträge: 58
Registriert: 01.06.2013, 21:16
Hat sich bedankt: 3 Mal

[GELÖST] LaMetric Homematic Skript, welches über CURL seit Jahren eine Notifikation versendet - geht nicht mehr

Beitrag von steffen1234 » 02.07.2020, 19:11

Hallo,
ich habe ein LaMetric Homematic Skript, welches über CURL seit Jahren eine Notifikation versendet. Dies erfolgt über Post und vielen Parameter.
Gab es beim Update hier irgendwas, was die Welt verändert hat?

Einmal wirft er jetzt plötzlich einen Skriptfehler aus, wenn es mit einer alten Version vergleicht ist statt \" nun \\" im Skript drin.
Auch die alte Version des Skriptes läuft nicht. Reboot brachte auch nichts.

Hat jemand ein ähnliches Problem?
Zuletzt geändert von steffen1234 am 03.07.2020, 17:59, insgesamt 2-mal geändert.

Slice
Beiträge: 1200
Registriert: 03.02.2016, 14:44
System: Alternative CCU (auf Basis OCCU)
Wohnort: irgendwo aus Süd BaWü
Hat sich bedankt: 140 Mal
Danksagung erhalten: 85 Mal

Re: LaMetric Homematic Skript, welches über CURL seit Jahren eine Notifikation versendet - geht nicht mehr

Beitrag von Slice » 02.07.2020, 19:42

Hi,

sollest Du die letzte Rasperrymatic Version installiert haben, bist Du auf diese Änderung aufgelaufen:
jmaus hat geschrieben:
21.06.2020, 10:33
[*] Integration einer neuen/aktualisierten ReGaHss Logikengine R1.00.0388.0219 (Jun 19 2020) Version mit folgenden Änderungen:
  • Die in der letzten Version integrierte Funktionalität innerhalb eines Raw/Super Strings (^) auch ein ^ Zeichen direkt mittels backslash escaping nutzen zu können wurde wieder zurückgenommen da es damit zu anderen negativen Effekten gekommen ist. Stattdessen wurde das backslash escaping in normalen Strings dahin korrigiert, das man nun auch Strings wie "\\\\" nutzen kann ohne das es zu Syntax Fehlern kommt (#225).

    Bitte beachten: Durch diesen Bugfix können mitunter existierende Backslash Escape Nutzungen die in Nutzerskripten bisher vermeintlich korrekt funktioniert haben nun als Syntax Fehler erkannt werden. So konnte man z.B. bisher den String \" durch die falsche Nutzung von \\" erzeugen lassen obwohl die dafür richtige Definition drei (3) backslashes beinhalten muss: \\\" da jedes backslash für sich selbst korrekterweise escapt werden muss. Alternativ kann für eine korrekte und auch rückwärtskompatible Art&Weise nun jedoch stattdessen auch ein raw/super string wie ^\"^ genutzt werden.
Den Rest solltest Du auch so hinkriegen..

Grüße,
Slice
----------------------------------------------------------------------------------------
Raspi3B+ Bullseye mit HB-RF-ETH und RPI-RF-MOD auf piVCCU-FW 3.75.7 / Addons: CuxD v2.11 - E-Mail v1.7.6 - Patcher v1.0.0 - Philips Hue v3.2.5 - Programme drucken v2.6 - Scriptparser v1.11 - XML-API v2.3
Geräte: 141 / Kanäle: 791 / Datenpunkte: 6080 / SysVars: 275 / Programme: 161 / Regadom IDs: 14010 / 48 CUxD-Kanäle in 3 CUxD-Geräten
Intel NUC i3-5010U @ 2,1 GHz mit 16 GB RAM & 512 GB SSD für Proxmox mit ioBroker VM und CCU-Historian/InfluxDB/Grafana VM
----------------------------------------------------------------------------------------
Projekte im Forum: HomeHub v4.1 / Fritzbox-Anruferliste für HomeHub
----------------------------------------------------------------------------------------

steffen1234
Beiträge: 58
Registriert: 01.06.2013, 21:16
Hat sich bedankt: 3 Mal

Re: LaMetric Homematic Skript, welches über CURL seit Jahren eine Notifikation versendet - geht nicht mehr

Beitrag von steffen1234 » 02.07.2020, 21:10

Ja, könnte sein ... ich habe Parameter, die per "...." CURL übergeben werden, aber einer Variable zuerst zugewiesen sind.
Das \ Zeichen diente eigentlich dazu, die " Zeichen nicht als solche zu interpretieren.
Ich habe es 3x durchgelesen, sehr kompliziert geschrieben. Was muss jetzt anders gemacht werden???

Mein Code, der bisher als Skript ging:

Code: Alles auswählen

string text = "Text";
string icon = "i259";
string varX = "-X POST -u \"dev:xxxxxx\" -H \"Content-Type: application/json\" -d \" 
{ \\"model\\": { \\"frames\\": [ { \\"icon\\":\\"" # icon # "\\", \\"text\\":\\"" # text # "\\"}], \\"sound\\":{ \\"category\\":\\"notifications\\",\\"id\\":\\"notification\\",\\"repeat\\":1}}} 
\" http://IP-Adresse:8080/api/v2/device/notifications";
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("extra/curl " # varX);
 
Die Fehlermeldung ist:

Code: Alles auswählen

Error 1 at row 3 col 160 near ^\\": { \\"frames\\": [ { \\"icon\\":\\"" # icon # "\\", \\"text\\":\\"" # text #
Parse following code failed:
<dann folgt der Code>

MichaelN
Beiträge: 9677
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 700 Mal
Danksagung erhalten: 1625 Mal

Re: LaMetric Homematic Skript, welches über CURL seit Jahren eine Notifikation versendet - geht nicht mehr

Beitrag von MichaelN » 02.07.2020, 21:12

Aus \\" mach \\\"
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

Benutzeravatar
Black
Beiträge: 5480
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 424 Mal
Danksagung erhalten: 1074 Mal
Kontaktdaten:

Re: LaMetric Homematic Skript, welches über CURL seit Jahren eine Notifikation versendet - geht nicht mehr

Beitrag von Black » 02.07.2020, 23:35

Ich hatte schon am Tag des Releases auf das bäng potential hingewiesen.

Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

steffen1234
Beiträge: 58
Registriert: 01.06.2013, 21:16
Hat sich bedankt: 3 Mal

Re: LaMetric Homematic Skript, welches über CURL seit Jahren eine Notifikation versendet - geht nicht mehr

Beitrag von steffen1234 » 03.07.2020, 06:44

Danke erst mal für das Feedback.
Auf die Schnelle probiert, gibt es noch immer ein Fehlercode und es geht immer noch nicht. Muss ich mir noch mal genauer ansehen.
Hm, schade. Wollte diese Funktionen eigentlich auf der Homematic lassen.

Code: Alles auswählen

Error 1 at row 3 col 169 near ^: { \\\"frames\\\": [ { \\\"icon\\":\\\"" # icon # "\\\", \\\"text\\\":\\\"" # t
Parse following code failed
Kommen diese Änderungen vom EQ-3 oder sind sie nur auf dem Raspberrymatic so?

Benutzeravatar
jmaus
Beiträge: 9862
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 464 Mal
Danksagung erhalten: 1880 Mal
Kontaktdaten:

Re: LaMetric Homematic Skript, welches über CURL seit Jahren eine Notifikation versendet - geht nicht mehr

Beitrag von jmaus » 03.07.2020, 06:51

steffen1234 hat geschrieben:
03.07.2020, 06:44
Danke erst mal für das Feedback.
Auf die Schnelle probiert, gibt es noch immer ein Fehlercode und es geht immer noch nicht. Muss ich mir noch mal genauer ansehen.
Hm, schade. Wollte diese Funktionen eigentlich auf der Homematic lassen.

Code: Alles auswählen

Error 1 at row 3 col 169 near ^: { \\\"frames\\\": [ { \\\"icon\\":\\\"" # icon # "\\\", \\\"text\\\":\\\"" # t
Parse following code failed
Dann schreib sie doch gleich so dann bekommst du beim lesen auch keine Kopfschmerzen, reduzierst sogar gleich noch die Anzahl der Backslashes und es bleibt rückwärtskompatibel:

Code: Alles auswählen

string text = "Text";
string icon = "i259";
string varX = '-X POST -u "dev:xxxxxx" -H "Content-Type: application/json" -d "{ \\"model\\": { \\"frames\\": [ { \\"icon\\":\\"" # icon # "\\", \\"text\\":\\"" # text # "\\"}], \\"sound\\":{ \\"category\\":\\"notifications\\",\\"id\\":\\"notification\\",\\"repeat\\":1}}}" http://IP-Adresse:8080/api/v2/device/notifications';
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("extra/curl " # varX);
steffen1234 hat geschrieben:
03.07.2020, 06:44
Kommen diese Änderungen vom EQ-3 oder sind sie nur auf dem Raspberrymatic so?
Sie sind zur Zeit nur in RaspberryMatic integriert, werden aber in einer der nächsten CCU Firmware-Updates auch mit aufgenommen werden.
RaspberryMatic 3.75.7.20240420 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

MichaelN
Beiträge: 9677
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 700 Mal
Danksagung erhalten: 1625 Mal

Re: LaMetric Homematic Skript, welches über CURL seit Jahren eine Notifikation versendet - geht nicht mehr

Beitrag von MichaelN » 03.07.2020, 07:04

\\"icon\\": :!:
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

Benutzeravatar
jmaus
Beiträge: 9862
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 464 Mal
Danksagung erhalten: 1880 Mal
Kontaktdaten:

Re: LaMetric Homematic Skript, welches über CURL seit Jahren eine Notifikation versendet - geht nicht mehr

Beitrag von jmaus » 03.07.2020, 07:08

MichaelN hat geschrieben:
03.07.2020, 07:04
\\"icon\\": :!:
Wie gesagt, die oftmals bessere Wahl, statt einfach \\" mit \\\" zu ersetzen ist, als äußeres Quotation Zeichen statt " dann ' zu verwenden, dann kann im inneren Bereich zwischen den äußeren 'XXX' das \\" bleiben. Dann bleibt die Stringdefinition auch rückwärtskompatibel und weiterhin halbwegs lesbar :)
RaspberryMatic 3.75.7.20240420 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

steffen1234
Beiträge: 58
Registriert: 01.06.2013, 21:16
Hat sich bedankt: 3 Mal

Re: LaMetric Homematic Skript, welches über CURL seit Jahren eine Notifikation versendet - geht nicht mehr

Beitrag von steffen1234 » 03.07.2020, 08:25

Hallo,
also der Tipp mit dem ' funktioniert, dass es keine Fehlermeldung gibt. Man muss auch nicht \\\" machen, einfach vorne und hinter ' setzen.
ABER: Die Ausführung geht immer noch nicht (mehr). Den Ordner extra gibt es denn überhaupt noch? Mit der SSH Konsole auf Homematic kann man aber curl --help aufrufen.

Code: Alles auswählen

string text = "Text";
string icon = "i259";
string varX = '-X POST -u \"dev:xxxxx\" -H \"Content-Type: application/json\" -d \" 
{ \\"model\\": { \\"frames\\": [ { \\"icon\\":\\"" # icon # "\\", \\"text\\":\\"" # text # "\\"}], \\"sound\\":{ \\"category\\":\\"notifications\\",\\"id\\":\\"notification\\",\\"repeat\\":1}}} 
\" http://1IP-Adresse:8080/api/v2/device/notifications';
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("extra/curl " # varX);

Code: Alles auswählen

Kein Fehler
Unter CUxD kommt das auch an.

Code: Alles auswählen

Jul  3 08:21:01 homematic daemon.info cuxd[31666]: system(extra/curl -X POST -u "dev:xxxxx" -H "Content-Type: application/json" -d "  { \"model\": { \"frames\": [ { \"icon\":\"" # icon # "\", \"text\":\"" # text # "\"}], \"sound\":{ \"category\":\"notifications\",\"id\":\"notification\",\"repeat\":1}}}  " http://IP-Adresse:8080/api/v2/device/notifications) exit(2) 0s

Antworten

Zurück zu „RaspberryMatic“