Hauptmenü

Syntax userReadings

Begonnen von blackdevil2k1, 02 Februar 2014, 05:41:00

Vorheriges Thema - Nächstes Thema

betateilchen

ZitatWenn ich nun sagen könnte das State sich aktualisieren soll wenn eine Lautstärke Änderungen vorgenommen wurde wäre das perfekt.
Wie kann ich sowas bauen?

Nur mit einem Notify.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

blackdevil2k1

so ich habe deinen vorschlag nun mal versucht umzusetzten aber wirklich weiter komme ich nicht

deiner hilfe nach müsste der string ja nun folgender maßen aussehen:

define az_temp notify Arbeitszimmer { fhem("set az_Raumtemp {ReadingsVal('Arbeitszimmer','bratwurst',0)} ")}

oder

define az_temp notify Arbeitszimmer { fhem('set az_Raumtemp {ReadingsVal("Arbeitszimmer","bratwurst",0)} ')}

allerdings bringt er dann keinen syntax error sondern setzt den STATE einfach in {ReadingsVal("Arbeitszimmer","bratwurst",0)}

er setzt den ReadingsVal befehl also nicht um sondern setzt nur den Text einfach so ein. Wo liegt mein fehler...

man ist das frustrierend


betateilchen

was Du da machst, ist völliger Unfug. Du hast weder die Verwendung der Funktion ReadingsVal() noch das Verketten von Zeichenketten verstanden.

ReadingsVal() erwartet innerhalb der Klammer drei Dinge, die sich auf das auszulesende Reading beziehen.

1. den Namen des Devices
2. den Namen des auszulesenden Readings
3. einen (optionalen) Wert, der verwendet werden soll, falls das Reading nicht existiert.

Also zum Beispiel: ReadingsVal('Arbeitszimmer','measured-temp','')

An den ausgelesenen Wert willst Du das Wort 'bratwurst' anhängen, wir kommen also zum Thema Verketten von Zeichenketten. Das funktioniert einfach mit einem Punkt.

my $s = 'ABC'.'def';

Ergibt in der Variablen $s das Ergebnis 'ABCdef'

Wenn Du also Dein ausgelesenes Reading mit dem Wort bratwurst verbinden willst, würde das so aussehen:

my $s = ReadingsVal('Arbeitszimmer','measured-temp','').' bratwurst';

Nun musst Du Dir nur noch klar darüber werden, was Du eigentlich letztendlich tun willst - das hab ich jedenfalls bis jetzt noch nicht ganz verstanden.

Aber ich hoffe, die beiden Erklärungen helfen Dir erstmal weiter. Das ist übrigens PERL-Wissen, und hat mit fhem selbst nur bedingt etwas zu tun (ReadingsVal ist eine perl-Funktion, die von fhem bereitgestellt wird; Zeichenverkettung ist 100% perl)

Vielleicht solltest Du Dir mal ein Einsteigerbuch zu Perl anschaffen und das auch lesen :)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

blackdevil2k1

Ich denke hier liegt ein Missverständnis vor, meine zweite frage mit dem REadingsVal, hat keinen zusammenhang mit der ersten Frage. Die verkettung von Zeichenketten habe ich verstanden und funktioniert nun auch sehr gut.

Was ich vorhabe ist mir auch noch nicht klar da ich kaum Aktoren und Sensoren besitze bisher. Daher nur rumprobieren mit Dummys und trockenübungen für mögliche szenarien.

ich wollte für weitere Syntaxprobleme nur einfach keinen weiteren Thread eröffnen.

Was ich machen möchte ist folgendes:

sobald sich der state von Arbeitszimmer ändert, möchte ich das UserReading von bratwurst (ein userReading von Arbeitszimmer) in den STATE von meinem Dummy az_temp schreiben.

Und ich dachte das kann ich mit meinem Notify realisieren.

blackdevil2k1

dazu kann keiner was sagen ? bin doch sicher nicht der erste der das macht