'echte' taster funktion in fhemweb

Begonnen von justme1968, 12 August 2015, 11:50:11

Vorheriges Thema - Nächstes Thema

justme1968

ich vermute du hast am anfang oder am ende ein leerzeichen oder steuerzeichen. die { muss das erste zeichen sein und die } das letze.

wie hast du das devStateIcon eingegeben? tipp es mal von hand im web frontend ein. ohne copy&paste.

gruss
  andre

hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Pf@nne

verdammte Sch.......

schau dir das mal an, das war die alte Zeile!
attr MySwitch devStateIcon devStateIcon {myPushbuttonIcon($name,'pressed', 'pressed', 'released')}
ich geb ein Bier aus, sorry......

fehler gesehen....?

Läuft extrem fix auf der DS!
FHEM auf: DS415+ (Master), Raspberry Pi 2

JoWiemann

Man soll sich halt nicht immer wiederholen ...

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

justme1968

hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Pf@nne

Auf der DS415+ läuft das sehr schnell!!!
Ein schneller Doppelclick wir zu fast 100% richtig umgesetzt!
Und das sogar noch über zwei FHEM-Instanzen hinweg!

Klick FHEM-WEB-IF DS415+ -> MQTT-publish -> FHEM-Raspberry -> MCP23017 -> Lampe

Echt klasse!

Auf dem TAB läuft es noch nicht, ich werde mal versuchen auf Touch umzustellen....
FHEM auf: DS415+ (Master), Raspberry Pi 2

Pf@nne

Ich hab mal auf Touch umgestellt:

sub                     
myPushbuttonIcon($$;$$$)
{                       
  my ($name, $pressedState, $pressCmd, $releaseCmd, $interval) = @_;
                       
  my $state = Value($name);
                       
  my $icon = 'taster';
  my $cmd = $pressCmd;
  #my $event = 'onmousedown';
  my $event = 'ontouchstart';
                       
  my $repeat = '';     
  if( $interval ) {     
    $repeat = ";${name}PressedInterval = setInterval( function(){FW_cmd(FW_root+\"?cmd=set $name $cmd&XHR=1\")}, $interval )";
  }                     
                       
  if( $state eq $pressedState ) {
    $icon .= '@red';   
    $cmd = $releaseCmd;
    #$event = 'onmouseup';
    $event = 'ontouchend';
                       
    if( $interval ) {   
      $repeat = ";if(${name}PressedInterval) clearInterval(${name}PressedInterval);${name}PressedInterval=undefined";
    }                   
  }                     
                       
  my $txt = FW_makeImage( $icon );
                       
  $txt = "<div $event='FW_cmd(FW_root+\"?cmd=set $name $cmd&XHR=1\")$repeat'>$txt</div>" if( $cmd );
                       
  return $txt;         
}


Mit der Maus geht es jetzt nicht mehr, auf dem TAB reagiert der Button aber "nur" auf "ontouchstart" das Loslassen wir nicht erkannt.
Erst bei erneutem Druck Toggelt der Taster.....
FHEM auf: DS415+ (Master), Raspberry Pi 2

justme1968

ich glaube ich weiss woran es liegt. und ich habe eine idee was man eventuell dagegen tun kann. komme aber vermutlich erst nach dem urlaub dazu.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Pf@nne

Na dann schönen Urlaub.... :)
und gutes Wetter..... :)
FHEM auf: DS415+ (Master), Raspberry Pi 2

Pf@nne

Moin Andre,

ich hoffe der Urlaub war erholsam.... :)

Zitatich glaube ich weiss woran es liegt. und ich habe eine idee was man eventuell dagegen tun kann. komme aber vermutlich erst nach dem urlaub dazu.

Hast du Lust und Zeit da noch mal drauf zu schauen.....  ::)

Gruß
Pf@nne
FHEM auf: DS415+ (Master), Raspberry Pi 2

justme1968

ja. kommt auf jeden fall noch.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Pf@nne

Klasse, freue mich schon drauf....
Damit kann ich endlich meine ELTAKO-Dimmer auch mit dem TAB ansteuern.....
FHEM auf: DS415+ (Master), Raspberry Pi 2

chr2k

Danke Andre für die Umsetzung des Tasters!

justme1968

#42
so.... hat leider etwas gedauert aber zumindest under iOS geht es jetzt auch mit den touch events.

das angehängte fhemweb_taster.js file muss nach .../www/pgm2. am besten danach fhem neu starten.

die folgende neue routine nach 99_myUtils.pm:sub                         
myPushbuttonIcon($$;$$$)   
{                           
  my ($name, $pressedState, $pressCmd, $releaseCmd, $interval) = @_;
  $releaseCmd = "" if( !$releaseCmd );
                           
  my $repeat = '';         
  if( $interval ) {         
    $repeat = " interval='$interval'";
  }                         
                           
                           
  my $state = Value($name);
  my $icon = 'taster';     
                           
  if( $state eq $pressedState ) {
    $icon .= '@red';       
  }                         
                           
  my $txt = FW_makeImage( $icon );
                           
  $txt = "<div class= 'fhemTaster' press='set $name $pressCmd' release='set $name $releaseCmd'$repeat>$txt</div>";
                           
  return $txt;             
}                           


devStateIcon wird wie gehabt verwendet:define taster dummy
attr taster devStateIcon {myPushbuttonIcon($name,'pressed', 'pressed', 'released')}
attr taster room taster
attr taster setList pressed released
attr taster webCmd pressed:released
der 4. parameter (released) ist optional und als 5. parameter kann man wie bisher ebenfalls optional einen autorepeat intervall in millisekunden angegeben werden.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Pf@nne

Erstmal vielen Dank für deine Mühe!

Bei meinem Android TAB tut sich im WEB-IF leider nix, pressed/released neben dem MyButton funktionieren.
Wie kann ich testen ob das Java funktioniert?
Rechte (755) hab ich nach dem Kopieren auch mal geändert.

Hast du eine Idee?


Gruß
Pf@nne
FHEM auf: DS415+ (Master), Raspberry Pi 2

justme1968

javasctipt. nicht java.

ich hatte vergessen zu schreiben das du am besten fhem neu starten solltet wenn du das js file in das entsprechende verzeichnis kopiert hast. hast du das gemacht?

ich weiss nicht wie man unter android an die javascript console kommt. versuch es erst mal mit einem desktop browser und schau ob es da geht. wenn nein stimmt noch etwas nicht.

wenn ja: schauen wir weiter.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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