ECMD-Fehler

Begonnen von Puschel74, 07 Juni 2013, 22:18:10

Vorheriges Thema - Nächstes Thema

Spiff

Hallo Boris,

habe es ausprobiert, der Fehler ist weg. Danke!

Kann man den Timeout per Benutzerattribut oder in der classDef einstellen?
Ich meine, wenn ich von Anfang an weiss, dass keine Antwort kommt, kann ich das Timeout für manche Befehle ja auch auf 0 setzen.
In meinem Fall müsste das allerdings tatsächlich pro Befehl und nicht pro Device einstellbar sein, da manche Befehle auch eine Rückgabe bringen.

Viele Grüße,
Spiff.

Dr. Boris Neubert

Zitat von: Spiff am 20 Dezember 2013, 18:36:15
Kann man den Timeout per Benutzerattribut oder in der classDef einstellen?

Das ist nicht vorgesehen.

Vielleicht findet sich jemand, der einen Patch bereitstellt, mit dem man in der classdef

set <command> options noreply

schreiben kann, damit das Modul nicht auf Rückmeldung wartet.

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

kpwg

Zitat von: Spiff am 30 November 2013, 00:42:03
Vielleicht kann man diese Einträge auch einzeilig darstellen? Oder ist das so gewollt und ich müsste sowieso der Sauberkeit halber eigentlich die Zeilenumbrüche mit postproc entfernen?

Daran bin ich auch schon verzweifelt. Leider scheint es keine dokumentierte Möglichkeit zu geben, mehrere Werte in eine Zeile zu bekommen.

Dr. Boris Neubert

Zitat von: kpwg am 25 Dezember 2013, 12:10:59
Daran bin ich auch schon verzweifelt. Leider scheint es keine dokumentierte Möglichkeit zu geben, mehrere Werte in eine Zeile zu bekommen.

M.W. hat Rudi das Speichern mehrzeiliger Werte in Readings schon vor einigen Tagen in fhem.pl ermöglicht. Update gemacht?

Ansonsten gibt es in der Commandref dazu auch ein Beispiel, auf dem Du aufbauen kannst:
set on postproc {s/^OK\nOK\nOK\nOK$/success/; "$_" eq "success" ? "ok" : "error"; }

