[ECMDDevice] Fehlermeldung nach letztem Update

Begonnen von Gernott, 06 Oktober 2015, 23:34:12

Vorheriges Thema - Nächstes Thema

Tom_S

#15
hole dieses alte Thema noch mal hoch, da es mir doch noch nicht so gefällt.

@Boris
Der Request Seperator ist nicht einstellbar (warum man das braucht, weis ich nicht). Es gibt ja das Attribut, und das sieht wenn man ein Device neu anlegt so aus
(http://forum.fhem.de/index.php?action=dlattach;topic=41887.0;attach=45222;image)
das liegt wohl an Zeile 87
$attr{$name}{"requestSeparator"}= "\000";

da fehlt ein Backslash
$attr{$name}{"requestSeparator"}= "\\000";

funktioniert.
Ich würde das Attribut aber nicht festlegen sondern als Default in Zeile 555 angeben
  my $requestSeparator= AttrVal($name, "requestSeparator", "\\000");

somit kann man den request Seperator beliebig festlegen, und das Problem, das es nach einem löschen oder festlegen des Request Seperators nicht mehr läuft, ist erst mal gelöst.

LG
Tom_S
RaspberryPI2 + pilight, 3x AVR-NetIO, LW12, LW12HX, LW12FC; MAX-Lan, ESP8266, Arduino, H801, Neopixel, Solaredge, Modbus

Dr. Boris Neubert

Hallo Tom_S,

das Attribut ist per Default nicht mit einem literalen "\000" vorbelegt sondern mit \000, der oktalen Darstellung des Zeichens mit dem Ordinalwert 0, also NUL im ASCII-Kode. Es fehlt also kein Backslash.

Das Attribut ist auch absichtlich per Default gesetzt. Wenn der Wert als Default am Attribut vorgegeben wäre, könnte man niemals ohne Request-Separator arbeiten.

Viele Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Tom_S

#17
hallo Boris,
ZitatWenn der Wert als Default am Attribut vorgegeben wäre, könnte man niemals ohne Request-Separator arbeiten.
leuchted mir ein. Was aber in
$attr{$name}{"requestSeparator"}= "WERT"
steht, ist doch das, was der User beim Attribut eingibt oder?
Was soll ich denn eingeben, wenn ich \000 erhalten möchte. ASCII 0 kann ich nicht eingeben.

LG
Tom_S

PS:
und ohne Request Seperator kann man so auch nicht arbeiten.
Man kann das Attribut zwar löschen, wie in der Commandref beschrieben, es ist aber nach einem Neustart wieder auf default. Also ganz o.K. ist es irgendwie noch nicht.
RaspberryPI2 + pilight, 3x AVR-NetIO, LW12, LW12HX, LW12FC; MAX-Lan, ESP8266, Arduino, H801, Neopixel, Solaredge, Modbus

Dr. Boris Neubert

Was funktioniert an

attr <name> requestSeparator \000

und

deleteattr <name> requestSeparator

in der Konfigurationsdatei nicht?

Du willst aber doch nur eines von beiden, und das erste ist auch der Default. Ich weiß also nicht, worauf Du hinaus willst.
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Tom_S

hallo Boris,

der Requestseperator wird doch in der classdef verwendet, um die Befehle zu trennen und einzeln zu senden.
Den lege ich dort doch selber mit "\000" fest. Ich habe ehrlich gesagt nicht verstanden, warum man ihn ändern oder abschalten können sollte. Wenn ich in der classdef keinen Eintrag "\000" habe, wird doch sowieso alles als ein Befehl verschickt.
Aber da es das Attribut einmal gibt, erwarte ich eigentlich, das in der Deteilansicht auch der richtige Wert angezeigt wird und das es so auch in der fhem.conf abgespeichert wird, und nicht ein Zeichen, das ich hier nicht einfügen kann. (siehe Post weiter oben).

Das eigendliche Problem ist wohl, das dieses offensichtlich leere Attribut gerne mal gelöscht wird, oder es zu Fehlern beim sichern der fhem.conf kommt und danach keine doppelten Befehle mehr gehen. In der config wird das Attribut auch mit [NUL] gespeichert.

LG
Tom_S

RaspberryPI2 + pilight, 3x AVR-NetIO, LW12, LW12HX, LW12FC; MAX-Lan, ESP8266, Arduino, H801, Neopixel, Solaredge, Modbus