[GELÖST!]Wie Variable mit leerem Wert (Leerstring) erzeugen?

Begonnen von DocCyber, 12 Juni 2016, 13:19:56

Vorheriges Thema - Nächstes Thema

DocCyber

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???
Behandle die Menschen so, als wären sie, was sie sein sollten. Dadurch hilfst du ihnen zu werden, was sie sein können. (Goethe)


RPi-4B mit HM-CFG-LAN und viele weitere HM Komponenten, diverse Shellys, Tuya-Geräte, SMA und Solis Wechselrichter, Elgris EnergyManager, go-e Wallbox

justme1968

ü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
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

igami

Warum willst du das denn tun? Es gibt noch den FHEM Befehl deletereading
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

DocCyber

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)...
Behandle die Menschen so, als wären sie, was sie sein sollten. Dadurch hilfst du ihnen zu werden, was sie sein können. (Goethe)


RPi-4B mit HM-CFG-LAN und viele weitere HM Komponenten, diverse Shellys, Tuya-Geräte, SMA und Solis Wechselrichter, Elgris EnergyManager, go-e Wallbox

DocCyber

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.  >:(
Behandle die Menschen so, als wären sie, was sie sein sollten. Dadurch hilfst du ihnen zu werden, was sie sein können. (Goethe)


RPi-4B mit HM-CFG-LAN und viele weitere HM Komponenten, diverse Shellys, Tuya-Geräte, SMA und Solis Wechselrichter, Elgris EnergyManager, go-e Wallbox

dev0

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

betateilchen

#6
{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.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

DocCyber


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....  >:(
Behandle die Menschen so, als wären sie, was sie sein sollten. Dadurch hilfst du ihnen zu werden, was sie sein können. (Goethe)


RPi-4B mit HM-CFG-LAN und viele weitere HM Komponenten, diverse Shellys, Tuya-Geräte, SMA und Solis Wechselrichter, Elgris EnergyManager, go-e Wallbox

betateilchen

Was willst Du denn noch? Mit meinem Beispiel wird ein reading erzeugt, das sowas von leer ist, leerer gehts nicht.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

DocCyber

Danke für deine Antwort!  :)
Kann ich morgen darauf zurückkommen?
Behandle die Menschen so, als wären sie, was sie sein sollten. Dadurch hilfst du ihnen zu werden, was sie sein können. (Goethe)


RPi-4B mit HM-CFG-LAN und viele weitere HM Komponenten, diverse Shellys, Tuya-Geräte, SMA und Solis Wechselrichter, Elgris EnergyManager, go-e Wallbox

Prof. Dr. Peter Henning

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

betateilchen

man kann sogar gar nichts zuweisen, das ist noch weniger als eine leere Zeichenkette  8)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Prof. Dr. Peter Henning


betateilchen

Immerhin hatte ich hier im Thread nicht nur theoretisch rumgeschwafelt, sondern eine Lösung vorgeschlagen, die auch praktisch funktioniert.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Elektrolurch

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
configDB und Windows befreite Zone!