[Gelöst] ; im Text ersetzen

Begonnen von simonTS, 06 Dezember 2015, 16:28:56

Vorheriges Thema - Nächstes Thema

simonTS

Hi,

ich finde gerade keine nützlichen Zeilen zu meinem Problem:

$eg_ku_temp_zahl =~ s/\&deg\;C/ Grad /;;

aus °C wird °C. wenn ich, wie oben, allerdings ersetzen will, liest er das ; als fhem Befehl. Wie kann ich den escapen?
FHEM auf wheezy@RPI-->
KNX: MDT STV-0320.01|SCN-IP000.01|AMI-1216.01|JAL-0810.01|AKD-0401.01|AKH-0800.01|BE-GTT4W.01|SCN-P360D1.01|SCN-G360K3.01|ABB-MRS/W Magnet-Reedkontakt|Zisterne:SRF06|LED:XCSOURCE WIFI Controller|

viegener

Wie immer wäre es hilfreich ein wenig Kontext zu bekommen: Wo willst Du Was machen, Welches Ergebnis kommt und Wie sieht die Umgebung dazu aus...
(Code tags helfen übrigens auch)

Ich scheitere aber schon früh in Deiner Beschriebung, denn das Kommando ersetzt eigentlich °C durch Grad ...


Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

simonTS

#2
Hi,

danke für deine Hilfe! Ja, eigentlich sollte er das ersetzen. Tut er aber nicht... Ich ging davon aus, dass der ";" als fhem code erkannt wird und deswegen das Ersetzen nicht richtig funktioniert. Ein Escapen mit \ geht aber auch nicht...


##Temperatur
define eg_ku_temp EIB 5/1/172
attr eg_ku_temp IODev EIBD
attr eg_ku_temp alias Küche Temperatur
attr eg_ku_temp model tempsensor
attr eg_ku_temp room Status,Küche
attr eg_ku_temp group Heizung
attr eg_ku_temp webCmd :
#ansagen
define N_eg_ku_temp notify eg_ku_temp { my $eg_ku_temp_zahl = (ReadingsVal("eg_ku_temp","temperature","Fehler"));; $eg_ku_temp_zahl =~ s/\./ komma /;; $eg_ku_temp_zahl =~ s/\°C/ Grad /;;  fhem ("set MyTTS tts Die Temperatur in der Küche beträgt jetzt $eg_ku_temp_zahl");;



und das spuckt das log aus:

2015.12.05 21:20:27 4: Text2Speech: Hole URL: http://translate.google.com/translate_tts?tl=de&client=tw-ob&q=Kuechentemperatur%20eingestellt%20auf%2018%20%26deg


Da das Log zeigt, dass der google Aufruf bei ...deg endet, kanns ja nur das ";" sein. aber wie kann ich das denn richtig übergeben, ohne das es als "Befehlsende" erkannt wird?

Nachtrag:
hab gerade eben auch im Log gefunden, dass fhem sich über "C/" als nicht erkannten Befehl beschwert. Also muss ich das ";" definitiv anders angeben. Nur wie find ich nicht...
FHEM auf wheezy@RPI-->
KNX: MDT STV-0320.01|SCN-IP000.01|AMI-1216.01|JAL-0810.01|AKD-0401.01|AKH-0800.01|BE-GTT4W.01|SCN-P360D1.01|SCN-G360K3.01|ABB-MRS/W Magnet-Reedkontakt|Zisterne:SRF06|LED:XCSOURCE WIFI Controller|

igami

Du musst die ; verdoppeln, hast ja am Ende auch zwei stehen obwohl Perl nur eins braucht ;)
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

simonTS

#4
Danke dir!

Aber mein Problem ist nicht ";;". Ich möchte gerne den String "xyz;abc" ersetzen. Und dieses ";" wird dann leider als fhem Befehl erkannt.

also, pseudo code:

ersetze xyz;abc mit neuertext;;


echter code:

$eg_ku_temp_zahl =~ s/\°C/ Grad /;;

Die letzten beiden ";;" sind fürs Befehlsende. Das ";" in der Mitte gehört zum zu ersetzenden Text.

Und es steht dann im log nur der ersetzte Text bis ~ s/\&deg. Ab dem ";" bricht das Ersetzen ab.
FHEM auf wheezy@RPI-->
KNX: MDT STV-0320.01|SCN-IP000.01|AMI-1216.01|JAL-0810.01|AKD-0401.01|AKH-0800.01|BE-GTT4W.01|SCN-P360D1.01|SCN-G360K3.01|ABB-MRS/W Magnet-Reedkontakt|Zisterne:SRF06|LED:XCSOURCE WIFI Controller|

viegener

Doch Dein Problem ist das einzelne ;
Innerhalb von notify und anderen Stellen wird ein einzelnes ; als Trenner verwendet. Durch eine Verdoppelung wird das quasi unterdrückt (escaped).

Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

simonTS

Hi,

danke euch!! So gehts!

Hatte im Readingsval leider noch nen Fehler, der hats mir nicht leichter gemacht ;-)

Escapev vom ";" im code geht mit ";;". Viel zu einfach ;-)
FHEM auf wheezy@RPI-->
KNX: MDT STV-0320.01|SCN-IP000.01|AMI-1216.01|JAL-0810.01|AKD-0401.01|AKH-0800.01|BE-GTT4W.01|SCN-P360D1.01|SCN-G360K3.01|ABB-MRS/W Magnet-Reedkontakt|Zisterne:SRF06|LED:XCSOURCE WIFI Controller|

viegener

Schön dass es klappt und gern geschehen,
Johannes
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können