Hauptmenü

Featurewünsche

Begonnen von jemu75, 07 Mai 2021, 13:41:58

Vorheriges Thema - Nächstes Thema

Jamo

#60
Zitat
Das ist mir definitiv zu hoch

Ist das niedriger?  :)
Dummy:
defmod keypad dummy
attr keypad alias KeyPad
attr keypad appOptions { "template": "keypad",  "home": false,  "dashboard": true,  "group": "Alarmanlage",  "sortby": 30 }
attr keypad event-on-update-reading state


Notify:
defmod KeyPad_n notify keypad:.* {mykeyPad($EVENT)}

In die myUtils folgenden Code kopieren:
my @arr = (0,0,0,0,0,0,0,0);

sub mykeyPad {
  my $state = shift // return "Error, sub mykeyPad: we need EVENT as parameter!";
  my $GeheimCode  = 12345678;
  my $Eingabecode = 0;
  if    ( $state =~ /^[0-9]$/ )   {for (my $i=0; $i <= 7; $i++) {if ($i <= 6){$arr[$i] = $arr[$i+1]} else {$arr[7] = $state}}}
  elsif ( $state eq "enter" )     { $Eingabecode = join('', @arr[0 .. 7]) ; @arr = (0,0,0,0,0,0,0,0)}
  Log 3, "[mykeyPad] ".join('', @arr[0 .. 7]);
  if ($GeheimCode == $Eingabecode ) {fhem('set keypad success')}
}


fhemApp template:
{
"name": "keypad",
"author": "jemu75",
"date": "2021-03-21",
"description": "keypad",
"expand": true,
"status": {
"bar": ["state:success:100:success","state::0:success"],
"error": []
},
"main": [
{
"leftBtn": "mdi-numeric-0",
"leftClick": ["state::0"],
"text": ["state:success:Code OK","state:enter:Code Falsch","state::Eingabe: %s"],
"rightBtn": "mdi-check",
"rightClick": ["state::enter"]
},
{
"leftBtn": "mdi-numeric-1",
"leftClick": ["state::1"],
"midBtn": "mdi-numeric-2",
"midClick": ["state::2"],
"rightBtn": "mdi-numeric-3",
"rightClick": ["state::3"]
},
{
"leftBtn": "mdi-numeric-4",
"leftClick": ["state::4"],
"midBtn": "mdi-numeric-5",
"midClick": ["state::5"],
"rightBtn": "mdi-numeric-6",
"rightClick": ["state::6"]
},
{
"leftBtn": "mdi-numeric-7",
"leftClick": ["state::7"],
"midBtn": "mdi-numeric-8",
"midClick": ["state::8"],
"rightBtn": "mdi-numeric-9",
"rightClick": ["state::9"]
}
],
"info": {
"left1": ["state:::mdi-dialpad"]
}
}


Das dummy reading 'state' ist dann 'success', wenn der Eingabecode richtig eingegeben wurde und danach 'enter' gedrückt wurde.

EDIT: Jetzt stimmts, dummy, sub & template nochmal geändert.

EDIT2: Jetzt mit Kontrolle der Eingabe im ersten Feld

Sag Bescheid, ich hoffe das passt so für deine Zwecke!
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

coolice

Danke, sehe aber nicht wie ich das Alarm Device AAA damit beeinflussen kann

binford6000

Zitat von: coolice am 19 Mai 2021, 20:38:05
Danke, sehe aber nicht wie ich das Alarm Device AAA damit beeinflussen kann

Einfach mal so ins Blaue gegoogelt...

if ($GeheimCode == $Eingabecode ) {fhem('set keypad success; set AAA.key unlockPin $EingabeCode')}

@Jamo: Coole Arbeit!  :)

Jamo

#63
Zitat von: binford6000 am 19 Mai 2021, 20:48:17
Einfach mal so ins Blaue gegoogelt...

if ($GeheimCode == $Eingabecode ) {fhem('set keypad success; set AAA.key unlockPin $EingabeCode')}

@Jamo: Coole Arbeit!  :)

Oben in Antwort #60 ist jetzt im template noch die Sicht-kontrolle der Eingabe mit eingearbeitet, damit man sieht, ob der Tastendruck auch angenommen wurde.

