2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-01-31 06:39:11 +00:00

old-dir-support removed, image-indexing rebuilt, smallscreen/touchpad moved to

stylesheetPrefix, menuEntries added, Extend devStateIcon, js setting of attr
values in detail screen, live slider update in detail and room view



git-svn-id: https://svn.fhem.de/fhem/trunk@2786 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig 2013-02-22 17:41:29 +00:00
parent 97c57ffd35
commit 6f307b3012
10 changed files with 462 additions and 535 deletions

View File

@ -85,6 +85,10 @@
- feature: floorplan added js-extension from Dirk
- feature: hour resolution in SVG
- feature: ZWave support for MULTI_CHANNEL class
- feature: FHEMWEB: old-dir-support removed, image-indexing rebuilt,
smallscreen/touchpad moved to stylesheetPrefix, menuEntries
added, Extend devStateIcon, js setting of attr values in detail
screen, live slider update in detail and room view
- 2012-10-28 (5.3)
- feature: added functions trim, ltrim, rtrim, UntoggleDirect,

File diff suppressed because it is too large Load Diff

View File

@ -19,123 +19,123 @@
<div id="right">
<!--
<div id="dist">
<div class="dist">
<a href="#faq1">
1. I get a <code>Can't call method "opened"</code> message when starting
fhem. Why?</a>
</div>
<div id="dist">
<div class="dist">
<a href="#faq2">
2. I get "undefined" messages in the log after upgrading fhem.pl</a>
</div>
<div id="dist">
<div class="dist">
<a href="#faq3">
3. I switched on a FS20 device directly (without the remote), but the
fhem.pl did not noticed it. Is it a bug?</a>
</div>
<div id="dist">
<div class="dist">
<a href="#faq4">
4. I have some FS20/FHT/HMS devices. How do I know their housecode?</a>
</div>
<div id="dist">
<div class="dist">
<a href="#faq5">
5. I have the code for my devices in the ELV notation, which contains 1,2,3
and 4, but you require a hex code. How should I convert it?</a>
</div>
<div id="dist">
<div class="dist">
<a href="#faq6">
6. I replaced my FHZ1X00PC, now the FHT80b's does not work anymore. Help
me!</a>
</div>
<div id="dist">
<div class="dist">
<a href="#faq7">
7. I can specify an optional ml/raincounter for a KS300. Why do you think
that 255 should be the default?</a>
</div>
<div id="dist">
<div class="dist">
<a href="#faq8">
8. The time specification of the builtin <code>at</code> command is not very flexible.
Please add day/month/weekday to it.</a>
</div>
<div id="dist">
<div class="dist">
<a href="#faq9">
9. I defined my FS20STR as an FHT device, but I do not get any data from
it.</a>
</div>
<div id="dist">
<div class="dist">
<a href="#faq10">
10. How to convert the FHT80b code seen in its display to the hex code needed
by fhem.pl?</a>
</div>
<div id="dist">
<div class="dist">
<a href="#faq11">
11. I'd like to use this sunrise/sunset stuff, can you help me?</a>
</div>
<div id="dist">
<div class="dist">
<a href="#faq12">
12. I'd like to switch on the ventilator if the FHT tells me its too hot. How
to tell fhem to do that?</a>
</div>
<div id="dist">
<div class="dist">
<a href="#faq13">
13. I'd like to see directly in the Web frontend if a window is open. How to
do that?</a>
</div>
<div id="dist">
<div class="dist">
<a href="#faq14">
14. In the summer I get a lot of "actuator:lime-protection" messages from my
FHT80b. How to switch back to the actuator:0% messages?</a>
</div>
<div id="dist">
<div class="dist">
<a href="#faq15">
15. My notify/filelog does not work, help me!</a>
</div>
<div id="dist">
<div class="dist">
<a href="#faq16">
16. Setting auto-mode from manual for the FHT won't change the desired
temperature!</a>
</div>
<div id="dist">
<div class="dist">
<a href="#faq17">
17. I have problem receiving data, I get "Bad CRC" or "Oversized
message."</a>
</div>
<div id="dist">
<div class="dist">
<a href="#faq18">
18. My FHZ1X00PC gets all time automatically disconnected and reconnected. My
log shows "USB device /dev/elv_fhz1300pc disconnected, waiting to reappear".
What is wrong with my USB?</a>
</div>
<div id="dist">
<div class="dist">
<a href="#faq19">
19. How do I set the dim100% from the at command?</a>
</div>
<div id="dist">
<div class="dist">
<a href="#faq20">
20. Why do my Sunrise/Sunset times differ from the ones on website
XXX?</a>
</div>
<div id="dist">
<div class="dist">
<a href="#faq21">
21. What is "unknown message: EOB" from a CUL device?</a>
</div>