Ungetestet:
set DeinBefehl postproc { s/\n//g; $_; }

Grüße
Boris

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

kpwg

Zitat von: Dr. Boris Neubert am 25 Dezember 2013, 12:26:57
M.W. hat Rudi das Speichern mehrzeiliger Werte in Readings schon vor einigen Tagen in fhem.pl ermöglicht. Update gemacht?
Jawohl. Schaue praktisch täglich nach, was es Neues gibt.

Zitat von: Dr. Boris Neubert am 25 Dezember 2013, 12:26:57
Ungetestet:
set DeinBefehl postproc { s/\n//g; $_; }

Grüße
Boris

Danke Boris, das funktioniert vorzüglich. Bin noch sehr unsicher im Anwenden von Perl, aber es wird. Den "s///"-Operator hatte ich schon am Wickel, aber es kam nur Murks dabei heraus.
Mein kleines Projekt ist ja noch immer das korrekte Einbinden der DHT22 Sensoren. Prinzipiell habe ich aktuell richtige Werte da stehen, die sich aktualisieren und in einem Plot gut darstellen lassen. Ich meine aber, mit den Workarrounds nicht das eigentliche Problem lösen zu können:
saubere einzeilige Werte im Log und korrekte Readings.

Ich kann den DHT22 per classdef mit get DHT cmd {"dht temp" . "\ndht humid"}
auslesen und mit set DHT postproc { s/\n//g; $_; } bringt nun die (noch-nicht-)readings auf eine Zeile. Jetzt muss ich den Werten noch T: und H: voranstellen und die readings temperature und humidity zuordenen. Mal schauen, wie das geht... oder weißt du Rat?

Viele Grüße,
Ricardo

Dr. Boris Neubert

Zitat von: kpwg am 25 Dezember 2013, 17:00:32
Ich kann den DHT22 per classdef mit get DHT cmd {"dht temp" . "\ndht humid"} auslesen. Jetzt muss ich den Werten noch T: und H: voranstellen und die readings temperature und humidity zuordenen.

Was kommt denn beim Auslesen raus? Poste mal bitte den Output auf get DHT.

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

kpwg

Es kommt 2013.12.25 19:55:34 3: WZ_TH: DHT 20.6
41.8
im Log an. Ich unterdrücke das im Log mit verbose 1. Aktuell hatte ich Temperatur und Feuchte getrennt abgefragt uns als zwei Werte übergeben. Mit T und H lässt sich dann arbeiten, aber "echte" Readings wie bei anderen Sensoren sind das nicht. Nur Anzeigen ist kein Thema, aber damit weiterarbeiten geht schief.

Dr. Boris Neubert

Aha, du hast also ein Reading DHT am Gerät, wo "20.6 41.8" drinsteht?

Dann versuche bitte mal

get DHT postproc { s/(.*)\n(.*)/T: $1 H: $2/; $_; }

Den Rest erledigst Du dann mit einem FileLog und Regexp DHT.

Viele Grüße
Boris

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

kpwg

Zitat von: Dr. Boris Neubert am 25 Dezember 2013, 20:46:16

Dann versuche bitte mal get DHT postproc { s/(.*)\n(.*)/T: $1 H: $2/; $_; } Den Rest erledigst Du dann mit einem FileLog und Regexp DHT.

Schaut gut aus: 2013-12-26 09:48:11 ECMDDevice WZ_Klima DHT: T: 20.7 H: 35.7
Habe auch halbwegs verstanden, was da passiert: (.*)\n(.*) teilt in alles vor dem Zeilenumbruch, den Zeilenumbruch selbst und alles nach dem Zeilenumbruch, T: $1 H: $2 fügt das T: und H: vor die Werte und ersetzt den Zeilenumbruch mit "nichts". Perl ist nicht immer einfach, oft aber überraschend einfach.  ::) Mal schauen, wie ich das DHT: noch weg bekomme.

Jetzt schaue ich noch, wie ich die readings hinbekomme. Filelog ist soweit klar, zu regexp lese ich mich mal 'rein.

Viele Grüße,
Ricardo


Eike

Hallo,

ganz kurze Frage zum Thema ECMD und Verbindungsabbrüche: Ich nutze FHEM 5.5 unter Linux u.a. zum Auslesen von 1Wire-Sensoren via Ethersex (auf AVR NET-IO). Das NET-IO läuft netzwerktechnisch stabil, die Spannungsversorgung wurde dementsprechend geändert. Dennoch habe auch ich das Problem, dass FHEM sporadisch die Telnet-Verbindung zum AVR verliert, dies auch anzeigt und anschließend nicht wieder aufbaut, obwohl der AVR weiterhin via LAN verfügbar ist. Ist es empfehlenswert, auf das aktuelle FHEM-Snapshot zu aktualisieren? Vorerst werde ich vor Absetzen des ECMD-Befehls zum Auslesen der Sensoren ein "reopen" mitgeben, finde diese Notlösung aber nicht sehr schön. Könnte man ein notify auf das Ereignis "disconnect" setzen, welches automatisch den "reopen" anstößt? Zumindest wäre das ein "Workaround".
Dass der AVR weiter via LAN verfügbar ist, sehe ich auch daran, dass meine S0-Zähler weiter Daten senden.

Gruß, Eike

Eike

Hallo,
ich beobachte den Fall erst einmal, nachdem ich gerade ein Update durchgeführt habe. Somit ist nun der neueste Development-Stand aktiv.

Gruß, Eike

Dr. Boris Neubert

Hallo,

weiß jemand, wie man prüft, ob eine Socket-Verbindung noch offen ist, BEVOR man versucht zu senden?

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

hummeruli

Zitat von: Eike am 12 Februar 2014, 14:27:46
Hallo,

ganz kurze Frage zum Thema ECMD und Verbindungsabbrüche: Ich nutze FHEM 5.5 unter Linux u.a. zum Auslesen von 1Wire-Sensoren via Ethersex (auf AVR NET-IO). Das NET-IO läuft netzwerktechnisch stabil, die Spannungsversorgung wurde dementsprechend geändert. Dennoch habe auch ich das Problem, dass FHEM sporadisch die Telnet-Verbindung zum AVR verliert, dies auch anzeigt und anschließend nicht wieder aufbaut, obwohl der AVR weiterhin via LAN verfügbar ist. Ist es empfehlenswert, auf das aktuelle FHEM-Snapshot zu aktualisieren? Vorerst werde ich vor Absetzen des ECMD-Befehls zum Auslesen der Sensoren ein "reopen" mitgeben, finde diese Notlösung aber nicht sehr schön. Könnte man ein notify auf das Ereignis "disconnect" setzen, welches automatisch den "reopen" anstößt? Zumindest wäre das ein "Workaround".
Dass der AVR weiter via LAN verfügbar ist, sehe ich auch daran, dass meine S0-Zähler weiter Daten senden.

Gruß, Eike


Da ich dieses Problem auch habe, würde es mich freuen, wenn es eine vernünftige Lösung für den "disconnect" gibt.

Danke
Beim Erstellen dieser Nachricht kamen weder Tiere zu Schaden, noch wurde Papier verschwendet. Alles von mir geschriebene ist biologisch abbaubar.


FHEM auf Debian Buster in einr Proxmox VM , LaCrosseGateway, AVR-NET-IO, Homematic, Alexa, S300TH, Signalduino..........

wollet42

Hi,
ich habe das Problem mit den Verbindungsabbruechen auch.

Was mir aufgefallen ist ist dass das automatische ropen nach einem Lesefehler (timeout) nicht erfolgreich ist.

Ich hab deshalb mal den timeout auf 10sec hochgesetzt, seitdem ist das reopen erfolgreich (ca 1-2 mal am Tag)

Irgendwie scheint das reopen sehr lange zu dauern.

Gruss,
Wolle

hummeruli

#29
Zitat von: wollet42 am 08 Mai 2014, 13:16:52
Hi,
ich habe das Problem mit den Verbindungsabbruechen auch.

Was mir aufgefallen ist ist dass das automatische ropen nach einem Lesefehler (timeout) nicht erfolgreich ist.

Ich hab deshalb mal den timeout auf 10sec hochgesetzt, seitdem ist das reopen erfolgreich (ca 1-2 mal am Tag)

Irgendwie scheint das reopen sehr lange zu dauern.

Gruss,
Wolle

Super Tip, das werde ich mal testen, nur wäre es für mich hilfreich, wenn Du den Code hier zeigen könntest.
Dies ist zumindest ein Lösungsweg. Wenn auch der Fehler an sich weiterhin besteht.
Fixen sollte man dies auf jeden Fall.

Gruß

Uli
Beim Erstellen dieser Nachricht kamen weder Tiere zu Schaden, noch wurde Papier verschwendet. Alles von mir geschriebene ist biologisch abbaubar.


FHEM auf Debian Buster in einr Proxmox VM , LaCrosseGateway, AVR-NET-IO, Homematic, Alexa, S300TH, Signalduino..........