PS: Und dann auch nochmal Dank an Dich, ich habe deine fhemApp Steuerung (den Code den Du mal für mich gepostet hattest) noch um den Menuepunkt 'update' erweitert, jetzt kann ich mit einem Knopfdruck aus deinem template heraus das fhemApp update starten.  :-)
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

binford6000

Zitatjetzt kann ich mit einem Knopfdruck aus deinem template heraus das fhemApp update starten.  :-)

Haha, hab ich auch direkt eingebaut!  :) Mit einem über connected eingebauten jsonMod gibts auch die aktuelle Version.

Connected:
  "connected": {"update": "fhemapp"},

RAW:
defmod fhemapp JsonMod https://api.github.com/repos/jemu75/fhemApp/releases/latest
attr fhemapp userattr updatableDevicesMode:onlyUpdatable,all
attr fhemapp alias fhemApp Update Status
attr fhemapp devStateIcon false:security@green true:security@red\

attr fhemapp group Update
attr fhemapp icon system_fhem
attr fhemapp readingList single(jsonPath('$.tag_name'), 'git_version', 'none');;\
single(jsonPath('$.published_at'), 'published_at', 'none');;
attr fhemapp room 90_System->90_System
attr fhemapp stateFormat {\
my $ret="";;\
my $check = ReadingsVal($name,"updatableDevices","error => no or wrong data from server!");;\
if($check eq "no updates needed!") {\
$ret = 'false';;\
}\
elsif($check eq "error => no or wrong data from server!") {\
$ret = 'false';;\
}\
else {\
$ret = 'true';;\
}\
return $ret;;\
}
attr fhemapp updatableDevicesMode onlyUpdatable
attr fhemapp userReadings updatableDevices {\
my $ret = "";;\
my $updateall = AttrVal($name,"updatableDevicesMode","");;\
if (ReadingsVal($name,".computedReadings","") eq "") {\
$ret = "error => no or wrong data from server!";;\
} \
else {\
my $dev = "fhemapp.d";;\
my $VERSION = ReadingsVal($name,"git_version","none");;\
$VERSION =~ m/([\d].*)/;;\
$VERSION = $1;;\
my $version = ReadingsVal($dev,"version","none");;\
$version =~ m/([0-9.]*).*/;;\
$version = $1;;\
if (($updateall eq "all") || ($version ne $VERSION)) {\
$ret .= $dev." ";;\
}\
}\
return ($ret eq "")?"no updates needed!":$ret;;\
}


VG Sebastian

Jamo

Hi Seb, das habe ich jetzt soweit, aber wie bekommst Du die aktuelle version 3.21.1 als reading in fhemapp.d?
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

binford6000

#66
Zitat von: Jamo am 19 Mai 2021, 21:40:43
Hi Seb, das habe ich jetzt soweit, aber wie bekommst Du die aktuelle version 3.21.1 als reading in fhemapp.d?
Ach ja, ganz vergessen...  ;D
Ich hab Jens' Skript erweitert:
VER=$(grep "version" /opt/fhem/update/package.json | sed -e 's/[a-zA-Z:",]//g')
perl /opt/fhem/fhem.pl 7072 "setreading fhemapp.d version $VER"


Es geht aber auch via connected (halt nur die Anzeige des jsdonMod devices):
"mid2": ["Connected.update.Readings.git_version.Value::%s"],

VG Sebastian

jemu75

#67
Ich weiß zwar nicht was ihr hier macht, aber sieht echt cool aus.  ;D

Zum Thema Keypad:
Ich überlege schon eine Weile, ob ich die "Tastenklicks" erweitere. Ich möchte also nicht nur FHEM-Kommandos absetzen sondern z.B. auch Parameter von FHEMApp ansteuern.
Beispiel für einen cmd-Parameter: app theme-dark true -> damit könnt man beispielsweise das Thema in der App umschalten und es wird in durch das Schlüsselwort app kein FHEM-Kommando gesendet.

Dieses Prinzip könnte man auch auf das Keypad anwenden.
Beispiel:
app buffer-add 1  fügt eine "1" am Ende eines Arrays ein
app buffer-clear löscht den aktuellen Inhalt des Arrays
%b wirkt als "Ersetzung", gibt den Inhalt des Arrays zurück und leert dieses danach. Mit %b könnte man dann in gewohnter Form FHEM-Kommandos absetzen.

Gern mal eure Meinung oder Fragen zu diesem Ansatz in die Runde werfen.  :)