View File

@ -165,7 +165,7 @@
EM1000WZ), FHT80b, HMS, S300 (KS300, S300TH, KS555, S555TH, etc),
HomeMatic (<a href="commandref.html#CUL_HM">selected</a> devices),
La Crosse TX2/TX3.</li>
<div id="dist"></div>
<div class="dist"></div>
<li>Via an attached FHZ1000 or FHZ1300 access to the following protocols:
FS20 (all devices), FHT80b, HMS, KS300. <b>Note:</b> For the WLAN
@ -173,84 +173,84 @@
href="http://www.thinkwiki.org/wiki/User:Akw/FHZ">
link</a>.
</li>
<div id="dist"></div>
<div class="dist"></div>
<li>reading and sending X10 events via the CM11 module (with access
to a X10 computer interface)</li>
<div id="dist"></div>
<div class="dist"></div>
<li>S300 devices via an attached WS300</li>
<div id="dist"></div>
<div class="dist"></div>
<li>EM1010PC and attached EM1000WZ, EM1000EM or EM1000GZ</li>
<div id="dist"></div>
<div class="dist"></div>
<li>reading attached SCIVT devices</li>
<div id="dist"></div>
<div class="dist"></div>
<li>reading attached M232 devices</li>
<div id="dist"></div>
<div class="dist"></div>
<li>reading attached WS2000/WS25000 devices, also via raw network
converters (xport)</li>
<div id="dist"></div>
<div class="dist"></div>
<li>extract sensor data from IPWE networked weather data receiver</li>
<div id="dist"></div>
<div class="dist"></div>
<li>Via an attached <a
href="http://owfs.org/index.php?page=usb-ds9490r">DS9490R</a> or <a
href="http://owfs.org/index.php?page=com-ds9097-passive">DS9097</a>
access to the following Dallas 1-wire sensors: DS18S20, DS1820,
DS18B20</li>
<div id="dist"></div>
<div class="dist"></div>
<li>Via an attached KM271 access to the Buderus Logamatic 2107</li>
<div id="dist"></div>
<div class="dist"></div>
<li>Allnet devices: Allnet 3076, Temperatures sensors and Allnet 4027
relay box connected to an Allnet 4000</li>
<div id="dist"></div>
<div class="dist"></div>
<li>Davis VantagePro2 weatherstation</li>
<div id="dist"></div>
<div class="dist"></div>
<li>Via the RFXCOM RFXtrx433 transceiver (433 Mhz) support for various
protocols (ANSLUT, ByeByeStandBy, Chacon EMW200, COCO, DomiaLite, Duewi,
ELRO AB400/AB600, HomeEasy EU, HomeEasy UK, IMPULS, Intertechno, KD101,
KlikAanKlikUit (KAKU), NEXA, Oregon Scientific, X10 security and
lighting, Visonic, Waveman, X10).</li>
<div id="dist"></div>
<div class="dist"></div>
<li>Via the old RFXCOM USB or LAN based 433 Mhz RF receivers
(order code 80002 and others) the following devices:
Oregon Scientific weather sensors, RFXCOM RFXMeter,
X10 security and X10 lighting devices.</li>
<div id="dist"></div>
<div class="dist"></div>
<li>Via the ELV USB-WDE1 access to ELV sensors KS200/KS300, S300IA,
S300TH, ASH2200, PS 50 and Conrad sensors KS555, S555TH and
ASH555.</li>
<div id="dist"></div>
<div class="dist"></div>
<li>Via an eQ-3 HomeMatic Lan Configurator access to selected HomeMatic
devices.
<div id="dist"></div>
<div class="dist"></div>
<li>Via the eibd or a TUL (see <a
href="http://www.busware.de">www.busware.de</a>) access to the EIB/KNX
protocol.
<div id="dist"></div>
<div class="dist"></div>
<li>Via a TCM120 (e.g. the BSC BOR) or a TCM310 (e.g. busware EUL) access
to the EnOcean protocol.
<div id="dist"></div>
<div class="dist"></div>
<li>Via a ZWave USB Dongle (e.g. the Goodway WD6001) access to the ZWave protocol.
<div id="dist"></div>
<div class="dist"></div>
<div id="dist"></div>
<div id="dist"></div>
<div class="dist"></div>
<div class="dist"></div>
A detailed description is to be found in the <a
href="commandref.html">fhem reference</a>.
@ -261,26 +261,26 @@
<a name="Documentation"></a>
<h3>Documentation</h3>
<ul>
<div id="dist"><a href="Heimautomatisierung-mit-fhem.pdf">
<div class="dist"><a href="Heimautomatisierung-mit-fhem.pdf">
Heimautomatisierung-mit-fhem.pdf</a> (pdf, german)</div>
<div id="dist"><a href="HOWTO.html">HOWTO.html</a> for a short
<div class="dist"><a href="HOWTO.html">HOWTO.html</a> for a short
installation/configuration.</div>
<div id="dist"><a href="commandref.html">commandref.html</a>
<div class="dist"><a href="commandref.html">commandref.html</a>
contains a detailed description of all features/modules.</div>
<div id="dist">Our wiki at <a
<div class="dist">Our wiki at <a
href="http://fhemwiki.de/index.php/FHEM">fhemwiki.de</a></div>
<div id="dist">Frequently Asked Questions: <a
<div class="dist">Frequently Asked Questions: <a
href="faq.html">faq.html</a></div>
<div id="dist">Forum: <a href="http://forum.fhem.de">
<div class="dist">Forum: <a href="http://forum.fhem.de">
http://forum.fhem.de</a><br>Although most entries are in german here,
don't be afraid to ask something in english.</div>
<div id="dist"><a href="README.contrib">contrib/README</a> describes
<div class="dist"><a href="README.contrib">contrib/README</a> describes
some loosely coupled useful modules / scripts which can be used with
fhem.</div>

