FHEM Forum

FHEM - Hausautomations-Systeme => Sonstige Systeme => Thema gestartet von: berniie am 01 November 2021, 14:28:55

Titel: at command und SIGNALduino
Beitrag von: berniie am 01 November 2021, 14:28:55
Hallo,
kann mir jemand sagen warum das nicht funktioniert?
Ich benutze das 00_SIGNALduino.pm Modul von Ralf9.


define a_get_ccconf at +*00:00:10 {\
    my $ccconf = fhem("get maplesduino ccconf");;\
    Log(3,"Debug: ccconf: $ccconf")\
}


Im log sieht das so aus


2021.11.01 14:25:40.254 5: maplesduino: command for gets: C0DnF
2021.11.01 14:25:40.254 5: AddSendQueue: maplesduino: C0DnF (1)
2021.11.01 14:25:40.254 1: PERL WARNING: Use of uninitialized value $ccconf in concatenation (.) or string at (eval 718) line 3.
2021.11.01 14:25:40.255 3: eval: {
        my $ccconf = fhem("get maplesduino ccconf");
    Log(3,"Debug: ccconf: $ccconf")
}
2021.11.01 14:25:40.255 3: Debug: ccconf:
2021.11.01 14:25:40.355 5: maplesduino SW: C0DnF
2021.11.01 14:25:40.365 4: maplesduino/msg READ: C0Dn11=21656A57C43023B900070018146C070091
2021.11.01 14:25:40.365 5: maplesduino/noMsg Parse: C0Dn11=21656A57C43023B900070018146C070091
2021.11.01 14:25:40.365 4: maplesduino/msg READ: regexp=C0Dn11.* cmd=ccconf msg=C0Dn11=21656A57C43023B900070018146C070091
2021.11.01 14:25:40.666 4: maplesduino/HandleWriteQueue: nothing to send, stopping timer


Grüße,
Jörg

Titel: Antw:at command und SIGNALduino
Beitrag von: rudolfkoenig am 01 November 2021, 15:02:30
Vmtl. weil get bei diesem Modul nicht blockiert, und das ist gut so :)
Das Resultat wird dem Benutzer "spaeter" per asyncOutput mitgeteilt, telnet und FHEMWEB stellen fuer asyncOutput entsprechende Wege bereit.
Titel: Antw:at command und SIGNALduino
Beitrag von: berniie am 01 November 2021, 15:53:58
Danke für den Tip. Ich will eigentlich alle paar Minuten von der einen Bank auf die andere wechseln. Dazu will ich abfragen, welche Bank gerade aktiv ist.
Titel: Antw:at command und SIGNALduino
Beitrag von: rudolfkoenig am 01 November 2021, 16:24:50
Falls get ein Event ausloest (das sollte es mAn): get anstossen, und per notify darauf reagieren.
Titel: Antw:at command und SIGNALduino
Beitrag von: Ralf9 am 01 November 2021, 21:11:47
Momentan wird bei den get Befehlen die Rückmeldung in readings geschrieben, falls die Rückmeldung nicht zu lang ist.

Ich hab mal in meine lokale 00_SIGNALduino.pm mal eingebaut, daß beim reading auch ein event erzeugt wird 
my $reading;
($rmsg, $reading) = SIGNALduino_parseResponse($hash,$getcmd,$rmsg);
if (length($reading) > 0) {
if (length($reading) > SDUINO_parseRespMaxReading) {
$reading = substr($reading, 0, SDUINO_parseRespMaxReading);
}
readingsSingleUpdate($hash, $getcmd, $reading, 1);
}
if (defined($hash->{getcmd}->{asyncOut})) {
#Log3 $name, 4, "$name/msg READ: asyncOutput";
my $ao = asyncOutput( $hash->{getcmd}->{asyncOut}, $getcmd.": " . $rmsg );
}
delete($hash->{getcmd});


Dabei ist mir aufgefallen, daß evtl im fhemweb noch ein bug ist.
Bei den get Befehlen mit einem Eingabefeld stehen nach dem abschicken im Eingabefeld die Zeichen die ins reading geschrieben wurden! (siehe Anlage)
Wenn kein event erzeugt wird, dann bleibt das Get Eingabefeld leer.

Gruß Ralf
Titel: Antw:at command und SIGNALduino
Beitrag von: Ralf9 am 02 November 2021, 16:06:04
Beim Cul hab ich den gleichen Effekt.
Wenn ich ein "get raw C12" abschicke, dann wird die Rückmeldung "C12 = 30 / 48" zusätzlich zum reading auch noch ins Eingabefeld von get geschrieben! (siehe Anlage).

@rudolfkoenig
Soll ich dafür ein neues Thema in "Frontends - FHEMWEB" aufmachen?
Titel: Antw:at command und SIGNALduino
Beitrag von: rudolfkoenig am 02 November 2021, 16:12:55
ZitatSoll ich dafür ein neues Thema in "Frontends - FHEMWEB" aufmachen?
Bin noch unsicher ob ich das als Fehler betrachten soll :)
Titel: Antw:at command und SIGNALduino
Beitrag von: Ralf9 am 13 November 2021, 16:28:24
Ich hab mal anstatt
readingsSingleUpdate($hash, $getcmd, $reading, 1);
dies geschrieben
readingsSingleUpdate($hash, $getcmd, $reading, 0);
my $ev = $getcmd . ': ' . $reading;
DoTrigger($name, $ev, 0);


dabei ist mir ein seltsamer Effekt aufgefallen.
Der Event wird nur ins Eingabefeld von Get geschrieben, wenn der Trenner zwischen $getcmd und $reading ": " ist.
Verwende ich einen anderen Trenner, dann wird das Eingabefeld nicht überschrieben.

Als Workarround kann ich dann als Trenner z.B. ":: " verwenden.
Hat dieser Workarround irgendwelche Nachteile?
my $ev = $getcmd . ':: ' . $reading;

Gruß Ralf