Jamo

#68
Hallo Jens,
Parameter um FHEMApp zu steuern finde ich super, wie theme, debug mode, debug level, language, (oder e.g. um den user zu switchen / user berechtigungen, oder akustischen tastenklick an/aus für mobilgeräte) etc.

Array usw würde ich in fhem lassen, da hat man mit perl einfach mehr flexibilität. Und warum willst Du einen fhem (perl) Programmcode oder die fhem Programierung in FHEMApp nachbauen wollen? Das macht meiner Meinung keinen Sinn. Dann evtl in der Doku auf eine fhem beispiel subroutine verlinken?

Alternativ ein festes Keypad template, das, wenn man den Haken (also enter) cklickt, die zuvor eingegebene Zahlencombi in das fhemdevice schreibt. Dann würde ich aber die ganze Buffer/array Geschichte vorm Benutzer verbergen... Aber dann muss man wahrscheinlich viel für das template parametrieren, weil da jeder eigene Vorstellungen hat wie das aussehen soll, dann muss man auch drüber nachdenken ob man auch passwoerter eingeben will, etc.

Oben in meinem Beispiel hatte ich ja noch die Eingabekontrolle mit eingebaut, das man sieht ob die Tasteneingabe erfolgreich war, das muss auf jedenfall mit rein sonst tippt man sich den Wolf, weil man z.B. auf dem iPhone nie sicher ist, ob der Klick angekommen ist.

Das Beispiel kann ich noch so umbauen, das im mitteren Feld, zur Kontrolle nach jeder Eingabe einer Ziffer, alle n Stellen der bisher eingegebenen Zahl angezeigt werden. Dann sieht man auch optisch die komplett eingegebene Zahl bevor man enter drückt. Das wäre noch sinnvoll.

My 2 cents.
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

jemu75

Zitat von: Jamo am 19 Mai 2021, 23:43:02
Hallo Jens,
Parameter um FHEMApp zu steuern finde ich super, wie theme, debug mode, debug level, language, (oder e.g. um den user zu switchen / user berechtigungen, oder akustischen tastenklick an/aus für mobilgeräte) etc.

Array usw würde ich in fhem lassen, da hat man mit perl einfach mehr flexibilität. Und warum willst Du einen fhem (perl) Programmcode oder die Programierung in FHEMApp nachbauen? Das macht meiner Meinung keinen Sinn.

Alternativ ein festes Keypad template, das, wenn man den Haken (also enter) cklickt, die zuvor eingegebene Zahlencombi in das fhemdevice schreibt. Dann würde ich aber die ganze Buffer/array Geschichte vorm Benutzer verbergen... Aber dann muss man wahrscheinlich viel für das template parametrieren, weil da jeder eigene Vorstellungen hat wie das aussehen soll, dann muss man auch drüber nachdenken ob man auch passwoerter eingeben will, etc

Oben in meinem Beispiel hatte ich ja noch die Eingabekontrolle mit eingebaut, das man sieht ob die Tasteneingabe erfolgreich war, das muss auf jedenfall mit rein sonst tippt man sich den Wolf, weil man z.B. auf dem iPhone nie sicher ist, ob der Klick angekommen ist.

Das Beispiel kann ich noch so umbauen, das im mitteren Feld, zur Kontrolle nach jeder Eingabe einer Ziffer, alle n Stellen der bisher eingegebenen Zahl angezeigt werden. Dann sieht man auch optisch die komplett eingegebene Zahl bevor man enter drückt.

Okay, deine Argumente bzgl. Keypad sind nachvollziehbar. Dann lass ich das und baue das nicht in FHEMApp nach.  ;)
Die Steuerung der anderen Sachen nehme ich mal als Feature in Angriff.

Jamo

Zitat von: jemu75 am 19 Mai 2021, 23:47:51
Okay, deine Argumente bzgl. Keypad sind nachvollziehbar. Dann lass ich das und baue das nicht in FHEMApp nach.  ;)
Die Steuerung der anderen Sachen nehme ich mal als Feature in Angriff.
Hi Jens, die Steuerung der anderen Sachen waren einfach noch Ideen, ich bin soweit ziemlich zufrieden bisher. Ist für mich ein rundes Gesamtpaket bisher.

Danke nochmal an den Erfinder !
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

Jamo

