mit Applescript Variable kürzen?

Smudo

Erdapfel
Registriert
13.08.08
Beiträge
5
Hallo zusammen...
ich möchte aus eine, Mithilfe von der Wettersoftware LWC generierte Html Datei auslesen und als
variable an Indigo für meine Heizungssteurung weitergeben.

Soweit so gut...
Das Problem ist nur das LWC in der html Datei nicht nur die Temperatur ausgibt sondern auch den Unterschied zur vorherigen Messung in Klammer setzt.
Das ganze sieht dann in der html so aus:

22,5C (3,8)

Ich hab da als absoluter Anfänger mit Hilfe des Internets dieses Script gebastelt:
Code:
set filePath to "/Users/MAC7/web/pages/Heimautomation/wetter/WetterWeb/template.html"
set bolIn to " "
set varIn to "Temp_In"
tell application "IndigoServer"
	set value of variable varIn to do shell script "sed -n '/" & bolIn & "/p' " & filePath & "  | sed  's/C//' | sed  's/,/./' "
end tell

Jetzt bekomme ich in Indigo folgende Variable:
22.5 (3,8)

Ich musste den Beistrich durch einen Punkt ersetzen da Indigo keine Variaben mit Beistrich kennt.
Aber das Problem ist nun das Indio nur die Zahlen (im meinen Beispiel 22.5) als Variable für
die Steuerung erkennen kann. Die Leerzeile und die Klammer mit Inhalt muss weg!

Wie kann ich die Klammer vollständig mit einem Script Befehl entfernen?

Vielen Dank für eure Hilfe im voraus...

Grüße
Smudo
 

CloneOfMyself

Weigelts Zinszahler (Rotfranch)
Registriert
24.02.07
Beiträge
253
Oh. Sorry. Da war noch ein Fehler in meinem TinyCode-Script. :eek:
Das wollte ich sagen:

-- Applescript kann auch einfach sein
word 1 of "22.5 (3,8)" --> Ergebnis: "22.5"
 

Smudo

Erdapfel
Registriert
13.08.08
Beiträge
5
Halle CloneMySelf & Der Prenzlberger...
wenn ich eure Anleitung richtig verstehe dann sollte ich via Applescript den Befehl geben
entweder mit "text 1 thru 4 of "22.5 (3,8)
oder mit word 1 of.......
die nachfolgenden Wörter (in meinen Fall die Klammer) einfach zu streichen.

Ich glaube aber das diese Codes mit Variablen nicht funktionieren werden.
Denn die 22.5 (3,8) ist ja die ausgelesene Raumtemperatur von meiner Wetterstation.
Das heisst diese Werte ändern sich alle 5 Min!

Falls das doch funktionieren sollte:
Kann mir jemand sagen wo und wie ihr den Befehl einfügen wollt?

Vielen Dank nochmal...
 

DerPrenzlberger

Rhode Island Greening
Registriert
10.08.07
Beiträge
483
"word" bzw. "text" kürzen einen Text entsprechend ein. Anstelle der von uns in "" gesetzten Werte musst Du Deine Variable setzen.
Beispiel:

set Variable1 to "28,5 (3,0)"
text 1 thru 4 of Variable1
 

Smudo

Erdapfel
Registriert
13.08.08
Beiträge
5
Hallo..
vielen Dank für deine rasche Antwort!

Ich glaube es ist schon zu spät um da logisch denken zu können oder/und ich steh massiv auf der Leitung!

Hier nochmal mein Code:

set filePath to "/Users/MAC7/web/pages/Heimautomation/wetter/WetterWeb/template.html"
set bolIn to " "
set varIn to "Temp_In"
tell application "IndigoServer"
set value of variable varIn to do shell script "sed -n '/" & bolIn & "/p' " & filePath & " | sed 's/C//' | sed 's/,/./'"
end tell

Ich bekomme doch nirgends die Temperatur als "Klartext" ausgewiesen...
durch den Befehl "tell application "IndigoServer" schicke ich die Variablen direkt dort hin, oder?
Entsprechend kann ich sie so auch nicht kürzen... glaube ich zumindest...

Vielleicht kannst du mir nochmal helfen.....
 

CloneOfMyself

Weigelts Zinszahler (Rotfranch)
Registriert
24.02.07
Beiträge
253
oder gleich:

Code:
set value of variable varIn to do shell script "sed -n '/" & bolIn & "/p' " & filePath & " | sed -E 's/([0-9]+),([0-9]+)C.*/\\1.\\2/'"
 

Smudo

Erdapfel
Registriert
13.08.08
Beiträge
5
Servus CloneOfMyself...
das wars!!!!!!

Ich hab noch ein variable für "set value of variable varIn" gebraucht & nun läuft es einwandfrei!

Vielen Dank für euren Support!!!!
 

CloneOfMyself

Weigelts Zinszahler (Rotfranch)
Registriert
24.02.07
Beiträge
253
Das andere wäre aber auch gegangen: Der "do shell script" liefert ja nur einen String zurück, den du als "value of variable varIn" an den IndigoServer sendest. Bevor Du das tust, kannst Du den String natürlich auch mit AppleScript-Mitteln einkürzen und dann senden.