Dummy mit Checkboxen zum "einfachen" Erstellen der logIDs beim Sniffen

Begonnen von frank, 13 Oktober 2015, 12:38:55

Vorheriges Thema - Nächstes Thema

frank

hier mal ein erster versuch, das sniffen mit homematic einfacher zu gestalten, da es seltsamerweise grosse "berührungsängste" zu geben scheint. vielleicht wird es mit einer klickbaren version umgänglicher.

(http://forum.fhem.de/index.php?action=dlattach;topic=42186.0;attach=38577;image)

in dieser version kann man bisher nur die attribute logIDs der homematic-io's zusammenklicken. beim aufruf der übersichtsseite des dummy wird automatisch für jedes io eine liste aller devices angelegt und zusätzlich die optionen "sys" und "all". alle ausgewählten devices erscheinen oben neben dem set-button und werden anschliessend durch klicken auf den set-button in das attribut logIDs des entsprechenden io's geschrieben. sind alle devices abgewählt, erscheint "none" und ein klicken auf den set-button löscht dann das attribut. immer an "save config" denken, damit die änderungen gespeichert werden.

diese umsetzung meiner ersten begegnung mit javasript ist sicherlich nicht die "feine art", aber funktioniert bisher besser als gedacht. vielleicht gibt es ja den einen oder anderen experten, der eine bessere idee hat. immer her damit. der funktionsumfang soll im laufe der zeit auch erweitert werden.

einfach einen dummy definieren und den folgenden code in das attribut stateFormat kopieren. sicherheitshalber noch "event-on-change-reading .*" setzen, fertig.

{
my @io = devspec2array("TYPE=HMLAN");
my @dev = devspec2array("TYPE=CUL_HM:FILTER=DEF=......");
my $id;
my $ret = '<div id="alf" style="text-align:left">';
   $ret .= '<form name="selectLogIDs" action="" method="get"><table><tr>';
foreach my $io (@io) {    
$ret .= '<td><fieldset><legend>'.$io.'</legend>';
$ret .= '<label for="'.$io.'_set"><input type="button" name="'.$io.'_setLogIDs" value="set" id="'.$io.'_set">'.ReadingsVal($name,$io."_logIDs","none").'</label><br><br>';
$ret .= '<label for="'.$io.'_dev_sys"><input type="checkbox" name="'.$io.'_checkLogIDs" value="sys" id="'.$io.'_dev_sys"> sys</label><br><br>';
$ret .= '<label for="'.$io.'_dev_all"><input type="checkbox" name="'.$io.'_checkLogIDs" value="all" id="'.$io.'_dev_all"> all</label><br><br>';
foreach (@dev) {
$id = InternalVal($_,"DEF","?");
$ret .= '<label for="'.$io.'_dev_'.$id.'"><input type="checkbox" name="'.$io.'_checkLogIDs" value="'.$_.'" id="'.$io.'_dev_'.$id.'"> '.$_.'</label><br>';
}
$ret .= '</fieldset></td>';
}
$ret .= '</tr></table></form></div><script>';
foreach my $io (@io) {    
my @logDev = split(",",ReadingsVal($name,$io."_logIDs","test"));
foreach (@logDev) {
if($_ eq "none") {
    next;
} elsif($_ ~~ ["sys","all"]) {
$id = $_;
} else {
$id = InternalVal($_,"DEF","?");
}
$ret .= $io.'_dev_'.$id.'.checked=true;';
}
    $ret .= 'document.getElementById("'.$io.'_set").addEventListener("click", setAttr);';
}
$ret .= 'document.getElementById("alf").addEventListener("change", syncReading);';
$ret .= 'function setAttr(ev) {
             var io = ev.target.name.split("_",1);
var reading = ev.target.parentElement.textContent;
if(reading == "none") {
     FW_cmd("/fhem?XHR=1&cmd=deleteattr "+io[0]+" logIDs");
} else {
     FW_cmd("/fhem?XHR=1&cmd=attr "+io[0]+" logIDs "+reading);
}
}';
$ret .= 'function syncReading(ev) {
             var io = ev.target.name.split("_",1);
var dev = document.getElementsByName(ev.target.name);
var reading = "";
for (i = 0; i < dev.length; i++) {
if(dev[i].checked == true) {
if(reading == "") {
reading = dev[i].value;
} else {
reading = reading+","+dev[i].value;
}
}
}
if(reading == "") {reading = "none";}
FW_cmd("/fhem?XHR=1&cmd=setreading log_dev "+io[0]+"_logIDs "+reading);
}';
$ret .= '</script>';
return $ret;
}


gruss frank
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

FHEMAN

Hallo frank,

habe gerade einmal Deinen Dummy getestet. Alle Geräte werden ordentlich angezeigt. Beim Klick auf set passiert allerdings nichts. Ebenso werden händisch gesetzt logIDs nicht angezeigt. Müsste das der in der aktuellen FHEM Version auch funktionieren?
Habe mit IE und Chrome getestet.

Viele Grüße
Ronny
NUC7i5 | PROXMOX | FHEM 6.2 | 1 HMLAND | 2 UART | HM | LMS | HIFIBERRY | DOORBIRD | BLINK | BUDERUS | HUE | ALEXA | MILIGHT | LUFTDATENINFO | MQTT| ZIGBEE2MQTT | INDEGO | ROBOROCK | SMA | APC | OPENWB

