Dialogabfragen nach Kommando

Begonnen von daniel2311, 26 Februar 2018, 23:28:58

Vorheriges Thema - Nächstes Thema

daniel2311

Hallo zusammen,

ich habe da mal eine Frage, wo ich nicht so genau, wie es sich lösen lässt.

Die Broadlink-Geräte, die ich ansteuere haben jetzt eine andere Möglichkeit Funksingle aufzunehmen.
Dabei wird erst einmal die Frequenz gesucht, indem man die Taste recht lange wiederholend drückt.
Wenn das Gerät die Frequenz erkannt hat, muss man den eigentlich Code aufnehmen.

Soweit so gut. Mittlerweile habe ich einen Code fertig, mit dem das klappt.

Allerdings weiß ich nicht so genau wie ich das dem Benutzer mitteilen soll. Ich muss ihm zuerst sagen, halte die Taste gedrückt und und sobald die Frequenz erkannt wurde, würde ich gerne ihm sagen, es ist soweit. Drücke jetzt bitte einmal die Taste.

Kann ich das allerdings in der FHEM Obefläche durchführen? Wenn ja wie?

Ich habe herumexperimentiert, ob ich ein Reading setzen kann oder den Status ändere, aber so ganz ideal ist das nicht, wie mir scheint, da die Oberfläche scheinbar nicht immer neu lädt.

Vielen Dank!
Daniel

rudolfkoenig

Wenn du mit "Oberflaeche" FHEMWEB meinst...
- wenn ein Modul von einer Telnet-Verbindung oder FHEMWEB-Seite eine Anfrage (set/get) bekommt, dann steht in $hash->{CL} der $hash der Eingang-Verbindung/Seite
- an diese Verbindung kann man per asyncOutput($hash->{CL}, "Nachricht");eine Nachricht senden, das wird auf der telnet-Verbindung direkt ausgegeben, auf der FHEMWEB-Seite oeffnet sich ein Dialog mit Nachricht und OK Knopf.

daniel2311

Hallo Rudolf,

ich werde das ganze mal ausprobieren ;) Das könnte funktionieren.

Bekomme ich eine Rückmeldung, dass der Benutzer OK gedrückt hat? Egal, ich werde das testen und sonst irgendetwas drum herum bauen, dass es verständlich ist.

LG
Daniel

daniel2311

Hallo Rudolf,

leider war ich erfolglos. Erst einmal lag es daran, dass ich es nicht aus dem set aufgerufen habe und das $hash->{CL} undef war.
Ich glaube aber es liegt jetzt an folgendem:
Sobald ich ein set Befehl aufrufe, steht in der Console des Browser "PSC reload".
Rufe ich erneut ein Set-Befehl aus, hat der Websocket einen anderen Port. Mach ich etwas falsch? Ich habe es im Chorme genauer angeschaut und auch einmal im IE getestet.

LG und schon einmal vielen Dank
Daniel

rudolfkoenig

Eigentlich wird mit "FW_ID" dafuer gesorgt, dass FHEMWEB die Seite auch nach Neuladen identifizieren kann, und kennt dadurch auch die zugehoerige longpoll-Verbindung, um die Daten zu schicken. Das funktioniert in etlichen Modulen (z.Bsp. in ZWave get) bisher ohne Probleme. Man muss aber das set/get Befehl im Browser absetzen.

daniel2311

Jetzt wird es spannend. Vllt. ist das ein Fehlkonfiguration meines Systems.

Ich bin auf folgender URL:
http://wnas:8083/fhem?detail=Broadlink2
Löse den set-Befehl aus und folgendes erscheint als URL:
http://wnas:8083/fhem?detail=Broadlink2&fw_id=

Die Dumps vom CL zeigen auch, dass die FW_ID leer ist.

do {
  require Symbol;
  my $a = {
    Authenticated => 0,
    BUF => "",
    CD => bless(Symbol::gensym(), "IO::Socket::INET"),
    FD => 4,
    LASTACCESS => 1519813315,
    NAME => "WEB_10.23.11.66_60765",
    NR => 240,
    PEER => "10.23.11.66",
    PORT => 60765,
    SNAME => "WEB",
    SSL => undef,
    STATE => "Connected",
    TEMPORARY => 1,
    TYPE => "FHEMWEB",
  };
  *{$a->{CD}} = {
    io_sock_nonblocking => 1,
    io_socket_domain    => 2,
    io_socket_proto     => 6,
    io_socket_timeout   => undef,
    io_socket_type      => 1,
  };
  $a;
}

Ich habe dann einfach mal in der URL eine fw_id angegeben. Dann scheint auch kurzzeitig ein Dialog aufzutauchen, welcher dann aber wieder verschwindet, weil die Seite neugeladen in der URL die "fw_id=" ist.

FHEM läuft bei mir unter Windows. Ich werde mal weiter schauen und gucken, woran das liegt.