Seite 3 von 3

Re: Transformation für String

Verfasst: 9. Okt 2021 10:59
von peter-pan
udo1toni hat geschrieben: 8. Okt 2021 22:18 Ah... Vielleicht doch... Das exec Binding ist ein bisschen älter... vielleicht muss der Aufruf JS(comma2dot.js) heißen, nicht JS:comma2dot.js
...hab grad ein bisschen in meinem OH3-System "gestöbert" und ein "EXEC-Thing" mit Transformation gefunden. Es ist so wie Udo das beschrieben hat.

In Text-Form sieht das bei mir so aus:

Code: Alles auswählen

Thing exec:command:cpu_temp1 "PI CPU-Temp.:" @ "Buero" 
                    [command="/bin/cat /sys/class/thermal/thermal_zone0/temp", interval=120, timeout=15, transform="JS(milli.js)"]
und als Yaml-Code so:

Code: Alles auswählen

UID: exec:command:cpu_temp1
label: "PI CPU-Temp.:"
thingTypeUID: exec:command
configuration:
  transform: JS(milli.js)
  interval: 120
  autorun: false
  command: /bin/cat /sys/class/thermal/thermal_zone0/temp
  timeout: 15
location: Buero
...und den Eintrag in der Whitelist nicht vergessen ;)

Re: Transformation für String

Verfasst: 10. Okt 2021 09:01
von BOP
udo1toni hat geschrieben: 8. Okt 2021 22:18 .. vielleicht muss der Aufruf JS(comma2dot.js) heißen, nicht JS:comma2dot.js
Das rufe ich bereits so auf. Siehe auch Screenshot von weiter vorne:
Bild

Re: Transformation für String

Verfasst: 10. Okt 2021 09:05
von BOP
Wie aber bereits erwähnt, ist es (im Moment) auch nicht weiter Schlimm, dass es nicht geht. Ich möchte die Werte nur in der Sitemap Anzeigen. Das geht mit einem String ja genauso gut.
Trotzdem wäre natürlich interessant zu wissen, warum das nicht das tut, was es soll.

Re: Transformation für String

Verfasst: 10. Okt 2021 11:22
von peter-pan
Könnte es der Aufruf des Shell-Scriptes sein ;) ? Hast du schon mal probiert ein "/bin/bash " oder "/bin/sh " vor den Befehl(command) zu setzen ?

z.B:

Code: Alles auswählen

Thing exec:command:cpu_temp "OH2-PI Temperatur" @ "Buero" 
                    [command="/bin/bash /etc/openhab/scripts/cpu_temp.sh", interval=6, timeout=30, transform="REGEX((.*?))"]
bzw.

Code: Alles auswählen

UID: exec:command:cpu_temp
label: OH2-PI Temperatur
thingTypeUID: exec:command
configuration:
  transform: REGEX((.*?))
  interval: 6
  autorun: false
  command: /bin/bash /etc/openhab/scripts/cpu_temp.sh
  timeout: 30
location: Buero
Eine Umwandlung in ein Number-Item kann dann auch nachträglich noch per Rule erfolgen, wenn das gewünscht wird.

Re: Transformation für String

Verfasst: 10. Okt 2021 13:33
von BOP
peter-pan hat geschrieben: 10. Okt 2021 11:22 Könnte es der Aufruf des Shell-Scriptes sein ;) ?
Nein, denn der Screenshot ist von weiter vorne. Inzwischen habe ich ja den Aufruf des Skriptes durch den curl Befehl ersetzt.
Eine Umwandlung in ein Number-Item kann dann auch nachträglich noch per Rule erfolgen, wenn das gewünscht wird.
Auch deswegen habe ich da bisher keine Energie mehr rein investiert. Das Ersetzen werde ich, wenn es mal erforderlich ist, dann in der Rule durchführen.

Re: Transformation für String

Verfasst: 10. Okt 2021 14:52
von peter-pan
BOP hat geschrieben: 10. Okt 2021 13:33 Nein, denn der Screenshot ist von weiter vorne. Inzwischen habe ich ja den Aufruf des Skriptes durch den curl Befehl ersetzt.
Das hab ich nicht ganz verstanden. In dem Screenshot, den du heute morgen um 9.01 Uhr gepostet hast, steht doch unter Befehl

Code: Alles auswählen

/etc/openhab/scripts/holeMobileAlertsHTML.sh
oder so ähnlich.

Hier sollte evtl. aber

Code: Alles auswählen

/bin/bash /etc/openhab/scripts/holeMobileAlertsHTML.sh
stehen.

Das Gleiche gilt u.U. auch für den curl-Befehl (/bin/curl https://me...).

Edit:
Screenshot:
bash.jpg

Re: Transformation für String

Verfasst: 11. Okt 2021 18:28
von BOP
peter-pan hat geschrieben: 10. Okt 2021 14:52 Das hab ich nicht ganz verstanden. In dem Screenshot, den du heute morgen um 9.01 Uhr gepostet hast, steht doch unter Befehl

Code: Alles auswählen

/etc/openhab/scripts/holeMobileAlertsHTML.sh
oder so ähnlich.
Ja, weil ich zu faul war einen neuen Screenshot anzufertigen. Ich wollte ja nur den Aufruf des JS zeigen.
Der dort gezeigte Screenshot ist der gleiche, wie in meinem Post vom 4. Oktober 14:35 Uhr. Da man hier im Forum keine Postnummer hat (oder ich habe sie noch nicht gefunden) konnte ich nicht direkt auf den Post verlinken.
In meinem Post vom 4. Oktober 20:39 Uhr habe ich dann beschrieben, dass ich obigen Skriptaufruf durch den curl-Befehl ersetzt habe.

Code: Alles auswählen

curl https://measurements.mobile-alerts.eu/Home/SensorsOverview?phoneid=519032776604 -A Mozilla
Aber, das kann eigentlich sowieso nicht das Problem sein. Denn sowohl das Skript, als auch der curl-Aufruf haben ja beide den String als Rückgabewert zurück geliefert. Das funktioniert.

Wenn ich den Kommentar in der Thingkonfiguration ...
Transformation des Rückgabewertes des Befehls, z.B. REGEX((.*)) liefert den Rückgabewert unverändert
... richtig interpretiere, sollte der Rückgabewert des Befehls eigentlich dem JS übergeben werden und dessen Rückgabewert dann weiter an den Channel, der ihn dann über den jeweiligen REGEX-Ausdruck an das Item weiter gibt. Und letzteres funktioniert ja auch.