frank

hallo ronny,
wenn du ein häkchen setzt, müsste neben dem set-button der name vom device auftauchen. danach sollte das attribut mit klick auf den button gesetzt werden. probleme könnte der browser machen, wegen javascript. ich benutze firefox.

gruss frank
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

martinp876

so, ich habe mich weitergebildet in Sachen Checkbox bei Attributen.

Man kann jetzt die LogID beim Attribut per Checkbox setzen (wie es sein sollte)
Die Liste der Devices wird beim Setzen des Attributs upgedatet. Könnte sein, dass man 2-mal setzen muss wenn ein Device fehlt.

Evtl macht dies diese (sinnvolle) funktion obsolet.

frank

Zitat von: martinp876 am 11 September 2016, 17:24:01
so, ich habe mich weitergebildet in Sachen Checkbox bei Attributen.
fein, fein.  :)

ZitatDie Liste der Devices wird beim Setzen des Attributs upgedatet. Könnte sein, dass man 2-mal setzen muss wenn ein Device fehlt.
stimmt, beim ersten mal gab es nur sys und all.

bei mir fehlen noch die virtuellen devices.
das device actiondetector könnte man eventuell besser broadcast nennen, damit hier der zweck deutlicher wird.

wäre es vielleicht auch möglich das attribut logIDs in der vccu zugänglich zu machen, um dann für jedes io eine spalte (checkbox) zu bekommen. natürlich nur für die io's, die es unterstützen (hmlan, hmusb, hmuart) und im attribut IOList aufgeführt sind.

die anzeige der id's beim devicenamen fand ich immer ganz nützlich, um eine schnelle übersicht zu haben, auf die gefiltert wird. kann man natürlich auch separat über hminfo bekommen.

gruss frank
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Otto123

Hallo Frank,

Du hast gesagt ich soll sniffen  8) und wie geht dein Dummy jetzt mit HMUART? Weil der ist vom Type HMUARTLGW und nicht HMLAN.

Hattest Du da schon eine Idee?

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

frank

ZitatDu hast gesagt ich soll sniffen  8)
;D

in meiner aktuellen version habe ich gerade mal die erste zeile geändert, und hier scheint es zu funktionieren:
my @io = devspec2array("TYPE=(HMLAN|HMUARTLGW)");

gruss frank
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Otto123

Oh Mann so einfach  :-X da habe ich immer noch keinen Blick für ...
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Otto123

Ok, allerdings habe ich jetzt keine Lust Firefox zu installieren und unter Chrome geht es nicht  :'( obwohl javascript aktiv.

Das mit den logIDs einfach eintragen ist jetzt auch nicht kompliziert, wenn man dann mal weiß, das die logID = DEF bzw. NAME  ist  ;)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

martinp876

@otto: nur devices eintragen, keine channel

@frank:
Virtuelle habe ich ausgeklammert, werde ich einbauen.
Action detector hat die 000000. Ich werde mir etwas für broadcast einfallen lassen.
Das ganze auch in der vccu einstellbar zu machen dachte ich auch schon. Die implementierung in den IOs ist allerdings unterschiedlich. Muss ich prüfen...... weiter ist unklar ob man immer alle IOs einschaltenten will.
Das Attribut aller IOs in die vccu zu Doppeln ist nicht stand in fhem. Eigentlich passt das garnicht in das Konzept.

Otto123

Zitat von: martinp876 am 13 September 2016, 20:43:00
@otto: nur devices eintragen, keine channel
Danke, aber das war mir schon klar  8)
Ich habe an drei Stellen gelesen wie man was machen muss. Euch ist das alles klar, aber ich bin an dem Wiki Artikel etwas "hängengeblieben".
Ich werde den Wiki Artikel mal ein klein wenig "Anfänger" freundlich ergänzen.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

MBHG

Hmm.... ich bekomme kein anständiges Fenster, trotz Firefox und Javascript. Auch nicht mit Chrome / explorer.

Gruss
-----------------------------------------------------------
https://smarthome.family.blog Debian Linux, NanoCUL 868, Signalduino, 4x HM-SW4, 11x HM Asksin Unisensor, NodeMCU ESP8266, RCS 1000 N Comfort, Magic Home, Rauchmelder PT2262, Babble

frank

ZitatHmm.... ich bekomme kein anständiges Fenster
zeig doch mal, was bei dir zu sehen ist.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

MBHG

-----------------------------------------------------------
https://smarthome.family.blog Debian Linux, NanoCUL 868, Signalduino, 4x HM-SW4, 11x HM Asksin Unisensor, NodeMCU ESP8266, RCS 1000 N Comfort, Magic Home, Rauchmelder PT2262, Babble

frank

hi MBHG,
nach deiner signatur vermute ich, das du weder hmlan noch hmusb hast. diesen fall habe ich nicht abgefangen, dann kann es nichts werden. ausserdem sieht mir der angezeigte code etwas unvollständig aus. hast du dein stateformat mal mit obigem code verglichen?
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html