View File

@ -8,10 +8,10 @@ define telnetPort telnet 7072 global # our TCP/IP port
define WEB FHEMWEB 8083 global
define WEBphone FHEMWEB 8084 global
attr WEBphone smallscreen
attr WEBphone stylesheetPrefix smallscreen
define WEBtablet FHEMWEB 8085 global
attr WEBtablet touchpad
attr WEBtablet stylesheetPrefix touchpad
# Fake FileLog entry, to access the fhem log from FHEMWEB
define Logfile FileLog ./log/fhem-%Y-%m.log fakelog

View File

@ -40,7 +40,8 @@ right:10px; }
body>div#left { position:fixed; }
div#block { border:1px solid gray; background: #101010; padding:0.7em; }
div#dist { padding-top:0.3em; }
h2,h3,h4 { color:#EEE; line-height:1.3; margin-top:1.5em; font-family:Verdana; }
button.dist { margin:10px; background:transparent; border:0px; cursor:pointer; }
h2,h3,h4 { color:#EEE; line-height:1.3; margin-top:1.5em; font-family:Verdana; }
select.attr,input.attr,select.set,input.set { margin-bottom:10px; }
a img { border-style:none; }
@ -53,6 +54,8 @@ select { margin-left:5px; margin-right:5px; }
/* timepicker */
.set .set { margin-bottom:2px; margin-top:3px; }
.handle { position:relative; cursor:pointer; width:50px; height:20px;
line-height:20px; border:2px solid; color:white; text-align:center; }
.handle { position:relative; cursor:pointer; width:50px;
height:20px; line-height:20px;
-webkit-user-select:none; -moz-user-select:none; -user-select:none;
border:2px solid; color:white; text-align:center; }
.downText { margin-top:2px; }

View File

@ -1,7 +1,6 @@
/*************** LONGPOLL START **************/
var FW_pollConn;
//The number of the next line in FW_pollConn.responseText to parse
var FW_curLine;
var FW_curLine; // Number of the next line in FW_pollConn.responseText to parse
function
FW_cmd(arg) /* see also FW_devState */
@ -49,6 +48,11 @@ FW_doUpdate()
}
}
el = document.getElementById("slider."+d[0]);
if(el) {
var val = d[1].replace(/[^\d\.]/g, ""); // remove non numbers
Slider(el, val);
}
}
//Next time, we continue at the next line
FW_curLine = lines.length;
@ -85,11 +89,14 @@ FW_delayedStart()
/*************** SLIDER **************/
function
Slider(slider, min, stp, max, curr, cmd)
Slider(slider, curr)
{
var sh = slider.firstChild;
var lastX=-1, offX=0, maxX=0, val=-1;
min = parseFloat(min); max = parseFloat(max); stp = parseFloat(stp);
var min = parseFloat(slider.getAttribute("min"));
var stp = parseFloat(slider.getAttribute("stp"));
var max = parseFloat(slider.getAttribute("max"));
var cmd = slider.getAttribute("cmd");
function
init()
@ -196,13 +203,15 @@ addTime(el,cmd)
par.appendChild(document.createElement('br'));
var sl = document.createElement('div');
sl.innerHTML = '<div class="slider"><div class="handle">'+val[i]+
sl.innerHTML = '<div class="slider" min="0" stp='+(i==0 ? 1 : 5)+
' max='+(i==0 ? 23 : 55)+
' cmd="js:setTime(slider,"'+(i==0?"H":"M")+'",%)'+
'><div class="handle">'+val[i]+
'</div></div>';
par.appendChild(sl);
sl.setAttribute('class', par.getAttribute('class'));
Slider(sl.firstChild, 0, (i==0 ? 1 : 5), (i==0 ? 23 : 55), val[i],
'js:setTime(slider,"'+(i==0? "H":"M")+'",%)');
Slider(sl.firstChild, val[i]);
}
}
@ -219,13 +228,20 @@ FW_selChange(sel, list, elName)
value = nv[1]; break;
}
}
var el = document.getElementsByName(elName)[0];
var name = el.getAttribute('name');
var qFn, qArg;
var devName="";
if(elName.indexOf("val.attr")==0) devName = elName.substring(8);
if(elName.indexOf("val.set")==0) devName = elName.substring(7);
if(value==undefined) {
newEl = document.createElement('input');
newEl.type='text'; newEl.size=30;
qFn = 'qArg.setAttribute("value", "%")';
qArg = newEl;
} else {
var vArr = value.split(",");
@ -235,9 +251,12 @@ FW_selChange(sel, list, elName)
max=parseFloat(vArr[3]);
newEl = document.createElement('div');
newEl.innerHTML=
'<div class="slider"><div class="handle">'+min+'</div></div>'+
'<div class="slider" id="slider.'+devName+'" min="'+min+'" stp="'+stp+
'" max="'+max+'"><div class="handle">'+min+'</div></div>'+
'<input type="hidden" name="'+name+'" value="'+min+'">';
Slider(newEl.firstChild, min, stp, max, undefined, undefined);
Slider(newEl.firstChild, undefined);
qFn = 'FW_querySetSlider(qArg, "%")';
qArg = newEl.firstChild;
} else if(vArr.length == 1 && vArr[0] == "time") {
newEl = document.createElement('div');
@ -249,11 +268,55 @@ FW_selChange(sel, list, elName)
for(var j=0; j < vArr.length; j++) {
newEl.options[j] = new Option(vArr[j], vArr[j]);
}
qFn = 'FW_querySetSelected(qArg, "%")';
qArg = newEl;
}
}
newEl.setAttribute('class', el.getAttribute('class'));
newEl.setAttribute('name', el.getAttribute('name'));
newEl.setAttribute('name', name);
el.parentNode.replaceChild(newEl, el);
if((typeof qFn == "string")) {
if(elName.indexOf("val.attr")==0)
FW_queryValue('{AttrVal("'+devName+'","'+sel+'","")}', qFn, qArg);
if(elName.indexOf("val.set")==0)
FW_queryValue('{ReadingsVal("'+devName+'","'+sel+'","")}', qFn, qArg);
}
}
/*************** Fill attribute **************/
function
FW_queryValue(cmd, qFn, qArg)
{
var qConn = new XMLHttpRequest();
qConn.onreadystatechange = function() {
if(qConn.readyState != 3)
return;
qFn = qFn.replace("%", qConn.responseText)
.replace(/[\r\n]/g, "");
eval(qFn);
delete qFn;
}
qConn.open("GET", document.location.pathname+"?cmd="+cmd+"&XHR=1", true);
qConn.send(null);
}
function
FW_querySetSelected(el, val)
{
for(var j=0;j<el.options.length;j++)
if(el.options[j].value == val)
el.selectedIndex = j;
}
function
FW_querySetSlider(el, val)
{
val = val.replace(/[^\d\.]/g, ""); // remove non numbers
Slider(el, val);
}