#71
Zum KeyPad, hier nochmal der Code, das im mitteren Feld, zur Kontrolle nach jeder Eingabe einer Ziffer, alle n Stellen der bisher eingegebenen Zahl angezeigt werden.
In die myUtils folgenden Code kopieren:
my @arr = ('-','-','-','-','-','-','-','-');

sub mykeyPad {
  my $state = shift // return "Error, sub mykeyPad: we need EVENT as parameter!";
  my $GeheimCode  = 12345678;
  my $Eingabecode = 0;
  if    ( $state =~ /^[0-9]$/ )     {for (my $i=0; $i <= 7; $i++) {if ($i <= 6){$arr[$i] = $arr[$i+1]} else {$arr[7] = $state}}}
  elsif ( $state eq 'enter' )       {$Eingabecode = join('', @arr[0 .. 7]);@arr = ('-','-','-','-','-','-','-','-');
    if (looks_like_number($Eingabecode) && $GeheimCode == $Eingabecode ) {fhem('set keypad Code OK')} else {fhem('set keypad Code falsch')}}
  if ( $state ne 'enter' )  {fhem ("set keypad ".join('', @arr[0 .. 7]))}
  #Log 3, "[mykeyPad] ".$Eingabecode;
}


das leicht geänderte template:
{
"name": "keypad",
"author": "jemu75",
"date": "2021-03-21",
"description": "keypad",
"expand": true,
"status": {
"bar": ["state:Code OK:100:success","state:Code falsch:100:warning","state::0:success"],
"error": []
},
"main": [
{
"leftBtn": "mdi-numeric-0",
"leftClick": ["state::0"],
"text": ["state::%s"],
"rightBtn": "mdi-check",
"rightClick": ["state::enter"]
},
{
"leftBtn": "mdi-numeric-1",
"leftClick": ["state::1"],
"midBtn": "mdi-numeric-2",
"midClick": ["state::2"],
"rightBtn": "mdi-numeric-3",
"rightClick": ["state::3"]
},
{
"leftBtn": "mdi-numeric-4",
"leftClick": ["state::4"],
"midBtn": "mdi-numeric-5",
"midClick": ["state::5"],
"rightBtn": "mdi-numeric-6",
"rightClick": ["state::6"]
},
{
"leftBtn": "mdi-numeric-7",
"leftClick": ["state::7"],
"midBtn": "mdi-numeric-8",
"midClick": ["state::8"],
"rightBtn": "mdi-numeric-9",
"rightClick": ["state::9"]
}
],
"info": {
"left1": ["state:::mdi-dialpad"]
}
}
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack

Cluni


https://forum.fhem.de/index.php/topic,120907.msg1157569.html#msg1157569

Hat niemand Interesse dran, oder ist der Post nur in den vielen Posts von gestern unter gegangen?  :-\

Gruß, Bernd

Benni

Zitat von: Cluni am 20 Mai 2021, 13:05:23
https://forum.fhem.de/index.php/topic,120907.msg1157569.html#msg1157569

Hat niemand Interesse dran, oder ist der Post nur in den vielen Posts von gestern unter gegangen?  :-\

Gruß, Bernd

N'Abend Bernd,

es war von Anfang an die Prämisse Entweder die Rooms und/oder Groups aus FHEM verwenden, dann aber alle, oder das ausschalten und für fhemapp dann komplett separat verwalten. Kein Misch-Masch!
Es ist also alles da und ja, es ist mit etwas (einmaligem) Aufwand verbunden! :)

Ich habe mich für die 2. Variante entschieden und fahre damit bisher eigentlich sehr gut. Wenn man mal seinen Gerätepark durch hat (ich möchte im Übrigen in fhemapp bei weitem nicht alles drin haben), ist das Schlimmste auch schon erledigt. Um ein Gerät in fhemapp zu übernehmen, muss ich es doch sowieso über appOptions konfigurieren, dann kann ich bei Bedarf auch noch eben schnell room und group eintragen.

Für mich ist das so i.O.!

gb#

Jamo

Hallo Bernd/Cluni, hier bin ich auch bei Benni. Der Aufwand ist einmalig, und überschaubar, da man nicht alles in FHEMApp drin haben will. Und letztendlich ist die group/room Struktur bei mir in fhemApp auch etwas anders (besser) organsiert als in fhem.
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/ConbeeII, FB, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack