Ich hätte da eine Frage zu Ftui .
Mit data-row=" " data-col=" "
Stellt man ja die Position ein
Aber die Positionen werden nicht eingehalte.
Wenn ich das Widget Zisterne Inhalt auf
data-row="3" data-col="1" setzte packt mir ftui es ganz oben links hinein.
<!DOCTYPE html>
<html>
<head>
<!--
/* FHEM tablet ui */
/*
* Just another dashboard for FHEM
*
* Version: 1.3.5
* Requires: jQuery v1.7+, font-awesome, jquery.gridster, jquery.toast
* URL: https://github.com/knowthelist/fhem-tablet-ui
*
* - create a new folder named 'tablet' in /<fhem-path>/www
* - copy all files incl. sub folders into /<fhem-path>/www/tablet
* - add 'define tablet_ui HTTPSRV tablet ./www/tablet Tablet Frontend' in fhem.cfg
* - Tadaaa! A new fhem ui in http://<fhem-url>:8083/fhem/tablet/
*/
-->
<title>FHEM-Tablet-UI</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0,9 user-scalable=no" />
<meta name="widget_base_width" content="116">
<meta name="widget_base_height" content="131">
<meta name="mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="longpoll_type" content="websocket">
<meta name="longpoll" content="1">
<meta name="toast" content="1">
<meta name='debug' content='0'>
<meta name="debug" content="0"> <!-- 1=output to console;0=not output -->
<link rel="stylesheet" href="/fhem/tablet/lib/jquery.gridster.min.css" />
<link rel="stylesheet" href="/fhem/tablet/css/fhem-tablet-ui.css" />
<link rel="stylesheet" href="/fhem/tablet/lib/font-awesome.min.css" />
<link rel="stylesheet" href="/fhem/tablet/lib/jquery.toast.min.css" />
<link rel="stylesheet" href="/fhem/tablet/lib/powerange.min.css" />
<link rel="stylesheet" href="/fhem/tablet/lib/openautomation.css" />
<script type="text/javascript" src="/fhem/pgm2/jquery.min.js"></script>
<script type="text/javascript" src="/fhem/tablet/lib/jquery.knob.mod.min.js"></script>
<script type="text/javascript" src="/fhem/tablet/lib/jquery.toast.min.js"></script>
<script type="text/javascript" src="/fhem/tablet/lib/jquery.circlemenu.js"></script>
<script type="text/javascript" src="/fhem/tablet/lib/powerange.min.js"></script>
<script type="text/javascript" src="/fhem/tablet/lib/jquery.gridster.min.js"></script>
<script type="text/javascript" src="/fhem/tablet/lib/fa-multi-button.min.js"></script>
<script type="text/javascript" src="/fhem/tablet/js/fhem-tablet-ui.js"></script>
<!-- Enable this lines for usage with WebViewControl --><!-- -->
<script type="text/javascript" src="/fhem/pgm2/cordova-2.3.0.js"></script>
<script type="text/javascript" src="/fhem/js/webviewcontrol.js"></script>
<script type="text/javascript">var wvcDevices = {'12345': 'Tablet'}; var wvcUserCssFile="webviewcontrol.css"</script>
<!-- End for WebViewControl -->
</head>
<body>
<!-- available class: container,left,right,cell,narrow,darker,big,bigger,small,thin,large,wider -->
<!-- available data-type: symbol,dimmer,homestatus,label,push,sonder ,switch,thermostat,volume,weather -->
<!-- ============ Teichtemeratur ============= -->
<!-- ====================================== -->
<div class="gridster">
<ul>
<li data-row="1" data-col="1" data-sizex="1" data-sizey="1">
<header>Teich</header>
<div data-device="Teich"
<div data-type="label" data-get="temperature"
data-unit="C"
data-fix="1"
class="cell tall">
</div>
</li>
<!-- ============ Schuppentemeratur=============->
<!-- ====================================== -->
<div class="gridster">
<ul>
<li data-row="1" data-col="2" data-sizex="1" data-sizey="1">
<header>Schuppen</header>
<div data-device="Schuppen"
<div data-type="label" data-get="temperature"
data-unit="C"
data-fix="1"
class="cell tall">
</div>
</li>
<!-- ============ Aussentemeratur=============->
<!-- ====================================== -->
<div class="gridster">
<ul>
</li><li data-row="1" data-col="3" data-sizex="1" data-sizey="1">
<header>Aussentemperatur</header>
<div data-device="Aussentemperatur"
<div data-type="label" data-get="temperature"
data-unit="C"
data-fix="1"
class="cell tall">
</div>
</li>
<!-- ============= Temperatur Verlauf ================ -->
<!-- ====================================== -->
<li data-row="5" data-col="1" data-sizex="3" data-sizey="1">
<header>Temperaturen</header>
<div data-type="svgplot" data-device="SVG_Teich_Log_1" data-gplotfile="SVG_Teich_Log_1" data-logdevice="Teich_Log" data-logfile="CURRENT" data-refresh="300">
</div>
</li>
<!-- ============= Uhr/Datum ================ -->
<!-- ====================================== -->
<li data-row="1" data-col="4" data-sizex="2" data-sizey="1">
<header>Uhrzeit</header>
<div data-type="clock"
data-format="H:i:s"
data-interval="1000"
class="blue great thin" style="margin-top: -5px">
</div>
<div data-type="clock"
data-format="l, d.m.Y"
data-shortday-length="3"
data-interval="1000"
class="">
</div>
</li>
<!-- ============ Füttern=============->
<!-- ====================================== -->
<li data-row="3" data-col="4" data-sizex="2" data-sizey="1">
<div data-type="label" class="cell">Füttern</div>
<div data-type="push"
data-icon="fa-power-off"
data-device="Fuettern "
data-on-color="black"
data-off-color="#808080"
data-on-background-color="cornflowerblue"
data-off-background-color="#3D4C66"
class="bigger">
</div>
</li>
<!-- ============ Zisterne Inhalt=============->
<!-- ====================================== -->
<li data-row="6" data-col="1" data-sizex="2" data-sizey="1">
<div data-type="label" class="cell">Abfrage Zisterne Inhalt</div>
<div data-type="push"
data-icon="fa-power-off"
data-device="WasserstandZisterne "
data-on-color="black"
data-off-color="#808080"
data-on-background-color="cornflowerblue"
data-off-background-color="#3D4C66"
class="bigger">
</div>
</li>
<!-- ============ Zisterne Inhalt Anzeige=============->
<!-- ====================================== -->
<li data-row="3" data-col="3" data-sizex="1" data-sizey="1">
<header>Zisterne Inhalt</header>
<div class="bigger top-space-2x ">
<div data-type="label"
data-device="Zisterne_Inhalt"
data-unit="cm">
</div>
</li>
</body>
</html>
</li>
FTUI mit gridster versucht, die verschiedene Kacheln, optimal zu platzieren. Wenn Platz fehlt, verschiebt er. Und genauso wenn etwas oben frei ist, nimmt er diesen Platz. Man kann auch die Kacheln per Drag & Drop umorganisieren.
Mit meta gridster_disable kannst Du das ein bisschen beeinflüssen.
https://wiki.fhem.de/wiki/FTUI_Layout_Gridster
Nein das habe ich noch nicht probiert. Aber wie kann es sein wenn ich Position 3/1 auswähle er mir es bei 1/1 hinlegt und was anderes verdeckt.
Wahrscheinlich weil Du mehrere divs mit class="gridster" hast
Siehe schon verlinkte Doku
Ja stimmt, das war es.
Hast mir schon wieder geholfen. Danke
Vieleicht kannst du mir ja dabei auch helfen.....
Möchte eine Formel zur Berechnung des Zisterneninhaltes in das Python Skript schreiben.
7,5^2*20*(ARCCOS((7,5-Fuelstand)/7,5)-(7,5-Fuelstand)*WURZEL(2*7,5*Fuelstand -Fuelstand^2)/7,5^2)
So bekomme ich den Fehler
Liter = 7,5^2*20*(ARCCOS((7,5-Fuelstand)/7,5)-(7,5-Fuelstand)*WURZEL(2*7,5*Fuelstand -Fuelstand^2)/7,5^2)
NameError: global name 'ARCCOS' is not defined
Python2 stellt die Arkuskosinus Funktion über den math Modul zur Verfügung (math ist immer geladen)
Die Funktion heisst acos()
Wurzel ist sqrt()
import math
Liter = 7,5^2*20*(math.acos((7,5-Fuelstand)/7,5)-(7,5-Fuelstand)*math.sqrt(2*7,5*Fuelstand -Fuelstand^2)/7,5^2)
Fehler
Liter = 7,5^2*20*(math.acos((7,5-Fuelstand)/7,5)-(7,5-Fuelstand)*math.sqrt(2*7,5*Fuelstand -Fuelstand^2)/7,5^2)
TypeError: unsupported operand type(s) for /: 'tuple' and 'int'
7.5 statt 7,5
** statt ^
Das hättest Du auch selbst finden können.... Ich helfe gerne, aber bitte nicht für Sachen, die man in einem Augenblick mit Google finden kann. Du kannst auch python Dokus lesen
import math
Liter = 7.5^2*20*(math.acos((7.5-Fuelstand)/7.5)-(7.5-Fuelstand)*math.sqrt(2*7.5*Fuelstand-Fuelstand^2)/7.5^2)
Ja hast recht. Hatte ich auch schon gefunden. Aber jetzt das
Traceback (most recent call last):
File "/home/pi/zisterne.py", line 125, in <module>
main()
File "/home/pi/zisterne.py", line 87, in main
Liter = 7.5^2*20*(math.acos((7.5-Fuelstand)/7.5)-(7.5-Fuelstand)*math.sqrt(2*7.5*Fuelstand-Fuelstand^2)/7.5^2)
ValueError: math domain error
Hast Du alle Korrekturen gemacht, die ich geschrieben habe? Das waren nur 2 Zeilen...................................; :-\ :-X
Die math domain error kriegst Du wenn Du z.B. acos (wert) mit wert > 1 kalkulieren willst, oder sqrt von negativen Werte
import cmath
Liter = 7.5**2*20*(cmath.acos((7.5-Fuelstand)/7.5)-(7.5-Fuelstand)*cmath.sqrt(2*7.5*Fuelstand-Fuelstand**2)/7.5**2)
Zeit = time.time()
ZeitStempel = datetime.datetime.fromtimestamp(Zeit).strftime('%Y-%m-%d_%H:%M:%S')
print (ZeitStempel),("Zisterne Fuelhoehe: %.1f cm" % Fuelstand),("Liter: %.0f l" % Liter)
Damit läuft das Skript durch, aber mit Fehler
019-11-26_20:40:42 Zisterne Fuelhoehe: 180.7 cm
Traceback (most recent call last):
File "/home/pi/zisterne.py", line 125, in <module>
main()
File "/home/pi/zisterne.py", line 92, in main
print (ZeitStempel),("Zisterne Fuelhoehe: %.1f cm" % Fuelstand),("Liter: %.0f l" % Liter)
TypeError: float argument required, not complex
Weil Du math durch cmath ersetzt hast
cmath ist für https://de.wikipedia.org/wiki/Komplexe_Zahl, was hier total Unsinn ist
>>> Liter = 7.5**2*20*(cmath.acos((7.5-Fuelstand)/7.5)-(7.5-Fuelstand)*cmath.sqrt(2*7.5*Fuelstand-Fuelstand**2)/7.5**2)
>>> print Liter
(3534.29173529+595090.78626j)
import math
Liter = 7.5**2*20*(math.acos((7.5-Fuelstand)/7.5)-(7.5-Fuelstand)*math.sqrt(2*7.5*Fuelstand-Fuelstand**2)/7.5**2)
Bekomme ich aber wieder diesen Fehler
Traceback (most recent call last):
File "/home/pi/zisterne.py", line 125, in <module>
main()
File "/home/pi/zisterne.py", line 87, in main
Liter = 7.5**2*20*(math.acos((7.5-Fuelstand)/7.5)-(7.5-Fuelstand)*math.sqrt(2*7.5*Fuelstand-Fuelstand**2)/7.5**2)
ValueError: math domain error
Ja, wie gesagt, weil deine Formel versucht arccos (wert) zu kalkulieren, wo wert nicht zwischen -1 und 1
Vermutlich ein Einheitsproblem:
V=r^2*L*(ARCCOS((r-t)/r)-(r-t)*WURZEL(2*r*t-t^2)/r^2)
r=7.5 ... Meter?
L = 20 ... Meter?
t = Fuelstand = HIER MUSS DANN AUCH METER = 1.807 Meter und nicht 180.7
Alle müssen die gleiche Einheit haben, sonst ist die Kalkulation entweder falsch oder... gar nicht machbar
Ja stimmt, ist ein Denkfehler von mir gewesen.
Die eingetragenen Werte sin in dcm um auf Liter zu kommen
Damit hat es geklappt
import math
Liter = 7.5**2*20*(math.acos((7.5-(Fuelstand/10))/7.5)-(7.5-(Fuelstand/10))*math.sqrt(2*7.5*(Fuelstand/10)-(Fuelstand/10)**2)/7.5**2)