View File

@ -57,13 +57,14 @@ table#room tr.sel { background: #A0FFFF; }
font-family:Arial, sans-serif; font-size:16px; }
h2,h3,h4 { color:#52865D; line-height:1.3;
margin-top:1.5em; font-family:Arial,Sans-serif; }
div#block { border:1px solid gray; background: #F8F8E0; padding:0.7em; }
div#dist { padding-top:0.3em; }
div.block { border:1px solid gray; background: #F8F8E0; padding:0.7em; }
div.dist { padding-top:0.3em; }
button.dist { margin:5px; background:transparent; border:0px; cursor:pointer; }
.set,.attr { margin-bottom:5px; float:left;}
.slider { float:right; width:320px; height:26px; }
.set .slider { background:#F0F0D8; }
.handle { position:relative; cursor:pointer; width:50px;
height:20px; line-height:20px; user-select:none;
height:20px; line-height:20px;
-webkit-user-select:none; -moz-user-select:none; -user-select:none;
border:3px solid; color:#278727; text-align:center; }

View File

@ -33,6 +33,7 @@ h2,h3,h4 { color:#52865D; line-height:1.3;
margin-top:1.5em; font-family:Arial,Sans-serif; }
div#block { border:1px solid gray; background: #F8F8E0; padding:0.7em; }
div#dist { padding-top:0.3em; }
button.dist { margin:10px; background:transparent; border:0px; cursor:pointer; }
a img { border-style:none; }
@ -46,6 +47,7 @@ select { margin-left:5px; margin-right:5px; }
.changed { color:red; }
.handle { position:relative; cursor:pointer; width:50px;
height:20px; line-height:20px; user-select:none;
height:20px; line-height:20px;
-webkit-user-select:none; -moz-user-select:none; -user-select:none;
border:3px solid; color:#278727; text-align:center; }
.downText { margin-top:2px; }

View File

@ -1,9 +1,9 @@
body { background-color: #FFFFE7;
font-family:Arial, sans-serif; font-size:16px;
font-family:Arial, sans-serif; font-size:18px;
}
textarea { font-family:Arial, sans-serif; font-size:16px}
input { font-family:Arial, sans-serif; font-size:16px}
select { font-family:Arial, sans-serif; font-size:16px}
textarea { font-family:Arial, sans-serif; font-size:18px}
input { font-family:Arial, sans-serif; font-size:18px}
select { font-family:Arial, sans-serif; font-size:18px}
#logo { position:absolute; top:10px; left:10px;
width:120px; height:132px; background-image:url(../icons/fhemicon.png); }
#menu { position:absolute; top:152px;left:10px; width:140px; }
@ -25,6 +25,10 @@ table { -moz-border-radius:8px; border-radius:8px; }
table#room { border:1px solid gray; width: 100%; background: #D7FFFF; }
table#room tr.sel { background: #A0FFFF; }
div.block { border:1px solid gray; background: #F8F8E0; padding:0.7em; }
div.dist { padding-top:0.3em; }
button.dist { margin:10px; background:transparent; border:0px; cursor:pointer; }
/* detail-selector & slider */
select { margin-left:5px; margin-right:5px; }
.set,.attr { margin-bottom:5px; float:left; }
@ -35,6 +39,7 @@ select { margin-left:5px; margin-right:5px; }
.changed { color:red; }
.handle { position:relative; cursor:pointer; width:50px;
height:20px; line-height:20px; user-select:none;
height:20px; line-height:20px;
-webkit-user-select:none; -moz-user-select:none; -user-select:none;
border:3px solid; color:#278727; text-align:center; }
.downText { margin-top:2px; }