Mal eine ganz dämliche Frage: Wie mache ich eigentlich einen Leerstring in fhem??
In allen mir bekannten Sprachen geht das üblicherweise mit variable = ""
Versuche ich etwas Analoges in FHEM, also z.B. setreading alarm code "", dann ist der Wert von code anschließend "" (also zwei Gänsefüßchen!)
Verflixt, wie geht das???
über setreading lassen sich keine leeren readings erzeugen.
im prinzip geht es mit den low level readingsUpdate funktionen. leere readings sind aber in der nachverarbeitung nicht ganz problemlos.
gruss
andre
Warum willst du das denn tun? Es gibt noch den FHEM Befehl deletereading
deletereading kenne ich, aber ich möchte das reading ja nicht löschen, sondern weiter verwenden...
code = ""
if wert <> "OK"
code = code + wert
else
code = ""
evaluateCode
Oder schriftlich:
Ich habe ein Tastenfeld, über das ich ziffernweise einen Code eingebe.
Ich habe einen dummy namens keypad mit den readings keypressed und code
Jeder Tastendruck legt einen Wert in keypressed ab.
Wenn der Wert eine Ziffer ist, wird der Wert dann zum code zusammengesetzt.
Wenn der Wert = 'OK' ist, soll code wieder mit Leerstring initialisiert werden (für eine erneute Eingabe)...
EDIT:
Ich kann es natürlich auch so machen, dass ich statt eines echten Leerstrings einen Wert wie '<LEER>' definiere, quasi als Leerstring-Ersatz
if code = "<LEER>"
if wert <> "OK"
code = wert
else
if wert <> "OK"
code = code + wert
else
evaluateCode
code = "<LEER>"
Das geht natürlich auch, aber die grundsätzliche Fragestellung ist damit noch immer ungeklärt. >:(
Dann hast Du die Antworten nicht verstanden:
- setreading kann keinen leeren String setzen
- du könntest readingsSingleUpdate() verwenden, event. mit Nebenwirkungen
- du könntest das reading löschen und bei Bedarf neu anlegen
{CommandSetReading(undef,'test bla ')}
test = deviceName
bla = readingName
Aber Sinn macht sowas trotzdem nicht. Bzw. nur für Leute, die den Umgang mit readings noch nicht verstanden haben, weil sie sich noch nicht damit beschäftigt haben.
ich gehe davon aus, dass meine Frage nicht verstanden wurde.
Vllt habe ich sie nicht gut genug formuliert.
Mit setreading an sich hat das jedenfalls nichts zu tun.... >:(
Was willst Du denn noch? Mit meinem Beispiel wird ein reading erzeugt, das sowas von leer ist, leerer gehts nicht.
Danke für deine Antwort! :)
Kann ich morgen darauf zurückkommen?
Das ist doch ganz einfach:
Die Skriptsprache von FHEM ist keine universelle Programmiersprache, sie hat auch keine formale Grammatik.
Wenn man das möchte, sollte man auf Perl ausweichen - da geht selbstverständlich auch die Zuweisung einer leeren Zeichenkette.
LG
pah
man kann sogar gar nichts zuweisen, das ist noch weniger als eine leere Zeichenkette 8)
So etwa wie der Inhalt Deines Posts 8) 8)
LG
pah
Immerhin hatte ich hier im Thread nicht nur theoretisch rumgeschwafelt, sondern eine Lösung vorgeschlagen, die auch praktisch funktioniert.
Zitat:
Aber Sinn macht sowas trotzdem nicht. Bzw. nur für Leute, die den Umgang mit readings noch nicht verstanden haben, weil sie sich noch nicht damit beschäftigt
haben.
Das ist die dümmste und arroganteste Behauptung, die ich jemals hier gelesen habe.
Beispiel: Hat ein reading den Wert undef, sow wird die Anzeige in einer readingsGroup automatisch ausgeblendet und das macht in 1000 Beispielen durchaus Sinn.
Elektrolurch
Zitat von: Elektrolurch am 14 Juni 2016, 10:19:12
Das ist die dümmste und arroganteste Behauptung, die ich jemals hier gelesen habe.
Das ist die dümmste und arroganteste Antwort, die ich hier seit langem erhalten habe.
Zitat von: Elektrolurch am 14 Juni 2016, 10:19:12
Beispiel: Hat ein reading den Wert undef, sow wird die Anzeige in einer readingsGroup automatisch ausgeblendet
Und ist ein reading erst gar nicht vorhanden, muss sich readingsGroup nichtmal mehr um das Ausblenden kümmern.
Zitat von: Prof. Dr. Peter Henning am 14 Juni 2016, 06:39:49
Wenn man das möchte, sollte man auf Perl ausweichen - da geht selbstverständlich auch die Zuweisung einer leeren Zeichenkette.
Ich hatte bereits vermutet, dass ich meine Frage evtl nicht präzise genug formuliert hatte.
Aber einer der ersten Sätze der Standard-FHEM-Webpräsenz nennt das Faktum, dass FHEM auf Perl basiert. Ich war daher der (offenbar irrigen) Ansicht, dass meine Frage auch Antworten aus dem direkten Perl-Bereich einschließt.
Für Perl-Experten mag es ja normal sein, aber ich habe mich durchaus gewundert, als ich feststellen musste, dass der Perl-Befehl
chop($var) das erste Zeichen eines Strings nicht löscht
(Ich habe das mehrfach versucht). In diesem Zusammenhang bin ich darüber gestolpert, dass es -entgegen meinen Erwartungen- ja vielleicht doch nicht möglich ist, einen Leerstring zu erzeugen, und genau das ist der Hintergrund meiner Frage.
Ich möchte klar zum Ausdruck bringen, dass ich von FHEM bzw dessen Machern, den Leuten hier im Forum und deren Erfahrung sehr beeindruckt bin. Was hier gemacht wird, ist allererste Sahne! Darüber hinaus stelle ich aber fest, dass manche Antwort eben nicht (unmittelbar) brauchbar sind! In den vergangenen Wochen habe ich mich fast ausschließlich mit FHEM und dessen Modulen befasst, und üblicherweise habe ich schon lange und an sehr vielen Stellen gesucht, bevor ich hier im Forum poste. Wenn ich dann eine konkrete Frage stelle (wie geht dies oder das...?), dann hätte ich gern auch eine konkrete und brauchbare Antwort. Es nutzt mir wenig, wenn ich eine Antwort wie "ja, das geht..." erhalte. Es ist auch nicht zielführend, ein Thema als sinnlos abzuwerten, ohne den Hintergrund verstanden zu haben.
So, das musste ich jetzt einmal loswerden.
Ich hoffe, dass ihr mir das nicht übel nehmt und dass ich trotzdem und weiterhin auf hilfreiche Antworten setzen kann, so wie ich sie hier schon von so vielen von euch erhalten habe.
Hierfür nochmals herzlichen Dank an alle, die angesprochen fühlen.
Klaus
Zitat von: betateilchen am 13 Juni 2016, 19:40:30
{CommandSetReading(undef,'test bla ')}
Danke, betateilchen.
Das hilft mir weiter.
Ich hatte deine Antwort gestern übersehen - sorry.