FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: DocCyber am 12 Juni 2016, 13:19:56

Titel: [GELÖST!]Wie Variable mit leerem Wert (Leerstring) erzeugen?
Beitrag von: DocCyber am 12 Juni 2016, 13:19:56
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???
Titel: Antw:Wie Variable mit leerem Wert (Leerstring) erzeugen?
Beitrag von: justme1968 am 12 Juni 2016, 13:45:26
ü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
Titel: Antw:Wie Variable mit leerem Wert (Leerstring) erzeugen?
Beitrag von: igami am 12 Juni 2016, 13:59:45
Warum willst du das denn tun? Es gibt noch den FHEM Befehl deletereading
Titel: Antw:Wie Variable mit leerem Wert (Leerstring) erzeugen?
Beitrag von: DocCyber am 12 Juni 2016, 14:26:03
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)...
Titel: Antw:Wie Variable mit leerem Wert (Leerstring) erzeugen?
Beitrag von: DocCyber am 12 Juni 2016, 16:22:01
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.  >:(
Titel: Antw:Wie Variable mit leerem Wert (Leerstring) erzeugen?
Beitrag von: dev0 am 13 Juni 2016, 19:29:07
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
Titel: Antw:Wie Variable mit leerem Wert (Leerstring) erzeugen?
Beitrag von: betateilchen am 13 Juni 2016, 19:40:30
{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.
Titel: Antw:Wie Variable mit leerem Wert (Leerstring) erzeugen?
Beitrag von: DocCyber am 13 Juni 2016, 21:12:16

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....  >:(
Titel: Antw:Wie Variable mit leerem Wert (Leerstring) erzeugen?
Beitrag von: betateilchen am 13 Juni 2016, 21:18:08
Was willst Du denn noch? Mit meinem Beispiel wird ein reading erzeugt, das sowas von leer ist, leerer gehts nicht.
Titel: Antw:Wie Variable mit leerem Wert (Leerstring) erzeugen?
Beitrag von: DocCyber am 13 Juni 2016, 21:23:05
Danke für deine Antwort!  :)
Kann ich morgen darauf zurückkommen?
Titel: Antw:Wie Variable mit leerem Wert (Leerstring) erzeugen?
Beitrag von: Prof. Dr. Peter Henning am 14 Juni 2016, 06:39:49
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
Titel: Antw:Wie Variable mit leerem Wert (Leerstring) erzeugen?
Beitrag von: betateilchen am 14 Juni 2016, 07:04:12
man kann sogar gar nichts zuweisen, das ist noch weniger als eine leere Zeichenkette  8)
Titel: Antw:Wie Variable mit leerem Wert (Leerstring) erzeugen?
Beitrag von: Prof. Dr. Peter Henning am 14 Juni 2016, 07:09:32
So etwa wie der Inhalt Deines Posts  8) 8)

LG

pah
Titel: Antw:Wie Variable mit leerem Wert (Leerstring) erzeugen?
Beitrag von: betateilchen am 14 Juni 2016, 09:33:43
Immerhin hatte ich hier im Thread nicht nur theoretisch rumgeschwafelt, sondern eine Lösung vorgeschlagen, die auch praktisch funktioniert.
Titel: Antw:Wie Variable mit leerem Wert (Leerstring) erzeugen?
Beitrag von: Elektrolurch am 14 Juni 2016, 10:19:12
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
Titel: Antw:Wie Variable mit leerem Wert (Leerstring) erzeugen?
Beitrag von: betateilchen am 14 Juni 2016, 10:26:43
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.
Titel: Antw:Wie Variable mit leerem Wert (Leerstring) erzeugen?
Beitrag von: DocCyber am 14 Juni 2016, 14:54:18
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
Titel: Antw:Wie Variable mit leerem Wert (Leerstring) erzeugen?
Beitrag von: DocCyber am 14 Juni 2016, 14:56:23
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.