http://wiki.fhem.de/w/api.php?action=feedcontributions&user=Thorsten+Pferdek%C3%A4mper&feedformat=atomFHEMWiki - Benutzerbeiträge [de]2024-03-28T12:46:51ZBenutzerbeiträgeMediaWiki 1.39.3http://wiki.fhem.de/w/index.php?title=Co2mini&diff=37227Co2mini2022-02-15T19:29:00Z<p>Thorsten Pferdekämper: Bild vom TFA AIRCO2NTROL Coach eingefügt</p>
<hr />
<div>{{Infobox Hardware|Bild=Co2mini.png|Bildbeschreibung=CO2Mini-Monitor bei schlechter Luft|HWProtocol=Proprietär (?)|HWType=CO2-Sensor|HWCategory=Other Components|HWComm=USB|HWChannels=CO2, Temperatur|HWVoltage=5V|HWPowerConsumption=0,1 - 1|HWPoweredBy=USB|HWSize=115 x 45 x 24 mm (BxHxT) ohne Stecker|HWDeviceFHEM=co2mini|HWManufacturer=TFA Dostmann, CO2Meter.com}}<br />
[[Datei:TfaAirco2ntrolCoach.jpg|alternativtext=TFA AIRCO2NTROL Coach|mini|TFA AIRCO2NTROL Coach]]<br />
Der [[co2mini|CO2Mini-Monitor]] ist ein Raumluftqualitätsmonitor. Er zeigt dem Kohlendioxid-Gehalt der Luft und die Temperatur an. <br />
<br />
Das Gerät bzw. ähnliche Geräte mit denselben Innereien wird auch unter anderem Namen und abweichendem Aussehen verkauft. Mindestens eine Variante liefert noch zusätzlich die relative Feuchte.<br />
<br />
==Features / Funktionen==<br />
Der CO2-Monitor zeigt im Wechsel den CO2-Gehalt der Luft (in ppm) sowie die Temperatur an. Zusätzlich zeigen drei kleine LEDs eine Einschätzung der Luftqualität an (grün, gelb, rot). <br />
<br />
Das USB-Kabel dient nicht nur zur Stromversorgung, sondern das Gerät sendet auch regelmäßig alle paar Sekunden den gemessenen CO2-Gehalt und die Temperatur.<br />
<br />
==Hinweise zum Betrieb mit FHEM==<br />
Die Integration mit FHEM klappt mit Hilfe des Moduls co2mini. Das Modul ist standardmäßig nicht in FHEM enthalten, kann aber folgendermaßen leicht nachinstalliert werden und wird dann auch über den normalen update-Mechanismus aktuell gehalten.<br />
<br />
*<code>update add https://raw.githubusercontent.com/ThorstenPferdekaemper/FHEM-co2mini/master/controls_co2mini.txt</code> <br />
*<code>update all co2mini</code><br />
*<code>shutdown restart</code><br />
Wenn man den Sensor über USB anschließt, dann erscheint er erst einmal als Gerät /dev/hidrawN, also z.B. /dev/hidraw0. Der Benutzer fhem muss auf diese Datei zugreifen können. Am einfachsten kopiert man dazu die Datei /opt/fhem/FHEM/lib/co2mini/90-co2mini.rules in das Verzeichnis /etc/udev/rules.d und startet dann den Server neu. Dadurch erscheint der Sensor auch als /dev/co2mini0 und der Benutzer fhem hat Zugriff darauf.<br />
<br />
Das Modul co2mini funktioniert sowohl mit alten Geräten mit Verschlüsselung als auch mit neueren Geräten ohne Verschlüsselung. Dabei erkennt es selbstständig, ob eine Entschlüsselung notwendig ist. Es gibt dafür kein Attribut oder ähnliches.<br />
<br />
===Quickstart===<br />
Wenn man alles so eingerichtet hat, dann kann man das Gerät in FHEM einfach folgendermaßen anlegen:<br />
<br />
<code>define co2 co2mini</code><br />
<br />
Nach ein paar Sekunden müsste dann der aktuelle CO2-Gehalt und die Temperatur in entsprechenden Readings angezeigt werden.<br />
<br />
Alles weitere ist in der lokalen Gerätedokumentation (Commandref) zu finden.<br />
<br />
===Entferntes FHEM===<br />
Das Modul co2mini startet im Hintergrund einen kleinen HTTP-Server, den man auch benutzen kann, um mit einem entfernten FHEM auf den Sensor zuzugreifen. Dazu definiert man einfach auf dem entfernten FHEM das Gerät mit der Adresse des Rechners, an den das Co2mini-Gerät angeschlossen ist. Also in etwa so:<br />
<br />
<code>define co2 co2mini 192.168.178.23:41042</code><br />
<br />
Natürlich muss dafür auf dem Rechner 192.168.178.23 der co2mini-Server laufen. Das erreicht man einfach dadurch, indem man auf diesem Rechner das co2mini-Device ebenfalls definiert, nur eben wie weiter oben beschrieben. (Der co2mini-Server kann mehrere Clients bedienen.) Wenn man auf diesem Rechner kein komplettes FHEM laufen lassen will, dann muss man selbst dafür sorgen, dass der Server läuft. Das entsprechende Programm liegt in /opt/fhem/FHEM/lib/co2mini und heißt co2mini_server.pl. Am besten man ruft es einmal folgendermaßen auf, um zu erfahren, was es alles kann:<br />
<br />
<code>perl co2mini_server.pl -help</code><br />
<br />
==Bekannte Probleme==<br />
* Wenn man mehrere co2mini-Geräte angeschlossen hat, dann funktioniert die mitgelieferte udev-Regel wahrscheinlich nur für eins der Geräte. In dem Fall müsste man aber entsprechende udev-Regeln anlegen können, um die Geräte auseinanderzuhalten.<br />
<br />
==Weblinks==<br />
*[https://www.co2meter.com/products/co2mini-co2-indoor-air-quality-monitor CO2Mini von co2meter.com]<br />
*[https://www.tfa-dostmann.de/produkt/co2-monitor-airco2ntrol-mini-31-5006/ AIRCO2NTROL MINI von TFA]<br />
*[https://www.tfa-dostmann.de/en/product/co2-monitor-airco2ntrol-coach-31-5009/ AIRCO2NTROL COACH von TFA]<br />
*FHEM Forum [https://forum.fhem.de/index.php?topic=41750.0 Neues Modul: CO2-Sensor co2mini]<br />
<br />
[[Kategorie: Other Components]]</div>Thorsten Pferdekämperhttp://wiki.fhem.de/w/index.php?title=Datei:TfaAirco2ntrolCoach.jpg&diff=37226Datei:TfaAirco2ntrolCoach.jpg2022-02-15T19:28:08Z<p>Thorsten Pferdekämper: </p>
<hr />
<div>TFA AIRCO2NTROL Coach</div>Thorsten Pferdekämperhttp://wiki.fhem.de/w/index.php?title=Co2mini&diff=37218Co2mini2022-02-13T20:43:54Z<p>Thorsten Pferdekämper: </p>
<hr />
<div>{{Infobox Hardware|Bild=Co2mini.png|Bildbeschreibung=CO2Mini-Monitor bei schlechter Luft|HWProtocol=Proprietär (?)|HWType=CO2-Sensor|HWCategory=Other Components|HWComm=USB|HWChannels=CO2, Temperatur|HWVoltage=5V|HWPowerConsumption=0,1 - 1|HWPoweredBy=USB|HWSize=115 x 45 x 24 mm (BxHxT) ohne Stecker|HWDeviceFHEM=co2mini|HWManufacturer=TFA Dostmann, CO2Meter.com}}<br />
<br />
Der [[co2mini|CO2Mini-Monitor]] ist ein Raumluftqualitätsmonitor. Er zeigt dem Kohlendioxid-Gehalt der Luft und die Temperatur an. <br />
<br />
Das Gerät bzw. ähnliche Geräte mit denselben Innereien wird auch unter anderem Namen und abweichendem Aussehen verkauft. Mindestens eine Variante liefert noch zusätzlich die relative Feuchte.<br />
<br />
==Features / Funktionen==<br />
Der CO2-Monitor zeigt im Wechsel den CO2-Gehalt der Luft (in ppm) sowie die Temperatur an. Zusätzlich zeigen drei kleine LEDs eine Einschätzung der Luftqualität an (grün, gelb, rot). <br />
<br />
Das USB-Kabel dient nicht nur zur Stromversorgung, sondern das Gerät sendet auch regelmäßig alle paar Sekunden den gemessenen CO2-Gehalt und die Temperatur.<br />
<br />
==Hinweise zum Betrieb mit FHEM==<br />
Die Integration mit FHEM klappt mit Hilfe des Moduls co2mini. Das Modul ist standardmäßig nicht in FHEM enthalten, kann aber folgendermaßen leicht nachinstalliert werden und wird dann auch über den normalen update-Mechanismus aktuell gehalten.<br />
<br />
*<code>update add https://raw.githubusercontent.com/ThorstenPferdekaemper/FHEM-co2mini/master/controls_co2mini.txt</code> <br />
*<code>update all co2mini</code><br />
*<code>shutdown restart</code><br />
Wenn man den Sensor über USB anschließt, dann erscheint er erst einmal als Gerät /dev/hidrawN, also z.B. /dev/hidraw0. Der Benutzer fhem muss auf diese Datei zugreifen können. Am einfachsten kopiert man dazu die Datei /opt/fhem/FHEM/lib/co2mini/90-co2mini.rules in das Verzeichnis /etc/udev/rules.d und startet dann den Server neu. Dadurch erscheint der Sensor auch als /dev/co2mini0 und der Benutzer fhem hat Zugriff darauf.<br />
<br />
Das Modul co2mini funktioniert sowohl mit alten Geräten mit Verschlüsselung als auch mit neueren Geräten ohne Verschlüsselung. Dabei erkennt es selbstständig, ob eine Entschlüsselung notwendig ist. Es gibt dafür kein Attribut oder ähnliches.<br />
<br />
===Quickstart===<br />
Wenn man alles so eingerichtet hat, dann kann man das Gerät in FHEM einfach folgendermaßen anlegen:<br />
<br />
<code>define co2 co2mini</code><br />
<br />
Nach ein paar Sekunden müsste dann der aktuelle CO2-Gehalt und die Temperatur in entsprechenden Readings angezeigt werden.<br />
<br />
Alles weitere ist in der lokalen Gerätedokumentation (Commandref) zu finden.<br />
<br />
===Entferntes FHEM===<br />
Das Modul co2mini startet im Hintergrund einen kleinen HTTP-Server, den man auch benutzen kann, um mit einem entfernten FHEM auf den Sensor zuzugreifen. Dazu definiert man einfach auf dem entfernten FHEM das Gerät mit der Adresse des Rechners, an den das Co2mini-Gerät angeschlossen ist. Also in etwa so:<br />
<br />
<code>define co2 co2mini 192.168.178.23:41042</code><br />
<br />
Natürlich muss dafür auf dem Rechner 192.168.178.23 der co2mini-Server laufen. Das erreicht man einfach dadurch, indem man auf diesem Rechner das co2mini-Device ebenfalls definiert, nur eben wie weiter oben beschrieben. (Der co2mini-Server kann mehrere Clients bedienen.) Wenn man auf diesem Rechner kein komplettes FHEM laufen lassen will, dann muss man selbst dafür sorgen, dass der Server läuft. Das entsprechende Programm liegt in /opt/fhem/FHEM/lib/co2mini und heißt co2mini_server.pl. Am besten man ruft es einmal folgendermaßen auf, um zu erfahren, was es alles kann:<br />
<br />
<code>perl co2mini_server.pl -help</code><br />
<br />
==Bekannte Probleme==<br />
* Wenn man mehrere co2mini-Geräte angeschlossen hat, dann funktioniert die mitgelieferte udev-Regel wahrscheinlich nur für eins der Geräte. In dem Fall müsste man aber entsprechende udev-Regeln anlegen können, um die Geräte auseinanderzuhalten.<br />
<br />
==Weblinks==<br />
*[https://www.co2meter.com/products/co2mini-co2-indoor-air-quality-monitor CO2Mini von co2meter.com]<br />
*[https://www.tfa-dostmann.de/produkt/co2-monitor-airco2ntrol-mini-31-5006/ AIRCO2NTROL MINI von TFA]<br />
*[https://www.tfa-dostmann.de/en/product/co2-monitor-airco2ntrol-coach-31-5009/ AIRCO2NTROL COACH von TFA]<br />
*FHEM Forum [https://forum.fhem.de/index.php?topic=41750.0 Neues Modul: CO2-Sensor co2mini]<br />
<br />
[[Kategorie: Other Components]]</div>Thorsten Pferdekämperhttp://wiki.fhem.de/w/index.php?title=Co2mini&diff=37217Co2mini2022-02-13T20:42:15Z<p>Thorsten Pferdekämper: Warnung "Modul nicht fertig" entfernt. Links verschönert, Link zu weiterem Gerät hinzugefügt</p>
<hr />
<div>{{Infobox Hardware|Bild=Co2mini.png|Bildbeschreibung=CO2Mini-Monitor bei schlechter Luft|HWProtocol=Proprietär (?)|HWType=CO2-Sensor|HWCategory=Other Components|HWComm=USB|HWChannels=CO2, Temperatur|HWVoltage=5V|HWPowerConsumption=0,1 - 1|HWPoweredBy=USB|HWSize=115 x 45 x 24 mm (BxHxT) ohne Stecker|HWDeviceFHEM=co2mini|HWManufacturer=TFA Dostmann, CO2Meter.com}}<br />
<br />
Der [[co2mini|CO2Mini-Monitor]] ist ein Raumluftqualitätsmonitor. Er zeigt dem Kohlendioxid-Gehalt der Luft und die Temperatur an.<br />
<br />
Möglicherweise wird das Gerät bzw. ähnliche Geräte mit denselben Innereien auch unter anderem Namen bzw. mit leicht abweichendem Aussehen verkauft.<br />
<br />
==Features / Funktionen==<br />
Der CO2-Monitor zeigt im Wechsel den CO2-Gehalt der Luft (in ppm) sowie die Temperatur an. Zusätzlich zeigen drei kleine LEDs eine Einschätzung der Luftqualität an (grün, gelb, rot). <br />
<br />
Das USB-Kabel dient nicht nur zur Stromversorgung, sondern das Gerät sendet auch regelmäßig alle paar Sekunden den gemessenen CO2-Gehalt und die Temperatur.<br />
<br />
==Hinweise zum Betrieb mit FHEM==<br />
Die Integration mit FHEM klappt mit Hilfe des Moduls co2mini. Das Modul ist standardmäßig nicht in FHEM enthalten, kann aber folgendermaßen leicht nachinstalliert werden und wird dann auch über den normalen update-Mechanismus aktuell gehalten.<br />
<br />
*<code>update add https://raw.githubusercontent.com/ThorstenPferdekaemper/FHEM-co2mini/master/controls_co2mini.txt</code> <br />
*<code>update all co2mini</code><br />
*<code>shutdown restart</code><br />
Wenn man den Sensor über USB anschließt, dann erscheint er erst einmal als Gerät /dev/hidrawN, also z.B. /dev/hidraw0. Der Benutzer fhem muss auf diese Datei zugreifen können. Am einfachsten kopiert man dazu die Datei /opt/fhem/FHEM/lib/co2mini/90-co2mini.rules in das Verzeichnis /etc/udev/rules.d und startet dann den Server neu. Dadurch erscheint der Sensor auch als /dev/co2mini0 und der Benutzer fhem hat Zugriff darauf.<br />
<br />
Das Modul co2mini funktioniert sowohl mit alten Geräten mit Verschlüsselung als auch mit neueren Geräten ohne Verschlüsselung. Dabei erkennt es selbstständig, ob eine Entschlüsselung notwendig ist. Es gibt dafür kein Attribut oder ähnliches.<br />
<br />
===Quickstart===<br />
Wenn man alles so eingerichtet hat, dann kann man das Gerät in FHEM einfach folgendermaßen anlegen:<br />
<br />
<code>define co2 co2mini</code><br />
<br />
Nach ein paar Sekunden müsste dann der aktuelle CO2-Gehalt und die Temperatur in entsprechenden Readings angezeigt werden.<br />
<br />
Alles weitere ist in der lokalen Gerätedokumentation (Commandref) zu finden.<br />
<br />
===Entferntes FHEM===<br />
Das Modul co2mini startet im Hintergrund einen kleinen HTTP-Server, den man auch benutzen kann, um mit einem entfernten FHEM auf den Sensor zuzugreifen. Dazu definiert man einfach auf dem entfernten FHEM das Gerät mit der Adresse des Rechners, an den das Co2mini-Gerät angeschlossen ist. Also in etwa so:<br />
<br />
<code>define co2 co2mini 192.168.178.23:41042</code><br />
<br />
Natürlich muss dafür auf dem Rechner 192.168.178.23 der co2mini-Server laufen. Das erreicht man einfach dadurch, indem man auf diesem Rechner das co2mini-Device ebenfalls definiert, nur eben wie weiter oben beschrieben. (Der co2mini-Server kann mehrere Clients bedienen.) Wenn man auf diesem Rechner kein komplettes FHEM laufen lassen will, dann muss man selbst dafür sorgen, dass der Server läuft. Das entsprechende Programm liegt in /opt/fhem/FHEM/lib/co2mini und heißt co2mini_server.pl. Am besten man ruft es einmal folgendermaßen auf, um zu erfahren, was es alles kann:<br />
<br />
<code>perl co2mini_server.pl -help</code><br />
<br />
==Bekannte Probleme==<br />
* Wenn man mehrere co2mini-Geräte angeschlossen hat, dann funktioniert die mitgelieferte udev-Regel wahrscheinlich nur für eins der Geräte. In dem Fall müsste man aber entsprechende udev-Regeln anlegen können, um die Geräte auseinanderzuhalten.<br />
<br />
==Weblinks==<br />
*[https://www.co2meter.com/products/co2mini-co2-indoor-air-quality-monitor CO2Mini von co2meter.com ]<br />
*[https://www.tfa-dostmann.de/produkt/co2-monitor-airco2ntrol-mini-31-5006/ AIRCO2NTROL MINI von TFA]<br />
*[https://www.tfa-dostmann.de/en/product/co2-monitor-airco2ntrol-coach-31-5009/ AIRCO2NTROL COACH von TFA]<br />
*FHEM Forum [https://forum.fhem.de/index.php?topic=41750.0 Neues Modul: CO2-Sensor co2mini]<br />
<br />
[[Kategorie: Other Components]]</div>Thorsten Pferdekämperhttp://wiki.fhem.de/w/index.php?title=Co2mini&diff=37216Co2mini2022-02-11T20:47:24Z<p>Thorsten Pferdekämper: /* Hinweise zum Betrieb mit FHEM */</p>
<hr />
<div>{{Infobox Hardware|Bild=Co2mini.png|Bildbeschreibung=CO2Mini-Monitor bei schlechter Luft|HWProtocol=Proprietär (?)|HWType=CO2-Sensor|HWCategory=Other Components|HWComm=USB|HWChannels=CO2, Temperatur|HWVoltage=5V|HWPowerConsumption=0,1 - 1|HWPoweredBy=USB|HWSize=115 x 45 x 24 mm (BxHxT) ohne Stecker|HWDeviceFHEM=co2mini|HWManufacturer=TFA Dostmann, CO2Meter.com}}<br />
<br />
Der [[co2mini|CO2Mini-Monitor]] ist ein Raumluftqualitätsmonitor. Er zeigt dem Kohlendioxid-Gehalt der Luft und die Temperatur an.<br />
<br />
Möglicherweise wird das Gerät bzw. ähnliche Geräte mit denselben Innereien auch unter anderem Namen bzw. mit leicht abweichendem Aussehen verkauft.<br />
<br />
'''Hinweis: Die Anbindung an FHEM sollte prinzipiell so funktionieren, wie unten beschrieben. Allerdings ist das Modul noch nicht ganz fertig. Insbesondere die Dokumentation wird noch überarbeitet. Außerdem fehlen noch ein paar Feinheiten und Konfigurationsmöglichkeiten.'''<br />
<br />
==Features / Funktionen==<br />
Der CO2-Monitor zeigt im Wechsel den CO2-Gehalt der Luft (in ppm) sowie die Temperatur an. Zusätzlich zeigen drei kleine LEDs eine Einschätzung der Luftqualität an (grün, gelb, rot). <br />
<br />
Das USB-Kabel dient nicht nur zur Stromversorgung, sondern das Gerät sendet auch regelmäßig alle paar Sekunden den gemessenen CO2-Gehalt und die Temperatur.<br />
<br />
==Hinweise zum Betrieb mit FHEM==<br />
Die Integration mit FHEM klappt mit Hilfe des Moduls co2mini. Das Modul ist standardmäßig nicht in FHEM enthalten, kann aber folgendermaßen leicht nachinstalliert werden und wird dann auch über den normalen update-Mechanismus aktuell gehalten.<br />
<br />
*<code>update add https://raw.githubusercontent.com/ThorstenPferdekaemper/FHEM-co2mini/master/controls_co2mini.txt</code> <br />
*<code>update all co2mini</code><br />
*<code>shutdown restart</code><br />
Wenn man den Sensor über USB anschließt, dann erscheint er erst einmal als Gerät /dev/hidrawN, also z.B. /dev/hidraw0. Der Benutzer fhem muss auf diese Datei zugreifen können. Am einfachsten kopiert man dazu die Datei /opt/fhem/FHEM/lib/co2mini/90-co2mini.rules in das Verzeichnis /etc/udev/rules.d und startet dann den Server neu. Dadurch erscheint der Sensor auch als /dev/co2mini0 und der Benutzer fhem hat Zugriff darauf.<br />
<br />
Das Modul co2mini funktioniert sowohl mit alten Geräten mit Verschlüsselung als auch mit neueren Geräten ohne Verschlüsselung. Dabei erkennt es selbstständig, ob eine Entschlüsselung notwendig ist. Es gibt dafür kein Attribut oder ähnliches.<br />
<br />
===Quickstart===<br />
Wenn man alles so eingerichtet hat, dann kann man das Gerät in FHEM einfach folgendermaßen anlegen:<br />
<br />
<code>define co2 co2mini</code><br />
<br />
Nach ein paar Sekunden müsste dann der aktuelle CO2-Gehalt und die Temperatur in entsprechenden Readings angezeigt werden.<br />
<br />
Alles weitere ist in der lokalen Gerätedokumentation (Commandref) zu finden.<br />
<br />
===Entferntes FHEM===<br />
Das Modul co2mini startet im Hintergrund einen kleinen HTTP-Server, den man auch benutzen kann, um mit einem entfernten FHEM auf den Sensor zuzugreifen. Dazu definiert man einfach auf dem entfernten FHEM das Gerät mit der Adresse des Rechners, an den das Co2mini-Gerät angeschlossen ist. Also in etwa so:<br />
<br />
<code>define co2 co2mini 192.168.178.23:41042</code><br />
<br />
Natürlich muss dafür auf dem Rechner 192.168.178.23 der co2mini-Server laufen. Das erreicht man einfach dadurch, indem man auf diesem Rechner das co2mini-Device ebenfalls definiert, nur eben wie weiter oben beschrieben. (Der co2mini-Server kann mehrere Clients bedienen.) Wenn man auf diesem Rechner kein komplettes FHEM laufen lassen will, dann muss man selbst dafür sorgen, dass der Server läuft. Das entsprechende Programm liegt in /opt/fhem/FHEM/lib/co2mini und heißt co2mini_server.pl. Am besten man ruft es einmal folgendermaßen auf, um zu erfahren, was es alles kann:<br />
<br />
<code>perl co2mini_server.pl -help</code><br />
<br />
==Bekannte Probleme==<br />
* Wenn man mehrere co2mini-Geräte angeschlossen hat, dann funktioniert die mitgelieferte udev-Regel wahrscheinlich nur für eins der Geräte. In dem Fall müsste man aber entsprechende udev-Regeln anlegen können, um die Geräte auseinanderzuhalten.<br />
<br />
==Weblinks==<br />
*Hersteller/Vertrieb [https://www.co2meter.com/products/co2mini-co2-indoor-air-quality-monitor co2meter.com]<br />
*Hersteller/Vertrieb [https://www.tfa-dostmann.de/produkt/co2-monitor-airco2ntrol-mini-31-5006/ TFA Dostmann]<br />
*FHEM Forum [https://forum.fhem.de/index.php?topic=41750.0 Neues Modul: CO2-Sensor co2mini]<br />
<br />
[[Kategorie: Other Components]]</div>Thorsten Pferdekämperhttp://wiki.fhem.de/w/index.php?title=Co2mini&diff=37215Co2mini2022-02-11T20:45:26Z<p>Thorsten Pferdekämper: /* Bekannte Probleme */</p>
<hr />
<div>{{Infobox Hardware|Bild=Co2mini.png|Bildbeschreibung=CO2Mini-Monitor bei schlechter Luft|HWProtocol=Proprietär (?)|HWType=CO2-Sensor|HWCategory=Other Components|HWComm=USB|HWChannels=CO2, Temperatur|HWVoltage=5V|HWPowerConsumption=0,1 - 1|HWPoweredBy=USB|HWSize=115 x 45 x 24 mm (BxHxT) ohne Stecker|HWDeviceFHEM=co2mini|HWManufacturer=TFA Dostmann, CO2Meter.com}}<br />
<br />
Der [[co2mini|CO2Mini-Monitor]] ist ein Raumluftqualitätsmonitor. Er zeigt dem Kohlendioxid-Gehalt der Luft und die Temperatur an.<br />
<br />
Möglicherweise wird das Gerät bzw. ähnliche Geräte mit denselben Innereien auch unter anderem Namen bzw. mit leicht abweichendem Aussehen verkauft.<br />
<br />
'''Hinweis: Die Anbindung an FHEM sollte prinzipiell so funktionieren, wie unten beschrieben. Allerdings ist das Modul noch nicht ganz fertig. Insbesondere die Dokumentation wird noch überarbeitet. Außerdem fehlen noch ein paar Feinheiten und Konfigurationsmöglichkeiten.'''<br />
<br />
==Features / Funktionen==<br />
Der CO2-Monitor zeigt im Wechsel den CO2-Gehalt der Luft (in ppm) sowie die Temperatur an. Zusätzlich zeigen drei kleine LEDs eine Einschätzung der Luftqualität an (grün, gelb, rot). <br />
<br />
Das USB-Kabel dient nicht nur zur Stromversorgung, sondern das Gerät sendet auch regelmäßig alle paar Sekunden den gemessenen CO2-Gehalt und die Temperatur.<br />
<br />
==Hinweise zum Betrieb mit FHEM==<br />
Die Integration mit FHEM klappt mit Hilfe des Moduls co2mini. Das Modul ist standardmäßig nicht in FHEM enthalten, kann aber folgendermaßen leicht nachinstalliert werden und wird dann auch über den normalen update-Mechanismus aktuell gehalten.<br />
<br />
*<code>update add https://raw.githubusercontent.com/ThorstenPferdekaemper/FHEM-co2mini/master/controls_co2mini.txt</code> <br />
*<code>update all co2mini</code><br />
*<code>shutdown restart</code><br />
Wenn man den Sensor über USB anschließt, dann erscheint er erst einmal als Gerät /dev/hidrawN, also z.B. /dev/hidraw0. Der Benutzer fhem muss auf diese Datei zugreifen können. Am einfachsten kopiert man dazu die Datei /opt/fhem/FHEM/lib/co2mini/90-co2mini.rules in das Verzeichnis /etc/udev/rules.d und startet dann den Server neu. Dadurch erscheint der Sensor auch als /dev/co2mini0 und der Benutzer fhem hat Zugriff darauf.<br />
<br />
===Quickstart===<br />
Wenn man alles so eingerichtet hat, dann kann man das Gerät in FHEM einfach folgendermaßen anlegen:<br />
<br />
<code>define co2 co2mini</code><br />
<br />
Nach ein paar Sekunden müsste dann der aktuelle CO2-Gehalt und die Temperatur in entsprechenden Readings angezeigt werden.<br />
<br />
Alles weitere ist in der lokalen Gerätedokumentation (Commandref) zu finden.<br />
<br />
===Entferntes FHEM===<br />
Das Modul co2mini startet im Hintergrund einen kleinen HTTP-Server, den man auch benutzen kann, um mit einem entfernten FHEM auf den Sensor zuzugreifen. Dazu definiert man einfach auf dem entfernten FHEM das Gerät mit der Adresse des Rechners, an den das Co2mini-Gerät angeschlossen ist. Also in etwa so:<br />
<br />
<code>define co2 co2mini 192.168.178.23:41042</code><br />
<br />
Natürlich muss dafür auf dem Rechner 192.168.178.23 der co2mini-Server laufen. Das erreicht man einfach dadurch, indem man auf diesem Rechner das co2mini-Device ebenfalls definiert, nur eben wie weiter oben beschrieben. (Der co2mini-Server kann mehrere Clients bedienen.) Wenn man auf diesem Rechner kein komplettes FHEM laufen lassen will, dann muss man selbst dafür sorgen, dass der Server läuft. Das entsprechende Programm liegt in /opt/fhem/FHEM/lib/co2mini und heißt co2mini_server.pl. Am besten man ruft es einmal folgendermaßen auf, um zu erfahren, was es alles kann:<br />
<br />
<code>perl co2mini_server.pl -help</code><br />
<br />
==Bekannte Probleme==<br />
* Wenn man mehrere co2mini-Geräte angeschlossen hat, dann funktioniert die mitgelieferte udev-Regel wahrscheinlich nur für eins der Geräte. In dem Fall müsste man aber entsprechende udev-Regeln anlegen können, um die Geräte auseinanderzuhalten.<br />
<br />
==Weblinks==<br />
*Hersteller/Vertrieb [https://www.co2meter.com/products/co2mini-co2-indoor-air-quality-monitor co2meter.com]<br />
*Hersteller/Vertrieb [https://www.tfa-dostmann.de/produkt/co2-monitor-airco2ntrol-mini-31-5006/ TFA Dostmann]<br />
*FHEM Forum [https://forum.fhem.de/index.php?topic=41750.0 Neues Modul: CO2-Sensor co2mini]<br />
<br />
[[Kategorie: Other Components]]</div>Thorsten Pferdekämperhttp://wiki.fhem.de/w/index.php?title=Co2mini&diff=37195Co2mini2022-02-06T20:45:15Z<p>Thorsten Pferdekämper: /* Bekannte Probleme */</p>
<hr />
<div>{{Infobox Hardware|Bild=Co2mini.png|Bildbeschreibung=CO2Mini-Monitor bei schlechter Luft|HWProtocol=Proprietär (?)|HWType=CO2-Sensor|HWCategory=Other Components|HWComm=USB|HWChannels=CO2, Temperatur|HWVoltage=5V|HWPowerConsumption=0,1 - 1|HWPoweredBy=USB|HWSize=115 x 45 x 24 mm (BxHxT) ohne Stecker|HWDeviceFHEM=co2mini|HWManufacturer=TFA Dostmann, CO2Meter.com}}<br />
<br />
Der [[co2mini|CO2Mini-Monitor]] ist ein Raumluftqualitätsmonitor. Er zeigt dem Kohlendioxid-Gehalt der Luft und die Temperatur an.<br />
<br />
Möglicherweise wird das Gerät bzw. ähnliche Geräte mit denselben Innereien auch unter anderem Namen bzw. mit leicht abweichendem Aussehen verkauft.<br />
<br />
'''Hinweis: Die Anbindung an FHEM sollte prinzipiell so funktionieren, wie unten beschrieben. Allerdings ist das Modul noch nicht ganz fertig. Insbesondere die Dokumentation wird noch überarbeitet. Außerdem fehlen noch ein paar Feinheiten und Konfigurationsmöglichkeiten.'''<br />
<br />
==Features / Funktionen==<br />
Der CO2-Monitor zeigt im Wechsel den CO2-Gehalt der Luft (in ppm) sowie die Temperatur an. Zusätzlich zeigen drei kleine LEDs eine Einschätzung der Luftqualität an (grün, gelb, rot). <br />
<br />
Das USB-Kabel dient nicht nur zur Stromversorgung, sondern das Gerät sendet auch regelmäßig alle paar Sekunden den gemessenen CO2-Gehalt und die Temperatur.<br />
<br />
==Hinweise zum Betrieb mit FHEM==<br />
Die Integration mit FHEM klappt mit Hilfe des Moduls co2mini. Das Modul ist standardmäßig nicht in FHEM enthalten, kann aber folgendermaßen leicht nachinstalliert werden und wird dann auch über den normalen update-Mechanismus aktuell gehalten.<br />
<br />
*<code>update add https://raw.githubusercontent.com/ThorstenPferdekaemper/FHEM-co2mini/master/controls_co2mini.txt</code> <br />
*<code>update all co2mini</code><br />
*<code>shutdown restart</code><br />
Wenn man den Sensor über USB anschließt, dann erscheint er erst einmal als Gerät /dev/hidrawN, also z.B. /dev/hidraw0. Der Benutzer fhem muss auf diese Datei zugreifen können. Am einfachsten kopiert man dazu die Datei /opt/fhem/FHEM/lib/co2mini/90-co2mini.rules in das Verzeichnis /etc/udev/rules.d und startet dann den Server neu. Dadurch erscheint der Sensor auch als /dev/co2mini0 und der Benutzer fhem hat Zugriff darauf.<br />
<br />
===Quickstart===<br />
Wenn man alles so eingerichtet hat, dann kann man das Gerät in FHEM einfach folgendermaßen anlegen:<br />
<br />
<code>define co2 co2mini</code><br />
<br />
Nach ein paar Sekunden müsste dann der aktuelle CO2-Gehalt und die Temperatur in entsprechenden Readings angezeigt werden.<br />
<br />
Alles weitere ist in der lokalen Gerätedokumentation (Commandref) zu finden.<br />
<br />
===Entferntes FHEM===<br />
Das Modul co2mini startet im Hintergrund einen kleinen HTTP-Server, den man auch benutzen kann, um mit einem entfernten FHEM auf den Sensor zuzugreifen. Dazu definiert man einfach auf dem entfernten FHEM das Gerät mit der Adresse des Rechners, an den das Co2mini-Gerät angeschlossen ist. Also in etwa so:<br />
<br />
<code>define co2 co2mini 192.168.178.23:41042</code><br />
<br />
Natürlich muss dafür auf dem Rechner 192.168.178.23 der co2mini-Server laufen. Das erreicht man einfach dadurch, indem man auf diesem Rechner das co2mini-Device ebenfalls definiert, nur eben wie weiter oben beschrieben. (Der co2mini-Server kann mehrere Clients bedienen.) Wenn man auf diesem Rechner kein komplettes FHEM laufen lassen will, dann muss man selbst dafür sorgen, dass der Server läuft. Das entsprechende Programm liegt in /opt/fhem/FHEM/lib/co2mini und heißt co2mini_server.pl. Am besten man ruft es einmal folgendermaßen auf, um zu erfahren, was es alles kann:<br />
<br />
<code>perl co2mini_server.pl -help</code><br />
<br />
==Bekannte Probleme==<br />
* Wenn man mehrere co2mini-Geräte angeschlossen hat, dann funktioniert die mitgelieferte udev-Regel wahrscheinlich nur für eins der Geräte. In dem Fall müsste man aber entsprechende udev-Regeln anlegen können, um die Geräte auseinanderzuhalten.<br />
* Alte Geräte, die noch mit Verschlüsselung arbeiten, funktionieren momentan nicht.<br />
<br />
==Weblinks==<br />
*Hersteller/Vertrieb [https://www.co2meter.com/products/co2mini-co2-indoor-air-quality-monitor co2meter.com]<br />
*Hersteller/Vertrieb [https://www.tfa-dostmann.de/produkt/co2-monitor-airco2ntrol-mini-31-5006/ TFA Dostmann]<br />
*FHEM Forum [https://forum.fhem.de/index.php?topic=41750.0 Neues Modul: CO2-Sensor co2mini]<br />
<br />
[[Kategorie: Other Components]]</div>Thorsten Pferdekämperhttp://wiki.fhem.de/w/index.php?title=Co2mini&diff=37194Co2mini2022-02-06T20:14:27Z<p>Thorsten Pferdekämper: /* Weblinks */</p>
<hr />
<div>{{Infobox Hardware|Bild=Co2mini.png|Bildbeschreibung=CO2Mini-Monitor bei schlechter Luft|HWProtocol=Proprietär (?)|HWType=CO2-Sensor|HWCategory=Other Components|HWComm=USB|HWChannels=CO2, Temperatur|HWVoltage=5V|HWPowerConsumption=0,1 - 1|HWPoweredBy=USB|HWSize=115 x 45 x 24 mm (BxHxT) ohne Stecker|HWDeviceFHEM=co2mini|HWManufacturer=TFA Dostmann, CO2Meter.com}}<br />
<br />
Der [[co2mini|CO2Mini-Monitor]] ist ein Raumluftqualitätsmonitor. Er zeigt dem Kohlendioxid-Gehalt der Luft und die Temperatur an.<br />
<br />
Möglicherweise wird das Gerät bzw. ähnliche Geräte mit denselben Innereien auch unter anderem Namen bzw. mit leicht abweichendem Aussehen verkauft.<br />
<br />
'''Hinweis: Die Anbindung an FHEM sollte prinzipiell so funktionieren, wie unten beschrieben. Allerdings ist das Modul noch nicht ganz fertig. Insbesondere die Dokumentation wird noch überarbeitet. Außerdem fehlen noch ein paar Feinheiten und Konfigurationsmöglichkeiten.'''<br />
<br />
==Features / Funktionen==<br />
Der CO2-Monitor zeigt im Wechsel den CO2-Gehalt der Luft (in ppm) sowie die Temperatur an. Zusätzlich zeigen drei kleine LEDs eine Einschätzung der Luftqualität an (grün, gelb, rot). <br />
<br />
Das USB-Kabel dient nicht nur zur Stromversorgung, sondern das Gerät sendet auch regelmäßig alle paar Sekunden den gemessenen CO2-Gehalt und die Temperatur.<br />
<br />
==Hinweise zum Betrieb mit FHEM==<br />
Die Integration mit FHEM klappt mit Hilfe des Moduls co2mini. Das Modul ist standardmäßig nicht in FHEM enthalten, kann aber folgendermaßen leicht nachinstalliert werden und wird dann auch über den normalen update-Mechanismus aktuell gehalten.<br />
<br />
*<code>update add https://raw.githubusercontent.com/ThorstenPferdekaemper/FHEM-co2mini/master/controls_co2mini.txt</code> <br />
*<code>update all co2mini</code><br />
*<code>shutdown restart</code><br />
Wenn man den Sensor über USB anschließt, dann erscheint er erst einmal als Gerät /dev/hidrawN, also z.B. /dev/hidraw0. Der Benutzer fhem muss auf diese Datei zugreifen können. Am einfachsten kopiert man dazu die Datei /opt/fhem/FHEM/lib/co2mini/90-co2mini.rules in das Verzeichnis /etc/udev/rules.d und startet dann den Server neu. Dadurch erscheint der Sensor auch als /dev/co2mini0 und der Benutzer fhem hat Zugriff darauf.<br />
<br />
===Quickstart===<br />
Wenn man alles so eingerichtet hat, dann kann man das Gerät in FHEM einfach folgendermaßen anlegen:<br />
<br />
<code>define co2 co2mini</code><br />
<br />
Nach ein paar Sekunden müsste dann der aktuelle CO2-Gehalt und die Temperatur in entsprechenden Readings angezeigt werden.<br />
<br />
Alles weitere ist in der lokalen Gerätedokumentation (Commandref) zu finden.<br />
<br />
===Entferntes FHEM===<br />
Das Modul co2mini startet im Hintergrund einen kleinen HTTP-Server, den man auch benutzen kann, um mit einem entfernten FHEM auf den Sensor zuzugreifen. Dazu definiert man einfach auf dem entfernten FHEM das Gerät mit der Adresse des Rechners, an den das Co2mini-Gerät angeschlossen ist. Also in etwa so:<br />
<br />
<code>define co2 co2mini 192.168.178.23:41042</code><br />
<br />
Natürlich muss dafür auf dem Rechner 192.168.178.23 der co2mini-Server laufen. Das erreicht man einfach dadurch, indem man auf diesem Rechner das co2mini-Device ebenfalls definiert, nur eben wie weiter oben beschrieben. (Der co2mini-Server kann mehrere Clients bedienen.) Wenn man auf diesem Rechner kein komplettes FHEM laufen lassen will, dann muss man selbst dafür sorgen, dass der Server läuft. Das entsprechende Programm liegt in /opt/fhem/FHEM/lib/co2mini und heißt co2mini_server.pl. Am besten man ruft es einmal folgendermaßen auf, um zu erfahren, was es alles kann:<br />
<br />
<code>perl co2mini_server.pl -help</code><br />
<br />
==Bekannte Probleme==<br />
* Wenn man mehrere co2mini-Geräte angeschlossen hat, dann funktioniert die mitgelieferte udev-Regel wahrscheinlich nur für eins der Geräte. In dem Fall müsste man aber entsprechende udev-Regeln anlegen können, um die Geräte auseinanderzuhalten.<br />
<br />
==Weblinks==<br />
*Hersteller/Vertrieb [https://www.co2meter.com/products/co2mini-co2-indoor-air-quality-monitor co2meter.com]<br />
*Hersteller/Vertrieb [https://www.tfa-dostmann.de/produkt/co2-monitor-airco2ntrol-mini-31-5006/ TFA Dostmann]<br />
*FHEM Forum [https://forum.fhem.de/index.php?topic=41750.0 Neues Modul: CO2-Sensor co2mini]<br />
<br />
[[Kategorie: Other Components]]</div>Thorsten Pferdekämperhttp://wiki.fhem.de/w/index.php?title=Co2mini&diff=37193Co2mini2022-02-06T20:11:50Z<p>Thorsten Pferdekämper: </p>
<hr />
<div>{{Infobox Hardware|Bild=Co2mini.png|Bildbeschreibung=CO2Mini-Monitor bei schlechter Luft|HWProtocol=Proprietär (?)|HWType=CO2-Sensor|HWCategory=Other Components|HWComm=USB|HWChannels=CO2, Temperatur|HWVoltage=5V|HWPowerConsumption=0,1 - 1|HWPoweredBy=USB|HWSize=115 x 45 x 24 mm (BxHxT) ohne Stecker|HWDeviceFHEM=co2mini|HWManufacturer=TFA Dostmann, CO2Meter.com}}<br />
<br />
Der [[co2mini|CO2Mini-Monitor]] ist ein Raumluftqualitätsmonitor. Er zeigt dem Kohlendioxid-Gehalt der Luft und die Temperatur an.<br />
<br />
Möglicherweise wird das Gerät bzw. ähnliche Geräte mit denselben Innereien auch unter anderem Namen bzw. mit leicht abweichendem Aussehen verkauft.<br />
<br />
'''Hinweis: Die Anbindung an FHEM sollte prinzipiell so funktionieren, wie unten beschrieben. Allerdings ist das Modul noch nicht ganz fertig. Insbesondere die Dokumentation wird noch überarbeitet. Außerdem fehlen noch ein paar Feinheiten und Konfigurationsmöglichkeiten.'''<br />
<br />
==Features / Funktionen==<br />
Der CO2-Monitor zeigt im Wechsel den CO2-Gehalt der Luft (in ppm) sowie die Temperatur an. Zusätzlich zeigen drei kleine LEDs eine Einschätzung der Luftqualität an (grün, gelb, rot). <br />
<br />
Das USB-Kabel dient nicht nur zur Stromversorgung, sondern das Gerät sendet auch regelmäßig alle paar Sekunden den gemessenen CO2-Gehalt und die Temperatur.<br />
<br />
==Hinweise zum Betrieb mit FHEM==<br />
Die Integration mit FHEM klappt mit Hilfe des Moduls co2mini. Das Modul ist standardmäßig nicht in FHEM enthalten, kann aber folgendermaßen leicht nachinstalliert werden und wird dann auch über den normalen update-Mechanismus aktuell gehalten.<br />
<br />
*<code>update add https://raw.githubusercontent.com/ThorstenPferdekaemper/FHEM-co2mini/master/controls_co2mini.txt</code> <br />
*<code>update all co2mini</code><br />
*<code>shutdown restart</code><br />
Wenn man den Sensor über USB anschließt, dann erscheint er erst einmal als Gerät /dev/hidrawN, also z.B. /dev/hidraw0. Der Benutzer fhem muss auf diese Datei zugreifen können. Am einfachsten kopiert man dazu die Datei /opt/fhem/FHEM/lib/co2mini/90-co2mini.rules in das Verzeichnis /etc/udev/rules.d und startet dann den Server neu. Dadurch erscheint der Sensor auch als /dev/co2mini0 und der Benutzer fhem hat Zugriff darauf.<br />
<br />
===Quickstart===<br />
Wenn man alles so eingerichtet hat, dann kann man das Gerät in FHEM einfach folgendermaßen anlegen:<br />
<br />
<code>define co2 co2mini</code><br />
<br />
Nach ein paar Sekunden müsste dann der aktuelle CO2-Gehalt und die Temperatur in entsprechenden Readings angezeigt werden.<br />
<br />
Alles weitere ist in der lokalen Gerätedokumentation (Commandref) zu finden.<br />
<br />
===Entferntes FHEM===<br />
Das Modul co2mini startet im Hintergrund einen kleinen HTTP-Server, den man auch benutzen kann, um mit einem entfernten FHEM auf den Sensor zuzugreifen. Dazu definiert man einfach auf dem entfernten FHEM das Gerät mit der Adresse des Rechners, an den das Co2mini-Gerät angeschlossen ist. Also in etwa so:<br />
<br />
<code>define co2 co2mini 192.168.178.23:41042</code><br />
<br />
Natürlich muss dafür auf dem Rechner 192.168.178.23 der co2mini-Server laufen. Das erreicht man einfach dadurch, indem man auf diesem Rechner das co2mini-Device ebenfalls definiert, nur eben wie weiter oben beschrieben. (Der co2mini-Server kann mehrere Clients bedienen.) Wenn man auf diesem Rechner kein komplettes FHEM laufen lassen will, dann muss man selbst dafür sorgen, dass der Server läuft. Das entsprechende Programm liegt in /opt/fhem/FHEM/lib/co2mini und heißt co2mini_server.pl. Am besten man ruft es einmal folgendermaßen auf, um zu erfahren, was es alles kann:<br />
<br />
<code>perl co2mini_server.pl -help</code><br />
<br />
==Bekannte Probleme==<br />
* Wenn man mehrere co2mini-Geräte angeschlossen hat, dann funktioniert die mitgelieferte udev-Regel wahrscheinlich nur für eins der Geräte. In dem Fall müsste man aber entsprechende udev-Regeln anlegen können, um die Geräte auseinanderzuhalten.<br />
<br />
==Weblinks==<br />
*Hersteller/Vertrieb [https://www.co2meter.com/products/co2mini-co2-indoor-air-quality-monitor co2meter.com]<br />
*Hersteller/Vertrieb [https://www.tfa-dostmann.de/produkt/co2-monitor-airco2ntrol-mini-31-5006/ TFA Dostmann]<br />
<br />
[[Kategorie: Other Components]]</div>Thorsten Pferdekämperhttp://wiki.fhem.de/w/index.php?title=Co2mini&diff=37192Co2mini2022-02-06T19:25:41Z<p>Thorsten Pferdekämper: /* Hinweise zum Betrieb mit FHEM */</p>
<hr />
<div>{{Infobox Hardware|Bild=Co2mini.png|Bildbeschreibung=CO2Mini-Monitor|HWProtocol=Proprietär (?)|HWType=CO2-Sensor|HWCategory=Other Components|HWComm=USB|HWChannels=CO2, Temperatur|HWVoltage=5V|HWPowerConsumption=0,1 - 1|HWPoweredBy=USB|HWSize=115 x 45 x 24 mm (BxHxT) ohne Stecker|HWDeviceFHEM=co2mini|HWManufacturer=TFA Dostmann, CO2Meter.com}}<br />
<br />
Der [[co2mini|CO2Mini-Monitor]] ist ein Raumluftqualitätsmonitor. Er zeigt dem Kohlendioxid-Gehalt der Luft und die Temperatur an.#<br />
<br />
Möglicherweise wird das Gerät bzw. ähnliche Geräte mit denselben Innereien auch unter anderem Namen bzw. mit leicht abweichendem Aussehen verkauft.<br />
<br />
==Features / Funktionen==<br />
Der CO2-Monitor zeigt im Wechsel den CO2-Gehalt der Luft (in ppm) sowie die Temperatur an. Zusätzlich zeigen drei kleine LEDs eine Einschätzung der Luftqualität an (grün, gelb, rot). <br />
<br />
Das USB-Kabel dient nicht nur zur Stromversorgung, sondern das Gerät sendet auch regelmäßig alle paar Sekunden den gemessenen CO2-Gehalt und die Temperatur.<br />
<br />
==Hinweise zum Betrieb mit FHEM==<br />
Die Integration mit FHEM klappt mit Hilfe des Moduls co2mini. Das Modul ist standardmäßig nicht in FHEM enthalten, kann aber folgendermaßen leicht nachinstalliert werden und wird dann auch über den normalen update-Mechanismus aktuell gehalten.<br />
<br />
*<code>update add https://raw.githubusercontent.com/ThorstenPferdekaemper/FHEM-co2mini/master/controls_co2mini.txt</code> <br />
*<code>update all co2mini</code><br />
*<code>shutdown restart</code><br />
Wenn man den Sensor über USB anschließt, dann erscheint er erst einmal als Gerät /dev/hidrawN, also z.B. /dev/hidraw0. Der Benutzer fhem muss auf diese Datei zugreifen können. Am einfachsten kopiert man dazu die Datei /opt/fhem/FHEM/lib/co2mini/90-co2mini.rules in das Verzeichnis /etc/udev/rules.d und startet dann den Server neu. Dadurch erscheint der Sensor auch als /dev/co2mini0 und der Benutzer fhem hat Zugriff darauf.<br />
<br />
Wenn man alles so eingerichtet hat, dann kann man das Gerät in FHEM einfach folgendermaßen anlegen:<br />
<br />
<code>define co2 co2mini</code><br />
<br />
Nach ein paar Sekunden müsste dann der aktuelle CO2-Gehalt und die Temperatur in entsprechenden Readings angezeigt werden.<br />
<br />
Das Modul co2mini startet im Hintergrund einen kleinen HTTP-Server, den man auch benutzen kann, um mit einem entfernten FHEM auf den Sensor zuzugreifen.<br />
<br />
==Bekannte Probleme==<br />
* Wenn man mehrere co2mini-Geräte angeschlossen hat, dann funktioniert die mitgelieferte udev-Regel wahrscheinlich nur für eins der Geräte. In dem Fall müsste man aber entsprechende udev-Regeln anlegen können, um die Geräte auseinanderzuhalten.<br />
<br />
==Weblinks==<br />
*Hersteller/Vertrieb [https://www.co2meter.com/products/co2mini-co2-indoor-air-quality-monitor co2meter.com]<br />
*Hersteller/Vertrieb [https://www.tfa-dostmann.de/produkt/co2-monitor-airco2ntrol-mini-31-5006/ TFA Dostmann]</div>Thorsten Pferdekämperhttp://wiki.fhem.de/w/index.php?title=Co2mini&diff=37191Co2mini2022-02-06T18:10:27Z<p>Thorsten Pferdekämper: Neue Seite für co2mini</p>
<hr />
<div>{{Infobox Hardware|Bild=Co2mini.png|Bildbeschreibung=CO2Mini-Monitor|HWProtocol=Proprietär (?)|HWType=CO2-Sensor|HWCategory=Other Components|HWComm=USB|HWChannels=CO2, Temperatur|HWVoltage=5V|HWPowerConsumption=0,1 - 1|HWPoweredBy=USB|HWSize=115 x 45 x 24 mm (BxHxT) ohne Stecker|HWDeviceFHEM=co2mini|HWManufacturer=TFA Dostmann, CO2Meter.com}}<br />
<br />
Der [[co2mini|CO2Mini-Monitor]] ist ein Raumluftqualitätsmonitor. Er zeigt dem Kohlendioxid-Gehalt der Luft und die Temperatur an.#<br />
<br />
Möglicherweise wird das Gerät bzw. ähnliche Geräte mit denselben Innereien auch unter anderem Namen bzw. mit leicht abweichendem Aussehen verkauft.<br />
<br />
==Features / Funktionen==<br />
Der CO2-Monitor zeigt im Wechsel den CO2-Gehalt der Luft (in ppm) sowie die Temperatur an. Zusätzlich zeigen drei kleine LEDs eine Einschätzung der Luftqualität an (grün, gelb, rot). <br />
Das USB-Kabel dient nicht nur zur Stromversorgung, sondern das Gerät sendet auch regelmäßig alle paar Sekunden den gemessenen CO2-Gehalt und die Temperatur.<br />
<br />
==Hinweise zum Betrieb mit FHEM==<br />
Die Integration mit FHEM klappt mit Hilfe des Moduls co2mini.<br />
<br />
*<code>update add https://raw.githubusercontent.com/ThorstenPferdekaemper/FHEM-co2mini/master/controls_co2mini.txt</code> <br />
*<code>update all co2mini</code><br />
*<code>shutdown restart</code><br />
<br />
==Bekannte Probleme==<br />
Keine (oder Liste der bekannten Probleme / Einschränkungen).<br />
==Weblinks==<br />
*Hersteller/Vertrieb [https://www.co2meter.com/products/co2mini-co2-indoor-air-quality-monitor co2meter.com]<br />
*Hersteller/Vertrieb [https://www.tfa-dostmann.de/produkt/co2-monitor-airco2ntrol-mini-31-5006/ TFA Dostmann]</div>Thorsten Pferdekämperhttp://wiki.fhem.de/w/index.php?title=Datei:Co2mini.png&diff=37190Datei:Co2mini.png2022-02-06T17:52:04Z<p>Thorsten Pferdekämper: </p>
<hr />
<div>CO2Mini-Monitor</div>Thorsten Pferdekämperhttp://wiki.fhem.de/w/index.php?title=HomeMatic_Wired&diff=29519HomeMatic Wired2019-02-13T14:12:14Z<p>Thorsten Pferdekämper: /* Aktoren / Sensoren */</p>
<hr />
<div>'''HomeMatic Wired''' (HMW / HM485) ist ein auf RS485 basierendes Bussystem für die Hausautomation. Die Auswahl an Aktoren und Sensoren ist im Vergleich zum [[HomeMatic]]-Funksystem geringer. Die wichtigsten Funktionen wie Lichtsteuerung, Rollläden, Tür- / Fenstersensoren, Schalter und Taster lassen sich aber integrieren. Über verschiedene I/O-Module lassen sich viele weitere Geräte anschließen. Auch analoge Messwerte können ausgewertet werden, so dass hier z.B. auch Temperatursensoren integriert werden könnten. <br />
<br />
Alle Module sind rückkanalfähig, d.h. es erfolgt eine Rückmeldung, wenn ein Gerät eine Nachricht erhalten hat (''ACK'' für '''Ack'''nowledgement, also Empfangsbestätigung). Auch werden externe Zustandsänderungen der Geräte unmittelbar über den Bus weitergeleitet (bei den meisten Geräten ist letzteres abschaltbar).<br />
<br />
Alle HMW-Module werden über den Bus mit Energie versorgt. Batteriebetriebene Module sind nicht vorgesehen und auch nicht sinnvoll, da HMW ein kabelgebundenes System ist.<br />
<br />
== Installation und Upgrade in FHEM ==<br />
Für den Einsatz mit FHEM benötigt man die entsprechende [[:Kategorie:Server_Hardware|Rechner-Hardware]], FHEM selbst und einen Übertragungs- bzw. Konfigurationsadapter ([[Interface]]) wie z.B. einen [[Serial/Netzwerk-RS485-Adapter]] oder das [[HomeMatic Wired RS485 LAN Gateway]], wobei letzteres nicht wirklich empfohlen werden kann.<br />
<br />
HM485 ist nicht automatisch Teil von FHEM. Es muss explizit installiert bzw. hinzugefügt werden. Die Installation funktioniert folgendermaßen:<br />
* Falls man sich seiner Sache nicht ganz sicher ist, empfiehlt sich zuerst ein Backup der FHEM-Installation.<br />
* HM485 benötigt das Perl-Modul XML::Simple. Unter Debian (inklusive normaler Raspberry-Installationen) ist dieses Modul im Paket libxml-simple-perl enthalten, kann also mittels <code>apt-get install libxml-simple-perl</code> (auf Betriebssystemebene als root) installiert werden. Ansonsten kann es z.B. über Cpan installiert werden.<br />
* Falls man den letzten FHEM-Update vor dem 24.12.2015 gemacht hat, dann muss man vor der HM485-Installation einen Update durchführen. Also im Kommandofeld eingeben:<code>update</code> Dann den Update-Vorgang abwarten und Neustarten:<code>shutdown restart</code>.<br />
* Dann das HM485-Repository zum FHEM Update hinzufügen: <br />
** <code>update add https://raw.githubusercontent.com/kc-GitHub/FHEM-HM485/master/controls_hm485.txt</code><br />
* Jetzt <code>update force hm485</code> und <code>shutdown restart</code>. HM485 sollte jetzt installiert sein.<br />
* Es muss jetzt noch sichergestellt werden, dass das Programm HM485d.pl (im Verzeichnis FHEM/lib/HM485/HM485d) für den User fhem ausführbar ist. Das ist normalerweise nicht automatisch der Fall. Es muss im Zweifelsfall per <code>sudo chmod a+x HM485d.pl</code> ausführbar gemacht werden.<br />
<br />
Zum Upgrade reicht ein <code>update</code>, wenn man HM485 wie oben beschrieben installiert hat. Ansonsten kann man auch das HM485-Repository nachträglich eintragen wie oben beschrieben. Wenn man von einer manuellen Installation auf die "update add"-Variante wechselt, dann sollte man das erste Mal immer <code>update force hm485</code> machen. Will man nur den HM485-Teil aktualisieren und nicht alles in FHEM, dann geht das mit <code>update all hm485</code>.<br />
<br />
Falls es insbesondere beim Upgrade oder nach einem Upgrade Probleme gibt (welcher Art auch immer), sollten die folgenden Punkte geprüft werden:<br />
* Wird das richtige Repository benutzt? Man kann das mit <code>update list</code> überprüfen. Wenn der Eintrag für hm485 nicht genau so aussieht wie oben beschrieben, dann sollte er per <code>update delete</code> gelöscht werden und dann genau so eingetragen werden wie oben beschrieben. Insbesondere Zwischenversionen wie "dev", "v0800" oder "thorsten" gibt es nur temporär und sollten nur zum Testen verwendet werden. <br />
* Ist XML::Simple installiert? Siehe die Installationanleitung weiter oben für Details.<br />
* FHEM braucht Schreibrechte im Verzeichnis <fhem>/FHEM/lib/HM485/Devices (<fhem> steht meistens für /opt/fhem) und allen Dateien und Unterverzeichnissen. Auf Betriebssystemebene (Linux) kann man das mit <code>ls -ls</code> überprüfen. Meistens kann es mit folgendem Befehl repariert werden: <code>chown -R fhem:dialout /opt/fhem/FHEM/lib/HM485/Devices</code>. <br />
* Wenn das nicht hilft, dann kann man auch vor einem <code>shutdown restart</code> alle pm-Dateien im Devices-Verzeichnis löschen (<code>rm /opt/fhem/FHEM/lib/HM485/Devices/*.pm</code>). Diese Dateien werden beim nächsten FHEM-Start neu generiert.<br />
<br />
== Verkabelung ==<br />
Das folgende Bild zeigt die Verkabelung von HM-Wired am Beispiel eines seriellen USB-Adapters und zwei Geräten.<br />
[[File:HM-Wired-Verkabelung-Digitus.jpg|border|700px|Verkabelungsbeispiel HM-Wired]]<br />
<br />
Im Unterschied zu anderen RS485-Bussystemen wird GND immer mit verbunden. Außerdem sind die Widerstandswerte des sogenannten Busabschluss zu beachten.<br />
<br />
<br />
== Der sogenannte Busabschluss ==<br />
<br />
Im Gegensatz zu anderen RS485-Bussystemen braucht Homematic Wired keinen echten Busabschluss. Die Datenübertragungsrate ist zu niedrig, als dass es zu Problemen wegen Reflexionen kommt. Wahrscheinlich kann es durch den üblichen RS485-Busabschluss (etwa 120 Ohm zwischen A und B) sogar vorkommen, dass der Bus nicht richtig funktioniert oder sogar Geräte beschädigt werden. <br />
Das, was von eq3 als Abschlusswiderstand verkauft wird, ist kein Busabschluss, sondern ein Widerstandsnetzwerk, welches den Bus auf ein definiertes Potential bringt, wenn kein Busteilnehmer sendet. Die genauen Werte können dem obigen Bild entnommen werden. Das ganze ist so berechnet, dass sich zwischen A und B in etwa ein Unterschied von 5V ergibt. (Sehe auch Homematic Inside [https://homematic-forum.de/forum/viewtopic.php?t=15128])<br />
Wenn man jetzt noch zusätzlich 120Ohm (möglicherweise zweimal) an den Bus hängt, dann hat man in etwa 60Ohm zwischen A und B. Dadurch liegen A und B fast auf demselben Potential und man hat in etwa das Gegenteil von dem erreicht, was man eigentlich wollte.<br />
<br />
In vielen Fällen funktioniert ein Homematic Wired System auch ohne Abschlusswiderstand, insbesondere wenn Homebrew-Geräte am Bus angeschlossen sind. Allerdings haben bisherige Erfahrungen gezeigt, dass das System mit der Zeit instabil werden kann, wenn z.B. der Bus verlängert wird oder mehr Geräte dazukommen. Für einen "produktiven" Einsatz wird daher empfohlen, einen Abschlusswiderstand zu verwenden, auch wenn es im Test oft ohne geht. Das gilt insbesondere dann, wenn man nur Original-eq3-Geräte verwendet.<br />
<br />
Falls man nur Homebrew-Devices am Bus hat, hat man möglicherweise gar keine 24V. Dann ist auch der eq3-Abschlusswiderstand nicht sinnvoll. Es reicht dann ein einfacher Pulldown an B und ein Pullup auf 5V an A.<br />
<br />
== Pair / Peer bzw. pairen und peeren ==<br />
HMW-Geräte können unter- bzw. miteinander [[Peering (HomeMatic)|gepeert]] werden, wenn z.B. ein Sensor einen Aktor direkt (ohne Zentrale) steuern soll. Ein einfaches Peering zweier Kanäle kann meistens ohne Zentrale erfolgen, d.h. mit den Bedienelementen direkt an den Geräten. Allerdings ist es über die FHEM-Oberfläche in der Regel einfacher. Außerdem können dann weitere Parameter der jeweiligen Verknüpfung angegeben werden.<br />
<br />
HMW-Geräte müssen andererseits mit einer Zentrale ''gepairt'' werden, wenn diese Zentrale die Geräte (um-)konfigurieren bzw. steuern oder zumindest auslesen können soll.<br />
<br />
Anders als bei den HomeMatic-Funk-Geräten erfolgt dieses Pairing automatisch, sobald ein Gerät erstmalig Nachrichten über den RS485 Bus sendet. Zusätzlich besteht die Möglichkeit, über einen Discovery-Befehl alle am Bus angeschlossenen Module zu ermitteln. Auch bei diesem Vorgang erfolgt im Anschluss daran ein automatisches Pairing aller bis dahin unbekannten Geräte mit der Zentrale bzw. mit FHEM.<br />
<br />
== Aktoren / Sensoren ==<br />
Eine Übersicht und weitere Informationen über die von FHEM unterstützten HomeMatic-Geräte ist [[:Kategorie:HomeMatic Components| hier]] zu finden: <br />
<br />
Hier dennoch eine dedizierte Liste aller HMW-Geräte und der benötigten Interfaces:<br />
* [[Serial/Netzwerk-RS485-Adapter]] Netzwerk-/Serial-/USB-RS485 Adapter<br />
* [[HomeMatic Wired RS485 LAN Gateway|HMW-LGW-O-DR-GS-EU]] HomeMatic Wired RS485 LAN Gateway, Hutschienenmontage<br />
* ''HMW-Sen-SC-12|HMW-Sen-SC-12-DR'' HomeMatic Wired RS485 Schließerkontakt, 12 Eingänge, Hutschienenmontage<br />
* ''HMW-Sen-SC-12|HMW-Sen-SC-12-FM'' HomeMatic Wired RS485 Schließerkontakt, 12 Eingänge, Unterputzmontage<br />
* ''HMW-IO-12-FM'' HomeMatic Wired RS485 I/O-Modul, 12 Ein-/Ausgänge, Unterputzmontage<br />
* [[HMW-IO-12-Sw14-DR Wired RS485 I/O-Modul 12 Eingänge 14 Ausgänge]], Hutschienenmontage<br />
* ''HMW-LC-Sw2-DR'' HomeMatic Wired RS485-Schaltaktor 2fach, Hutschienenmontage<br />
* [[HMW-IO-12-Sw7-DR Wired RS485 I/O-Modul 12 Eingänge 7 Ausgänge]], Hutschienenmontagw<br />
* ''HMW-IO-4-FM'' HomeMatic Wired RS485 4fach-I/O-Modul, 4 Ein-/Ausgänge, Unterputzmontage<br />
* ''HMW-LC-Bl1-DR'' HomeMatic Wired RS485-Rollladenaktor, 1fach, Hutschienenmontage<br />
* [[HMW-LC-Dim1L-DR Wired RS485 Dimmaktor 1fach]], Phasenanschnitt, Hutschienenmontage<br />
<br />
Momentan werden (bzw. wurden) außerdem "HM-Homebrew" Geräte entwickelt. <br />
<br />
{| class="wikitable"<br />
| '''Modell''' <br />
| '''ID'''<br />
| '''Beschreibung'''<br />
| '''FHEM'''<br />
| '''CCU'''<br />
| '''Firmware'''<br />
|-<br />
| [[HBW-1W-T10]]<br />
| 0x81<br />
| 10-fach 1-Wire Temperatursensor<br />
| {{Link2Forum|Topic=22952|Message=207372|LinkText=ja}}<br />
| ja<br />
| [https://github.com/kc-GitHub/HM485-Lib/tree/thorsten/HBW-1W-T10 Git]<br />
|-<br />
| ''HBW-LC-Bl-4''<br />
| 0x82<br />
| 4-Kanal Rollladenaktor<br />
| ja<br />
| <br />
| [https://github.com/ThorstenPferdekaemper/HBWired/tree/master/HBW-LC-BL-4 Git]<br />
|-<br />
| ''HBW-LC-Bl-8''<br />
| 0x92<br />
| 8-Kanal Rollladenaktor<br />
| ja<br />
| <br />
| [https://github.com/ThorstenPferdekaemper/HBWired/tree/master/HBW-LC-BL-8 Git]<br />
|-<br />
| ''HBW-LC-Sw8''<br />
| 0x83<br />
| 8-fach Schaltaktor<br />
| ja<br />
| <br />
| [https://github.com/ThorstenPferdekaemper/HBWired/tree/master/HBW-LC-Sw-8 Git]<br />
|-<br />
| ''HBW-LC-Sw-12''<br />
| 0x93<br />
| 12-fach Schaltaktor<br />
| ja<br />
| <br />
| [https://github.com/ThorstenPferdekaemper/HBWired/tree/master/HBW-LC-Sw-12 Git]<br />
|-<br />
| ''HBW-Sen-EP''<br />
| 0x84<br />
| 8-fach S0-Interface<br />
| ja<br />
| <br />
| [https://github.com/kc-GitHub/HM485-Lib/tree/thorsten/HBW-Sen-EP Git]<br />
|-<br />
| ''HBW-Sen-KEY''<br />
| 0x85<br />
| RFID-Interface<br />
| ja<br />
| <br />
| [https://github.com/kc-GitHub/HM485-Lib/tree/markus/HBW-Sen-KEY Git]<br />
|-<br />
| ''HBW-Sen-SC8''<br />
| 0x86<br />
| 8-fach Tasterschnittstelle<br />
| ja<br />
| <br />
| [https://github.com/mago0211/HBW-RS485 Git]<br />
|-<br />
| {{Link2Forum|Topic=64700|Message=563558|LinkText=HBW-Sen-Key-12}} <br />
| 0x95<br />
| 12-fach Tasterschnittstelle<br />
| ja<br />
| <br />
| [https://github.com/ThorstenPferdekaemper/HBWired Git]<br />
|-<br />
| {{Link2Forum|Topic=22952|Message=270160|LinkText=HBW-CC-Vd2-T}}<br />
| 0x87<br />
| Steuerung 24V-Ventile<br />
| ja<br />
| <br />
| [https://github.com/hresalg/HBW/tree/dev/HBW_CC_Vd2_T Git]<br />
|-<br />
| <br />
| 0x88<br />
| Wettersensor<br />
| <br />
| <br />
| <br />
|-<br />
| <br />
| 0x89<br />
| Tastsensor<br />
| <br />
| <br />
| <br />
|-<br />
| {{Link2Forum|Topic=22952|Message=186435|LinkText=HBW-Sec-MDIR-2}} <br />
| 0x91<br />
| Bewegungsmelder-Schnittstelle<br />
| <br />
| <br />
| [https://github.com/kc-GitHub/HM485-Lib/tree/rene/HBW-Sec-MDIR-2 Git]<br />
|-<br />
| ''HMW-LC-Sw2-DR''<br />
| 0x11<br />
| <br />
| ja<br />
| ja<br />
| [https://github.com/kc-GitHub/HM485-Lib/blob/thorsten/HMW-LC-Sw2-DR Git], {{Link2Forum|Topic=22952|Message=251906|LinkText=Forum}}<br />
|-<br />
| ''HMW-LC-Bl1-DR''<br />
| 0x15<br />
| 1-Kanal Rollladenaktor<br />
| ja<br />
| ja<br />
| [https://github.com/kc-GitHub/HM485-Lib/tree/markus/HMW-LC-Bl1-DR Git]<br />
|-<br />
| ''HMW-IO-12-FM''<br />
| <br />
| <br />
| nein<br />
| nein<br />
| [https://github.com/kc-GitHub/HM485-Lib/tree/thorsten/HMW-IO-12-FM Git]<br />
|-<br />
| {{Link2Forum|Topic=22952|Message=275898|LinkText=HBW_LC_RGB1_CV}}<br />
| 0xA0<br />
| 3-fach Dimmer als RGB-Controller<br />
| ja<br />
| ?<br />
| [https://github.com/BrainHunter/RGB-CTRL Git]<br />
|-<br />
| HBW-SD6-Multikey <br />
| 0xB1<br />
| Reserviert für 6-fach Taster von [http://haus-bus.de/ haus-bus.de]<br />
| nein<br />
| nein<br />
| [https://github.com/haus-bus/MultitasterSD6/tree/HM-Wired Git]<br />
|-<br />
| {{Link2Forum|Topic=22952|Message=837275|LinkText=HBW-SC-10-Dim-6}}<br />
| 0x96<br />
| 6-fach Dimmer mit 10 digitalen Eingängen<br />
| <br />
| <br />
| [https://github.com/loetmeister/HBWired/tree/master/HBW-SC-10-Dim-6 Git]<br />
|-<br />
|}<br />
<br />
In der obigen Liste der Homematic-Wired-Homebrew Geräte kommen auch Modellbezeichnungen von Original-Homematic-Geräten vor (HMW...). In diesen Fällen handelt es sich um Homebrew-Geräte, die sich gegenüber FHEM bzw. der CCU wie das angegebene Gerät verhalten. Unter Umständen weicht aber das Verhalten von dem der Original-Geräte ab. <br />
Die Spalten "FHEM" und "CCU" besagen, ob das entsprechende Gerät in FHEM bzw. in der CCU erkannt wird und funktioniert. Ist in beiden Spalten ein "nein" eingetragen, dann kann davon ausgegangen werden, dass das Gerät noch gar nicht funktioniert. Bei einem "ja" kann es auch noch Einschränkungen geben.<br />
<br />
Zur Erstellung eigener HBW Geräte mittels Arduino gibt es ein {{Link2Forum|Topic=61780|LinkText=Tutorial}} von Thorsten im Forum.<br />
<br />
== Links ==<br />
* [https://github.com/kc-GitHub/FHEM-HM485 Github Repository] der HM485 Module (für FHEM)<br />
* [https://github.com/kc-GitHub/FHEM-HM485/archive/master.zip aktuelle Version] der HM485 Module zum Download (für FHEM)<br />
* [https://github.com/kc-GitHub/HM485-Lib Arduino HBW lib] wird nicht mehr aktuallisiert !!!<br />
* [https://github.com/ThorstenPferdekaemper/HBWired Arduino HBWired lib] aktuelle Version<br />
* {{Link2Forum|Topic=61780|LinkText=Tutorial}} zur Erstellung eigener HBW Geräte mit Arduino<br />
* [http://www.homematic.com/ HomeMatic] Homepage<br />
* Hersteller [http://www.eq-3.de eQ-3] <br />
<br />
[[Kategorie:HomeMatic Components]]<br />
[[Kategorie:Glossary]]</div>Thorsten Pferdekämperhttp://wiki.fhem.de/w/index.php?title=HomeMatic_Wired&diff=27928HomeMatic Wired2018-09-25T13:45:05Z<p>Thorsten Pferdekämper: /* Aktoren / Sensoren */</p>
<hr />
<div>'''HomeMatic Wired''' (HMW / HM485) ist ein auf RS485 basierendes Bussystem für die Hausautomation. Die Auswahl an Aktoren und Sensoren ist im Vergleich zum [[HomeMatic]]-Funksystem geringer. Die wichtigsten Funktionen wie Lichtsteuerung, Rollläden, Tür- / Fenstersensoren, Schalter und Taster lassen sich aber integrieren. Über verschiedene I/O-Module lassen sich viele weitere Geräte anschließen. Auch analoge Messwerte können ausgewertet werden, so dass hier z.B. auch Temperatursensoren integriert werden könnten. <br />
<br />
Alle Module sind rückkanalfähig, d.h. es erfolgt eine Rückmeldung, wenn ein Gerät eine Nachricht erhalten hat (''ACK'' für '''Ack'''nowledgement, also Empfangsbestätigung). Auch werden externe Zustandsänderungen der Geräte unmittelbar über den Bus weitergeleitet (bei den meisten Geräten ist letzteres abschaltbar).<br />
<br />
Alle HMW-Module werden über den Bus mit Energie versorgt. Batteriebetriebene Module sind nicht vorgesehen und auch nicht sinnvoll, da HMW ein kabelgebundenes System ist.<br />
<br />
== Installation und Upgrade in FHEM ==<br />
Für den Einsatz mit FHEM benötigt man die entsprechende [[:Kategorie:Server_Hardware|Rechner-Hardware]], FHEM selbst und einen Übertragungs- bzw. Konfigurationsadapter ([[Interface]]) wie z.B. einen [[Serial/Netzwerk-RS485-Adapter]] oder das [[HomeMatic Wired RS485 LAN Gateway]], wobei letzteres nicht wirklich empfohlen werden kann.<br />
<br />
HM485 ist nicht automatisch Teil von FHEM. Es muss explizit installiert bzw. hinzugefügt werden. Die Installation funktioniert folgendermaßen:<br />
* Falls man sich seiner Sache nicht ganz sicher ist, empfiehlt sich zuerst ein Backup der FHEM-Installation.<br />
* HM485 benötigt das Perl-Modul XML::Simple. Unter Debian (inklusive normaler Raspberry-Installationen) ist dieses Modul im Paket libxml-simple-perl enthalten, kann also mittels <code>apt-get install libxml-simple-perl</code> (auf Betriebssystemebene als root) installiert werden. Ansonsten kann es z.B. über Cpan installiert werden.<br />
* Falls man den letzten FHEM-Update vor dem 24.12.2015 gemacht hat, dann muss man vor der HM485-Installation einen Update durchführen. Also im Kommandofeld eingeben:<code>update</code> Dann den Update-Vorgang abwarten und Neustarten:<code>shutdown restart</code>.<br />
* Dann das HM485-Repository zum FHEM Update hinzufügen: <br />
** <code>update add https://raw.githubusercontent.com/kc-GitHub/FHEM-HM485/master/controls_hm485.txt</code><br />
* Jetzt <code>update force hm485</code> und <code>shutdown restart</code>. HM485 sollte jetzt installiert sein.<br />
* Es muss jetzt noch sichergestellt werden, dass das Programm HM485d.pl (im Verzeichnis FHEM/lib/HM485/HM485d) für den User fhem ausführbar ist. Das ist normalerweise nicht automatisch der Fall. Es muss im Zweifelsfall per <code>sudo chmod a+x HM485d.pl</code> ausführbar gemacht werden.<br />
<br />
Zum Upgrade reicht ein <code>update</code>, wenn man HM485 wie oben beschrieben installiert hat. Ansonsten kann man auch das HM485-Repository nachträglich eintragen wie oben beschrieben. Wenn man von einer manuellen Installation auf die "update add"-Variante wechselt, dann sollte man das erste Mal immer <code>update force hm485</code> machen. Will man nur den HM485-Teil aktualisieren und nicht alles in FHEM, dann geht das mit <code>update all hm485</code>.<br />
<br />
Falls es insbesondere beim Upgrade oder nach einem Upgrade Probleme gibt (welcher Art auch immer), sollten die folgenden Punkte geprüft werden:<br />
* Wird das richtige Repository benutzt? Man kann das mit <code>update list</code> überprüfen. Wenn der Eintrag für hm485 nicht genau so aussieht wie oben beschrieben, dann sollte er per <code>update delete</code> gelöscht werden und dann genau so eingetragen werden wie oben beschrieben. Insbesondere Zwischenversionen wie "dev", "v0800" oder "thorsten" gibt es nur temporär und sollten nur zum Testen verwendet werden. <br />
* Ist XML::Simple installiert? Siehe die Installationanleitung weiter oben für Details.<br />
* FHEM braucht Schreibrechte im Verzeichnis <fhem>/FHEM/lib/HM485/Devices (<fhem> steht meistens für /opt/fhem) und allen Dateien und Unterverzeichnissen. Auf Betriebssystemebene (Linux) kann man das mit <code>ls -ls</code> überprüfen. Meistens kann es mit folgendem Befehl repariert werden: <code>chown -R fhem:dialout /opt/fhem/FHEM/lib/HM485/Devices</code>. <br />
* Wenn das nicht hilft, dann kann man auch vor einem <code>shutdown restart</code> alle pm-Dateien im Devices-Verzeichnis löschen (<code>rm /opt/fhem/FHEM/lib/HM485/Devices/*.pm</code>). Diese Dateien werden beim nächsten FHEM-Start neu generiert.<br />
<br />
== Verkabelung ==<br />
Das folgende Bild zeigt die Verkabelung von HM-Wired am Beispiel eines seriellen USB-Adapters und zwei Geräten.<br />
[[File:HM-Wired-Verkabelung-Digitus.jpg|border|700px|Verkabelungsbeispiel HM-Wired]]<br />
<br />
Im Unterschied zu anderen RS485-Bussystemen wird GND immer mit verbunden. Außerdem sind die Widerstandswerte des sogenannten Busabschluss zu beachten.<br />
<br />
<br />
== Der sogenannte Busabschluss ==<br />
<br />
Im Gegensatz zu anderen RS485-Bussystemen braucht Homematic Wired keinen echten Busabschluss. Die Datenübertragungsrate ist zu niedrig, als dass es zu Problemen wegen Reflexionen kommt. Wahrscheinlich kann es durch den üblichen RS485-Busabschluss (etwa 120 Ohm zwischen A und B) sogar vorkommen, dass der Bus nicht richtig funktioniert oder sogar Geräte beschädigt werden. <br />
Das, was von eq3 als Abschlusswiderstand verkauft wird, ist kein Busabschluss, sondern ein Widerstandsnetzwerk, welches den Bus auf ein definiertes Potential bringt, wenn kein Busteilnehmer sendet. Die genauen Werte können dem obigen Bild entnommen werden. Das ganze ist so berechnet, dass sich zwischen A und B in etwa ein Unterschied von 5V ergibt. (Sehe auch Homematic Inside [https://homematic-forum.de/forum/viewtopic.php?t=15128])<br />
Wenn man jetzt noch zusätzlich 120Ohm (möglicherweise zweimal) an den Bus hängt, dann hat man in etwa 60Ohm zwischen A und B. Dadurch liegen A und B fast auf demselben Potential und man hat in etwa das Gegenteil von dem erreicht, was man eigentlich wollte.<br />
<br />
In vielen Fällen funktioniert ein Homematic Wired System auch ohne Abschlusswiderstand, insbesondere wenn Homebrew-Geräte am Bus angeschlossen sind. Allerdings haben bisherige Erfahrungen gezeigt, dass das System mit der Zeit instabil werden kann, wenn z.B. der Bus verlängert wird oder mehr Geräte dazukommen. Für einen "produktiven" Einsatz wird daher empfohlen, einen Abschlusswiderstand zu verwenden, auch wenn es im Test oft ohne geht. Das gilt insbesondere dann, wenn man nur Original-eq3-Geräte verwendet.<br />
<br />
Falls man nur Homebrew-Devices am Bus hat, hat man möglicherweise gar keine 24V. Dann ist auch der eq3-Abschlusswiderstand nicht sinnvoll. Es reicht dann ein einfacher Pulldown an B und ein Pullup auf 5V an A.<br />
<br />
== Pair / Peer bzw. pairen und peeren ==<br />
HMW-Geräte können unter- bzw. miteinander [[Peering (HomeMatic)|gepeert]] werden, wenn z.B. ein Sensor einen Aktor direkt (ohne Zentrale) steuern soll. Ein einfaches Peering zweier Kanäle kann meistens ohne Zentrale erfolgen, d.h. mit den Bedienelementen direkt an den Geräten. Allerdings ist es über die FHEM-Oberfläche in der Regel einfacher. Außerdem können dann weitere Parameter der jeweiligen Verknüpfung angegeben werden.<br />
<br />
HMW-Geräte müssen andererseits mit einer Zentrale ''gepairt'' werden, wenn diese Zentrale die Geräte (um-)konfigurieren bzw. steuern oder zumindest auslesen können soll.<br />
<br />
Anders als bei den HomeMatic-Funk-Geräten erfolgt dieses Pairing automatisch, sobald ein Gerät erstmalig Nachrichten über den RS485 Bus sendet. Zusätzlich besteht die Möglichkeit, über einen Discovery-Befehl alle am Bus angeschlossenen Module zu ermitteln. Auch bei diesem Vorgang erfolgt im Anschluss daran ein automatisches Pairing aller bis dahin unbekannten Geräte mit der Zentrale bzw. mit FHEM.<br />
<br />
== Aktoren / Sensoren ==<br />
Eine Übersicht und weitere Informationen über die von FHEM unterstützten HomeMatic-Geräte ist [[:Kategorie:HomeMatic Components| hier]] zu finden: <br />
<br />
Hier dennoch eine dedizierte Liste aller HMW-Geräte und der benötigten Interfaces:<br />
* [[Serial/Netzwerk-RS485-Adapter]] Netzwerk-/Serial-/USB-RS485 Adapter<br />
* [[HomeMatic Wired RS485 LAN Gateway|HMW-LGW-O-DR-GS-EU]] HomeMatic Wired RS485 LAN Gateway, Hutschienenmontage<br />
* ''HMW-Sen-SC-12|HMW-Sen-SC-12-DR'' HomeMatic Wired RS485 Schließerkontakt, 12 Eingänge, Hutschienenmontage<br />
* ''HMW-Sen-SC-12|HMW-Sen-SC-12-FM'' HomeMatic Wired RS485 Schließerkontakt, 12 Eingänge, Unterputzmontage<br />
* ''HMW-IO-12-FM'' HomeMatic Wired RS485 I/O-Modul, 12 Ein-/Ausgänge, Unterputzmontage<br />
* [[HMW-IO-12-Sw14-DR Wired RS485 I/O-Modul 12 Eingänge 14 Ausgänge]], Hutschienenmontage<br />
* ''HMW-LC-Sw2-DR'' HomeMatic Wired RS485-Schaltaktor 2fach, Hutschienenmontage<br />
* [[HMW-IO-12-Sw7-DR Wired RS485 I/O-Modul 12 Eingänge 7 Ausgänge]], Hutschienenmontagw<br />
* ''HMW-IO-4-FM'' HomeMatic Wired RS485 4fach-I/O-Modul, 4 Ein-/Ausgänge, Unterputzmontage<br />
* ''HMW-LC-Bl1-DR'' HomeMatic Wired RS485-Rollladenaktor, 1fach, Hutschienenmontage<br />
* [[HMW-LC-Dim1L-DR Wired RS485 Dimmaktor 1fach]], Phasenanschnitt, Hutschienenmontage<br />
<br />
Momentan werden (bzw. wurden) außerdem "HM-Homebrew" Geräte entwickelt. <br />
<br />
{| class="wikitable"<br />
| '''Modell''' <br />
| '''ID'''<br />
| '''Beschreibung'''<br />
| '''FHEM'''<br />
| '''CCU'''<br />
| '''Firmware'''<br />
|-<br />
| [[HBW-1W-T10]]<br />
| 0x81<br />
| 10-fach 1-Wire Temperatursensor<br />
| {{Link2Forum|Topic=22952|Message=207372|LinkText=ja}}<br />
| ja<br />
| [https://github.com/kc-GitHub/HM485-Lib/tree/thorsten/HBW-1W-T10 Git]<br />
|-<br />
| ''HBW-LC-Bl-4''<br />
| 0x82<br />
| 4-Kanal Rollladenaktor<br />
| ja<br />
| <br />
| [https://github.com/ThorstenPferdekaemper/HBWired/tree/master/HBW-LC-BL-4 Git]<br />
|-<br />
| ''HBW-LC-Bl-8''<br />
| 0x92<br />
| 8-Kanal Rollladenaktor<br />
| ja<br />
| <br />
| [https://github.com/ThorstenPferdekaemper/HBWired/tree/master/HBW-LC-BL-8 Git]<br />
|-<br />
| ''HBW-LC-Sw8''<br />
| 0x83<br />
| 8-fach Schaltaktor<br />
| ja<br />
| <br />
| [https://github.com/ThorstenPferdekaemper/HBWired/tree/master/HBW-LC-Sw-8 Git]<br />
|-<br />
| ''HBW-LC-Sw-12''<br />
| 0x93<br />
| 12-fach Schaltaktor<br />
| ja<br />
| <br />
| [https://github.com/ThorstenPferdekaemper/HBWired/tree/master/HBW-LC-Sw-12 Git]<br />
|-<br />
| ''HBW-Sen-EP''<br />
| 0x84<br />
| 8-fach S0-Interface<br />
| ja<br />
| <br />
| [https://github.com/kc-GitHub/HM485-Lib/tree/thorsten/HBW-Sen-EP Git]<br />
|-<br />
| ''HBW-Sen-KEY''<br />
| 0x85<br />
| RFID-Interface<br />
| ja<br />
| <br />
| [https://github.com/kc-GitHub/HM485-Lib/tree/markus/HBW-Sen-KEY Git]<br />
|-<br />
| ''HBW-Sen-SC8''<br />
| 0x86<br />
| 8-fach Tasterschnittstelle<br />
| ja<br />
| <br />
| [https://github.com/mago0211/HBW-RS485 Git]<br />
|-<br />
| {{Link2Forum|Topic=64700|Message=563558|LinkText=HBW-Sen-Key-12}} <br />
| 0x95<br />
| 12-fach Tasterschnittstelle<br />
| ja<br />
| <br />
| [https://github.com/ThorstenPferdekaemper/HBWired Git]<br />
|-<br />
| {{Link2Forum|Topic=22952|Message=270160|LinkText=HBW-CC-Vd2-T}}<br />
| 0x87<br />
| Steuerung 24V-Ventile<br />
| ja<br />
| <br />
| [https://github.com/hresalg/HBW/tree/dev/HBW_CC_Vd2_T Git]<br />
|-<br />
| <br />
| 0x88<br />
| Wettersensor<br />
| <br />
| <br />
| <br />
|-<br />
| <br />
| 0x89<br />
| Tastsensor<br />
| <br />
| <br />
| <br />
|-<br />
| {{Link2Forum|Topic=22952|Message=186435|LinkText=HBW-Sec-MDIR-2}} <br />
| 0x91<br />
| Bewegungsmelder-Schnittstelle<br />
| <br />
| <br />
| [https://github.com/kc-GitHub/HM485-Lib/tree/rene/HBW-Sec-MDIR-2 Git]<br />
|-<br />
| ''HMW-LC-Sw2-DR''<br />
| 0x11<br />
| <br />
| ja<br />
| ja<br />
| [https://github.com/kc-GitHub/HM485-Lib/blob/thorsten/HMW-LC-Sw2-DR Git], {{Link2Forum|Topic=22952|Message=251906|LinkText=Forum}}<br />
|-<br />
| ''HMW-LC-Bl1-DR''<br />
| 0x15<br />
| 1-Kanal Rollladenaktor<br />
| ja<br />
| ja<br />
| [https://github.com/kc-GitHub/HM485-Lib/tree/markus/HMW-LC-Bl1-DR Git]<br />
|-<br />
| ''HMW-IO-12-FM''<br />
| <br />
| <br />
| nein<br />
| nein<br />
| [https://github.com/kc-GitHub/HM485-Lib/tree/thorsten/HMW-IO-12-FM Git]<br />
|-<br />
| {{Link2Forum|Topic=22952|Message=275898|LinkText=HBW_LC_RGB1_CV}}<br />
| 0xA0<br />
| 3-fach Dimmer als RGB-Controller<br />
| ja<br />
| ?<br />
| [https://github.com/BrainHunter/RGB-CTRL Git]<br />
|-<br />
| HBW-SD6-Multikey <br />
| 0xB1<br />
| Reserviert für 6-fach Taster von [http://haus-bus.de/ haus-bus.de]<br />
| nein<br />
| nein<br />
| [https://github.com/haus-bus/MultitasterSD6/tree/HM-Wired Git]<br />
|-<br />
| {{Link2Forum|Topic=22952|Message=837275|LinkText=HBW-IO-10-Dim-6}}<br />
| 0x96<br />
| 6-fach Dimmer mit 10 digitalen Eingängen<br />
| <br />
| <br />
| [https://github.com/loetmeister/HBWired/tree/master/HBW-IO-10-Dim-6 Git]<br />
|-<br />
|}<br />
<br />
In der obigen Liste der Homematic-Wired-Homebrew Geräte kommen auch Modellbezeichnungen von Original-Homematic-Geräten vor (HMW...). In diesen Fällen handelt es sich um Homebrew-Geräte, die sich gegenüber FHEM bzw. der CCU wie das angegebene Gerät verhalten. Unter Umständen weicht aber das Verhalten von dem der Original-Geräte ab. <br />
Die Spalten "FHEM" und "CCU" besagen, ob das entsprechende Gerät in FHEM bzw. in der CCU erkannt wird und funktioniert. Ist in beiden Spalten ein "nein" eingetragen, dann kann davon ausgegangen werden, dass das Gerät noch gar nicht funktioniert. Bei einem "ja" kann es auch noch Einschränkungen geben.<br />
<br />
Zur Erstellung eigener HBW Geräte mittels Arduino gibt es ein {{Link2Forum|Topic=61780|LinkText=Tutorial}} von Thorsten im Forum.<br />
<br />
== Links ==<br />
* [https://github.com/kc-GitHub/FHEM-HM485 Github Repository] der HM485 Module (für FHEM)<br />
* [https://github.com/kc-GitHub/FHEM-HM485/archive/master.zip aktuelle Version] der HM485 Module zum Download (für FHEM)<br />
* [https://github.com/kc-GitHub/HM485-Lib Arduino HBW lib] wird nicht mehr aktuallisiert !!!<br />
* [https://github.com/ThorstenPferdekaemper/HBWired Arduino HBWired lib] aktuelle Version<br />
* {{Link2Forum|Topic=61780|LinkText=Tutorial}} zur Erstellung eigener HBW Geräte mit Arduino<br />
* [http://www.homematic.com/ HomeMatic] Homepage<br />
* Hersteller [http://www.eq-3.de eQ-3] <br />
<br />
[[Kategorie:HomeMatic Components]]<br />
[[Kategorie:Glossary]]</div>Thorsten Pferdekämperhttp://wiki.fhem.de/w/index.php?title=FHEM_User_Interface_Painter&diff=27776FHEM User Interface Painter2018-08-31T20:06:37Z<p>Thorsten Pferdekämper: /* Installation und Upgrade in FHEM */</p>
<hr />
<div>[[Datei:FUIP_Symbolbild.png|mini|400px|FUIP in Aktion]]<br />
Der '''FHEM User Interface Painter (FUIP)''' ist ein FHEM-Modul, mit dem man [[FHEM Tablet UI]] (FTUI) Seiten graphisch ("klickibunti") erstellen kann. D.h. man kann sich ein UI zusammenklicken, welches die Tablet UI Technik verwendet, aber ohne sich selbst unbedingt mit HTML und CSS herumschlagen zu müssen.<br />
Hier ist ein kurzes Video, welches FUIP in Aktion zeigt:<br />
<br />
[https://forum.fhem.de/index.php?action=dlattach;topic=85869.0;attach=98455 Einführungsvideo]<br />
<br />
(Das Video zeigt nicht unbedingt den neusten Stand, aber es dürfte klar werden, wofür FUIP gut sein soll.)<br />
<br />
== Installation und Upgrade in FHEM ==<br />
Genau wie FTUI ist auch FUIP nicht automatisch Teil von FHEM. Es muss explizit installiert bzw. hinzugefügt werden. Die Installation funktioniert folgendermaßen:<br />
* FUIP verwendet FTUI. D.h. man sollte zuerst einmal FTUI installieren, falls noch nicht passiert. Wie das geht steht bei [[FHEM Tablet UI#Installation|FHEM Tablet UI]]. Dabei reicht der erste Schritt aus, da lediglich die FTUI-Dateien von FUIP benötigt werden.<br />
* Dann das FUIP-Repository zum FHEM Update hinzufügen: <br />
** <code>update add https://raw.githubusercontent.com/ThorstenPferdekaemper/FHEM-FUIP/master/controls_fuip.txt</code><br />
* Jetzt <code>update all fuip</code> machen.<br />
* Warten, bis man ganz sicher ist, dass alles installiert ist. Das sieht man normalerweise an der Meldung <code>update finished, "shutdown restart" is needed to activate the changes.</code>. Das ganze kann etwas länger dauern, da FUIP aus einige Dateien besteht, von denen ein paar etwas größer sind. <br />
* Jetzt erst <code>shutdown restart</code>. <br />
* FUIP sollte jetzt installiert sein.<br />
<br />
Zum Upgrade reicht ein <code>update</code>, wenn man FUIP wie oben beschrieben installiert hat. Will man nur den FUIP-Teil aktualisieren und nicht alles in FHEM, dann geht das mit <code>update all fuip</code>.<br />
<br />
Falls es bei oder nach der Installation oder dem Upgrade Probleme gibt (welcher Art auch immer), sollten die folgenden Punkte geprüft werden:<br />
* Wird das richtige Repository benutzt? Man kann das mit <code>update list</code> überprüfen. Wenn der Eintrag für fuip nicht genau so aussieht wie oben beschrieben, dann sollte er per <code>update delete</code> gelöscht werden und dann genau so eingetragen werden wie oben beschrieben. <br />
* Ist der update-Prozess wirklich komplett durchgelaufen? Auch wenn es etwas länger dauert, muss man auf die Meldung <code>update finished, "shutdown restart" is needed to activate the changes.</code> warten, bevor man durchstartet. Im Zweifelsfall einfach noch einmal <code>update all fuip</code> machen und diesmal mehr Geduld haben.<br />
* FHEM braucht Schreibrechte im Verzeichnis <fhem>/FHEM/lib/FUIP/config (<fhem> steht meistens für /opt/fhem) und allen enthaltenen Dateien. Auf Betriebssystemebene (Linux) kann man das mit <code>ls -ls</code> überprüfen. Meistens kann es mit folgendem Befehl repariert werden: <code>chown -R fhem:dialout /opt/fhem/FHEM/lib/FUIP/config</code>. (Dieser Punkt gilt nicht bzw. nicht genau so, wenn man die configDB benutzt.)<br />
* Steht etwas verdächtiges im Logfile?<br />
<br />
== Erste Schritte ==<br />
Zuerst legt man ein "FUIP Device" an, also etwa <code>define ui FUIP</code>. Dieses Device meldet sich sozusagen als Webserver bei FHEM an (wie z.B. auch [[HTTPSRV]]), d.h. es erscheint im Menu oben links (über den Räumen) ein Link "ui". Beim Klick auf diesen Link generiert FUIP eine FTUI Übersichtsseite aus den Räumen im FHEM System. (Das kann ein bisschen dauern, wenn man viele Devices hat.) Nun kann man durch Verschieben und größer/kleiner-Ziehen der einzelnen Zellen bzw. durch Verschieben des Zelleninhalts die Gestaltung ändern. Außerdem kann man über das Zahnrad rechts oben in den Zellen neuen Inhalt hinzufügen, den bestehenden Inhalt ändern und vieles mehr.<br />
Durch Klicken auf die Räume im Menu der Übersichtsseite werden einzelne Raum-Seiten generiert. Diese kann man ebenfalls entsprechend bearbeiten. Natürlich können auch eigene Seiten hinzugefügt werden. Wie das geht sieht man im Video, welches oben verlinkt ist.<br />
<br />
Nachdem man die Seiten entsprechend bearbeitet hat sollte man ein <code>set ui save</code> machen. Ansonsten gehen die Änderungen beim nächsten FHEM-Neustart verloren. Ein normales <code>save config</code> reicht nicht aus und ist auch nicht notwendig.<br />
<br />
Die folgenden detaillierten Informationen können zum Teil veraltet sein, da FUIP noch weitereintwickelt wird. Es sollten allerdings keine Funktionen verschwinden.<br />
<br />
== Das Konfigurations-Popup ==<br />
=== ...für Zellen ===<br />
[[Datei:FUIP_KonfigZelle.png|mini|600px]]<br />
Beim Klick auf das Zahnrad rechts oben in einer Zelle wird der Konfigurations-Dialog für diese Zelle geöffnet. Im Folgenden werden die Funktionen der einzelnen Elemente erklärt.<br />
;Zur Seiten-Konfiguration: Damit kann man zum Konfig-Dialog für die ganze Seite wechseln. <br />
;Zellen-Überschrift: Hier wird die Überschrift der Zelle festgelegt. Eine Zelle muss keine Überschrift haben. (Die Zahlen hinter der Überschrift in der Zelle selbst verschwinden, wenn man das Attribut ''locked'' setzt.)<br />
;Neuer View: Hiermit fügt man einen neuen View, also neuen Inhalt, zu einer Zelle hinzu. Man wählt dann aus, welcher Art View angelegt werden soll und füllt die Details, wie z.B. das zugehörige Device. Der neue View wird an einer freien Stelle (falls möglich) in der Zelle eingefügt. Nach schließen des Konfig-Dialogs kann man den View dann per Drag&Drop geeignet positionieren.<br />
;Neuer View (Device): Dies dient ebenfalls dazu, neue Views in die Zelle zu packen. Allerdings wählt man nicht die Art des Views aus, sondern die FHEM-Devices, die dargestellt werden sollen. Das System sucht dann jeweils einen geeigneten View aus. Bisher funktioniert das nur sehr eingeschränkt, hat aber den Vorteil, dass man gleich mehrere Devices auswählen kann.<br />
;Abbrechen: Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Details zum View: Hier klappt man die Details zum View aus und kann diese ändern. Was man damit genau machen kann kommt auf die Art des View an. Per Drag&Drop kann man auch die Reihenfolge der Views im Konfig-Dialog ändern. Das hat allerdings keinen Effekt auf die Positonierung bereits existierender Views in der Zelle. <br />
;View löschen: Das löscht den View aus der Zelle. Wenn man den View eigentlich nicht löschen, sondern in einer anderen Zelle haben will, dann kann man ihn auch per Drag&Drop in die andere Zelle verschieben. Lässt man einen View in einer anderen Zelle "fallen", dann wird dieser automatisch der neuen Zelle zugeordnet.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Auto-Anordnen: Hiermit kann man die einzelnen Views in der Zelle automatisch anordnen. Es kann momentan sein, dass dadurch Änderungen verloren gehen. D.h. dieser Button sollte nur benutzt werden, wenn man seit dem Öffnen des Dialogs keine Änderungen gemacht hat. Außerdem schließt der Button dan Dialog. FUIP ordnet die Views in der Reihenfolge an, in der sie im Konfig-Popup erscheinen. Das zugrunde liegende Layout ist sehr einfach gehalten und kann sich auch noch ändern. Diese Funktion ist vor Allem brauchbar für mehrere gleichartige Views in derselben Zelle, wie z.B. bei Menus. <br />
;Neue Zelle: Legt eine neue (leere) Zelle auf der aktuellen Seite an. Der Konfig-Dialog wird dabei geschlossen und Änderungen gehen verloren.<br />
;Zelle kopieren: Kopiert die aktuelle Zelle. Man muss eine Seite angeben, zu der die kopierte Zelle gehören soll. Das entsprechende Feld ist mit der aktuellen Seite vorbelegt. Falls man dies nicht ändert, wird einfach eine Kopie der Zelle auf derselben Seite erzeugt. Ansonsten wird die Zelle auf die angegebene Seite kopiert. Die Funktion schließt den Konfig-Dialog und Änderungen gehen verloren. Falls man eine andere Seite angegeben hat, wird zu dieser gewechselt.<br />
;Zelle exportieren: Dies erlaubt die Definition der Zelle herunterzuladen und auf dem Client (also dem Rechner, auf dem der Browser läuft) zu speichern.<br />
;Zelle importieren: Damit lädt man eine exportierte Zelle wieder hoch. FUIP erzeugt dann auf der aktuellen Seite eine neue Zelle mit dem entsprechenden Inhalt. Das funktioniert auch mit Zellen, die von einer anderen FUIP-Seite, einem anderen FUIP-Device oder von einer anderen FHEM-Installation kommen.<br />
;Zelle löschen: Damit löscht man die aktuelle Zelle. Sie verschwindet dann von der aktuellen Seite.<br />
;Toggle editOnly: Bei manchen Views ist es schwierig, sie mit der Maus "anzufassen", da sie sofort eine Aktion auslösen (z.B. bei Links). Mit "Toggle editOnly" wird eine graue "Schicht" über die Views gelegt. Dadurch weiß man besser, wo man den View anfassen kann und Mausklicks haben keine Wirkung mehr, außer Drag&Drop.<br />
<br />
=== ...für Seiten ===<br />
[[Datei:FUIP_SeitenKonfig.png|mini|600px]]<br />
Drückt man im Konfig-Dialog für Zellen auf "Cell/Page" kommt man auf den Konfig-Dialog für ganze Seiten. Die Bedeutung der Einzelnen Elemente ist wie folgt.<br />
;Zur Zellen-Konfiguration:Das bringt einen zurück zum Konfig-Dialog für Zellen.<br />
;Seiten-Überschrift:Hier kann ein Titel für die Seite eingetragen werden. Das erscheint dann je nach Browser irgendwo oben. (Technisch ist es der Inhalt des <title> Tags in <head>.)<br />
;Abbrechen:Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Seite kopieren:Dadurch wird eine neue Seite angelegt, die so aussieht wie die aktuelle. Der Dialog wird dann geschlossen und automatisch zur neuen Seite gesprungen.<br />
;Seite exportieren:Das ist dasselbe wie für Zellen, nur für die ganze aktuelle Seite.<br />
;Seite importieren:Das ist im Prinzip auch wie für Zellen, nur dass eine neue Seite angelegt wird. Exportierte Zellen können nur als Zellen importiert werden und exportierte Seiten nur als Seiten.<br />
<br />
== Das FUIP-Device ==<br />
Wie in [[#Erste Schritte|Erste Schritte]] bereits beschrieben, muss man zur Verwendung von FUIP zuerst ein FUIP-Device anlegen. Alles, was man mit FUIP macht (bzw. was das System macht) passiert in Bezug auf ein FUIP-Device. Man kann auch jederzeit mehrere FUIP-Devices anlegen. Verschiedene Instanzen von FUIP stören sich nicht gegenseitig, man kann aber (z.B. in einem Menu) auf eine andere FUIP-Instanz verweisen (verlinken).<br />
<br />
Das FUIP-Device hat die folgenden Eigenschaften.<br />
=== Sets ===<br />
Die folgenden set-Kommandos sind für den Benutzer gedacht. Es gibt noch weitere set-Kommandos, welche aber vor Allem für FUIP-interne Zwecke gedacht sind. <br />
;save: Mit <code>set <name> save</code> wird der momentane Zustand der FUIP-Seiten zu diesem FUIP-Device gespeichert. Das betrifft nicht die Definition des FUIP-Device selbst (also auch nicht dessen Attribute). Diese müssen nach wie vor über <code>save</code> (also "Save config") gespeichert werden. Die FUIP-Seiten stehen in der Datei <fhem>/FHEM/lib/FUIP/config/FUIP_<name>.cfg. Dabei steht <fhem> in der Regel für /opt/fhem und <name> für den Namen des FUIP-Devices. Ohne ein <code>set <name> save</code> gehen alle Änderungen beim nächsten FHEM Restart verloren. <br />
;load: Mit <code>set <name> load</code> stellt man den Zustand wieder her, der mit <code>set <name> save</code> gespeichert wurde. Das ist vor Allem dann nützlich, wenn man sich beim Bearbeiten der Seiten vertan hat. Ansonsten wird beim FHEM Start das "load" automatisch ausgeführt. <br />
;pagedelete: Mit <code>set <name> pagedelete <page></code> wird die Seite <page> gelöscht. Das kann auch dazu genutzt werden, FUIP zum Neugenerieren einer Seite zu "zwingen", indem man die Seite nach dem Löschen einfach wieder aufruft. Auch das Löschen einer Seite geht ohne ein "save" verloren, d.h. die Seite ist dann nach einem FHEM Neustart wieder da. <br />
;refreshBuffer: FUIP verwendet Informationen aus dem "eigentlichen" FHEM, wie z.B. die Liste aller Devices sowie bestimmte Readings, Internals und Attribute. Insbesondere bei "entferntem" FUIP, also bei Verwendung des Attributs ''fhemwebUrl'', kann die Ermittlung dieser Daten länger dauern. Daher wird praktisch alles durch FUIP zwischengespeichert ("gepuffert"). Wenn man nun neue Devices anlegt bzw. bestehende Devices ändert, dann bekommt das FUIP-Device davon unter Umständen nichts mit. In so einem Fall kann man mit <code>set <name> refreshBuffer</code> den Zwischenspeicher löschen, um FUIP dazu zu zwingen, die Informationen erneut zu ermitteln.<br />
<br />
=== Gets ===<br />
Alle Get-Kommandos sind nur für FUIP-interne Zwecke bestimmt.<br />
<br />
=== Internals ===<br />
;editOnly: Hier wird der "editOnly-Modus" gespeichert, der auf der Konfig-Oberfläche ein- und ausgeschaltet werden kann. Siehe auch [[#Das Konfigurations-Popup|Das Konfigurations-Popup]].<br />
<br />
=== Readings ===<br />
FUIP-Devices haben keine Readings.<br />
<br />
=== Attribute ===<br />
;baseHeight: Basishöhe einer Zelle, d.h. eine 1x1-Zelle ist ''baseHeight'' Pixel hoch. Standardwert ist 108.<br />
;baseWidth: Basisbreite einer Zelle, d.h. eine 1x1-Zelle ist ''baseWidth'' Pixel breit. Standardwert ist 142. Diese Abmessungen beziehen sich nur auf die Zelle selbst, nicht auf den Zwischenraum zwischen zwei Zellen. Der Zwischenraum beträgt (horizontal und vertikal) 10 Pixel.<br />
;pageWidth: Seitenbreite in Pixel. Wenn ''pageWidth'' nicht gesetzt ist (das ist der Default), dann wird die Seitenbreite nicht festgelegt. Sie ergibt sich dann aus ''baseWidth'' (d.h. die Breite einer 1er-Zelle) und der Anzahl der verwendeten Spalten plus die Breite der Zwischenräume. D.h. in der Regel muss man ''pageWidth'' nicht angeben.<br />
:Die Angabe in ''pageWidth'' beeinflusst auch die Darstellung des Hintergrundbilds, falls das Attribut ''styleBackgroundImage'' gesetzt ist. Siehe ''styleBackgroundImage'' für Details.<br />
;fhemwebUrl: Mit FUIP kann man sich auch an ein "entferntes" FHEM ankoppeln. Das Attribut ''fhemwebUrl'' hat dabei in etwa die Bedeutung wie ''fhemweb_url'' bei FTUI. (Siehe auch hier: [[FHEM Tablet UI#Verbindung zu FHEM|Verbindung zu FHEM (FTUI)]].) Genau wie beim "normalen" FTUI muss das Attribut ''CORS'' der FHEMWEB-Instanz des Ziels auf "1" stehen. Ansonsten würde schon FTUI nicht funktionieren. Außerdem darf die FHEMWEB-Instanz keine Passwort-Prüfung haben. Stattdessen kann man mit dem Attribut ''allowedfrom'' oder einer allowed-Instanz den Zugriff einschränken. <br />
:Man darf ''fhemwebUrl'' auf keinen Fall setzen (auch nicht auf 127.0.0.1 oder so), wenn sich die FUIP-Instanz auf das lokale FHEM beziehen soll. In dem Fall würde FHEM ewig auf sich selbst warten.<br />
:Wenn man ein "entferntes" FHEM benutzt, dann können einige Funktionen der Konfigurationsoberfläche etwas Zeit brauchen. Zum Beispiel müssen für die Eingabehilfe für Devices alle Devices aus dem entfernten FHEM gelesen werden. Das ist so implementiert, dass das entfernte FHEM möglichst wenig belastet wird, was aber zu Lasten des FUIP-FHEM geht. Siehe auch das Set-Kommando ''refreshBuffer'' zu diesem Thema.<br />
;locked: Wenn ''locked'' auf "1" gesetzt wird, dann sind die FUIP-Seiten gegen Bearbeitung gesperrt. Das Zahnrad-Icon oben rechts erscheint dann nicht mehr. Dadurch kann ein reiner "Tablet-UI Benutzer" die Seiten nicht mehr ändern und die Oberfläche sieht komplett wie normalerweise bei FTUI aus. Zusätzlich verschwinden auch die Zellennummern rechts neben den Zellenüberschriften und Zellen ohne Überschrift haben dann auch keinen "Titelbalken" mehr.<br />
;styleBackgroundImage: Dateiname des Hintergrundbilds. Die Bilddatei muss sich im Verzeichnis <fhem>/FHEM/lib/FUIP/images befinden. (<fhem> steht meistens für /opt/fhem) Unterstützt werden jpg- und png- Dateien. Nachdem eine neue Datei hochgeladen wurde, muss man im Browser (in FHEMWEB) die Seite einmal auffrischen (neu laden), um die neue Datei verwenden zu können. <br />
:Falls das Attribut ''pageWidth'' gesetzt ist, dann wird die Breite des Hintergrundbilds auf die angegebene Größe gesetzt. Ansonsten (ohne ''pageWidth'') nimmt das Bild die Breite des Browser-Fensters ein. Die Höhe des Bilds wird entsprechend skaliert, man muss sich also selbst darum kümmern, dass das Bild ein passendes Seitenverhältnis hat.<br />
:Bei Verwendung eines Hintergrundbilds werden die Zellenhintergründe automatisch auf halbtransparent gesetzt, so dass das Bild durchscheint. <br />
;styleColor: Standard-Textfarbe (Vordergrundfarbe) für alle Views. Der Defaultwert ist #808080, also ein helles Grau. Man kann die Farbe nicht für alle FTUI-Widgets festlegen. D.h. ''styleColor'' funktioniert nicht unbedingt überall.<br />
<br />
== Links ==<br />
* {{Link2Forum|Topic=85869|LinkText=Foren-Thread zur Geburt von FUIP}}<br />
<br />
[[Kategorie:FHEM Frontends]]</div>Thorsten Pferdekämperhttp://wiki.fhem.de/w/index.php?title=FHEM_User_Interface_Painter&diff=27775FHEM User Interface Painter2018-08-31T20:03:38Z<p>Thorsten Pferdekämper: /* Installation und Upgrade in FHEM */</p>
<hr />
<div>[[Datei:FUIP_Symbolbild.png|mini|400px|FUIP in Aktion]]<br />
Der '''FHEM User Interface Painter (FUIP)''' ist ein FHEM-Modul, mit dem man [[FHEM Tablet UI]] (FTUI) Seiten graphisch ("klickibunti") erstellen kann. D.h. man kann sich ein UI zusammenklicken, welches die Tablet UI Technik verwendet, aber ohne sich selbst unbedingt mit HTML und CSS herumschlagen zu müssen.<br />
Hier ist ein kurzes Video, welches FUIP in Aktion zeigt:<br />
<br />
[https://forum.fhem.de/index.php?action=dlattach;topic=85869.0;attach=98455 Einführungsvideo]<br />
<br />
(Das Video zeigt nicht unbedingt den neusten Stand, aber es dürfte klar werden, wofür FUIP gut sein soll.)<br />
<br />
== Installation und Upgrade in FHEM ==<br />
Genau wie FTUI ist auch FUIP nicht automatisch Teil von FHEM. Es muss explizit installiert bzw. hinzugefügt werden. Die Installation funktioniert folgendermaßen:<br />
* FUIP verwendet FTUI. D.h. man sollte zuerst einmal FTUI installieren, falls noch nicht passiert. Wie das geht steht bei [[FHEM Tablet UI#Installation|FHEM Tablet UI]]. Dabei reicht der erste Schritt aus, da lediglich die FTUI-Dateien von FUIP benötigt werden.<br />
* Dann das FUIP-Repository zum FHEM Update hinzufügen: <br />
** <code>update add https://raw.githubusercontent.com/ThorstenPferdekaemper/FHEM-FUIP/master/controls_fuip.txt</code><br />
* Jetzt <code>update all fuip</code> und <code>shutdown restart</code>. FUIP sollte jetzt installiert sein.<br />
<br />
Zum Upgrade reicht ein <code>update</code>, wenn man FUIP wie oben beschrieben installiert hat. Will man nur den FUIP-Teil aktualisieren und nicht alles in FHEM, dann geht das mit <code>update all fuip</code>.<br />
<br />
Falls es bei oder nach der Installation oder dem Upgrade Probleme gibt (welcher Art auch immer), sollten die folgenden Punkte geprüft werden:<br />
* Wird das richtige Repository benutzt? Man kann das mit <code>update list</code> überprüfen. Wenn der Eintrag für fuip nicht genau so aussieht wie oben beschrieben, dann sollte er per <code>update delete</code> gelöscht werden und dann genau so eingetragen werden wie oben beschrieben. <br />
* Ist der update-Prozess wirklich komplett durchgelaufen? Auch wenn es etwas länger dauert, muss man auf die Meldung <code>update finished, "shutdown restart" is needed to activate the changes.</code> warten, bevor man durchstartet. Im Zweifelsfall einfach noch einmal <code>update all fuip</code> machen und diesmal mehr Geduld haben.<br />
* FHEM braucht Schreibrechte im Verzeichnis <fhem>/FHEM/lib/FUIP/config (<fhem> steht meistens für /opt/fhem) und allen enthaltenen Dateien. Auf Betriebssystemebene (Linux) kann man das mit <code>ls -ls</code> überprüfen. Meistens kann es mit folgendem Befehl repariert werden: <code>chown -R fhem:dialout /opt/fhem/FHEM/lib/FUIP/config</code>. (Dieser Punkt gilt nicht bzw. nicht genau so, wenn man die configDB benutzt.)<br />
* Steht etwas verdächtiges im Logfile?<br />
<br />
== Erste Schritte ==<br />
Zuerst legt man ein "FUIP Device" an, also etwa <code>define ui FUIP</code>. Dieses Device meldet sich sozusagen als Webserver bei FHEM an (wie z.B. auch [[HTTPSRV]]), d.h. es erscheint im Menu oben links (über den Räumen) ein Link "ui". Beim Klick auf diesen Link generiert FUIP eine FTUI Übersichtsseite aus den Räumen im FHEM System. (Das kann ein bisschen dauern, wenn man viele Devices hat.) Nun kann man durch Verschieben und größer/kleiner-Ziehen der einzelnen Zellen bzw. durch Verschieben des Zelleninhalts die Gestaltung ändern. Außerdem kann man über das Zahnrad rechts oben in den Zellen neuen Inhalt hinzufügen, den bestehenden Inhalt ändern und vieles mehr.<br />
Durch Klicken auf die Räume im Menu der Übersichtsseite werden einzelne Raum-Seiten generiert. Diese kann man ebenfalls entsprechend bearbeiten. Natürlich können auch eigene Seiten hinzugefügt werden. Wie das geht sieht man im Video, welches oben verlinkt ist.<br />
<br />
Nachdem man die Seiten entsprechend bearbeitet hat sollte man ein <code>set ui save</code> machen. Ansonsten gehen die Änderungen beim nächsten FHEM-Neustart verloren. Ein normales <code>save config</code> reicht nicht aus und ist auch nicht notwendig.<br />
<br />
Die folgenden detaillierten Informationen können zum Teil veraltet sein, da FUIP noch weitereintwickelt wird. Es sollten allerdings keine Funktionen verschwinden.<br />
<br />
== Das Konfigurations-Popup ==<br />
=== ...für Zellen ===<br />
[[Datei:FUIP_KonfigZelle.png|mini|600px]]<br />
Beim Klick auf das Zahnrad rechts oben in einer Zelle wird der Konfigurations-Dialog für diese Zelle geöffnet. Im Folgenden werden die Funktionen der einzelnen Elemente erklärt.<br />
;Zur Seiten-Konfiguration: Damit kann man zum Konfig-Dialog für die ganze Seite wechseln. <br />
;Zellen-Überschrift: Hier wird die Überschrift der Zelle festgelegt. Eine Zelle muss keine Überschrift haben. (Die Zahlen hinter der Überschrift in der Zelle selbst verschwinden, wenn man das Attribut ''locked'' setzt.)<br />
;Neuer View: Hiermit fügt man einen neuen View, also neuen Inhalt, zu einer Zelle hinzu. Man wählt dann aus, welcher Art View angelegt werden soll und füllt die Details, wie z.B. das zugehörige Device. Der neue View wird an einer freien Stelle (falls möglich) in der Zelle eingefügt. Nach schließen des Konfig-Dialogs kann man den View dann per Drag&Drop geeignet positionieren.<br />
;Neuer View (Device): Dies dient ebenfalls dazu, neue Views in die Zelle zu packen. Allerdings wählt man nicht die Art des Views aus, sondern die FHEM-Devices, die dargestellt werden sollen. Das System sucht dann jeweils einen geeigneten View aus. Bisher funktioniert das nur sehr eingeschränkt, hat aber den Vorteil, dass man gleich mehrere Devices auswählen kann.<br />
;Abbrechen: Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Details zum View: Hier klappt man die Details zum View aus und kann diese ändern. Was man damit genau machen kann kommt auf die Art des View an. Per Drag&Drop kann man auch die Reihenfolge der Views im Konfig-Dialog ändern. Das hat allerdings keinen Effekt auf die Positonierung bereits existierender Views in der Zelle. <br />
;View löschen: Das löscht den View aus der Zelle. Wenn man den View eigentlich nicht löschen, sondern in einer anderen Zelle haben will, dann kann man ihn auch per Drag&Drop in die andere Zelle verschieben. Lässt man einen View in einer anderen Zelle "fallen", dann wird dieser automatisch der neuen Zelle zugeordnet.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Auto-Anordnen: Hiermit kann man die einzelnen Views in der Zelle automatisch anordnen. Es kann momentan sein, dass dadurch Änderungen verloren gehen. D.h. dieser Button sollte nur benutzt werden, wenn man seit dem Öffnen des Dialogs keine Änderungen gemacht hat. Außerdem schließt der Button dan Dialog. FUIP ordnet die Views in der Reihenfolge an, in der sie im Konfig-Popup erscheinen. Das zugrunde liegende Layout ist sehr einfach gehalten und kann sich auch noch ändern. Diese Funktion ist vor Allem brauchbar für mehrere gleichartige Views in derselben Zelle, wie z.B. bei Menus. <br />
;Neue Zelle: Legt eine neue (leere) Zelle auf der aktuellen Seite an. Der Konfig-Dialog wird dabei geschlossen und Änderungen gehen verloren.<br />
;Zelle kopieren: Kopiert die aktuelle Zelle. Man muss eine Seite angeben, zu der die kopierte Zelle gehören soll. Das entsprechende Feld ist mit der aktuellen Seite vorbelegt. Falls man dies nicht ändert, wird einfach eine Kopie der Zelle auf derselben Seite erzeugt. Ansonsten wird die Zelle auf die angegebene Seite kopiert. Die Funktion schließt den Konfig-Dialog und Änderungen gehen verloren. Falls man eine andere Seite angegeben hat, wird zu dieser gewechselt.<br />
;Zelle exportieren: Dies erlaubt die Definition der Zelle herunterzuladen und auf dem Client (also dem Rechner, auf dem der Browser läuft) zu speichern.<br />
;Zelle importieren: Damit lädt man eine exportierte Zelle wieder hoch. FUIP erzeugt dann auf der aktuellen Seite eine neue Zelle mit dem entsprechenden Inhalt. Das funktioniert auch mit Zellen, die von einer anderen FUIP-Seite, einem anderen FUIP-Device oder von einer anderen FHEM-Installation kommen.<br />
;Zelle löschen: Damit löscht man die aktuelle Zelle. Sie verschwindet dann von der aktuellen Seite.<br />
;Toggle editOnly: Bei manchen Views ist es schwierig, sie mit der Maus "anzufassen", da sie sofort eine Aktion auslösen (z.B. bei Links). Mit "Toggle editOnly" wird eine graue "Schicht" über die Views gelegt. Dadurch weiß man besser, wo man den View anfassen kann und Mausklicks haben keine Wirkung mehr, außer Drag&Drop.<br />
<br />
=== ...für Seiten ===<br />
[[Datei:FUIP_SeitenKonfig.png|mini|600px]]<br />
Drückt man im Konfig-Dialog für Zellen auf "Cell/Page" kommt man auf den Konfig-Dialog für ganze Seiten. Die Bedeutung der Einzelnen Elemente ist wie folgt.<br />
;Zur Zellen-Konfiguration:Das bringt einen zurück zum Konfig-Dialog für Zellen.<br />
;Seiten-Überschrift:Hier kann ein Titel für die Seite eingetragen werden. Das erscheint dann je nach Browser irgendwo oben. (Technisch ist es der Inhalt des <title> Tags in <head>.)<br />
;Abbrechen:Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Seite kopieren:Dadurch wird eine neue Seite angelegt, die so aussieht wie die aktuelle. Der Dialog wird dann geschlossen und automatisch zur neuen Seite gesprungen.<br />
;Seite exportieren:Das ist dasselbe wie für Zellen, nur für die ganze aktuelle Seite.<br />
;Seite importieren:Das ist im Prinzip auch wie für Zellen, nur dass eine neue Seite angelegt wird. Exportierte Zellen können nur als Zellen importiert werden und exportierte Seiten nur als Seiten.<br />
<br />
== Das FUIP-Device ==<br />
Wie in [[#Erste Schritte|Erste Schritte]] bereits beschrieben, muss man zur Verwendung von FUIP zuerst ein FUIP-Device anlegen. Alles, was man mit FUIP macht (bzw. was das System macht) passiert in Bezug auf ein FUIP-Device. Man kann auch jederzeit mehrere FUIP-Devices anlegen. Verschiedene Instanzen von FUIP stören sich nicht gegenseitig, man kann aber (z.B. in einem Menu) auf eine andere FUIP-Instanz verweisen (verlinken).<br />
<br />
Das FUIP-Device hat die folgenden Eigenschaften.<br />
=== Sets ===<br />
Die folgenden set-Kommandos sind für den Benutzer gedacht. Es gibt noch weitere set-Kommandos, welche aber vor Allem für FUIP-interne Zwecke gedacht sind. <br />
;save: Mit <code>set <name> save</code> wird der momentane Zustand der FUIP-Seiten zu diesem FUIP-Device gespeichert. Das betrifft nicht die Definition des FUIP-Device selbst (also auch nicht dessen Attribute). Diese müssen nach wie vor über <code>save</code> (also "Save config") gespeichert werden. Die FUIP-Seiten stehen in der Datei <fhem>/FHEM/lib/FUIP/config/FUIP_<name>.cfg. Dabei steht <fhem> in der Regel für /opt/fhem und <name> für den Namen des FUIP-Devices. Ohne ein <code>set <name> save</code> gehen alle Änderungen beim nächsten FHEM Restart verloren. <br />
;load: Mit <code>set <name> load</code> stellt man den Zustand wieder her, der mit <code>set <name> save</code> gespeichert wurde. Das ist vor Allem dann nützlich, wenn man sich beim Bearbeiten der Seiten vertan hat. Ansonsten wird beim FHEM Start das "load" automatisch ausgeführt. <br />
;pagedelete: Mit <code>set <name> pagedelete <page></code> wird die Seite <page> gelöscht. Das kann auch dazu genutzt werden, FUIP zum Neugenerieren einer Seite zu "zwingen", indem man die Seite nach dem Löschen einfach wieder aufruft. Auch das Löschen einer Seite geht ohne ein "save" verloren, d.h. die Seite ist dann nach einem FHEM Neustart wieder da. <br />
;refreshBuffer: FUIP verwendet Informationen aus dem "eigentlichen" FHEM, wie z.B. die Liste aller Devices sowie bestimmte Readings, Internals und Attribute. Insbesondere bei "entferntem" FUIP, also bei Verwendung des Attributs ''fhemwebUrl'', kann die Ermittlung dieser Daten länger dauern. Daher wird praktisch alles durch FUIP zwischengespeichert ("gepuffert"). Wenn man nun neue Devices anlegt bzw. bestehende Devices ändert, dann bekommt das FUIP-Device davon unter Umständen nichts mit. In so einem Fall kann man mit <code>set <name> refreshBuffer</code> den Zwischenspeicher löschen, um FUIP dazu zu zwingen, die Informationen erneut zu ermitteln.<br />
<br />
=== Gets ===<br />
Alle Get-Kommandos sind nur für FUIP-interne Zwecke bestimmt.<br />
<br />
=== Internals ===<br />
;editOnly: Hier wird der "editOnly-Modus" gespeichert, der auf der Konfig-Oberfläche ein- und ausgeschaltet werden kann. Siehe auch [[#Das Konfigurations-Popup|Das Konfigurations-Popup]].<br />
<br />
=== Readings ===<br />
FUIP-Devices haben keine Readings.<br />
<br />
=== Attribute ===<br />
;baseHeight: Basishöhe einer Zelle, d.h. eine 1x1-Zelle ist ''baseHeight'' Pixel hoch. Standardwert ist 108.<br />
;baseWidth: Basisbreite einer Zelle, d.h. eine 1x1-Zelle ist ''baseWidth'' Pixel breit. Standardwert ist 142. Diese Abmessungen beziehen sich nur auf die Zelle selbst, nicht auf den Zwischenraum zwischen zwei Zellen. Der Zwischenraum beträgt (horizontal und vertikal) 10 Pixel.<br />
;pageWidth: Seitenbreite in Pixel. Wenn ''pageWidth'' nicht gesetzt ist (das ist der Default), dann wird die Seitenbreite nicht festgelegt. Sie ergibt sich dann aus ''baseWidth'' (d.h. die Breite einer 1er-Zelle) und der Anzahl der verwendeten Spalten plus die Breite der Zwischenräume. D.h. in der Regel muss man ''pageWidth'' nicht angeben.<br />
:Die Angabe in ''pageWidth'' beeinflusst auch die Darstellung des Hintergrundbilds, falls das Attribut ''styleBackgroundImage'' gesetzt ist. Siehe ''styleBackgroundImage'' für Details.<br />
;fhemwebUrl: Mit FUIP kann man sich auch an ein "entferntes" FHEM ankoppeln. Das Attribut ''fhemwebUrl'' hat dabei in etwa die Bedeutung wie ''fhemweb_url'' bei FTUI. (Siehe auch hier: [[FHEM Tablet UI#Verbindung zu FHEM|Verbindung zu FHEM (FTUI)]].) Genau wie beim "normalen" FTUI muss das Attribut ''CORS'' der FHEMWEB-Instanz des Ziels auf "1" stehen. Ansonsten würde schon FTUI nicht funktionieren. Außerdem darf die FHEMWEB-Instanz keine Passwort-Prüfung haben. Stattdessen kann man mit dem Attribut ''allowedfrom'' oder einer allowed-Instanz den Zugriff einschränken. <br />
:Man darf ''fhemwebUrl'' auf keinen Fall setzen (auch nicht auf 127.0.0.1 oder so), wenn sich die FUIP-Instanz auf das lokale FHEM beziehen soll. In dem Fall würde FHEM ewig auf sich selbst warten.<br />
:Wenn man ein "entferntes" FHEM benutzt, dann können einige Funktionen der Konfigurationsoberfläche etwas Zeit brauchen. Zum Beispiel müssen für die Eingabehilfe für Devices alle Devices aus dem entfernten FHEM gelesen werden. Das ist so implementiert, dass das entfernte FHEM möglichst wenig belastet wird, was aber zu Lasten des FUIP-FHEM geht. Siehe auch das Set-Kommando ''refreshBuffer'' zu diesem Thema.<br />
;locked: Wenn ''locked'' auf "1" gesetzt wird, dann sind die FUIP-Seiten gegen Bearbeitung gesperrt. Das Zahnrad-Icon oben rechts erscheint dann nicht mehr. Dadurch kann ein reiner "Tablet-UI Benutzer" die Seiten nicht mehr ändern und die Oberfläche sieht komplett wie normalerweise bei FTUI aus. Zusätzlich verschwinden auch die Zellennummern rechts neben den Zellenüberschriften und Zellen ohne Überschrift haben dann auch keinen "Titelbalken" mehr.<br />
;styleBackgroundImage: Dateiname des Hintergrundbilds. Die Bilddatei muss sich im Verzeichnis <fhem>/FHEM/lib/FUIP/images befinden. (<fhem> steht meistens für /opt/fhem) Unterstützt werden jpg- und png- Dateien. Nachdem eine neue Datei hochgeladen wurde, muss man im Browser (in FHEMWEB) die Seite einmal auffrischen (neu laden), um die neue Datei verwenden zu können. <br />
:Falls das Attribut ''pageWidth'' gesetzt ist, dann wird die Breite des Hintergrundbilds auf die angegebene Größe gesetzt. Ansonsten (ohne ''pageWidth'') nimmt das Bild die Breite des Browser-Fensters ein. Die Höhe des Bilds wird entsprechend skaliert, man muss sich also selbst darum kümmern, dass das Bild ein passendes Seitenverhältnis hat.<br />
:Bei Verwendung eines Hintergrundbilds werden die Zellenhintergründe automatisch auf halbtransparent gesetzt, so dass das Bild durchscheint. <br />
;styleColor: Standard-Textfarbe (Vordergrundfarbe) für alle Views. Der Defaultwert ist #808080, also ein helles Grau. Man kann die Farbe nicht für alle FTUI-Widgets festlegen. D.h. ''styleColor'' funktioniert nicht unbedingt überall.<br />
<br />
== Links ==<br />
* {{Link2Forum|Topic=85869|LinkText=Foren-Thread zur Geburt von FUIP}}<br />
<br />
[[Kategorie:FHEM Frontends]]</div>Thorsten Pferdekämperhttp://wiki.fhem.de/w/index.php?title=FHEM_User_Interface_Painter&diff=27510FHEM User Interface Painter2018-07-20T18:28:50Z<p>Thorsten Pferdekämper: "locked" und "styleBackgroundImage" erweitert</p>
<hr />
<div>[[Datei:FUIP_Symbolbild.png|mini|400px|FUIP in Aktion]]<br />
Der '''FHEM User Interface Painter (FUIP)''' ist ein FHEM-Modul, mit dem man [[FHEM Tablet UI]] (FTUI) Seiten graphisch ("klickibunti") erstellen kann. D.h. man kann sich ein UI zusammenklicken, welches die Tablet UI Technik verwendet, aber ohne sich selbst unbedingt mit HTML und CSS herumschlagen zu müssen.<br />
Hier ist ein kurzes Video, welches FUIP in Aktion zeigt:<br />
<br />
[https://forum.fhem.de/index.php?action=dlattach;topic=85869.0;attach=98455 Einführungsvideo]<br />
<br />
(Das Video zeigt nicht unbedingt den neusten Stand, aber es dürfte klar werden, wofür FUIP gut sein soll.)<br />
<br />
== Installation und Upgrade in FHEM ==<br />
Genau wie FTUI ist auch FUIP nicht automatisch Teil von FHEM. Es muss explizit installiert bzw. hinzugefügt werden. Die Installation funktioniert folgendermaßen:<br />
* FUIP verwendet FTUI. D.h. man sollte zuerst einmal FTUI installieren, falls noch nicht passiert. Wie das geht steht bei [[FHEM Tablet UI#Installation|FHEM Tablet UI]]. Dabei reicht der erste Schritt aus, da lediglich die FTUI-Dateien von FUIP benötigt werden.<br />
* Dann das FUIP-Repository zum FHEM Update hinzufügen: <br />
** <code>update add https://raw.githubusercontent.com/ThorstenPferdekaemper/FHEM-FUIP/master/controls_fuip.txt</code><br />
* Jetzt <code>update all fuip</code> und <code>shutdown restart</code>. FUIP sollte jetzt installiert sein.<br />
<br />
Zum Upgrade reicht ein <code>update</code>, wenn man FUIP wie oben beschrieben installiert hat. Will man nur den FUIP-Teil aktualisieren und nicht alles in FHEM, dann geht das mit <code>update all fuip</code>.<br />
<br />
Falls es insbesondere beim Upgrade oder nach einem Upgrade Probleme gibt (welcher Art auch immer), sollten die folgenden Punkte geprüft werden:<br />
* Wird das richtige Repository benutzt? Man kann das mit <code>update list</code> überprüfen. Wenn der Eintrag für fuip nicht genau so aussieht wie oben beschrieben, dann sollte er per <code>update delete</code> gelöscht werden und dann genau so eingetragen werden wie oben beschrieben. <br />
* FHEM braucht Schreibrechte im Verzeichnis <fhem>/FHEM/lib/FUIP/config (<fhem> steht meistens für /opt/fhem) und allen enthaltenen Dateien. Auf Betriebssystemebene (Linux) kann man das mit <code>ls -ls</code> überprüfen. Meistens kann es mit folgendem Befehl repariert werden: <code>chown -R fhem:dialout /opt/fhem/FHEM/lib/FUIP/config</code>. (Dieser Punkt gilt nicht bzw. nicht genau so, wenn man die configDB benutzt.)<br />
* Steht etwas verdächtiges im Logfile?<br />
<br />
== Erste Schritte ==<br />
Zuerst legt man ein "FUIP Device" an, also etwa <code>define ui FUIP</code>. Dieses Device meldet sich sozusagen als Webserver bei FHEM an (wie z.B. auch [[HTTPSRV]]), d.h. es erscheint im Menu oben links (über den Räumen) ein Link "ui". Beim Klick auf diesen Link generiert FUIP eine FTUI Übersichtsseite aus den Räumen im FHEM System. (Das kann ein bisschen dauern, wenn man viele Devices hat.) Nun kann man durch Verschieben und größer/kleiner-Ziehen der einzelnen Zellen bzw. durch Verschieben des Zelleninhalts die Gestaltung ändern. Außerdem kann man über das Zahnrad rechts oben in den Zellen neuen Inhalt hinzufügen, den bestehenden Inhalt ändern und vieles mehr.<br />
Durch Klicken auf die Räume im Menu der Übersichtsseite werden einzelne Raum-Seiten generiert. Diese kann man ebenfalls entsprechend bearbeiten. Natürlich können auch eigene Seiten hinzugefügt werden. Wie das geht sieht man im Video, welches oben verlinkt ist.<br />
<br />
Nachdem man die Seiten entsprechend bearbeitet hat sollte man ein <code>set ui save</code> machen. Ansonsten gehen die Änderungen beim nächsten FHEM-Neustart verloren. Ein normales <code>save config</code> reicht nicht aus und ist auch nicht notwendig.<br />
<br />
Die folgenden detaillierten Informationen können zum Teil veraltet sein, da FUIP noch weitereintwickelt wird. Es sollten allerdings keine Funktionen verschwinden.<br />
<br />
== Das Konfigurations-Popup ==<br />
=== ...für Zellen ===<br />
[[Datei:FUIP_KonfigZelle.png|mini|600px]]<br />
Beim Klick auf das Zahnrad rechts oben in einer Zelle wird der Konfigurations-Dialog für diese Zelle geöffnet. Im Folgenden werden die Funktionen der einzelnen Elemente erklärt.<br />
;Zur Seiten-Konfiguration: Damit kann man zum Konfig-Dialog für die ganze Seite wechseln. <br />
;Zellen-Überschrift: Hier wird die Überschrift der Zelle festgelegt. Eine Zelle muss keine Überschrift haben. (Die Zahlen hinter der Überschrift in der Zelle selbst verschwinden, wenn man das Attribut ''locked'' setzt.)<br />
;Neuer View: Hiermit fügt man einen neuen View, also neuen Inhalt, zu einer Zelle hinzu. Man wählt dann aus, welcher Art View angelegt werden soll und füllt die Details, wie z.B. das zugehörige Device. Der neue View wird an einer freien Stelle (falls möglich) in der Zelle eingefügt. Nach schließen des Konfig-Dialogs kann man den View dann per Drag&Drop geeignet positionieren.<br />
;Neuer View (Device): Dies dient ebenfalls dazu, neue Views in die Zelle zu packen. Allerdings wählt man nicht die Art des Views aus, sondern die FHEM-Devices, die dargestellt werden sollen. Das System sucht dann jeweils einen geeigneten View aus. Bisher funktioniert das nur sehr eingeschränkt, hat aber den Vorteil, dass man gleich mehrere Devices auswählen kann.<br />
;Abbrechen: Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Details zum View: Hier klappt man die Details zum View aus und kann diese ändern. Was man damit genau machen kann kommt auf die Art des View an. Per Drag&Drop kann man auch die Reihenfolge der Views im Konfig-Dialog ändern. Das hat allerdings keinen Effekt auf die Positonierung bereits existierender Views in der Zelle. <br />
;View löschen: Das löscht den View aus der Zelle. Wenn man den View eigentlich nicht löschen, sondern in einer anderen Zelle haben will, dann kann man ihn auch per Drag&Drop in die andere Zelle verschieben. Lässt man einen View in einer anderen Zelle "fallen", dann wird dieser automatisch der neuen Zelle zugeordnet.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Auto-Anordnen: Hiermit kann man die einzelnen Views in der Zelle automatisch anordnen. Es kann momentan sein, dass dadurch Änderungen verloren gehen. D.h. dieser Button sollte nur benutzt werden, wenn man seit dem Öffnen des Dialogs keine Änderungen gemacht hat. Außerdem schließt der Button dan Dialog. FUIP ordnet die Views in der Reihenfolge an, in der sie im Konfig-Popup erscheinen. Das zugrunde liegende Layout ist sehr einfach gehalten und kann sich auch noch ändern. Diese Funktion ist vor Allem brauchbar für mehrere gleichartige Views in derselben Zelle, wie z.B. bei Menus. <br />
;Neue Zelle: Legt eine neue (leere) Zelle auf der aktuellen Seite an. Der Konfig-Dialog wird dabei geschlossen und Änderungen gehen verloren.<br />
;Zelle kopieren: Kopiert die aktuelle Zelle. Man muss eine Seite angeben, zu der die kopierte Zelle gehören soll. Das entsprechende Feld ist mit der aktuellen Seite vorbelegt. Falls man dies nicht ändert, wird einfach eine Kopie der Zelle auf derselben Seite erzeugt. Ansonsten wird die Zelle auf die angegebene Seite kopiert. Die Funktion schließt den Konfig-Dialog und Änderungen gehen verloren. Falls man eine andere Seite angegeben hat, wird zu dieser gewechselt.<br />
;Zelle exportieren: Dies erlaubt die Definition der Zelle herunterzuladen und auf dem Client (also dem Rechner, auf dem der Browser läuft) zu speichern.<br />
;Zelle importieren: Damit lädt man eine exportierte Zelle wieder hoch. FUIP erzeugt dann auf der aktuellen Seite eine neue Zelle mit dem entsprechenden Inhalt. Das funktioniert auch mit Zellen, die von einer anderen FUIP-Seite, einem anderen FUIP-Device oder von einer anderen FHEM-Installation kommen.<br />
;Zelle löschen: Damit löscht man die aktuelle Zelle. Sie verschwindet dann von der aktuellen Seite.<br />
;Toggle editOnly: Bei manchen Views ist es schwierig, sie mit der Maus "anzufassen", da sie sofort eine Aktion auslösen (z.B. bei Links). Mit "Toggle editOnly" wird eine graue "Schicht" über die Views gelegt. Dadurch weiß man besser, wo man den View anfassen kann und Mausklicks haben keine Wirkung mehr, außer Drag&Drop.<br />
<br />
=== ...für Seiten ===<br />
[[Datei:FUIP_SeitenKonfig.png|mini|600px]]<br />
Drückt man im Konfig-Dialog für Zellen auf "Cell/Page" kommt man auf den Konfig-Dialog für ganze Seiten. Die Bedeutung der Einzelnen Elemente ist wie folgt.<br />
;Zur Zellen-Konfiguration:Das bringt einen zurück zum Konfig-Dialog für Zellen.<br />
;Seiten-Überschrift:Hier kann ein Titel für die Seite eingetragen werden. Das erscheint dann je nach Browser irgendwo oben. (Technisch ist es der Inhalt des <title> Tags in <head>.)<br />
;Abbrechen:Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Seite kopieren:Dadurch wird eine neue Seite angelegt, die so aussieht wie die aktuelle. Der Dialog wird dann geschlossen und automatisch zur neuen Seite gesprungen.<br />
;Seite exportieren:Das ist dasselbe wie für Zellen, nur für die ganze aktuelle Seite.<br />
;Seite importieren:Das ist im Prinzip auch wie für Zellen, nur dass eine neue Seite angelegt wird. Exportierte Zellen können nur als Zellen importiert werden und exportierte Seiten nur als Seiten.<br />
<br />
== Das FUIP-Device ==<br />
Wie in [[#Erste Schritte|Erste Schritte]] bereits beschrieben, muss man zur Verwendung von FUIP zuerst ein FUIP-Device anlegen. Alles, was man mit FUIP macht (bzw. was das System macht) passiert in Bezug auf ein FUIP-Device. Man kann auch jederzeit mehrere FUIP-Devices anlegen. Verschiedene Instanzen von FUIP stören sich nicht gegenseitig, man kann aber (z.B. in einem Menu) auf eine andere FUIP-Instanz verweisen (verlinken).<br />
<br />
Das FUIP-Device hat die folgenden Eigenschaften.<br />
=== Sets ===<br />
Die folgenden set-Kommandos sind für den Benutzer gedacht. Es gibt noch weitere set-Kommandos, welche aber vor Allem für FUIP-interne Zwecke gedacht sind. <br />
;save: Mit <code>set <name> save</code> wird der momentane Zustand der FUIP-Seiten zu diesem FUIP-Device gespeichert. Das betrifft nicht die Definition des FUIP-Device selbst (also auch nicht dessen Attribute). Diese müssen nach wie vor über <code>save</code> (also "Save config") gespeichert werden. Die FUIP-Seiten stehen in der Datei <fhem>/FHEM/lib/FUIP/config/FUIP_<name>.cfg. Dabei steht <fhem> in der Regel für /opt/fhem und <name> für den Namen des FUIP-Devices. Ohne ein <code>set <name> save</code> gehen alle Änderungen beim nächsten FHEM Restart verloren. <br />
;load: Mit <code>set <name> load</code> stellt man den Zustand wieder her, der mit <code>set <name> save</code> gespeichert wurde. Das ist vor Allem dann nützlich, wenn man sich beim Bearbeiten der Seiten vertan hat. Ansonsten wird beim FHEM Start das "load" automatisch ausgeführt. <br />
;pagedelete: Mit <code>set <name> pagedelete <page></code> wird die Seite <page> gelöscht. Das kann auch dazu genutzt werden, FUIP zum Neugenerieren einer Seite zu "zwingen", indem man die Seite nach dem Löschen einfach wieder aufruft. Auch das Löschen einer Seite geht ohne ein "save" verloren, d.h. die Seite ist dann nach einem FHEM Neustart wieder da. <br />
;refreshBuffer: FUIP verwendet Informationen aus dem "eigentlichen" FHEM, wie z.B. die Liste aller Devices sowie bestimmte Readings, Internals und Attribute. Insbesondere bei "entferntem" FUIP, also bei Verwendung des Attributs ''fhemwebUrl'', kann die Ermittlung dieser Daten länger dauern. Daher wird praktisch alles durch FUIP zwischengespeichert ("gepuffert"). Wenn man nun neue Devices anlegt bzw. bestehende Devices ändert, dann bekommt das FUIP-Device davon unter Umständen nichts mit. In so einem Fall kann man mit <code>set <name> refreshBuffer</code> den Zwischenspeicher löschen, um FUIP dazu zu zwingen, die Informationen erneut zu ermitteln.<br />
<br />
=== Gets ===<br />
Alle Get-Kommandos sind nur für FUIP-interne Zwecke bestimmt.<br />
<br />
=== Internals ===<br />
;editOnly: Hier wird der "editOnly-Modus" gespeichert, der auf der Konfig-Oberfläche ein- und ausgeschaltet werden kann. Siehe auch [[#Das Konfigurations-Popup|Das Konfigurations-Popup]].<br />
<br />
=== Readings ===<br />
FUIP-Devices haben keine Readings.<br />
<br />
=== Attribute ===<br />
;baseHeight: Basishöhe einer Zelle, d.h. eine 1x1-Zelle ist ''baseHeight'' Pixel hoch. Standardwert ist 108.<br />
;baseWidth: Basisbreite einer Zelle, d.h. eine 1x1-Zelle ist ''baseWidth'' Pixel breit. Standardwert ist 142. Diese Abmessungen beziehen sich nur auf die Zelle selbst, nicht auf den Zwischenraum zwischen zwei Zellen. Der Zwischenraum beträgt (horizontal und vertikal) 10 Pixel.<br />
;pageWidth: Seitenbreite in Pixel. Wenn ''pageWidth'' nicht gesetzt ist (das ist der Default), dann wird die Seitenbreite nicht festgelegt. Sie ergibt sich dann aus ''baseWidth'' (d.h. die Breite einer 1er-Zelle) und der Anzahl der verwendeten Spalten plus die Breite der Zwischenräume. D.h. in der Regel muss man ''pageWidth'' nicht angeben.<br />
:Die Angabe in ''pageWidth'' beeinflusst auch die Darstellung des Hintergrundbilds, falls das Attribut ''styleBackgroundImage'' gesetzt ist. Siehe ''styleBackgroundImage'' für Details.<br />
;fhemwebUrl: Mit FUIP kann man sich auch an ein "entferntes" FHEM ankoppeln. Das Attribut ''fhemwebUrl'' hat dabei in etwa die Bedeutung wie ''fhemweb_url'' bei FTUI. (Siehe auch hier: [[FHEM Tablet UI#Verbindung zu FHEM|Verbindung zu FHEM (FTUI)]].) Genau wie beim "normalen" FTUI muss das Attribut ''CORS'' der FHEMWEB-Instanz des Ziels auf "1" stehen. Ansonsten würde schon FTUI nicht funktionieren. Außerdem darf die FHEMWEB-Instanz keine Passwort-Prüfung haben. Stattdessen kann man mit dem Attribut ''allowedfrom'' oder einer allowed-Instanz den Zugriff einschränken. <br />
:Man darf ''fhemwebUrl'' auf keinen Fall setzen (auch nicht auf 127.0.0.1 oder so), wenn sich die FUIP-Instanz auf das lokale FHEM beziehen soll. In dem Fall würde FHEM ewig auf sich selbst warten.<br />
:Wenn man ein "entferntes" FHEM benutzt, dann können einige Funktionen der Konfigurationsoberfläche etwas Zeit brauchen. Zum Beispiel müssen für die Eingabehilfe für Devices alle Devices aus dem entfernten FHEM gelesen werden. Das ist so implementiert, dass das entfernte FHEM möglichst wenig belastet wird, was aber zu Lasten des FUIP-FHEM geht. Siehe auch das Set-Kommando ''refreshBuffer'' zu diesem Thema.<br />
;locked: Wenn ''locked'' auf "1" gesetzt wird, dann sind die FUIP-Seiten gegen Bearbeitung gesperrt. Das Zahnrad-Icon oben rechts erscheint dann nicht mehr. Dadurch kann ein reiner "Tablet-UI Benutzer" die Seiten nicht mehr ändern und die Oberfläche sieht komplett wie normalerweise bei FTUI aus. Zusätzlich verschwinden auch die Zellennummern rechts neben den Zellenüberschriften und Zellen ohne Überschrift haben dann auch keinen "Titelbalken" mehr.<br />
;styleBackgroundImage: Dateiname des Hintergrundbilds. Die Bilddatei muss sich im Verzeichnis <fhem>/FHEM/lib/FUIP/images befinden. (<fhem> steht meistens für /opt/fhem) Unterstützt werden jpg- und png- Dateien. Nachdem eine neue Datei hochgeladen wurde, muss man im Browser (in FHEMWEB) die Seite einmal auffrischen (neu laden), um die neue Datei verwenden zu können. <br />
:Falls das Attribut ''pageWidth'' gesetzt ist, dann wird die Breite des Hintergrundbilds auf die angegebene Größe gesetzt. Ansonsten (ohne ''pageWidth'') nimmt das Bild die Breite des Browser-Fensters ein. Die Höhe des Bilds wird entsprechend skaliert, man muss sich also selbst darum kümmern, dass das Bild ein passendes Seitenverhältnis hat.<br />
:Bei Verwendung eines Hintergrundbilds werden die Zellenhintergründe automatisch auf halbtransparent gesetzt, so dass das Bild durchscheint. <br />
;styleColor: Standard-Textfarbe (Vordergrundfarbe) für alle Views. Der Defaultwert ist #808080, also ein helles Grau. Man kann die Farbe nicht für alle FTUI-Widgets festlegen. D.h. ''styleColor'' funktioniert nicht unbedingt überall.<br />
<br />
== Links ==<br />
* {{Link2Forum|Topic=85869|LinkText=Foren-Thread zur Geburt von FUIP}}<br />
<br />
[[Kategorie:FHEM Frontends]]</div>Thorsten Pferdekämperhttp://wiki.fhem.de/w/index.php?title=FHEM_User_Interface_Painter&diff=27502FHEM User Interface Painter2018-07-18T13:57:07Z<p>Thorsten Pferdekämper: /* Attribute */</p>
<hr />
<div>[[Datei:FUIP_Symbolbild.png|mini|400px|FUIP in Aktion]]<br />
Der '''FHEM User Interface Painter (FUIP)''' ist ein FHEM-Modul, mit dem man [[FHEM Tablet UI]] (FTUI) Seiten graphisch ("klickibunti") erstellen kann. D.h. man kann sich ein UI zusammenklicken, welches die Tablet UI Technik verwendet, aber ohne sich selbst unbedingt mit HTML und CSS herumschlagen zu müssen.<br />
Hier ist ein kurzes Video, welches FUIP in Aktion zeigt:<br />
<br />
[https://forum.fhem.de/index.php?action=dlattach;topic=85869.0;attach=98455 Einführungsvideo]<br />
<br />
(Das Video zeigt nicht unbedingt den neusten Stand, aber es dürfte klar werden, wofür FUIP gut sein soll.)<br />
<br />
== Installation und Upgrade in FHEM ==<br />
Genau wie FTUI ist auch FUIP nicht automatisch Teil von FHEM. Es muss explizit installiert bzw. hinzugefügt werden. Die Installation funktioniert folgendermaßen:<br />
* FUIP verwendet FTUI. D.h. man sollte zuerst einmal FTUI installieren, falls noch nicht passiert. Wie das geht steht bei [[FHEM Tablet UI#Installation|FHEM Tablet UI]]. Dabei reicht der erste Schritt aus, da lediglich die FTUI-Dateien von FUIP benötigt werden.<br />
* Dann das FUIP-Repository zum FHEM Update hinzufügen: <br />
** <code>update add https://raw.githubusercontent.com/ThorstenPferdekaemper/FHEM-FUIP/master/controls_fuip.txt</code><br />
* Jetzt <code>update all fuip</code> und <code>shutdown restart</code>. FUIP sollte jetzt installiert sein.<br />
<br />
Zum Upgrade reicht ein <code>update</code>, wenn man FUIP wie oben beschrieben installiert hat. Will man nur den FUIP-Teil aktualisieren und nicht alles in FHEM, dann geht das mit <code>update all fuip</code>.<br />
<br />
Falls es insbesondere beim Upgrade oder nach einem Upgrade Probleme gibt (welcher Art auch immer), sollten die folgenden Punkte geprüft werden:<br />
* Wird das richtige Repository benutzt? Man kann das mit <code>update list</code> überprüfen. Wenn der Eintrag für fuip nicht genau so aussieht wie oben beschrieben, dann sollte er per <code>update delete</code> gelöscht werden und dann genau so eingetragen werden wie oben beschrieben. <br />
* FHEM braucht Schreibrechte im Verzeichnis <fhem>/FHEM/lib/FUIP/config (<fhem> steht meistens für /opt/fhem) und allen enthaltenen Dateien. Auf Betriebssystemebene (Linux) kann man das mit <code>ls -ls</code> überprüfen. Meistens kann es mit folgendem Befehl repariert werden: <code>chown -R fhem:dialout /opt/fhem/FHEM/lib/FUIP/config</code>. (Dieser Punkt gilt nicht bzw. nicht genau so, wenn man die configDB benutzt.)<br />
* Steht etwas verdächtiges im Logfile?<br />
<br />
== Erste Schritte ==<br />
Zuerst legt man ein "FUIP Device" an, also etwa <code>define ui FUIP</code>. Dieses Device meldet sich sozusagen als Webserver bei FHEM an (wie z.B. auch [[HTTPSRV]]), d.h. es erscheint im Menu oben links (über den Räumen) ein Link "ui". Beim Klick auf diesen Link generiert FUIP eine FTUI Übersichtsseite aus den Räumen im FHEM System. (Das kann ein bisschen dauern, wenn man viele Devices hat.) Nun kann man durch Verschieben und größer/kleiner-Ziehen der einzelnen Zellen bzw. durch Verschieben des Zelleninhalts die Gestaltung ändern. Außerdem kann man über das Zahnrad rechts oben in den Zellen neuen Inhalt hinzufügen, den bestehenden Inhalt ändern und vieles mehr.<br />
Durch Klicken auf die Räume im Menu der Übersichtsseite werden einzelne Raum-Seiten generiert. Diese kann man ebenfalls entsprechend bearbeiten. Natürlich können auch eigene Seiten hinzugefügt werden. Wie das geht sieht man im Video, welches oben verlinkt ist.<br />
<br />
Nachdem man die Seiten entsprechend bearbeitet hat sollte man ein <code>set ui save</code> machen. Ansonsten gehen die Änderungen beim nächsten FHEM-Neustart verloren. Ein normales <code>save config</code> reicht nicht aus und ist auch nicht notwendig.<br />
<br />
Die folgenden detaillierten Informationen können zum Teil veraltet sein, da FUIP noch weitereintwickelt wird. Es sollten allerdings keine Funktionen verschwinden.<br />
<br />
== Das Konfigurations-Popup ==<br />
=== ...für Zellen ===<br />
[[Datei:FUIP_KonfigZelle.png|mini|600px]]<br />
Beim Klick auf das Zahnrad rechts oben in einer Zelle wird der Konfigurations-Dialog für diese Zelle geöffnet. Im Folgenden werden die Funktionen der einzelnen Elemente erklärt.<br />
;Zur Seiten-Konfiguration: Damit kann man zum Konfig-Dialog für die ganze Seite wechseln. <br />
;Zellen-Überschrift: Hier wird die Überschrift der Zelle festgelegt. Eine Zelle muss keine Überschrift haben. (Die Zahlen hinter der Überschrift in der Zelle selbst verschwinden, wenn man das Attribut ''locked'' setzt.)<br />
;Neuer View: Hiermit fügt man einen neuen View, also neuen Inhalt, zu einer Zelle hinzu. Man wählt dann aus, welcher Art View angelegt werden soll und füllt die Details, wie z.B. das zugehörige Device. Der neue View wird an einer freien Stelle (falls möglich) in der Zelle eingefügt. Nach schließen des Konfig-Dialogs kann man den View dann per Drag&Drop geeignet positionieren.<br />
;Neuer View (Device): Dies dient ebenfalls dazu, neue Views in die Zelle zu packen. Allerdings wählt man nicht die Art des Views aus, sondern die FHEM-Devices, die dargestellt werden sollen. Das System sucht dann jeweils einen geeigneten View aus. Bisher funktioniert das nur sehr eingeschränkt, hat aber den Vorteil, dass man gleich mehrere Devices auswählen kann.<br />
;Abbrechen: Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Details zum View: Hier klappt man die Details zum View aus und kann diese ändern. Was man damit genau machen kann kommt auf die Art des View an. Per Drag&Drop kann man auch die Reihenfolge der Views im Konfig-Dialog ändern. Das hat allerdings keinen Effekt auf die Positonierung bereits existierender Views in der Zelle. <br />
;View löschen: Das löscht den View aus der Zelle. Wenn man den View eigentlich nicht löschen, sondern in einer anderen Zelle haben will, dann kann man ihn auch per Drag&Drop in die andere Zelle verschieben. Lässt man einen View in einer anderen Zelle "fallen", dann wird dieser automatisch der neuen Zelle zugeordnet.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Auto-Anordnen: Hiermit kann man die einzelnen Views in der Zelle automatisch anordnen. Es kann momentan sein, dass dadurch Änderungen verloren gehen. D.h. dieser Button sollte nur benutzt werden, wenn man seit dem Öffnen des Dialogs keine Änderungen gemacht hat. Außerdem schließt der Button dan Dialog. FUIP ordnet die Views in der Reihenfolge an, in der sie im Konfig-Popup erscheinen. Das zugrunde liegende Layout ist sehr einfach gehalten und kann sich auch noch ändern. Diese Funktion ist vor Allem brauchbar für mehrere gleichartige Views in derselben Zelle, wie z.B. bei Menus. <br />
;Neue Zelle: Legt eine neue (leere) Zelle auf der aktuellen Seite an. Der Konfig-Dialog wird dabei geschlossen und Änderungen gehen verloren.<br />
;Zelle kopieren: Kopiert die aktuelle Zelle. Man muss eine Seite angeben, zu der die kopierte Zelle gehören soll. Das entsprechende Feld ist mit der aktuellen Seite vorbelegt. Falls man dies nicht ändert, wird einfach eine Kopie der Zelle auf derselben Seite erzeugt. Ansonsten wird die Zelle auf die angegebene Seite kopiert. Die Funktion schließt den Konfig-Dialog und Änderungen gehen verloren. Falls man eine andere Seite angegeben hat, wird zu dieser gewechselt.<br />
;Zelle exportieren: Dies erlaubt die Definition der Zelle herunterzuladen und auf dem Client (also dem Rechner, auf dem der Browser läuft) zu speichern.<br />
;Zelle importieren: Damit lädt man eine exportierte Zelle wieder hoch. FUIP erzeugt dann auf der aktuellen Seite eine neue Zelle mit dem entsprechenden Inhalt. Das funktioniert auch mit Zellen, die von einer anderen FUIP-Seite, einem anderen FUIP-Device oder von einer anderen FHEM-Installation kommen.<br />
;Zelle löschen: Damit löscht man die aktuelle Zelle. Sie verschwindet dann von der aktuellen Seite.<br />
;Toggle editOnly: Bei manchen Views ist es schwierig, sie mit der Maus "anzufassen", da sie sofort eine Aktion auslösen (z.B. bei Links). Mit "Toggle editOnly" wird eine graue "Schicht" über die Views gelegt. Dadurch weiß man besser, wo man den View anfassen kann und Mausklicks haben keine Wirkung mehr, außer Drag&Drop.<br />
<br />
=== ...für Seiten ===<br />
[[Datei:FUIP_SeitenKonfig.png|mini|600px]]<br />
Drückt man im Konfig-Dialog für Zellen auf "Cell/Page" kommt man auf den Konfig-Dialog für ganze Seiten. Die Bedeutung der Einzelnen Elemente ist wie folgt.<br />
;Zur Zellen-Konfiguration:Das bringt einen zurück zum Konfig-Dialog für Zellen.<br />
;Seiten-Überschrift:Hier kann ein Titel für die Seite eingetragen werden. Das erscheint dann je nach Browser irgendwo oben. (Technisch ist es der Inhalt des <title> Tags in <head>.)<br />
;Abbrechen:Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Seite kopieren:Dadurch wird eine neue Seite angelegt, die so aussieht wie die aktuelle. Der Dialog wird dann geschlossen und automatisch zur neuen Seite gesprungen.<br />
;Seite exportieren:Das ist dasselbe wie für Zellen, nur für die ganze aktuelle Seite.<br />
;Seite importieren:Das ist im Prinzip auch wie für Zellen, nur dass eine neue Seite angelegt wird. Exportierte Zellen können nur als Zellen importiert werden und exportierte Seiten nur als Seiten.<br />
<br />
== Das FUIP-Device ==<br />
Wie in [[#Erste Schritte|Erste Schritte]] bereits beschrieben, muss man zur Verwendung von FUIP zuerst ein FUIP-Device anlegen. Alles, was man mit FUIP macht (bzw. was das System macht) passiert in Bezug auf ein FUIP-Device. Man kann auch jederzeit mehrere FUIP-Devices anlegen. Verschiedene Instanzen von FUIP stören sich nicht gegenseitig, man kann aber (z.B. in einem Menu) auf eine andere FUIP-Instanz verweisen (verlinken).<br />
<br />
Das FUIP-Device hat die folgenden Eigenschaften.<br />
=== Sets ===<br />
Die folgenden set-Kommandos sind für den Benutzer gedacht. Es gibt noch weitere set-Kommandos, welche aber vor Allem für FUIP-interne Zwecke gedacht sind. <br />
;save: Mit <code>set <name> save</code> wird der momentane Zustand der FUIP-Seiten zu diesem FUIP-Device gespeichert. Das betrifft nicht die Definition des FUIP-Device selbst (also auch nicht dessen Attribute). Diese müssen nach wie vor über <code>save</code> (also "Save config") gespeichert werden. Die FUIP-Seiten stehen in der Datei <fhem>/FHEM/lib/FUIP/config/FUIP_<name>.cfg. Dabei steht <fhem> in der Regel für /opt/fhem und <name> für den Namen des FUIP-Devices. Ohne ein <code>set <name> save</code> gehen alle Änderungen beim nächsten FHEM Restart verloren. <br />
;load: Mit <code>set <name> load</code> stellt man den Zustand wieder her, der mit <code>set <name> save</code> gespeichert wurde. Das ist vor Allem dann nützlich, wenn man sich beim Bearbeiten der Seiten vertan hat. Ansonsten wird beim FHEM Start das "load" automatisch ausgeführt. <br />
;pagedelete: Mit <code>set <name> pagedelete <page></code> wird die Seite <page> gelöscht. Das kann auch dazu genutzt werden, FUIP zum Neugenerieren einer Seite zu "zwingen", indem man die Seite nach dem Löschen einfach wieder aufruft. Auch das Löschen einer Seite geht ohne ein "save" verloren, d.h. die Seite ist dann nach einem FHEM Neustart wieder da. <br />
;refreshBuffer: FUIP verwendet Informationen aus dem "eigentlichen" FHEM, wie z.B. die Liste aller Devices sowie bestimmte Readings, Internals und Attribute. Insbesondere bei "entferntem" FUIP, also bei Verwendung des Attributs ''fhemwebUrl'', kann die Ermittlung dieser Daten länger dauern. Daher wird praktisch alles durch FUIP zwischengespeichert ("gepuffert"). Wenn man nun neue Devices anlegt bzw. bestehende Devices ändert, dann bekommt das FUIP-Device davon unter Umständen nichts mit. In so einem Fall kann man mit <code>set <name> refreshBuffer</code> den Zwischenspeicher löschen, um FUIP dazu zu zwingen, die Informationen erneut zu ermitteln.<br />
<br />
=== Gets ===<br />
Alle Get-Kommandos sind nur für FUIP-interne Zwecke bestimmt.<br />
<br />
=== Internals ===<br />
;editOnly: Hier wird der "editOnly-Modus" gespeichert, der auf der Konfig-Oberfläche ein- und ausgeschaltet werden kann. Siehe auch [[#Das Konfigurations-Popup|Das Konfigurations-Popup]].<br />
<br />
=== Readings ===<br />
FUIP-Devices haben keine Readings.<br />
<br />
=== Attribute ===<br />
;baseHeight: Basishöhe einer Zelle, d.h. eine 1x1-Zelle ist ''baseHeight'' Pixel hoch. Standardwert ist 108.<br />
;baseWidth: Basisbreite einer Zelle, d.h. eine 1x1-Zelle ist ''baseWidth'' Pixel breit. Standardwert ist 142. Diese Abmessungen beziehen sich nur auf die Zelle selbst, nicht auf den Zwischenraum zwischen zwei Zellen. Der Zwischenraum beträgt (horizontal und vertikal) 10 Pixel.<br />
;pageWidth: Seitenbreite in Pixel. Wenn ''pageWidth'' nicht gesetzt ist (das ist der Default), dann wird die Seitenbreite nicht festgelegt. Sie ergibt sich dann aus ''baseWidth'' (d.h. die Breite einer 1er-Zelle) und der Anzahl der verwendeten Spalten plus die Breite der Zwischenräume. D.h. in der Regel muss man ''pageWidth'' nicht angeben.<br />
:Die Angabe in ''pageWidth'' beeinflusst auch die Darstellung des Hintergrundbilds, falls das Attribut ''styleBackgroundImage'' gesetzt ist. Siehe ''styleBackgroundImage'' für Details.<br />
;fhemwebUrl: Mit FUIP kann man sich auch an ein "entferntes" FHEM ankoppeln. Das Attribut ''fhemwebUrl'' hat dabei in etwa die Bedeutung wie ''fhemweb_url'' bei FTUI. (Siehe auch hier: [[FHEM Tablet UI#Verbindung zu FHEM|Verbindung zu FHEM (FTUI)]].) Genau wie beim "normalen" FTUI muss das Attribut ''CORS'' der FHEMWEB-Instanz des Ziels auf "1" stehen. Ansonsten würde schon FTUI nicht funktionieren. Außerdem darf die FHEMWEB-Instanz keine Passwort-Prüfung haben. Stattdessen kann man mit dem Attribut ''allowedfrom'' oder einer allowed-Instanz den Zugriff einschränken. <br />
:Man darf ''fhemwebUrl'' auf keinen Fall setzen (auch nicht auf 127.0.0.1 oder so), wenn sich die FUIP-Instanz auf das lokale FHEM beziehen soll. In dem Fall würde FHEM ewig auf sich selbst warten.<br />
:Wenn man ein "entferntes" FHEM benutzt, dann können einige Funktionen der Konfigurationsoberfläche etwas Zeit brauchen. Zum Beispiel müssen für die Eingabehilfe für Devices alle Devices aus dem entfernten FHEM gelesen werden. Das ist so implementiert, dass das entfernte FHEM möglichst wenig belastet wird, was aber zu Lasten des FUIP-FHEM geht. Siehe auch das Set-Kommando ''refreshBuffer'' zu diesem Thema.<br />
;locked: Wenn ''locked'' auf "1" gesetzt wird, dann sind die FUIP-Seiten gegen Bearbeitung gesperrt. Das Zahnrad-Icon oben rechts erscheint dann nicht mehr. Dadurch kann ein reiner "Tablet-UI Benutzer" die Seiten nicht mehr ändern und die Oberfläche sieht komplett wie normalerweise bei FTUI aus.<br />
;styleBackgroundImage: Dateiname des Hintergrundbilds. Die Bilddatei muss sich im Verzeichnis <fhem>/FHEM/lib/FUIP/images befinden. (<fhem> steht meistens für /opt/fhem) Unterstützt werden jpg- und png- Dateien. Nachdem eine neue Datei hochgeladen wurde, muss man im Browser (in FHEMWEB) die Seite einmal auffrischen (neu laden), um die neue Datei verwenden zu können. <br />
:Falls das Attribut ''pageWidth'' gesetzt ist, dann wird die Breite des Hintergrundbilds auf die angegebene Größe gesetzt. Ansonsten (ohne ''pageWidth'') nimmt das Bild die Breite des Browser-Fensters ein. Die Höhe des Bilds wird entsprechend skaliert, man muss sich also selbst darum kümmern, dass das Bild ein passendes Seitenverhältnis hat. <br />
;styleColor: Standard-Textfarbe (Vordergrundfarbe) für alle Views. Der Defaultwert ist #808080, also ein helles Grau. Man kann die Farbe nicht für alle FTUI-Widgets festlegen. D.h. ''styleColor'' funktioniert nicht unbedingt überall.<br />
<br />
== Links ==<br />
* {{Link2Forum|Topic=85869|LinkText=Foren-Thread zur Geburt von FUIP}}<br />
<br />
[[Kategorie:FHEM Frontends]]</div>Thorsten Pferdekämperhttp://wiki.fhem.de/w/index.php?title=FHEM_User_Interface_Painter&diff=27397FHEM User Interface Painter2018-07-10T18:45:40Z<p>Thorsten Pferdekämper: /* Attribute */</p>
<hr />
<div>[[Datei:FUIP_Symbolbild.png|mini|400px|FUIP in Aktion]]<br />
Der '''FHEM User Interface Painter (FUIP)''' ist ein FHEM-Modul, mit dem man [[FHEM Tablet UI]] (FTUI) Seiten graphisch ("klickibunti") erstellen kann. D.h. man kann sich ein UI zusammenklicken, welches die Tablet UI Technik verwendet, aber ohne sich selbst unbedingt mit HTML und CSS herumschlagen zu müssen.<br />
Hier ist ein kurzes Video, welches FUIP in Aktion zeigt:<br />
<br />
[https://forum.fhem.de/index.php?action=dlattach;topic=85869.0;attach=98455 Einführungsvideo]<br />
<br />
(Das Video zeigt nicht unbedingt den neusten Stand, aber es dürfte klar werden, wofür FUIP gut sein soll.)<br />
<br />
== Installation und Upgrade in FHEM ==<br />
Genau wie FTUI ist auch FUIP nicht automatisch Teil von FHEM. Es muss explizit installiert bzw. hinzugefügt werden. Die Installation funktioniert folgendermaßen:<br />
* FUIP verwendet FTUI. D.h. man sollte zuerst einmal FTUI installieren, falls noch nicht passiert. Wie das geht steht bei [[FHEM Tablet UI#Installation|FHEM Tablet UI]]. Dabei reicht der erste Schritt aus, da lediglich die FTUI-Dateien von FUIP benötigt werden.<br />
* Dann das FUIP-Repository zum FHEM Update hinzufügen: <br />
** <code>update add https://raw.githubusercontent.com/ThorstenPferdekaemper/FHEM-FUIP/master/controls_fuip.txt</code><br />
* Jetzt <code>update all fuip</code> und <code>shutdown restart</code>. FUIP sollte jetzt installiert sein.<br />
<br />
Zum Upgrade reicht ein <code>update</code>, wenn man FUIP wie oben beschrieben installiert hat. Will man nur den FUIP-Teil aktualisieren und nicht alles in FHEM, dann geht das mit <code>update all fuip</code>.<br />
<br />
Falls es insbesondere beim Upgrade oder nach einem Upgrade Probleme gibt (welcher Art auch immer), sollten die folgenden Punkte geprüft werden:<br />
* Wird das richtige Repository benutzt? Man kann das mit <code>update list</code> überprüfen. Wenn der Eintrag für fuip nicht genau so aussieht wie oben beschrieben, dann sollte er per <code>update delete</code> gelöscht werden und dann genau so eingetragen werden wie oben beschrieben. <br />
* FHEM braucht Schreibrechte im Verzeichnis <fhem>/FHEM/lib/FUIP/config (<fhem> steht meistens für /opt/fhem) und allen enthaltenen Dateien. Auf Betriebssystemebene (Linux) kann man das mit <code>ls -ls</code> überprüfen. Meistens kann es mit folgendem Befehl repariert werden: <code>chown -R fhem:dialout /opt/fhem/FHEM/lib/FUIP/config</code>. (Dieser Punkt gilt nicht bzw. nicht genau so, wenn man die configDB benutzt.)<br />
* Steht etwas verdächtiges im Logfile?<br />
<br />
== Erste Schritte ==<br />
Zuerst legt man ein "FUIP Device" an, also etwa <code>define ui FUIP</code>. Dieses Device meldet sich sozusagen als Webserver bei FHEM an (wie z.B. auch [[HTTPSRV]]), d.h. es erscheint im Menu oben links (über den Räumen) ein Link "ui". Beim Klick auf diesen Link generiert FUIP eine FTUI Übersichtsseite aus den Räumen im FHEM System. (Das kann ein bisschen dauern, wenn man viele Devices hat.) Nun kann man durch Verschieben und größer/kleiner-Ziehen der einzelnen Zellen bzw. durch Verschieben des Zelleninhalts die Gestaltung ändern. Außerdem kann man über das Zahnrad rechts oben in den Zellen neuen Inhalt hinzufügen, den bestehenden Inhalt ändern und vieles mehr.<br />
Durch Klicken auf die Räume im Menu der Übersichtsseite werden einzelne Raum-Seiten generiert. Diese kann man ebenfalls entsprechend bearbeiten. Natürlich können auch eigene Seiten hinzugefügt werden. Wie das geht sieht man im Video, welches oben verlinkt ist.<br />
<br />
Nachdem man die Seiten entsprechend bearbeitet hat sollte man ein <code>set ui save</code> machen. Ansonsten gehen die Änderungen beim nächsten FHEM-Neustart verloren. Ein normales <code>save config</code> reicht nicht aus und ist auch nicht notwendig.<br />
<br />
Die folgenden detaillierten Informationen können zum Teil veraltet sein, da FUIP noch weitereintwickelt wird. Es sollten allerdings keine Funktionen verschwinden.<br />
<br />
== Das Konfigurations-Popup ==<br />
=== ...für Zellen ===<br />
[[Datei:FUIP_KonfigZelle.png|mini|600px]]<br />
Beim Klick auf das Zahnrad rechts oben in einer Zelle wird der Konfigurations-Dialog für diese Zelle geöffnet. Im Folgenden werden die Funktionen der einzelnen Elemente erklärt.<br />
;Zur Seiten-Konfiguration: Damit kann man zum Konfig-Dialog für die ganze Seite wechseln. <br />
;Zellen-Überschrift: Hier wird die Überschrift der Zelle festgelegt. Eine Zelle muss keine Überschrift haben. (Die Zahlen hinter der Überschrift in der Zelle selbst verschwinden, wenn man das Attribut ''locked'' setzt.)<br />
;Neuer View: Hiermit fügt man einen neuen View, also neuen Inhalt, zu einer Zelle hinzu. Man wählt dann aus, welcher Art View angelegt werden soll und füllt die Details, wie z.B. das zugehörige Device. Der neue View wird an einer freien Stelle (falls möglich) in der Zelle eingefügt. Nach schließen des Konfig-Dialogs kann man den View dann per Drag&Drop geeignet positionieren.<br />
;Neuer View (Device): Dies dient ebenfalls dazu, neue Views in die Zelle zu packen. Allerdings wählt man nicht die Art des Views aus, sondern die FHEM-Devices, die dargestellt werden sollen. Das System sucht dann jeweils einen geeigneten View aus. Bisher funktioniert das nur sehr eingeschränkt, hat aber den Vorteil, dass man gleich mehrere Devices auswählen kann.<br />
;Abbrechen: Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Details zum View: Hier klappt man die Details zum View aus und kann diese ändern. Was man damit genau machen kann kommt auf die Art des View an. Per Drag&Drop kann man auch die Reihenfolge der Views im Konfig-Dialog ändern. Das hat allerdings keinen Effekt auf die Positonierung bereits existierender Views in der Zelle. <br />
;View löschen: Das löscht den View aus der Zelle. Wenn man den View eigentlich nicht löschen, sondern in einer anderen Zelle haben will, dann kann man ihn auch per Drag&Drop in die andere Zelle verschieben. Lässt man einen View in einer anderen Zelle "fallen", dann wird dieser automatisch der neuen Zelle zugeordnet.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Auto-Anordnen: Hiermit kann man die einzelnen Views in der Zelle automatisch anordnen. Es kann momentan sein, dass dadurch Änderungen verloren gehen. D.h. dieser Button sollte nur benutzt werden, wenn man seit dem Öffnen des Dialogs keine Änderungen gemacht hat. Außerdem schließt der Button dan Dialog. FUIP ordnet die Views in der Reihenfolge an, in der sie im Konfig-Popup erscheinen. Das zugrunde liegende Layout ist sehr einfach gehalten und kann sich auch noch ändern. Diese Funktion ist vor Allem brauchbar für mehrere gleichartige Views in derselben Zelle, wie z.B. bei Menus. <br />
;Neue Zelle: Legt eine neue (leere) Zelle auf der aktuellen Seite an. Der Konfig-Dialog wird dabei geschlossen und Änderungen gehen verloren.<br />
;Zelle kopieren: Kopiert die aktuelle Zelle. Man muss eine Seite angeben, zu der die kopierte Zelle gehören soll. Das entsprechende Feld ist mit der aktuellen Seite vorbelegt. Falls man dies nicht ändert, wird einfach eine Kopie der Zelle auf derselben Seite erzeugt. Ansonsten wird die Zelle auf die angegebene Seite kopiert. Die Funktion schließt den Konfig-Dialog und Änderungen gehen verloren. Falls man eine andere Seite angegeben hat, wird zu dieser gewechselt.<br />
;Zelle exportieren: Dies erlaubt die Definition der Zelle herunterzuladen und auf dem Client (also dem Rechner, auf dem der Browser läuft) zu speichern.<br />
;Zelle importieren: Damit lädt man eine exportierte Zelle wieder hoch. FUIP erzeugt dann auf der aktuellen Seite eine neue Zelle mit dem entsprechenden Inhalt. Das funktioniert auch mit Zellen, die von einer anderen FUIP-Seite, einem anderen FUIP-Device oder von einer anderen FHEM-Installation kommen.<br />
;Zelle löschen: Damit löscht man die aktuelle Zelle. Sie verschwindet dann von der aktuellen Seite.<br />
;Toggle editOnly: Bei manchen Views ist es schwierig, sie mit der Maus "anzufassen", da sie sofort eine Aktion auslösen (z.B. bei Links). Mit "Toggle editOnly" wird eine graue "Schicht" über die Views gelegt. Dadurch weiß man besser, wo man den View anfassen kann und Mausklicks haben keine Wirkung mehr, außer Drag&Drop.<br />
<br />
=== ...für Seiten ===<br />
[[Datei:FUIP_SeitenKonfig.png|mini|600px]]<br />
Drückt man im Konfig-Dialog für Zellen auf "Cell/Page" kommt man auf den Konfig-Dialog für ganze Seiten. Die Bedeutung der Einzelnen Elemente ist wie folgt.<br />
;Zur Zellen-Konfiguration:Das bringt einen zurück zum Konfig-Dialog für Zellen.<br />
;Seiten-Überschrift:Hier kann ein Titel für die Seite eingetragen werden. Das erscheint dann je nach Browser irgendwo oben. (Technisch ist es der Inhalt des <title> Tags in <head>.)<br />
;Abbrechen:Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Seite kopieren:Dadurch wird eine neue Seite angelegt, die so aussieht wie die aktuelle. Der Dialog wird dann geschlossen und automatisch zur neuen Seite gesprungen.<br />
;Seite exportieren:Das ist dasselbe wie für Zellen, nur für die ganze aktuelle Seite.<br />
;Seite importieren:Das ist im Prinzip auch wie für Zellen, nur dass eine neue Seite angelegt wird. Exportierte Zellen können nur als Zellen importiert werden und exportierte Seiten nur als Seiten.<br />
<br />
== Das FUIP-Device ==<br />
Wie in [[#Erste Schritte|Erste Schritte]] bereits beschrieben, muss man zur Verwendung von FUIP zuerst ein FUIP-Device anlegen. Alles, was man mit FUIP macht (bzw. was das System macht) passiert in Bezug auf ein FUIP-Device. Man kann auch jederzeit mehrere FUIP-Devices anlegen. Verschiedene Instanzen von FUIP stören sich nicht gegenseitig, man kann aber (z.B. in einem Menu) auf eine andere FUIP-Instanz verweisen (verlinken).<br />
<br />
Das FUIP-Device hat die folgenden Eigenschaften.<br />
=== Sets ===<br />
Die folgenden set-Kommandos sind für den Benutzer gedacht. Es gibt noch weitere set-Kommandos, welche aber vor Allem für FUIP-interne Zwecke gedacht sind. <br />
;save: Mit <code>set <name> save</code> wird der momentane Zustand der FUIP-Seiten zu diesem FUIP-Device gespeichert. Das betrifft nicht die Definition des FUIP-Device selbst (also auch nicht dessen Attribute). Diese müssen nach wie vor über <code>save</code> (also "Save config") gespeichert werden. Die FUIP-Seiten stehen in der Datei <fhem>/FHEM/lib/FUIP/config/FUIP_<name>.cfg. Dabei steht <fhem> in der Regel für /opt/fhem und <name> für den Namen des FUIP-Devices. Ohne ein <code>set <name> save</code> gehen alle Änderungen beim nächsten FHEM Restart verloren. <br />
;load: Mit <code>set <name> load</code> stellt man den Zustand wieder her, der mit <code>set <name> save</code> gespeichert wurde. Das ist vor Allem dann nützlich, wenn man sich beim Bearbeiten der Seiten vertan hat. Ansonsten wird beim FHEM Start das "load" automatisch ausgeführt. <br />
;pagedelete: Mit <code>set <name> pagedelete <page></code> wird die Seite <page> gelöscht. Das kann auch dazu genutzt werden, FUIP zum Neugenerieren einer Seite zu "zwingen", indem man die Seite nach dem Löschen einfach wieder aufruft. Auch das Löschen einer Seite geht ohne ein "save" verloren, d.h. die Seite ist dann nach einem FHEM Neustart wieder da. <br />
;refreshBuffer: FUIP verwendet Informationen aus dem "eigentlichen" FHEM, wie z.B. die Liste aller Devices sowie bestimmte Readings, Internals und Attribute. Insbesondere bei "entferntem" FUIP, also bei Verwendung des Attributs ''fhemwebUrl'', kann die Ermittlung dieser Daten länger dauern. Daher wird praktisch alles durch FUIP zwischengespeichert ("gepuffert"). Wenn man nun neue Devices anlegt bzw. bestehende Devices ändert, dann bekommt das FUIP-Device davon unter Umständen nichts mit. In so einem Fall kann man mit <code>set <name> refreshBuffer</code> den Zwischenspeicher löschen, um FUIP dazu zu zwingen, die Informationen erneut zu ermitteln.<br />
<br />
=== Gets ===<br />
Alle Get-Kommandos sind nur für FUIP-interne Zwecke bestimmt.<br />
<br />
=== Internals ===<br />
;editOnly: Hier wird der "editOnly-Modus" gespeichert, der auf der Konfig-Oberfläche ein- und ausgeschaltet werden kann. Siehe auch [[#Das Konfigurations-Popup|Das Konfigurations-Popup]].<br />
<br />
=== Readings ===<br />
FUIP-Devices haben keine Readings.<br />
<br />
=== Attribute ===<br />
;baseHeight: Basishöhe einer Zelle, d.h. eine 1x1-Zelle ist ''baseHeight'' Pixel hoch. Standardwert ist 108.<br />
;baseWidth: Basisbreite einer Zelle, d.h. eine 1x1-Zelle ist ''baseWidth'' Pixel breit. Standardwert ist 142. Diese Abmessungen beziehen sich nur auf die Zelle selbst, nicht auf den Zwischenraum zwischen zwei Zellen. Der Zwischenraum beträgt (horizontal und vertikal) 10 Pixel.<br />
;pageWidth: Seitenbreite in Pixel. Wenn ''pageWidth'' nicht gesetzt ist (das ist der Default), dann wird die Seitenbreite nicht festgelegt. Sie ergibt sich dann aus ''baseWidth'' (d.h. die Breite einer 1er-Zelle) und der Anzahl der verwendeten Spalten plus die Breite der Zwischenräume. D.h. in der Regel muss man ''pageWidth'' nicht angeben.<br />
;fhemwebUrl: Mit FUIP kann man sich auch an ein "entferntes" FHEM ankoppeln. Das Attribut ''fhemwebUrl'' hat dabei in etwa die Bedeutung wie ''fhemweb_url'' bei FTUI. (Siehe auch hier: [[FHEM Tablet UI#Verbindung zu FHEM|Verbindung zu FHEM (FTUI)]].) Genau wie beim "normalen" FTUI muss das Attribut ''CORS'' der FHEMWEB-Instanz des Ziels auf "1" stehen. Ansonsten würde schon FTUI nicht funktionieren. Außerdem darf die FHEMWEB-Instanz keine Passwort-Prüfung haben. Stattdessen kann man mit dem Attribut ''allowedfrom'' oder einer allowed-Instanz den Zugriff einschränken. <br />
:Man darf ''fhemwebUrl'' auf keinen Fall setzen (auch nicht auf 127.0.0.1 oder so), wenn sich die FUIP-Instanz auf das lokale FHEM beziehen soll. In dem Fall würde FHEM ewig auf sich selbst warten.<br />
:Wenn man ein "entferntes" FHEM benutzt, dann können einige Funktionen der Konfigurationsoberfläche etwas Zeit brauchen. Zum Beispiel müssen für die Eingabehilfe für Devices alle Devices aus dem entfernten FHEM gelesen werden. Das ist so implementiert, dass das entfernte FHEM möglichst wenig belastet wird, was aber zu Lasten des FUIP-FHEM geht. Siehe auch das Set-Kommando ''refreshBuffer'' zu diesem Thema.<br />
;locked: Wenn ''locked'' auf "1" gesetzt wird, dann sind die FUIP-Seiten gegen Bearbeitung gesperrt. Das Zahnrad-Icon oben rechts erscheint dann nicht mehr. Dadurch kann ein reiner "Tablet-UI Benutzer" die Seiten nicht mehr ändern und die Oberfläche sieht komplett wie normalerweise bei FTUI aus.<br />
;styleColor: Standard-Textfarbe (Vorderfrundfarbe) für alle Views. Der Defaultwert ist #808080, also ein helles Grau. Man kann die Farbe nicht für alle FTUI-Widgets festlegen. D.h. ''styleColor'' funktioniert nicht unbedingt überall.<br />
<br />
== Links ==<br />
* {{Link2Forum|Topic=85869|LinkText=Foren-Thread zur Geburt von FUIP}}<br />
<br />
[[Kategorie:FHEM Frontends]]</div>Thorsten Pferdekämperhttp://wiki.fhem.de/w/index.php?title=FHEM_User_Interface_Painter&diff=27396FHEM User Interface Painter2018-07-10T18:44:32Z<p>Thorsten Pferdekämper: /* Attribute */</p>
<hr />
<div>[[Datei:FUIP_Symbolbild.png|mini|400px|FUIP in Aktion]]<br />
Der '''FHEM User Interface Painter (FUIP)''' ist ein FHEM-Modul, mit dem man [[FHEM Tablet UI]] (FTUI) Seiten graphisch ("klickibunti") erstellen kann. D.h. man kann sich ein UI zusammenklicken, welches die Tablet UI Technik verwendet, aber ohne sich selbst unbedingt mit HTML und CSS herumschlagen zu müssen.<br />
Hier ist ein kurzes Video, welches FUIP in Aktion zeigt:<br />
<br />
[https://forum.fhem.de/index.php?action=dlattach;topic=85869.0;attach=98455 Einführungsvideo]<br />
<br />
(Das Video zeigt nicht unbedingt den neusten Stand, aber es dürfte klar werden, wofür FUIP gut sein soll.)<br />
<br />
== Installation und Upgrade in FHEM ==<br />
Genau wie FTUI ist auch FUIP nicht automatisch Teil von FHEM. Es muss explizit installiert bzw. hinzugefügt werden. Die Installation funktioniert folgendermaßen:<br />
* FUIP verwendet FTUI. D.h. man sollte zuerst einmal FTUI installieren, falls noch nicht passiert. Wie das geht steht bei [[FHEM Tablet UI#Installation|FHEM Tablet UI]]. Dabei reicht der erste Schritt aus, da lediglich die FTUI-Dateien von FUIP benötigt werden.<br />
* Dann das FUIP-Repository zum FHEM Update hinzufügen: <br />
** <code>update add https://raw.githubusercontent.com/ThorstenPferdekaemper/FHEM-FUIP/master/controls_fuip.txt</code><br />
* Jetzt <code>update all fuip</code> und <code>shutdown restart</code>. FUIP sollte jetzt installiert sein.<br />
<br />
Zum Upgrade reicht ein <code>update</code>, wenn man FUIP wie oben beschrieben installiert hat. Will man nur den FUIP-Teil aktualisieren und nicht alles in FHEM, dann geht das mit <code>update all fuip</code>.<br />
<br />
Falls es insbesondere beim Upgrade oder nach einem Upgrade Probleme gibt (welcher Art auch immer), sollten die folgenden Punkte geprüft werden:<br />
* Wird das richtige Repository benutzt? Man kann das mit <code>update list</code> überprüfen. Wenn der Eintrag für fuip nicht genau so aussieht wie oben beschrieben, dann sollte er per <code>update delete</code> gelöscht werden und dann genau so eingetragen werden wie oben beschrieben. <br />
* FHEM braucht Schreibrechte im Verzeichnis <fhem>/FHEM/lib/FUIP/config (<fhem> steht meistens für /opt/fhem) und allen enthaltenen Dateien. Auf Betriebssystemebene (Linux) kann man das mit <code>ls -ls</code> überprüfen. Meistens kann es mit folgendem Befehl repariert werden: <code>chown -R fhem:dialout /opt/fhem/FHEM/lib/FUIP/config</code>. (Dieser Punkt gilt nicht bzw. nicht genau so, wenn man die configDB benutzt.)<br />
* Steht etwas verdächtiges im Logfile?<br />
<br />
== Erste Schritte ==<br />
Zuerst legt man ein "FUIP Device" an, also etwa <code>define ui FUIP</code>. Dieses Device meldet sich sozusagen als Webserver bei FHEM an (wie z.B. auch [[HTTPSRV]]), d.h. es erscheint im Menu oben links (über den Räumen) ein Link "ui". Beim Klick auf diesen Link generiert FUIP eine FTUI Übersichtsseite aus den Räumen im FHEM System. (Das kann ein bisschen dauern, wenn man viele Devices hat.) Nun kann man durch Verschieben und größer/kleiner-Ziehen der einzelnen Zellen bzw. durch Verschieben des Zelleninhalts die Gestaltung ändern. Außerdem kann man über das Zahnrad rechts oben in den Zellen neuen Inhalt hinzufügen, den bestehenden Inhalt ändern und vieles mehr.<br />
Durch Klicken auf die Räume im Menu der Übersichtsseite werden einzelne Raum-Seiten generiert. Diese kann man ebenfalls entsprechend bearbeiten. Natürlich können auch eigene Seiten hinzugefügt werden. Wie das geht sieht man im Video, welches oben verlinkt ist.<br />
<br />
Nachdem man die Seiten entsprechend bearbeitet hat sollte man ein <code>set ui save</code> machen. Ansonsten gehen die Änderungen beim nächsten FHEM-Neustart verloren. Ein normales <code>save config</code> reicht nicht aus und ist auch nicht notwendig.<br />
<br />
Die folgenden detaillierten Informationen können zum Teil veraltet sein, da FUIP noch weitereintwickelt wird. Es sollten allerdings keine Funktionen verschwinden.<br />
<br />
== Das Konfigurations-Popup ==<br />
=== ...für Zellen ===<br />
[[Datei:FUIP_KonfigZelle.png|mini|600px]]<br />
Beim Klick auf das Zahnrad rechts oben in einer Zelle wird der Konfigurations-Dialog für diese Zelle geöffnet. Im Folgenden werden die Funktionen der einzelnen Elemente erklärt.<br />
;Zur Seiten-Konfiguration: Damit kann man zum Konfig-Dialog für die ganze Seite wechseln. <br />
;Zellen-Überschrift: Hier wird die Überschrift der Zelle festgelegt. Eine Zelle muss keine Überschrift haben. (Die Zahlen hinter der Überschrift in der Zelle selbst verschwinden, wenn man das Attribut ''locked'' setzt.)<br />
;Neuer View: Hiermit fügt man einen neuen View, also neuen Inhalt, zu einer Zelle hinzu. Man wählt dann aus, welcher Art View angelegt werden soll und füllt die Details, wie z.B. das zugehörige Device. Der neue View wird an einer freien Stelle (falls möglich) in der Zelle eingefügt. Nach schließen des Konfig-Dialogs kann man den View dann per Drag&Drop geeignet positionieren.<br />
;Neuer View (Device): Dies dient ebenfalls dazu, neue Views in die Zelle zu packen. Allerdings wählt man nicht die Art des Views aus, sondern die FHEM-Devices, die dargestellt werden sollen. Das System sucht dann jeweils einen geeigneten View aus. Bisher funktioniert das nur sehr eingeschränkt, hat aber den Vorteil, dass man gleich mehrere Devices auswählen kann.<br />
;Abbrechen: Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Details zum View: Hier klappt man die Details zum View aus und kann diese ändern. Was man damit genau machen kann kommt auf die Art des View an. Per Drag&Drop kann man auch die Reihenfolge der Views im Konfig-Dialog ändern. Das hat allerdings keinen Effekt auf die Positonierung bereits existierender Views in der Zelle. <br />
;View löschen: Das löscht den View aus der Zelle. Wenn man den View eigentlich nicht löschen, sondern in einer anderen Zelle haben will, dann kann man ihn auch per Drag&Drop in die andere Zelle verschieben. Lässt man einen View in einer anderen Zelle "fallen", dann wird dieser automatisch der neuen Zelle zugeordnet.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Auto-Anordnen: Hiermit kann man die einzelnen Views in der Zelle automatisch anordnen. Es kann momentan sein, dass dadurch Änderungen verloren gehen. D.h. dieser Button sollte nur benutzt werden, wenn man seit dem Öffnen des Dialogs keine Änderungen gemacht hat. Außerdem schließt der Button dan Dialog. FUIP ordnet die Views in der Reihenfolge an, in der sie im Konfig-Popup erscheinen. Das zugrunde liegende Layout ist sehr einfach gehalten und kann sich auch noch ändern. Diese Funktion ist vor Allem brauchbar für mehrere gleichartige Views in derselben Zelle, wie z.B. bei Menus. <br />
;Neue Zelle: Legt eine neue (leere) Zelle auf der aktuellen Seite an. Der Konfig-Dialog wird dabei geschlossen und Änderungen gehen verloren.<br />
;Zelle kopieren: Kopiert die aktuelle Zelle. Man muss eine Seite angeben, zu der die kopierte Zelle gehören soll. Das entsprechende Feld ist mit der aktuellen Seite vorbelegt. Falls man dies nicht ändert, wird einfach eine Kopie der Zelle auf derselben Seite erzeugt. Ansonsten wird die Zelle auf die angegebene Seite kopiert. Die Funktion schließt den Konfig-Dialog und Änderungen gehen verloren. Falls man eine andere Seite angegeben hat, wird zu dieser gewechselt.<br />
;Zelle exportieren: Dies erlaubt die Definition der Zelle herunterzuladen und auf dem Client (also dem Rechner, auf dem der Browser läuft) zu speichern.<br />
;Zelle importieren: Damit lädt man eine exportierte Zelle wieder hoch. FUIP erzeugt dann auf der aktuellen Seite eine neue Zelle mit dem entsprechenden Inhalt. Das funktioniert auch mit Zellen, die von einer anderen FUIP-Seite, einem anderen FUIP-Device oder von einer anderen FHEM-Installation kommen.<br />
;Zelle löschen: Damit löscht man die aktuelle Zelle. Sie verschwindet dann von der aktuellen Seite.<br />
;Toggle editOnly: Bei manchen Views ist es schwierig, sie mit der Maus "anzufassen", da sie sofort eine Aktion auslösen (z.B. bei Links). Mit "Toggle editOnly" wird eine graue "Schicht" über die Views gelegt. Dadurch weiß man besser, wo man den View anfassen kann und Mausklicks haben keine Wirkung mehr, außer Drag&Drop.<br />
<br />
=== ...für Seiten ===<br />
[[Datei:FUIP_SeitenKonfig.png|mini|600px]]<br />
Drückt man im Konfig-Dialog für Zellen auf "Cell/Page" kommt man auf den Konfig-Dialog für ganze Seiten. Die Bedeutung der Einzelnen Elemente ist wie folgt.<br />
;Zur Zellen-Konfiguration:Das bringt einen zurück zum Konfig-Dialog für Zellen.<br />
;Seiten-Überschrift:Hier kann ein Titel für die Seite eingetragen werden. Das erscheint dann je nach Browser irgendwo oben. (Technisch ist es der Inhalt des <title> Tags in <head>.)<br />
;Abbrechen:Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Seite kopieren:Dadurch wird eine neue Seite angelegt, die so aussieht wie die aktuelle. Der Dialog wird dann geschlossen und automatisch zur neuen Seite gesprungen.<br />
;Seite exportieren:Das ist dasselbe wie für Zellen, nur für die ganze aktuelle Seite.<br />
;Seite importieren:Das ist im Prinzip auch wie für Zellen, nur dass eine neue Seite angelegt wird. Exportierte Zellen können nur als Zellen importiert werden und exportierte Seiten nur als Seiten.<br />
<br />
== Das FUIP-Device ==<br />
Wie in [[#Erste Schritte|Erste Schritte]] bereits beschrieben, muss man zur Verwendung von FUIP zuerst ein FUIP-Device anlegen. Alles, was man mit FUIP macht (bzw. was das System macht) passiert in Bezug auf ein FUIP-Device. Man kann auch jederzeit mehrere FUIP-Devices anlegen. Verschiedene Instanzen von FUIP stören sich nicht gegenseitig, man kann aber (z.B. in einem Menu) auf eine andere FUIP-Instanz verweisen (verlinken).<br />
<br />
Das FUIP-Device hat die folgenden Eigenschaften.<br />
=== Sets ===<br />
Die folgenden set-Kommandos sind für den Benutzer gedacht. Es gibt noch weitere set-Kommandos, welche aber vor Allem für FUIP-interne Zwecke gedacht sind. <br />
;save: Mit <code>set <name> save</code> wird der momentane Zustand der FUIP-Seiten zu diesem FUIP-Device gespeichert. Das betrifft nicht die Definition des FUIP-Device selbst (also auch nicht dessen Attribute). Diese müssen nach wie vor über <code>save</code> (also "Save config") gespeichert werden. Die FUIP-Seiten stehen in der Datei <fhem>/FHEM/lib/FUIP/config/FUIP_<name>.cfg. Dabei steht <fhem> in der Regel für /opt/fhem und <name> für den Namen des FUIP-Devices. Ohne ein <code>set <name> save</code> gehen alle Änderungen beim nächsten FHEM Restart verloren. <br />
;load: Mit <code>set <name> load</code> stellt man den Zustand wieder her, der mit <code>set <name> save</code> gespeichert wurde. Das ist vor Allem dann nützlich, wenn man sich beim Bearbeiten der Seiten vertan hat. Ansonsten wird beim FHEM Start das "load" automatisch ausgeführt. <br />
;pagedelete: Mit <code>set <name> pagedelete <page></code> wird die Seite <page> gelöscht. Das kann auch dazu genutzt werden, FUIP zum Neugenerieren einer Seite zu "zwingen", indem man die Seite nach dem Löschen einfach wieder aufruft. Auch das Löschen einer Seite geht ohne ein "save" verloren, d.h. die Seite ist dann nach einem FHEM Neustart wieder da. <br />
;refreshBuffer: FUIP verwendet Informationen aus dem "eigentlichen" FHEM, wie z.B. die Liste aller Devices sowie bestimmte Readings, Internals und Attribute. Insbesondere bei "entferntem" FUIP, also bei Verwendung des Attributs ''fhemwebUrl'', kann die Ermittlung dieser Daten länger dauern. Daher wird praktisch alles durch FUIP zwischengespeichert ("gepuffert"). Wenn man nun neue Devices anlegt bzw. bestehende Devices ändert, dann bekommt das FUIP-Device davon unter Umständen nichts mit. In so einem Fall kann man mit <code>set <name> refreshBuffer</code> den Zwischenspeicher löschen, um FUIP dazu zu zwingen, die Informationen erneut zu ermitteln.<br />
<br />
=== Gets ===<br />
Alle Get-Kommandos sind nur für FUIP-interne Zwecke bestimmt.<br />
<br />
=== Internals ===<br />
;editOnly: Hier wird der "editOnly-Modus" gespeichert, der auf der Konfig-Oberfläche ein- und ausgeschaltet werden kann. Siehe auch [[#Das Konfigurations-Popup|Das Konfigurations-Popup]].<br />
<br />
=== Readings ===<br />
FUIP-Devices haben keine Readings.<br />
<br />
=== Attribute ===<br />
;baseHeight: Basishöhe einer Zelle, d.h. eine 1x1-Zelle ist ''baseHeight'' Pixel hoch. Standardwert ist 108.<br />
;baseWidth: Basisbreite einer Zelle, d.h. eine 1x1-Zelle ist ''baseWidth'' Pixel breit. Standardwert ist 142. Diese Abmessungen beziehen sich nur auf die Zelle selbst, nicht auf den Zwischenraum zwischen zwei Zellen. Der Zwischenraum beträgt (horizontal und vertikal) 10 Pixel.<br />
;pageWidth: Seitenbreite in Pixel. Wenn ''pageWidth'' nicht gesetzt ist (das ist der Default), dann wird die Seitenbreite nicht festgelegt. Sie ergibt sich dann aus ''baseWidth'' (d.h. die Breite einer 1er-Zelle) und der Anzahl der verwendeten Spalten plus die Breite der Zwischenräume. D.h. in der Regel muss man ''pageWidth'' nicht angeben.<br />
;fhemwebUrl: Mit FUIP kann man sich auch an ein "entferntes" FHEM ankoppeln. Das Attribut ''fhemwebUrl'' hat dabei in etwa die Bedeutung wie ''fhemweb_url'' bei FTUI. (Siehe auch hier: [[FHEM Tablet UI#Verbindung zu FHEM|Verbindung zu FHEM (FTUI)]].) Genau wie beim "normalen" FTUI muss das Attribut ''CORS'' der FHEMWEB-Instanz des Ziels auf "1" stehen. Ansonsten würde schon FTUI nicht funktionieren. Außerdem darf die FHEMWEB-Instanz keine Passwort-Prüfung haben. Stattdessen kann man mit dem Attribut ''allowedfrom'' oder einer allowed-Instanz den Zugriff einschränken. <br />
:Man darf ''fhemwebUrl'' auf keinen Fall setzen (auch nicht auf 127.0.0.1 oder so), wenn sich die FUIP-Instanz auf das lokale FHEM beziehen soll. In dem Fall würde FHEM ewig auf sich selbst warten.<br />
:Wenn man ein "entferntes" FHEM benutzt, dann können einige Funktionen der Konfigurationsoberfläche etwas Zeit brauchen. Zum Beispiel müssen für die Eingabehilfe für Devices alle Devices aus dem entfernten FHEM gelesen werden. Das ist so implementiert, dass das entfernte FHEM möglichst wenig belastet wird, was aber zu Lasten des FUIP-FHEM geht. Siehe auch das Set-Kommando ''refreshBuffer'' zu diesem Thema.<br />
;locked: Wenn ''locked'' auf "1" gesetzt wird, dann sind die FUIP-Seiten gegen Bearbeitung gesperrt. Das Zahnrad-Icon oben rechts erscheint dann nicht mehr. Dadurch kann ein reiner "Tablet-UI Benutzer" die Seiten nicht mehr ändern und die Oberfläche sieht komplett wie normalerweise bei FTUI aus.<br />
;styleColor: Standard-Textfarbe (Vorderfrundfarbe) für alle Views. Der Defaultwert ist #808080, also ein helles Grau.<br />
<br />
== Links ==<br />
* {{Link2Forum|Topic=85869|LinkText=Foren-Thread zur Geburt von FUIP}}<br />
<br />
[[Kategorie:FHEM Frontends]]</div>Thorsten Pferdekämperhttp://wiki.fhem.de/w/index.php?title=FHEM_User_Interface_Painter&diff=27395FHEM User Interface Painter2018-07-10T18:41:22Z<p>Thorsten Pferdekämper: /* Attribute */</p>
<hr />
<div>[[Datei:FUIP_Symbolbild.png|mini|400px|FUIP in Aktion]]<br />
Der '''FHEM User Interface Painter (FUIP)''' ist ein FHEM-Modul, mit dem man [[FHEM Tablet UI]] (FTUI) Seiten graphisch ("klickibunti") erstellen kann. D.h. man kann sich ein UI zusammenklicken, welches die Tablet UI Technik verwendet, aber ohne sich selbst unbedingt mit HTML und CSS herumschlagen zu müssen.<br />
Hier ist ein kurzes Video, welches FUIP in Aktion zeigt:<br />
<br />
[https://forum.fhem.de/index.php?action=dlattach;topic=85869.0;attach=98455 Einführungsvideo]<br />
<br />
(Das Video zeigt nicht unbedingt den neusten Stand, aber es dürfte klar werden, wofür FUIP gut sein soll.)<br />
<br />
== Installation und Upgrade in FHEM ==<br />
Genau wie FTUI ist auch FUIP nicht automatisch Teil von FHEM. Es muss explizit installiert bzw. hinzugefügt werden. Die Installation funktioniert folgendermaßen:<br />
* FUIP verwendet FTUI. D.h. man sollte zuerst einmal FTUI installieren, falls noch nicht passiert. Wie das geht steht bei [[FHEM Tablet UI#Installation|FHEM Tablet UI]]. Dabei reicht der erste Schritt aus, da lediglich die FTUI-Dateien von FUIP benötigt werden.<br />
* Dann das FUIP-Repository zum FHEM Update hinzufügen: <br />
** <code>update add https://raw.githubusercontent.com/ThorstenPferdekaemper/FHEM-FUIP/master/controls_fuip.txt</code><br />
* Jetzt <code>update all fuip</code> und <code>shutdown restart</code>. FUIP sollte jetzt installiert sein.<br />
<br />
Zum Upgrade reicht ein <code>update</code>, wenn man FUIP wie oben beschrieben installiert hat. Will man nur den FUIP-Teil aktualisieren und nicht alles in FHEM, dann geht das mit <code>update all fuip</code>.<br />
<br />
Falls es insbesondere beim Upgrade oder nach einem Upgrade Probleme gibt (welcher Art auch immer), sollten die folgenden Punkte geprüft werden:<br />
* Wird das richtige Repository benutzt? Man kann das mit <code>update list</code> überprüfen. Wenn der Eintrag für fuip nicht genau so aussieht wie oben beschrieben, dann sollte er per <code>update delete</code> gelöscht werden und dann genau so eingetragen werden wie oben beschrieben. <br />
* FHEM braucht Schreibrechte im Verzeichnis <fhem>/FHEM/lib/FUIP/config (<fhem> steht meistens für /opt/fhem) und allen enthaltenen Dateien. Auf Betriebssystemebene (Linux) kann man das mit <code>ls -ls</code> überprüfen. Meistens kann es mit folgendem Befehl repariert werden: <code>chown -R fhem:dialout /opt/fhem/FHEM/lib/FUIP/config</code>. (Dieser Punkt gilt nicht bzw. nicht genau so, wenn man die configDB benutzt.)<br />
* Steht etwas verdächtiges im Logfile?<br />
<br />
== Erste Schritte ==<br />
Zuerst legt man ein "FUIP Device" an, also etwa <code>define ui FUIP</code>. Dieses Device meldet sich sozusagen als Webserver bei FHEM an (wie z.B. auch [[HTTPSRV]]), d.h. es erscheint im Menu oben links (über den Räumen) ein Link "ui". Beim Klick auf diesen Link generiert FUIP eine FTUI Übersichtsseite aus den Räumen im FHEM System. (Das kann ein bisschen dauern, wenn man viele Devices hat.) Nun kann man durch Verschieben und größer/kleiner-Ziehen der einzelnen Zellen bzw. durch Verschieben des Zelleninhalts die Gestaltung ändern. Außerdem kann man über das Zahnrad rechts oben in den Zellen neuen Inhalt hinzufügen, den bestehenden Inhalt ändern und vieles mehr.<br />
Durch Klicken auf die Räume im Menu der Übersichtsseite werden einzelne Raum-Seiten generiert. Diese kann man ebenfalls entsprechend bearbeiten. Natürlich können auch eigene Seiten hinzugefügt werden. Wie das geht sieht man im Video, welches oben verlinkt ist.<br />
<br />
Nachdem man die Seiten entsprechend bearbeitet hat sollte man ein <code>set ui save</code> machen. Ansonsten gehen die Änderungen beim nächsten FHEM-Neustart verloren. Ein normales <code>save config</code> reicht nicht aus und ist auch nicht notwendig.<br />
<br />
Die folgenden detaillierten Informationen können zum Teil veraltet sein, da FUIP noch weitereintwickelt wird. Es sollten allerdings keine Funktionen verschwinden.<br />
<br />
== Das Konfigurations-Popup ==<br />
=== ...für Zellen ===<br />
[[Datei:FUIP_KonfigZelle.png|mini|600px]]<br />
Beim Klick auf das Zahnrad rechts oben in einer Zelle wird der Konfigurations-Dialog für diese Zelle geöffnet. Im Folgenden werden die Funktionen der einzelnen Elemente erklärt.<br />
;Zur Seiten-Konfiguration: Damit kann man zum Konfig-Dialog für die ganze Seite wechseln. <br />
;Zellen-Überschrift: Hier wird die Überschrift der Zelle festgelegt. Eine Zelle muss keine Überschrift haben. (Die Zahlen hinter der Überschrift in der Zelle selbst verschwinden, wenn man das Attribut ''locked'' setzt.)<br />
;Neuer View: Hiermit fügt man einen neuen View, also neuen Inhalt, zu einer Zelle hinzu. Man wählt dann aus, welcher Art View angelegt werden soll und füllt die Details, wie z.B. das zugehörige Device. Der neue View wird an einer freien Stelle (falls möglich) in der Zelle eingefügt. Nach schließen des Konfig-Dialogs kann man den View dann per Drag&Drop geeignet positionieren.<br />
;Neuer View (Device): Dies dient ebenfalls dazu, neue Views in die Zelle zu packen. Allerdings wählt man nicht die Art des Views aus, sondern die FHEM-Devices, die dargestellt werden sollen. Das System sucht dann jeweils einen geeigneten View aus. Bisher funktioniert das nur sehr eingeschränkt, hat aber den Vorteil, dass man gleich mehrere Devices auswählen kann.<br />
;Abbrechen: Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Details zum View: Hier klappt man die Details zum View aus und kann diese ändern. Was man damit genau machen kann kommt auf die Art des View an. Per Drag&Drop kann man auch die Reihenfolge der Views im Konfig-Dialog ändern. Das hat allerdings keinen Effekt auf die Positonierung bereits existierender Views in der Zelle. <br />
;View löschen: Das löscht den View aus der Zelle. Wenn man den View eigentlich nicht löschen, sondern in einer anderen Zelle haben will, dann kann man ihn auch per Drag&Drop in die andere Zelle verschieben. Lässt man einen View in einer anderen Zelle "fallen", dann wird dieser automatisch der neuen Zelle zugeordnet.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Auto-Anordnen: Hiermit kann man die einzelnen Views in der Zelle automatisch anordnen. Es kann momentan sein, dass dadurch Änderungen verloren gehen. D.h. dieser Button sollte nur benutzt werden, wenn man seit dem Öffnen des Dialogs keine Änderungen gemacht hat. Außerdem schließt der Button dan Dialog. FUIP ordnet die Views in der Reihenfolge an, in der sie im Konfig-Popup erscheinen. Das zugrunde liegende Layout ist sehr einfach gehalten und kann sich auch noch ändern. Diese Funktion ist vor Allem brauchbar für mehrere gleichartige Views in derselben Zelle, wie z.B. bei Menus. <br />
;Neue Zelle: Legt eine neue (leere) Zelle auf der aktuellen Seite an. Der Konfig-Dialog wird dabei geschlossen und Änderungen gehen verloren.<br />
;Zelle kopieren: Kopiert die aktuelle Zelle. Man muss eine Seite angeben, zu der die kopierte Zelle gehören soll. Das entsprechende Feld ist mit der aktuellen Seite vorbelegt. Falls man dies nicht ändert, wird einfach eine Kopie der Zelle auf derselben Seite erzeugt. Ansonsten wird die Zelle auf die angegebene Seite kopiert. Die Funktion schließt den Konfig-Dialog und Änderungen gehen verloren. Falls man eine andere Seite angegeben hat, wird zu dieser gewechselt.<br />
;Zelle exportieren: Dies erlaubt die Definition der Zelle herunterzuladen und auf dem Client (also dem Rechner, auf dem der Browser läuft) zu speichern.<br />
;Zelle importieren: Damit lädt man eine exportierte Zelle wieder hoch. FUIP erzeugt dann auf der aktuellen Seite eine neue Zelle mit dem entsprechenden Inhalt. Das funktioniert auch mit Zellen, die von einer anderen FUIP-Seite, einem anderen FUIP-Device oder von einer anderen FHEM-Installation kommen.<br />
;Zelle löschen: Damit löscht man die aktuelle Zelle. Sie verschwindet dann von der aktuellen Seite.<br />
;Toggle editOnly: Bei manchen Views ist es schwierig, sie mit der Maus "anzufassen", da sie sofort eine Aktion auslösen (z.B. bei Links). Mit "Toggle editOnly" wird eine graue "Schicht" über die Views gelegt. Dadurch weiß man besser, wo man den View anfassen kann und Mausklicks haben keine Wirkung mehr, außer Drag&Drop.<br />
<br />
=== ...für Seiten ===<br />
[[Datei:FUIP_SeitenKonfig.png|mini|600px]]<br />
Drückt man im Konfig-Dialog für Zellen auf "Cell/Page" kommt man auf den Konfig-Dialog für ganze Seiten. Die Bedeutung der Einzelnen Elemente ist wie folgt.<br />
;Zur Zellen-Konfiguration:Das bringt einen zurück zum Konfig-Dialog für Zellen.<br />
;Seiten-Überschrift:Hier kann ein Titel für die Seite eingetragen werden. Das erscheint dann je nach Browser irgendwo oben. (Technisch ist es der Inhalt des <title> Tags in <head>.)<br />
;Abbrechen:Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Seite kopieren:Dadurch wird eine neue Seite angelegt, die so aussieht wie die aktuelle. Der Dialog wird dann geschlossen und automatisch zur neuen Seite gesprungen.<br />
;Seite exportieren:Das ist dasselbe wie für Zellen, nur für die ganze aktuelle Seite.<br />
;Seite importieren:Das ist im Prinzip auch wie für Zellen, nur dass eine neue Seite angelegt wird. Exportierte Zellen können nur als Zellen importiert werden und exportierte Seiten nur als Seiten.<br />
<br />
== Das FUIP-Device ==<br />
Wie in [[#Erste Schritte|Erste Schritte]] bereits beschrieben, muss man zur Verwendung von FUIP zuerst ein FUIP-Device anlegen. Alles, was man mit FUIP macht (bzw. was das System macht) passiert in Bezug auf ein FUIP-Device. Man kann auch jederzeit mehrere FUIP-Devices anlegen. Verschiedene Instanzen von FUIP stören sich nicht gegenseitig, man kann aber (z.B. in einem Menu) auf eine andere FUIP-Instanz verweisen (verlinken).<br />
<br />
Das FUIP-Device hat die folgenden Eigenschaften.<br />
=== Sets ===<br />
Die folgenden set-Kommandos sind für den Benutzer gedacht. Es gibt noch weitere set-Kommandos, welche aber vor Allem für FUIP-interne Zwecke gedacht sind. <br />
;save: Mit <code>set <name> save</code> wird der momentane Zustand der FUIP-Seiten zu diesem FUIP-Device gespeichert. Das betrifft nicht die Definition des FUIP-Device selbst (also auch nicht dessen Attribute). Diese müssen nach wie vor über <code>save</code> (also "Save config") gespeichert werden. Die FUIP-Seiten stehen in der Datei <fhem>/FHEM/lib/FUIP/config/FUIP_<name>.cfg. Dabei steht <fhem> in der Regel für /opt/fhem und <name> für den Namen des FUIP-Devices. Ohne ein <code>set <name> save</code> gehen alle Änderungen beim nächsten FHEM Restart verloren. <br />
;load: Mit <code>set <name> load</code> stellt man den Zustand wieder her, der mit <code>set <name> save</code> gespeichert wurde. Das ist vor Allem dann nützlich, wenn man sich beim Bearbeiten der Seiten vertan hat. Ansonsten wird beim FHEM Start das "load" automatisch ausgeführt. <br />
;pagedelete: Mit <code>set <name> pagedelete <page></code> wird die Seite <page> gelöscht. Das kann auch dazu genutzt werden, FUIP zum Neugenerieren einer Seite zu "zwingen", indem man die Seite nach dem Löschen einfach wieder aufruft. Auch das Löschen einer Seite geht ohne ein "save" verloren, d.h. die Seite ist dann nach einem FHEM Neustart wieder da. <br />
;refreshBuffer: FUIP verwendet Informationen aus dem "eigentlichen" FHEM, wie z.B. die Liste aller Devices sowie bestimmte Readings, Internals und Attribute. Insbesondere bei "entferntem" FUIP, also bei Verwendung des Attributs ''fhemwebUrl'', kann die Ermittlung dieser Daten länger dauern. Daher wird praktisch alles durch FUIP zwischengespeichert ("gepuffert"). Wenn man nun neue Devices anlegt bzw. bestehende Devices ändert, dann bekommt das FUIP-Device davon unter Umständen nichts mit. In so einem Fall kann man mit <code>set <name> refreshBuffer</code> den Zwischenspeicher löschen, um FUIP dazu zu zwingen, die Informationen erneut zu ermitteln.<br />
<br />
=== Gets ===<br />
Alle Get-Kommandos sind nur für FUIP-interne Zwecke bestimmt.<br />
<br />
=== Internals ===<br />
;editOnly: Hier wird der "editOnly-Modus" gespeichert, der auf der Konfig-Oberfläche ein- und ausgeschaltet werden kann. Siehe auch [[#Das Konfigurations-Popup|Das Konfigurations-Popup]].<br />
<br />
=== Readings ===<br />
FUIP-Devices haben keine Readings.<br />
<br />
=== Attribute ===<br />
;baseHeight: Basishöhe einer Zelle, d.h. eine 1x1-Zelle ist ''baseHeight'' Pixel hoch. Standardwert ist 108.<br />
;baseWidth: Basisbreite einer Zelle, d.h. eine 1x1-Zelle ist ''baseWidth'' Pixel breit. Standardwert ist 142. Diese Abmessungen beziehen sich nur auf die Zelle selbst, nicht auf den Zwischenraum zwischen zwei Zellen. Der Zwischenraum beträgt (horizontal und vertikal) 10 Pixel.<br />
;pageWidth: Seitenbreite in Pixel. Wenn ''pageWidth'' nicht gesetzt ist (das ist der Default), dann wird die Seitenbreite nicht festgelegt. Sie ergibt sich dann aus ''baseWidth'' (d.h. die Breite einer 1er-Zelle) und der Anzahl der verwendeten Spalten plus die Breite der Zwischenräume. D.h. in der Regel muss man ''pageWidth'' nicht angeben.<br />
;fhemwebUrl: Mit FUIP kann man sich auch an ein "entferntes" FHEM ankoppeln. Das Attribut ''fhemwebUrl'' hat dabei in etwa die Bedeutung wie ''fhemweb_url'' bei FTUI. (Siehe auch hier: [[FHEM Tablet UI#Verbindung zu FHEM|Verbindung zu FHEM (FTUI)]].) Genau wie beim "normalen" FTUI muss das Attribut ''CORS'' der FHEMWEB-Instanz des Ziels auf "1" stehen. Ansonsten würde schon FTUI nicht funktionieren. Außerdem darf die FHEMWEB-Instanz keine Passwort-Prüfung haben. Stattdessen kann man mit dem Attribut ''allowedfrom'' oder einer allowed-Instanz den Zugriff einschränken. <br />
:Man darf ''fhemwebUrl'' auf keinen Fall setzen (auch nicht auf 127.0.0.1 oder so), wenn sich die FUIP-Instanz auf das lokale FHEM beziehen soll. In dem Fall würde FHEM ewig auf sich selbst warten.<br />
:Wenn man ein "entferntes" FHEM benutzt, dann können einige Funktionen der Konfigurationsoberfläche etwas Zeit brauchen. Zum Beispiel müssen für die Eingabehilfe für Devices alle Devices aus dem entfernten FHEM gelesen werden. Das ist so implementiert, dass das entfernte FHEM möglichst wenig belastet wird, was aber zu Lasten des FUIP-FHEM geht. Siehe auch das Set-Kommando ''refreshBuffer'' zu diesem Thema.<br />
;locked: Wenn ''locked'' auf "1" gesetzt wird, dann sind die FUIP-Seiten gegen Bearbeitung gesperrt. Das Zahnrad-Icon oben rechts erscheint dann nicht mehr. Dadurch kann ein reiner "Tablet-UI Benutzer" die Seiten nicht mehr ändern und die Oberfläche sieht komplett wie normalerweise bei FTUI aus.<br />
;styleColor:<br />
<br />
== Links ==<br />
* {{Link2Forum|Topic=85869|LinkText=Foren-Thread zur Geburt von FUIP}}<br />
<br />
[[Kategorie:FHEM Frontends]]</div>Thorsten Pferdekämperhttp://wiki.fhem.de/w/index.php?title=FHEM_User_Interface_Painter&diff=27394FHEM User Interface Painter2018-07-10T18:40:10Z<p>Thorsten Pferdekämper: /* Attribute */</p>
<hr />
<div>[[Datei:FUIP_Symbolbild.png|mini|400px|FUIP in Aktion]]<br />
Der '''FHEM User Interface Painter (FUIP)''' ist ein FHEM-Modul, mit dem man [[FHEM Tablet UI]] (FTUI) Seiten graphisch ("klickibunti") erstellen kann. D.h. man kann sich ein UI zusammenklicken, welches die Tablet UI Technik verwendet, aber ohne sich selbst unbedingt mit HTML und CSS herumschlagen zu müssen.<br />
Hier ist ein kurzes Video, welches FUIP in Aktion zeigt:<br />
<br />
[https://forum.fhem.de/index.php?action=dlattach;topic=85869.0;attach=98455 Einführungsvideo]<br />
<br />
(Das Video zeigt nicht unbedingt den neusten Stand, aber es dürfte klar werden, wofür FUIP gut sein soll.)<br />
<br />
== Installation und Upgrade in FHEM ==<br />
Genau wie FTUI ist auch FUIP nicht automatisch Teil von FHEM. Es muss explizit installiert bzw. hinzugefügt werden. Die Installation funktioniert folgendermaßen:<br />
* FUIP verwendet FTUI. D.h. man sollte zuerst einmal FTUI installieren, falls noch nicht passiert. Wie das geht steht bei [[FHEM Tablet UI#Installation|FHEM Tablet UI]]. Dabei reicht der erste Schritt aus, da lediglich die FTUI-Dateien von FUIP benötigt werden.<br />
* Dann das FUIP-Repository zum FHEM Update hinzufügen: <br />
** <code>update add https://raw.githubusercontent.com/ThorstenPferdekaemper/FHEM-FUIP/master/controls_fuip.txt</code><br />
* Jetzt <code>update all fuip</code> und <code>shutdown restart</code>. FUIP sollte jetzt installiert sein.<br />
<br />
Zum Upgrade reicht ein <code>update</code>, wenn man FUIP wie oben beschrieben installiert hat. Will man nur den FUIP-Teil aktualisieren und nicht alles in FHEM, dann geht das mit <code>update all fuip</code>.<br />
<br />
Falls es insbesondere beim Upgrade oder nach einem Upgrade Probleme gibt (welcher Art auch immer), sollten die folgenden Punkte geprüft werden:<br />
* Wird das richtige Repository benutzt? Man kann das mit <code>update list</code> überprüfen. Wenn der Eintrag für fuip nicht genau so aussieht wie oben beschrieben, dann sollte er per <code>update delete</code> gelöscht werden und dann genau so eingetragen werden wie oben beschrieben. <br />
* FHEM braucht Schreibrechte im Verzeichnis <fhem>/FHEM/lib/FUIP/config (<fhem> steht meistens für /opt/fhem) und allen enthaltenen Dateien. Auf Betriebssystemebene (Linux) kann man das mit <code>ls -ls</code> überprüfen. Meistens kann es mit folgendem Befehl repariert werden: <code>chown -R fhem:dialout /opt/fhem/FHEM/lib/FUIP/config</code>. (Dieser Punkt gilt nicht bzw. nicht genau so, wenn man die configDB benutzt.)<br />
* Steht etwas verdächtiges im Logfile?<br />
<br />
== Erste Schritte ==<br />
Zuerst legt man ein "FUIP Device" an, also etwa <code>define ui FUIP</code>. Dieses Device meldet sich sozusagen als Webserver bei FHEM an (wie z.B. auch [[HTTPSRV]]), d.h. es erscheint im Menu oben links (über den Räumen) ein Link "ui". Beim Klick auf diesen Link generiert FUIP eine FTUI Übersichtsseite aus den Räumen im FHEM System. (Das kann ein bisschen dauern, wenn man viele Devices hat.) Nun kann man durch Verschieben und größer/kleiner-Ziehen der einzelnen Zellen bzw. durch Verschieben des Zelleninhalts die Gestaltung ändern. Außerdem kann man über das Zahnrad rechts oben in den Zellen neuen Inhalt hinzufügen, den bestehenden Inhalt ändern und vieles mehr.<br />
Durch Klicken auf die Räume im Menu der Übersichtsseite werden einzelne Raum-Seiten generiert. Diese kann man ebenfalls entsprechend bearbeiten. Natürlich können auch eigene Seiten hinzugefügt werden. Wie das geht sieht man im Video, welches oben verlinkt ist.<br />
<br />
Nachdem man die Seiten entsprechend bearbeitet hat sollte man ein <code>set ui save</code> machen. Ansonsten gehen die Änderungen beim nächsten FHEM-Neustart verloren. Ein normales <code>save config</code> reicht nicht aus und ist auch nicht notwendig.<br />
<br />
Die folgenden detaillierten Informationen können zum Teil veraltet sein, da FUIP noch weitereintwickelt wird. Es sollten allerdings keine Funktionen verschwinden.<br />
<br />
== Das Konfigurations-Popup ==<br />
=== ...für Zellen ===<br />
[[Datei:FUIP_KonfigZelle.png|mini|600px]]<br />
Beim Klick auf das Zahnrad rechts oben in einer Zelle wird der Konfigurations-Dialog für diese Zelle geöffnet. Im Folgenden werden die Funktionen der einzelnen Elemente erklärt.<br />
;Zur Seiten-Konfiguration: Damit kann man zum Konfig-Dialog für die ganze Seite wechseln. <br />
;Zellen-Überschrift: Hier wird die Überschrift der Zelle festgelegt. Eine Zelle muss keine Überschrift haben. (Die Zahlen hinter der Überschrift in der Zelle selbst verschwinden, wenn man das Attribut ''locked'' setzt.)<br />
;Neuer View: Hiermit fügt man einen neuen View, also neuen Inhalt, zu einer Zelle hinzu. Man wählt dann aus, welcher Art View angelegt werden soll und füllt die Details, wie z.B. das zugehörige Device. Der neue View wird an einer freien Stelle (falls möglich) in der Zelle eingefügt. Nach schließen des Konfig-Dialogs kann man den View dann per Drag&Drop geeignet positionieren.<br />
;Neuer View (Device): Dies dient ebenfalls dazu, neue Views in die Zelle zu packen. Allerdings wählt man nicht die Art des Views aus, sondern die FHEM-Devices, die dargestellt werden sollen. Das System sucht dann jeweils einen geeigneten View aus. Bisher funktioniert das nur sehr eingeschränkt, hat aber den Vorteil, dass man gleich mehrere Devices auswählen kann.<br />
;Abbrechen: Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Details zum View: Hier klappt man die Details zum View aus und kann diese ändern. Was man damit genau machen kann kommt auf die Art des View an. Per Drag&Drop kann man auch die Reihenfolge der Views im Konfig-Dialog ändern. Das hat allerdings keinen Effekt auf die Positonierung bereits existierender Views in der Zelle. <br />
;View löschen: Das löscht den View aus der Zelle. Wenn man den View eigentlich nicht löschen, sondern in einer anderen Zelle haben will, dann kann man ihn auch per Drag&Drop in die andere Zelle verschieben. Lässt man einen View in einer anderen Zelle "fallen", dann wird dieser automatisch der neuen Zelle zugeordnet.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Auto-Anordnen: Hiermit kann man die einzelnen Views in der Zelle automatisch anordnen. Es kann momentan sein, dass dadurch Änderungen verloren gehen. D.h. dieser Button sollte nur benutzt werden, wenn man seit dem Öffnen des Dialogs keine Änderungen gemacht hat. Außerdem schließt der Button dan Dialog. FUIP ordnet die Views in der Reihenfolge an, in der sie im Konfig-Popup erscheinen. Das zugrunde liegende Layout ist sehr einfach gehalten und kann sich auch noch ändern. Diese Funktion ist vor Allem brauchbar für mehrere gleichartige Views in derselben Zelle, wie z.B. bei Menus. <br />
;Neue Zelle: Legt eine neue (leere) Zelle auf der aktuellen Seite an. Der Konfig-Dialog wird dabei geschlossen und Änderungen gehen verloren.<br />
;Zelle kopieren: Kopiert die aktuelle Zelle. Man muss eine Seite angeben, zu der die kopierte Zelle gehören soll. Das entsprechende Feld ist mit der aktuellen Seite vorbelegt. Falls man dies nicht ändert, wird einfach eine Kopie der Zelle auf derselben Seite erzeugt. Ansonsten wird die Zelle auf die angegebene Seite kopiert. Die Funktion schließt den Konfig-Dialog und Änderungen gehen verloren. Falls man eine andere Seite angegeben hat, wird zu dieser gewechselt.<br />
;Zelle exportieren: Dies erlaubt die Definition der Zelle herunterzuladen und auf dem Client (also dem Rechner, auf dem der Browser läuft) zu speichern.<br />
;Zelle importieren: Damit lädt man eine exportierte Zelle wieder hoch. FUIP erzeugt dann auf der aktuellen Seite eine neue Zelle mit dem entsprechenden Inhalt. Das funktioniert auch mit Zellen, die von einer anderen FUIP-Seite, einem anderen FUIP-Device oder von einer anderen FHEM-Installation kommen.<br />
;Zelle löschen: Damit löscht man die aktuelle Zelle. Sie verschwindet dann von der aktuellen Seite.<br />
;Toggle editOnly: Bei manchen Views ist es schwierig, sie mit der Maus "anzufassen", da sie sofort eine Aktion auslösen (z.B. bei Links). Mit "Toggle editOnly" wird eine graue "Schicht" über die Views gelegt. Dadurch weiß man besser, wo man den View anfassen kann und Mausklicks haben keine Wirkung mehr, außer Drag&Drop.<br />
<br />
=== ...für Seiten ===<br />
[[Datei:FUIP_SeitenKonfig.png|mini|600px]]<br />
Drückt man im Konfig-Dialog für Zellen auf "Cell/Page" kommt man auf den Konfig-Dialog für ganze Seiten. Die Bedeutung der Einzelnen Elemente ist wie folgt.<br />
;Zur Zellen-Konfiguration:Das bringt einen zurück zum Konfig-Dialog für Zellen.<br />
;Seiten-Überschrift:Hier kann ein Titel für die Seite eingetragen werden. Das erscheint dann je nach Browser irgendwo oben. (Technisch ist es der Inhalt des <title> Tags in <head>.)<br />
;Abbrechen:Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Seite kopieren:Dadurch wird eine neue Seite angelegt, die so aussieht wie die aktuelle. Der Dialog wird dann geschlossen und automatisch zur neuen Seite gesprungen.<br />
;Seite exportieren:Das ist dasselbe wie für Zellen, nur für die ganze aktuelle Seite.<br />
;Seite importieren:Das ist im Prinzip auch wie für Zellen, nur dass eine neue Seite angelegt wird. Exportierte Zellen können nur als Zellen importiert werden und exportierte Seiten nur als Seiten.<br />
<br />
== Das FUIP-Device ==<br />
Wie in [[#Erste Schritte|Erste Schritte]] bereits beschrieben, muss man zur Verwendung von FUIP zuerst ein FUIP-Device anlegen. Alles, was man mit FUIP macht (bzw. was das System macht) passiert in Bezug auf ein FUIP-Device. Man kann auch jederzeit mehrere FUIP-Devices anlegen. Verschiedene Instanzen von FUIP stören sich nicht gegenseitig, man kann aber (z.B. in einem Menu) auf eine andere FUIP-Instanz verweisen (verlinken).<br />
<br />
Das FUIP-Device hat die folgenden Eigenschaften.<br />
=== Sets ===<br />
Die folgenden set-Kommandos sind für den Benutzer gedacht. Es gibt noch weitere set-Kommandos, welche aber vor Allem für FUIP-interne Zwecke gedacht sind. <br />
;save: Mit <code>set <name> save</code> wird der momentane Zustand der FUIP-Seiten zu diesem FUIP-Device gespeichert. Das betrifft nicht die Definition des FUIP-Device selbst (also auch nicht dessen Attribute). Diese müssen nach wie vor über <code>save</code> (also "Save config") gespeichert werden. Die FUIP-Seiten stehen in der Datei <fhem>/FHEM/lib/FUIP/config/FUIP_<name>.cfg. Dabei steht <fhem> in der Regel für /opt/fhem und <name> für den Namen des FUIP-Devices. Ohne ein <code>set <name> save</code> gehen alle Änderungen beim nächsten FHEM Restart verloren. <br />
;load: Mit <code>set <name> load</code> stellt man den Zustand wieder her, der mit <code>set <name> save</code> gespeichert wurde. Das ist vor Allem dann nützlich, wenn man sich beim Bearbeiten der Seiten vertan hat. Ansonsten wird beim FHEM Start das "load" automatisch ausgeführt. <br />
;pagedelete: Mit <code>set <name> pagedelete <page></code> wird die Seite <page> gelöscht. Das kann auch dazu genutzt werden, FUIP zum Neugenerieren einer Seite zu "zwingen", indem man die Seite nach dem Löschen einfach wieder aufruft. Auch das Löschen einer Seite geht ohne ein "save" verloren, d.h. die Seite ist dann nach einem FHEM Neustart wieder da. <br />
;refreshBuffer: FUIP verwendet Informationen aus dem "eigentlichen" FHEM, wie z.B. die Liste aller Devices sowie bestimmte Readings, Internals und Attribute. Insbesondere bei "entferntem" FUIP, also bei Verwendung des Attributs ''fhemwebUrl'', kann die Ermittlung dieser Daten länger dauern. Daher wird praktisch alles durch FUIP zwischengespeichert ("gepuffert"). Wenn man nun neue Devices anlegt bzw. bestehende Devices ändert, dann bekommt das FUIP-Device davon unter Umständen nichts mit. In so einem Fall kann man mit <code>set <name> refreshBuffer</code> den Zwischenspeicher löschen, um FUIP dazu zu zwingen, die Informationen erneut zu ermitteln.<br />
<br />
=== Gets ===<br />
Alle Get-Kommandos sind nur für FUIP-interne Zwecke bestimmt.<br />
<br />
=== Internals ===<br />
;editOnly: Hier wird der "editOnly-Modus" gespeichert, der auf der Konfig-Oberfläche ein- und ausgeschaltet werden kann. Siehe auch [[#Das Konfigurations-Popup|Das Konfigurations-Popup]].<br />
<br />
=== Readings ===<br />
FUIP-Devices haben keine Readings.<br />
<br />
=== Attribute ===<br />
;baseHeight: Basishöhe einer Zelle, d.h. eine 1x1-Zelle ist ''baseHeight'' Pixel hoch. Standardwert ist 108.<br />
;baseWidth: Basisbreite einer Zelle, d.h. eine 1x1-Zelle ist ''baseWidth'' Pixel breit. Standardwert ist 142. Diese Abmessungen beziehen sich nur auf die Zelle selbst, nicht auf den Zwischenraum zwischen zwei Zellen. Der Zwischenraum beträgt (horizontal und vertikal) 10 Pixel.<br />
;pageWidth: Seitenbreite in Pixel. Wenn ''pageWidth'' nicht gesetzt ist (das ist der Default), dann wird die Seitenbreite nicht festgelegt. Sie ergibt sich dann aus ''baseWidth'' (d.h. die Breite einer 1er-Zelle) und der Anzahl der verwendeten Spalten plus die Breite der Zwischenräume. D.h. in der Regel muss man ''pageWidth'' nicht angeben.<br />
;fhemwebUrl: Mit FUIP kann man sich auch an ein "entferntes" FHEM ankoppeln. Das Attribut ''fhemwebUrl'' hat dabei in etwa die Bedeutung wie ''fhemweb_url'' bei FTUI. (Siehe auch hier: [[FHEM Tablet UI#Verbindung zu FHEM|Verbindung zu FHEM (FTUI)]].) Genau wie beim "normalen" FTUI muss das Attribut ''CORS'' der FHEMWEB-Instanz des Ziels auf "1" stehen. Ansonsten würde schon FTUI nicht funktionieren. Außerdem darf die FHEMWEB-Instanz keine Passwort-Prüfung haben. <br />
:Man darf ''fhemwebUrl'' auf keinen Fall setzen (auch nicht auf 127.0.0.1 oder so), wenn sich die FUIP-Instanz auf das lokale FHEM beziehen soll. In dem Fall würde FHEM ewig auf sich selbst warten.<br />
:Wenn man ein "entferntes" FHEM benutzt, dann können einige Funktionen der Konfigurationsoberfläche etwas Zeit brauchen. Zum Beispiel müssen für die Eingabehilfe für Devices alle Devices aus dem entfernten FHEM gelesen werden. Das ist so implementiert, dass das entfernte FHEM möglichst wenig belastet wird, was aber zu Lasten des FUIP-FHEM geht. Siehe auch das Set-Kommando ''refreshBuffer'' zu diesem Thema.<br />
;locked: Wenn ''locked'' auf "1" gesetzt wird, dann sind die FUIP-Seiten gegen Bearbeitung gesperrt. Das Zahnrad-Icon oben rechts erscheint dann nicht mehr. Dadurch kann ein reiner "Tablet-UI Benutzer" die Seiten nicht mehr ändern und die Oberfläche sieht komplett wie normalerweise bei FTUI aus.<br />
;styleColor:<br />
<br />
== Links ==<br />
* {{Link2Forum|Topic=85869|LinkText=Foren-Thread zur Geburt von FUIP}}<br />
<br />
[[Kategorie:FHEM Frontends]]</div>Thorsten Pferdekämperhttp://wiki.fhem.de/w/index.php?title=FHEM_User_Interface_Painter&diff=27393FHEM User Interface Painter2018-07-10T18:35:21Z<p>Thorsten Pferdekämper: /* Attribute */</p>
<hr />
<div>[[Datei:FUIP_Symbolbild.png|mini|400px|FUIP in Aktion]]<br />
Der '''FHEM User Interface Painter (FUIP)''' ist ein FHEM-Modul, mit dem man [[FHEM Tablet UI]] (FTUI) Seiten graphisch ("klickibunti") erstellen kann. D.h. man kann sich ein UI zusammenklicken, welches die Tablet UI Technik verwendet, aber ohne sich selbst unbedingt mit HTML und CSS herumschlagen zu müssen.<br />
Hier ist ein kurzes Video, welches FUIP in Aktion zeigt:<br />
<br />
[https://forum.fhem.de/index.php?action=dlattach;topic=85869.0;attach=98455 Einführungsvideo]<br />
<br />
(Das Video zeigt nicht unbedingt den neusten Stand, aber es dürfte klar werden, wofür FUIP gut sein soll.)<br />
<br />
== Installation und Upgrade in FHEM ==<br />
Genau wie FTUI ist auch FUIP nicht automatisch Teil von FHEM. Es muss explizit installiert bzw. hinzugefügt werden. Die Installation funktioniert folgendermaßen:<br />
* FUIP verwendet FTUI. D.h. man sollte zuerst einmal FTUI installieren, falls noch nicht passiert. Wie das geht steht bei [[FHEM Tablet UI#Installation|FHEM Tablet UI]]. Dabei reicht der erste Schritt aus, da lediglich die FTUI-Dateien von FUIP benötigt werden.<br />
* Dann das FUIP-Repository zum FHEM Update hinzufügen: <br />
** <code>update add https://raw.githubusercontent.com/ThorstenPferdekaemper/FHEM-FUIP/master/controls_fuip.txt</code><br />
* Jetzt <code>update all fuip</code> und <code>shutdown restart</code>. FUIP sollte jetzt installiert sein.<br />
<br />
Zum Upgrade reicht ein <code>update</code>, wenn man FUIP wie oben beschrieben installiert hat. Will man nur den FUIP-Teil aktualisieren und nicht alles in FHEM, dann geht das mit <code>update all fuip</code>.<br />
<br />
Falls es insbesondere beim Upgrade oder nach einem Upgrade Probleme gibt (welcher Art auch immer), sollten die folgenden Punkte geprüft werden:<br />
* Wird das richtige Repository benutzt? Man kann das mit <code>update list</code> überprüfen. Wenn der Eintrag für fuip nicht genau so aussieht wie oben beschrieben, dann sollte er per <code>update delete</code> gelöscht werden und dann genau so eingetragen werden wie oben beschrieben. <br />
* FHEM braucht Schreibrechte im Verzeichnis <fhem>/FHEM/lib/FUIP/config (<fhem> steht meistens für /opt/fhem) und allen enthaltenen Dateien. Auf Betriebssystemebene (Linux) kann man das mit <code>ls -ls</code> überprüfen. Meistens kann es mit folgendem Befehl repariert werden: <code>chown -R fhem:dialout /opt/fhem/FHEM/lib/FUIP/config</code>. (Dieser Punkt gilt nicht bzw. nicht genau so, wenn man die configDB benutzt.)<br />
* Steht etwas verdächtiges im Logfile?<br />
<br />
== Erste Schritte ==<br />
Zuerst legt man ein "FUIP Device" an, also etwa <code>define ui FUIP</code>. Dieses Device meldet sich sozusagen als Webserver bei FHEM an (wie z.B. auch [[HTTPSRV]]), d.h. es erscheint im Menu oben links (über den Räumen) ein Link "ui". Beim Klick auf diesen Link generiert FUIP eine FTUI Übersichtsseite aus den Räumen im FHEM System. (Das kann ein bisschen dauern, wenn man viele Devices hat.) Nun kann man durch Verschieben und größer/kleiner-Ziehen der einzelnen Zellen bzw. durch Verschieben des Zelleninhalts die Gestaltung ändern. Außerdem kann man über das Zahnrad rechts oben in den Zellen neuen Inhalt hinzufügen, den bestehenden Inhalt ändern und vieles mehr.<br />
Durch Klicken auf die Räume im Menu der Übersichtsseite werden einzelne Raum-Seiten generiert. Diese kann man ebenfalls entsprechend bearbeiten. Natürlich können auch eigene Seiten hinzugefügt werden. Wie das geht sieht man im Video, welches oben verlinkt ist.<br />
<br />
Nachdem man die Seiten entsprechend bearbeitet hat sollte man ein <code>set ui save</code> machen. Ansonsten gehen die Änderungen beim nächsten FHEM-Neustart verloren. Ein normales <code>save config</code> reicht nicht aus und ist auch nicht notwendig.<br />
<br />
Die folgenden detaillierten Informationen können zum Teil veraltet sein, da FUIP noch weitereintwickelt wird. Es sollten allerdings keine Funktionen verschwinden.<br />
<br />
== Das Konfigurations-Popup ==<br />
=== ...für Zellen ===<br />
[[Datei:FUIP_KonfigZelle.png|mini|600px]]<br />
Beim Klick auf das Zahnrad rechts oben in einer Zelle wird der Konfigurations-Dialog für diese Zelle geöffnet. Im Folgenden werden die Funktionen der einzelnen Elemente erklärt.<br />
;Zur Seiten-Konfiguration: Damit kann man zum Konfig-Dialog für die ganze Seite wechseln. <br />
;Zellen-Überschrift: Hier wird die Überschrift der Zelle festgelegt. Eine Zelle muss keine Überschrift haben. (Die Zahlen hinter der Überschrift in der Zelle selbst verschwinden, wenn man das Attribut ''locked'' setzt.)<br />
;Neuer View: Hiermit fügt man einen neuen View, also neuen Inhalt, zu einer Zelle hinzu. Man wählt dann aus, welcher Art View angelegt werden soll und füllt die Details, wie z.B. das zugehörige Device. Der neue View wird an einer freien Stelle (falls möglich) in der Zelle eingefügt. Nach schließen des Konfig-Dialogs kann man den View dann per Drag&Drop geeignet positionieren.<br />
;Neuer View (Device): Dies dient ebenfalls dazu, neue Views in die Zelle zu packen. Allerdings wählt man nicht die Art des Views aus, sondern die FHEM-Devices, die dargestellt werden sollen. Das System sucht dann jeweils einen geeigneten View aus. Bisher funktioniert das nur sehr eingeschränkt, hat aber den Vorteil, dass man gleich mehrere Devices auswählen kann.<br />
;Abbrechen: Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Details zum View: Hier klappt man die Details zum View aus und kann diese ändern. Was man damit genau machen kann kommt auf die Art des View an. Per Drag&Drop kann man auch die Reihenfolge der Views im Konfig-Dialog ändern. Das hat allerdings keinen Effekt auf die Positonierung bereits existierender Views in der Zelle. <br />
;View löschen: Das löscht den View aus der Zelle. Wenn man den View eigentlich nicht löschen, sondern in einer anderen Zelle haben will, dann kann man ihn auch per Drag&Drop in die andere Zelle verschieben. Lässt man einen View in einer anderen Zelle "fallen", dann wird dieser automatisch der neuen Zelle zugeordnet.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Auto-Anordnen: Hiermit kann man die einzelnen Views in der Zelle automatisch anordnen. Es kann momentan sein, dass dadurch Änderungen verloren gehen. D.h. dieser Button sollte nur benutzt werden, wenn man seit dem Öffnen des Dialogs keine Änderungen gemacht hat. Außerdem schließt der Button dan Dialog. FUIP ordnet die Views in der Reihenfolge an, in der sie im Konfig-Popup erscheinen. Das zugrunde liegende Layout ist sehr einfach gehalten und kann sich auch noch ändern. Diese Funktion ist vor Allem brauchbar für mehrere gleichartige Views in derselben Zelle, wie z.B. bei Menus. <br />
;Neue Zelle: Legt eine neue (leere) Zelle auf der aktuellen Seite an. Der Konfig-Dialog wird dabei geschlossen und Änderungen gehen verloren.<br />
;Zelle kopieren: Kopiert die aktuelle Zelle. Man muss eine Seite angeben, zu der die kopierte Zelle gehören soll. Das entsprechende Feld ist mit der aktuellen Seite vorbelegt. Falls man dies nicht ändert, wird einfach eine Kopie der Zelle auf derselben Seite erzeugt. Ansonsten wird die Zelle auf die angegebene Seite kopiert. Die Funktion schließt den Konfig-Dialog und Änderungen gehen verloren. Falls man eine andere Seite angegeben hat, wird zu dieser gewechselt.<br />
;Zelle exportieren: Dies erlaubt die Definition der Zelle herunterzuladen und auf dem Client (also dem Rechner, auf dem der Browser läuft) zu speichern.<br />
;Zelle importieren: Damit lädt man eine exportierte Zelle wieder hoch. FUIP erzeugt dann auf der aktuellen Seite eine neue Zelle mit dem entsprechenden Inhalt. Das funktioniert auch mit Zellen, die von einer anderen FUIP-Seite, einem anderen FUIP-Device oder von einer anderen FHEM-Installation kommen.<br />
;Zelle löschen: Damit löscht man die aktuelle Zelle. Sie verschwindet dann von der aktuellen Seite.<br />
;Toggle editOnly: Bei manchen Views ist es schwierig, sie mit der Maus "anzufassen", da sie sofort eine Aktion auslösen (z.B. bei Links). Mit "Toggle editOnly" wird eine graue "Schicht" über die Views gelegt. Dadurch weiß man besser, wo man den View anfassen kann und Mausklicks haben keine Wirkung mehr, außer Drag&Drop.<br />
<br />
=== ...für Seiten ===<br />
[[Datei:FUIP_SeitenKonfig.png|mini|600px]]<br />
Drückt man im Konfig-Dialog für Zellen auf "Cell/Page" kommt man auf den Konfig-Dialog für ganze Seiten. Die Bedeutung der Einzelnen Elemente ist wie folgt.<br />
;Zur Zellen-Konfiguration:Das bringt einen zurück zum Konfig-Dialog für Zellen.<br />
;Seiten-Überschrift:Hier kann ein Titel für die Seite eingetragen werden. Das erscheint dann je nach Browser irgendwo oben. (Technisch ist es der Inhalt des <title> Tags in <head>.)<br />
;Abbrechen:Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Seite kopieren:Dadurch wird eine neue Seite angelegt, die so aussieht wie die aktuelle. Der Dialog wird dann geschlossen und automatisch zur neuen Seite gesprungen.<br />
;Seite exportieren:Das ist dasselbe wie für Zellen, nur für die ganze aktuelle Seite.<br />
;Seite importieren:Das ist im Prinzip auch wie für Zellen, nur dass eine neue Seite angelegt wird. Exportierte Zellen können nur als Zellen importiert werden und exportierte Seiten nur als Seiten.<br />
<br />
== Das FUIP-Device ==<br />
Wie in [[#Erste Schritte|Erste Schritte]] bereits beschrieben, muss man zur Verwendung von FUIP zuerst ein FUIP-Device anlegen. Alles, was man mit FUIP macht (bzw. was das System macht) passiert in Bezug auf ein FUIP-Device. Man kann auch jederzeit mehrere FUIP-Devices anlegen. Verschiedene Instanzen von FUIP stören sich nicht gegenseitig, man kann aber (z.B. in einem Menu) auf eine andere FUIP-Instanz verweisen (verlinken).<br />
<br />
Das FUIP-Device hat die folgenden Eigenschaften.<br />
=== Sets ===<br />
Die folgenden set-Kommandos sind für den Benutzer gedacht. Es gibt noch weitere set-Kommandos, welche aber vor Allem für FUIP-interne Zwecke gedacht sind. <br />
;save: Mit <code>set <name> save</code> wird der momentane Zustand der FUIP-Seiten zu diesem FUIP-Device gespeichert. Das betrifft nicht die Definition des FUIP-Device selbst (also auch nicht dessen Attribute). Diese müssen nach wie vor über <code>save</code> (also "Save config") gespeichert werden. Die FUIP-Seiten stehen in der Datei <fhem>/FHEM/lib/FUIP/config/FUIP_<name>.cfg. Dabei steht <fhem> in der Regel für /opt/fhem und <name> für den Namen des FUIP-Devices. Ohne ein <code>set <name> save</code> gehen alle Änderungen beim nächsten FHEM Restart verloren. <br />
;load: Mit <code>set <name> load</code> stellt man den Zustand wieder her, der mit <code>set <name> save</code> gespeichert wurde. Das ist vor Allem dann nützlich, wenn man sich beim Bearbeiten der Seiten vertan hat. Ansonsten wird beim FHEM Start das "load" automatisch ausgeführt. <br />
;pagedelete: Mit <code>set <name> pagedelete <page></code> wird die Seite <page> gelöscht. Das kann auch dazu genutzt werden, FUIP zum Neugenerieren einer Seite zu "zwingen", indem man die Seite nach dem Löschen einfach wieder aufruft. Auch das Löschen einer Seite geht ohne ein "save" verloren, d.h. die Seite ist dann nach einem FHEM Neustart wieder da. <br />
;refreshBuffer: FUIP verwendet Informationen aus dem "eigentlichen" FHEM, wie z.B. die Liste aller Devices sowie bestimmte Readings, Internals und Attribute. Insbesondere bei "entferntem" FUIP, also bei Verwendung des Attributs ''fhemwebUrl'', kann die Ermittlung dieser Daten länger dauern. Daher wird praktisch alles durch FUIP zwischengespeichert ("gepuffert"). Wenn man nun neue Devices anlegt bzw. bestehende Devices ändert, dann bekommt das FUIP-Device davon unter Umständen nichts mit. In so einem Fall kann man mit <code>set <name> refreshBuffer</code> den Zwischenspeicher löschen, um FUIP dazu zu zwingen, die Informationen erneut zu ermitteln.<br />
<br />
=== Gets ===<br />
Alle Get-Kommandos sind nur für FUIP-interne Zwecke bestimmt.<br />
<br />
=== Internals ===<br />
;editOnly: Hier wird der "editOnly-Modus" gespeichert, der auf der Konfig-Oberfläche ein- und ausgeschaltet werden kann. Siehe auch [[#Das Konfigurations-Popup|Das Konfigurations-Popup]].<br />
<br />
=== Readings ===<br />
FUIP-Devices haben keine Readings.<br />
<br />
=== Attribute ===<br />
;baseHeight: Basishöhe einer Zelle, d.h. eine 1x1-Zelle ist ''baseHeight'' Pixel hoch. Standardwert ist 108.<br />
;baseWidth: Basisbreite einer Zelle, d.h. eine 1x1-Zelle ist ''baseWidth'' Pixel breit. Standardwert ist 142. Diese Abmessungen beziehen sich nur auf die Zelle selbst, nicht auf den Zwischenraum zwischen zwei Zellen. Der Zwischenraum beträgt (horizontal und vertikal) 10 Pixel.<br />
;pageWidth: Seitenbreite in Pixel. Wenn ''pageWidth'' nicht gesetzt ist (das ist der Default), dann wird die Seitenbreite nicht festgelegt. Sie ergibt sich dann aus ''baseWidth'' (d.h. die Breite einer 1er-Zelle) und der Anzahl der verwendeten Spalten plus die Breite der Zwischenräume. D.h. in der Regel muss man ''pageWidth'' nicht angeben.<br />
;fhemwebUrl: Mit FUIP kann man sich auch an ein "entferntes" FHEM ankoppeln. Das Attribut ''fhemwebUrl'' hat dabei in etwa die Bedeutung wie ''fhemweb_url'' bei FTUI. (Siehe auch hier: [[FHEM Tablet UI#Verbindung zu FHEM|Verbindung zu FHEM (FTUI)]].) Genau wie beim "normalen" FTUI muss das Attribut ''CORS'' der FHEMWEB-Instanz des Ziels auf "1" stehen. Ansonsten würde schon FTUI nicht funktionieren. <br />
:Man darf ''fhemwebUrl'' auf keinen Fall setzen (auch nicht auf 127.0.0.1 oder so), wenn sich die FUIP-Instanz auf das lokale FHEM beziehen soll. In dem Fall würde FHEM ewig auf sich selbst warten.<br />
:Wenn man ein "entferntes" FHEM benutzt, dann können einige Funktionen der Konfigurationsoberfläche etwas Zeit brauchen. Zum Beispiel müssen für die Eingabehilfe für Devices alle Devices aus dem entfernten FHEM gelesen werden. Das ist so implementiert, dass das entfernte FHEM möglichst wenig belastet wird, was aber zu Lasten des FUIP-FHEM geht. Siehe auch das Set-Kommando ''refreshBuffer'' zu diesem Thema.<br />
;locked:<br />
;styleColor:<br />
<br />
== Links ==<br />
* {{Link2Forum|Topic=85869|LinkText=Foren-Thread zur Geburt von FUIP}}<br />
<br />
[[Kategorie:FHEM Frontends]]</div>Thorsten Pferdekämperhttp://wiki.fhem.de/w/index.php?title=FHEM_User_Interface_Painter&diff=27392FHEM User Interface Painter2018-07-10T18:32:23Z<p>Thorsten Pferdekämper: /* Attribute */</p>
<hr />
<div>[[Datei:FUIP_Symbolbild.png|mini|400px|FUIP in Aktion]]<br />
Der '''FHEM User Interface Painter (FUIP)''' ist ein FHEM-Modul, mit dem man [[FHEM Tablet UI]] (FTUI) Seiten graphisch ("klickibunti") erstellen kann. D.h. man kann sich ein UI zusammenklicken, welches die Tablet UI Technik verwendet, aber ohne sich selbst unbedingt mit HTML und CSS herumschlagen zu müssen.<br />
Hier ist ein kurzes Video, welches FUIP in Aktion zeigt:<br />
<br />
[https://forum.fhem.de/index.php?action=dlattach;topic=85869.0;attach=98455 Einführungsvideo]<br />
<br />
(Das Video zeigt nicht unbedingt den neusten Stand, aber es dürfte klar werden, wofür FUIP gut sein soll.)<br />
<br />
== Installation und Upgrade in FHEM ==<br />
Genau wie FTUI ist auch FUIP nicht automatisch Teil von FHEM. Es muss explizit installiert bzw. hinzugefügt werden. Die Installation funktioniert folgendermaßen:<br />
* FUIP verwendet FTUI. D.h. man sollte zuerst einmal FTUI installieren, falls noch nicht passiert. Wie das geht steht bei [[FHEM Tablet UI#Installation|FHEM Tablet UI]]. Dabei reicht der erste Schritt aus, da lediglich die FTUI-Dateien von FUIP benötigt werden.<br />
* Dann das FUIP-Repository zum FHEM Update hinzufügen: <br />
** <code>update add https://raw.githubusercontent.com/ThorstenPferdekaemper/FHEM-FUIP/master/controls_fuip.txt</code><br />
* Jetzt <code>update all fuip</code> und <code>shutdown restart</code>. FUIP sollte jetzt installiert sein.<br />
<br />
Zum Upgrade reicht ein <code>update</code>, wenn man FUIP wie oben beschrieben installiert hat. Will man nur den FUIP-Teil aktualisieren und nicht alles in FHEM, dann geht das mit <code>update all fuip</code>.<br />
<br />
Falls es insbesondere beim Upgrade oder nach einem Upgrade Probleme gibt (welcher Art auch immer), sollten die folgenden Punkte geprüft werden:<br />
* Wird das richtige Repository benutzt? Man kann das mit <code>update list</code> überprüfen. Wenn der Eintrag für fuip nicht genau so aussieht wie oben beschrieben, dann sollte er per <code>update delete</code> gelöscht werden und dann genau so eingetragen werden wie oben beschrieben. <br />
* FHEM braucht Schreibrechte im Verzeichnis <fhem>/FHEM/lib/FUIP/config (<fhem> steht meistens für /opt/fhem) und allen enthaltenen Dateien. Auf Betriebssystemebene (Linux) kann man das mit <code>ls -ls</code> überprüfen. Meistens kann es mit folgendem Befehl repariert werden: <code>chown -R fhem:dialout /opt/fhem/FHEM/lib/FUIP/config</code>. (Dieser Punkt gilt nicht bzw. nicht genau so, wenn man die configDB benutzt.)<br />
* Steht etwas verdächtiges im Logfile?<br />
<br />
== Erste Schritte ==<br />
Zuerst legt man ein "FUIP Device" an, also etwa <code>define ui FUIP</code>. Dieses Device meldet sich sozusagen als Webserver bei FHEM an (wie z.B. auch [[HTTPSRV]]), d.h. es erscheint im Menu oben links (über den Räumen) ein Link "ui". Beim Klick auf diesen Link generiert FUIP eine FTUI Übersichtsseite aus den Räumen im FHEM System. (Das kann ein bisschen dauern, wenn man viele Devices hat.) Nun kann man durch Verschieben und größer/kleiner-Ziehen der einzelnen Zellen bzw. durch Verschieben des Zelleninhalts die Gestaltung ändern. Außerdem kann man über das Zahnrad rechts oben in den Zellen neuen Inhalt hinzufügen, den bestehenden Inhalt ändern und vieles mehr.<br />
Durch Klicken auf die Räume im Menu der Übersichtsseite werden einzelne Raum-Seiten generiert. Diese kann man ebenfalls entsprechend bearbeiten. Natürlich können auch eigene Seiten hinzugefügt werden. Wie das geht sieht man im Video, welches oben verlinkt ist.<br />
<br />
Nachdem man die Seiten entsprechend bearbeitet hat sollte man ein <code>set ui save</code> machen. Ansonsten gehen die Änderungen beim nächsten FHEM-Neustart verloren. Ein normales <code>save config</code> reicht nicht aus und ist auch nicht notwendig.<br />
<br />
Die folgenden detaillierten Informationen können zum Teil veraltet sein, da FUIP noch weitereintwickelt wird. Es sollten allerdings keine Funktionen verschwinden.<br />
<br />
== Das Konfigurations-Popup ==<br />
=== ...für Zellen ===<br />
[[Datei:FUIP_KonfigZelle.png|mini|600px]]<br />
Beim Klick auf das Zahnrad rechts oben in einer Zelle wird der Konfigurations-Dialog für diese Zelle geöffnet. Im Folgenden werden die Funktionen der einzelnen Elemente erklärt.<br />
;Zur Seiten-Konfiguration: Damit kann man zum Konfig-Dialog für die ganze Seite wechseln. <br />
;Zellen-Überschrift: Hier wird die Überschrift der Zelle festgelegt. Eine Zelle muss keine Überschrift haben. (Die Zahlen hinter der Überschrift in der Zelle selbst verschwinden, wenn man das Attribut ''locked'' setzt.)<br />
;Neuer View: Hiermit fügt man einen neuen View, also neuen Inhalt, zu einer Zelle hinzu. Man wählt dann aus, welcher Art View angelegt werden soll und füllt die Details, wie z.B. das zugehörige Device. Der neue View wird an einer freien Stelle (falls möglich) in der Zelle eingefügt. Nach schließen des Konfig-Dialogs kann man den View dann per Drag&Drop geeignet positionieren.<br />
;Neuer View (Device): Dies dient ebenfalls dazu, neue Views in die Zelle zu packen. Allerdings wählt man nicht die Art des Views aus, sondern die FHEM-Devices, die dargestellt werden sollen. Das System sucht dann jeweils einen geeigneten View aus. Bisher funktioniert das nur sehr eingeschränkt, hat aber den Vorteil, dass man gleich mehrere Devices auswählen kann.<br />
;Abbrechen: Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Details zum View: Hier klappt man die Details zum View aus und kann diese ändern. Was man damit genau machen kann kommt auf die Art des View an. Per Drag&Drop kann man auch die Reihenfolge der Views im Konfig-Dialog ändern. Das hat allerdings keinen Effekt auf die Positonierung bereits existierender Views in der Zelle. <br />
;View löschen: Das löscht den View aus der Zelle. Wenn man den View eigentlich nicht löschen, sondern in einer anderen Zelle haben will, dann kann man ihn auch per Drag&Drop in die andere Zelle verschieben. Lässt man einen View in einer anderen Zelle "fallen", dann wird dieser automatisch der neuen Zelle zugeordnet.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Auto-Anordnen: Hiermit kann man die einzelnen Views in der Zelle automatisch anordnen. Es kann momentan sein, dass dadurch Änderungen verloren gehen. D.h. dieser Button sollte nur benutzt werden, wenn man seit dem Öffnen des Dialogs keine Änderungen gemacht hat. Außerdem schließt der Button dan Dialog. FUIP ordnet die Views in der Reihenfolge an, in der sie im Konfig-Popup erscheinen. Das zugrunde liegende Layout ist sehr einfach gehalten und kann sich auch noch ändern. Diese Funktion ist vor Allem brauchbar für mehrere gleichartige Views in derselben Zelle, wie z.B. bei Menus. <br />
;Neue Zelle: Legt eine neue (leere) Zelle auf der aktuellen Seite an. Der Konfig-Dialog wird dabei geschlossen und Änderungen gehen verloren.<br />
;Zelle kopieren: Kopiert die aktuelle Zelle. Man muss eine Seite angeben, zu der die kopierte Zelle gehören soll. Das entsprechende Feld ist mit der aktuellen Seite vorbelegt. Falls man dies nicht ändert, wird einfach eine Kopie der Zelle auf derselben Seite erzeugt. Ansonsten wird die Zelle auf die angegebene Seite kopiert. Die Funktion schließt den Konfig-Dialog und Änderungen gehen verloren. Falls man eine andere Seite angegeben hat, wird zu dieser gewechselt.<br />
;Zelle exportieren: Dies erlaubt die Definition der Zelle herunterzuladen und auf dem Client (also dem Rechner, auf dem der Browser läuft) zu speichern.<br />
;Zelle importieren: Damit lädt man eine exportierte Zelle wieder hoch. FUIP erzeugt dann auf der aktuellen Seite eine neue Zelle mit dem entsprechenden Inhalt. Das funktioniert auch mit Zellen, die von einer anderen FUIP-Seite, einem anderen FUIP-Device oder von einer anderen FHEM-Installation kommen.<br />
;Zelle löschen: Damit löscht man die aktuelle Zelle. Sie verschwindet dann von der aktuellen Seite.<br />
;Toggle editOnly: Bei manchen Views ist es schwierig, sie mit der Maus "anzufassen", da sie sofort eine Aktion auslösen (z.B. bei Links). Mit "Toggle editOnly" wird eine graue "Schicht" über die Views gelegt. Dadurch weiß man besser, wo man den View anfassen kann und Mausklicks haben keine Wirkung mehr, außer Drag&Drop.<br />
<br />
=== ...für Seiten ===<br />
[[Datei:FUIP_SeitenKonfig.png|mini|600px]]<br />
Drückt man im Konfig-Dialog für Zellen auf "Cell/Page" kommt man auf den Konfig-Dialog für ganze Seiten. Die Bedeutung der Einzelnen Elemente ist wie folgt.<br />
;Zur Zellen-Konfiguration:Das bringt einen zurück zum Konfig-Dialog für Zellen.<br />
;Seiten-Überschrift:Hier kann ein Titel für die Seite eingetragen werden. Das erscheint dann je nach Browser irgendwo oben. (Technisch ist es der Inhalt des <title> Tags in <head>.)<br />
;Abbrechen:Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Seite kopieren:Dadurch wird eine neue Seite angelegt, die so aussieht wie die aktuelle. Der Dialog wird dann geschlossen und automatisch zur neuen Seite gesprungen.<br />
;Seite exportieren:Das ist dasselbe wie für Zellen, nur für die ganze aktuelle Seite.<br />
;Seite importieren:Das ist im Prinzip auch wie für Zellen, nur dass eine neue Seite angelegt wird. Exportierte Zellen können nur als Zellen importiert werden und exportierte Seiten nur als Seiten.<br />
<br />
== Das FUIP-Device ==<br />
Wie in [[#Erste Schritte|Erste Schritte]] bereits beschrieben, muss man zur Verwendung von FUIP zuerst ein FUIP-Device anlegen. Alles, was man mit FUIP macht (bzw. was das System macht) passiert in Bezug auf ein FUIP-Device. Man kann auch jederzeit mehrere FUIP-Devices anlegen. Verschiedene Instanzen von FUIP stören sich nicht gegenseitig, man kann aber (z.B. in einem Menu) auf eine andere FUIP-Instanz verweisen (verlinken).<br />
<br />
Das FUIP-Device hat die folgenden Eigenschaften.<br />
=== Sets ===<br />
Die folgenden set-Kommandos sind für den Benutzer gedacht. Es gibt noch weitere set-Kommandos, welche aber vor Allem für FUIP-interne Zwecke gedacht sind. <br />
;save: Mit <code>set <name> save</code> wird der momentane Zustand der FUIP-Seiten zu diesem FUIP-Device gespeichert. Das betrifft nicht die Definition des FUIP-Device selbst (also auch nicht dessen Attribute). Diese müssen nach wie vor über <code>save</code> (also "Save config") gespeichert werden. Die FUIP-Seiten stehen in der Datei <fhem>/FHEM/lib/FUIP/config/FUIP_<name>.cfg. Dabei steht <fhem> in der Regel für /opt/fhem und <name> für den Namen des FUIP-Devices. Ohne ein <code>set <name> save</code> gehen alle Änderungen beim nächsten FHEM Restart verloren. <br />
;load: Mit <code>set <name> load</code> stellt man den Zustand wieder her, der mit <code>set <name> save</code> gespeichert wurde. Das ist vor Allem dann nützlich, wenn man sich beim Bearbeiten der Seiten vertan hat. Ansonsten wird beim FHEM Start das "load" automatisch ausgeführt. <br />
;pagedelete: Mit <code>set <name> pagedelete <page></code> wird die Seite <page> gelöscht. Das kann auch dazu genutzt werden, FUIP zum Neugenerieren einer Seite zu "zwingen", indem man die Seite nach dem Löschen einfach wieder aufruft. Auch das Löschen einer Seite geht ohne ein "save" verloren, d.h. die Seite ist dann nach einem FHEM Neustart wieder da. <br />
;refreshBuffer: FUIP verwendet Informationen aus dem "eigentlichen" FHEM, wie z.B. die Liste aller Devices sowie bestimmte Readings, Internals und Attribute. Insbesondere bei "entferntem" FUIP, also bei Verwendung des Attributs ''fhemwebUrl'', kann die Ermittlung dieser Daten länger dauern. Daher wird praktisch alles durch FUIP zwischengespeichert ("gepuffert"). Wenn man nun neue Devices anlegt bzw. bestehende Devices ändert, dann bekommt das FUIP-Device davon unter Umständen nichts mit. In so einem Fall kann man mit <code>set <name> refreshBuffer</code> den Zwischenspeicher löschen, um FUIP dazu zu zwingen, die Informationen erneut zu ermitteln.<br />
<br />
=== Gets ===<br />
Alle Get-Kommandos sind nur für FUIP-interne Zwecke bestimmt.<br />
<br />
=== Internals ===<br />
;editOnly: Hier wird der "editOnly-Modus" gespeichert, der auf der Konfig-Oberfläche ein- und ausgeschaltet werden kann. Siehe auch [[#Das Konfigurations-Popup|Das Konfigurations-Popup]].<br />
<br />
=== Readings ===<br />
FUIP-Devices haben keine Readings.<br />
<br />
=== Attribute ===<br />
;baseHeight: Basishöhe einer Zelle, d.h. eine 1x1-Zelle ist ''baseHeight'' Pixel hoch. Standardwert ist 108.<br />
;baseWidth: Basisbreite einer Zelle, d.h. eine 1x1-Zelle ist ''baseWidth'' Pixel breit. Standardwert ist 142. Diese Abmessungen beziehen sich nur auf die Zelle selbst, nicht auf den Zwischenraum zwischen zwei Zellen. Der Zwischenraum beträgt (horizontal und vertikal) 10 Pixel.<br />
;pageWidth: Seitenbreite in Pixel. Wenn ''pageWidth'' nicht gesetzt ist (das ist der Default), dann wird die Seitenbreite nicht festgelegt. Sie ergibt sich dann aus ''baseWidth'' (d.h. die Breite einer 1er-Zelle) und der Anzahl der verwendeten Spalten plus die Breite der Zwischenräume. D.h. in der Regel muss man ''pageWidth'' nicht angeben.<br />
;fhemwebUrl: Mit FUIP kann man sich auch an ein "entferntes" FHEM ankoppeln. Das Attribut ''fhemwebUrl'' hat dabei in etwa die Bedeutung wie ''fhemweb_url'' bei FTUI. (Siehe auch hier: [[FHEM Tablet UI#Verbindung zu FHEM|Verbindung zu FHEM (FTUI)]].) Genau wie beim "normalen" FTUI muss das Attribut ''CORS'' der FHEMWEB-Instanz des Ziels auf "1" stehen. Ansonsten würde schon FTUI nicht funktionieren. <br />
:Man darf ''fhemwebUrl'' auf keinen Fall setzen (auch nicht auf 127.0.0.1 oder so), wenn sich die FUIP-Instanz auf das lokale FHEM beziehen soll. In dem Fall würde FHEM ewig auf sich selbst warten.<br />
;locked:<br />
;styleColor:<br />
<br />
== Links ==<br />
* {{Link2Forum|Topic=85869|LinkText=Foren-Thread zur Geburt von FUIP}}<br />
<br />
[[Kategorie:FHEM Frontends]]</div>Thorsten Pferdekämperhttp://wiki.fhem.de/w/index.php?title=FHEM_User_Interface_Painter&diff=27391FHEM User Interface Painter2018-07-10T18:32:12Z<p>Thorsten Pferdekämper: /* Attribute */</p>
<hr />
<div>[[Datei:FUIP_Symbolbild.png|mini|400px|FUIP in Aktion]]<br />
Der '''FHEM User Interface Painter (FUIP)''' ist ein FHEM-Modul, mit dem man [[FHEM Tablet UI]] (FTUI) Seiten graphisch ("klickibunti") erstellen kann. D.h. man kann sich ein UI zusammenklicken, welches die Tablet UI Technik verwendet, aber ohne sich selbst unbedingt mit HTML und CSS herumschlagen zu müssen.<br />
Hier ist ein kurzes Video, welches FUIP in Aktion zeigt:<br />
<br />
[https://forum.fhem.de/index.php?action=dlattach;topic=85869.0;attach=98455 Einführungsvideo]<br />
<br />
(Das Video zeigt nicht unbedingt den neusten Stand, aber es dürfte klar werden, wofür FUIP gut sein soll.)<br />
<br />
== Installation und Upgrade in FHEM ==<br />
Genau wie FTUI ist auch FUIP nicht automatisch Teil von FHEM. Es muss explizit installiert bzw. hinzugefügt werden. Die Installation funktioniert folgendermaßen:<br />
* FUIP verwendet FTUI. D.h. man sollte zuerst einmal FTUI installieren, falls noch nicht passiert. Wie das geht steht bei [[FHEM Tablet UI#Installation|FHEM Tablet UI]]. Dabei reicht der erste Schritt aus, da lediglich die FTUI-Dateien von FUIP benötigt werden.<br />
* Dann das FUIP-Repository zum FHEM Update hinzufügen: <br />
** <code>update add https://raw.githubusercontent.com/ThorstenPferdekaemper/FHEM-FUIP/master/controls_fuip.txt</code><br />
* Jetzt <code>update all fuip</code> und <code>shutdown restart</code>. FUIP sollte jetzt installiert sein.<br />
<br />
Zum Upgrade reicht ein <code>update</code>, wenn man FUIP wie oben beschrieben installiert hat. Will man nur den FUIP-Teil aktualisieren und nicht alles in FHEM, dann geht das mit <code>update all fuip</code>.<br />
<br />
Falls es insbesondere beim Upgrade oder nach einem Upgrade Probleme gibt (welcher Art auch immer), sollten die folgenden Punkte geprüft werden:<br />
* Wird das richtige Repository benutzt? Man kann das mit <code>update list</code> überprüfen. Wenn der Eintrag für fuip nicht genau so aussieht wie oben beschrieben, dann sollte er per <code>update delete</code> gelöscht werden und dann genau so eingetragen werden wie oben beschrieben. <br />
* FHEM braucht Schreibrechte im Verzeichnis <fhem>/FHEM/lib/FUIP/config (<fhem> steht meistens für /opt/fhem) und allen enthaltenen Dateien. Auf Betriebssystemebene (Linux) kann man das mit <code>ls -ls</code> überprüfen. Meistens kann es mit folgendem Befehl repariert werden: <code>chown -R fhem:dialout /opt/fhem/FHEM/lib/FUIP/config</code>. (Dieser Punkt gilt nicht bzw. nicht genau so, wenn man die configDB benutzt.)<br />
* Steht etwas verdächtiges im Logfile?<br />
<br />
== Erste Schritte ==<br />
Zuerst legt man ein "FUIP Device" an, also etwa <code>define ui FUIP</code>. Dieses Device meldet sich sozusagen als Webserver bei FHEM an (wie z.B. auch [[HTTPSRV]]), d.h. es erscheint im Menu oben links (über den Räumen) ein Link "ui". Beim Klick auf diesen Link generiert FUIP eine FTUI Übersichtsseite aus den Räumen im FHEM System. (Das kann ein bisschen dauern, wenn man viele Devices hat.) Nun kann man durch Verschieben und größer/kleiner-Ziehen der einzelnen Zellen bzw. durch Verschieben des Zelleninhalts die Gestaltung ändern. Außerdem kann man über das Zahnrad rechts oben in den Zellen neuen Inhalt hinzufügen, den bestehenden Inhalt ändern und vieles mehr.<br />
Durch Klicken auf die Räume im Menu der Übersichtsseite werden einzelne Raum-Seiten generiert. Diese kann man ebenfalls entsprechend bearbeiten. Natürlich können auch eigene Seiten hinzugefügt werden. Wie das geht sieht man im Video, welches oben verlinkt ist.<br />
<br />
Nachdem man die Seiten entsprechend bearbeitet hat sollte man ein <code>set ui save</code> machen. Ansonsten gehen die Änderungen beim nächsten FHEM-Neustart verloren. Ein normales <code>save config</code> reicht nicht aus und ist auch nicht notwendig.<br />
<br />
Die folgenden detaillierten Informationen können zum Teil veraltet sein, da FUIP noch weitereintwickelt wird. Es sollten allerdings keine Funktionen verschwinden.<br />
<br />
== Das Konfigurations-Popup ==<br />
=== ...für Zellen ===<br />
[[Datei:FUIP_KonfigZelle.png|mini|600px]]<br />
Beim Klick auf das Zahnrad rechts oben in einer Zelle wird der Konfigurations-Dialog für diese Zelle geöffnet. Im Folgenden werden die Funktionen der einzelnen Elemente erklärt.<br />
;Zur Seiten-Konfiguration: Damit kann man zum Konfig-Dialog für die ganze Seite wechseln. <br />
;Zellen-Überschrift: Hier wird die Überschrift der Zelle festgelegt. Eine Zelle muss keine Überschrift haben. (Die Zahlen hinter der Überschrift in der Zelle selbst verschwinden, wenn man das Attribut ''locked'' setzt.)<br />
;Neuer View: Hiermit fügt man einen neuen View, also neuen Inhalt, zu einer Zelle hinzu. Man wählt dann aus, welcher Art View angelegt werden soll und füllt die Details, wie z.B. das zugehörige Device. Der neue View wird an einer freien Stelle (falls möglich) in der Zelle eingefügt. Nach schließen des Konfig-Dialogs kann man den View dann per Drag&Drop geeignet positionieren.<br />
;Neuer View (Device): Dies dient ebenfalls dazu, neue Views in die Zelle zu packen. Allerdings wählt man nicht die Art des Views aus, sondern die FHEM-Devices, die dargestellt werden sollen. Das System sucht dann jeweils einen geeigneten View aus. Bisher funktioniert das nur sehr eingeschränkt, hat aber den Vorteil, dass man gleich mehrere Devices auswählen kann.<br />
;Abbrechen: Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Details zum View: Hier klappt man die Details zum View aus und kann diese ändern. Was man damit genau machen kann kommt auf die Art des View an. Per Drag&Drop kann man auch die Reihenfolge der Views im Konfig-Dialog ändern. Das hat allerdings keinen Effekt auf die Positonierung bereits existierender Views in der Zelle. <br />
;View löschen: Das löscht den View aus der Zelle. Wenn man den View eigentlich nicht löschen, sondern in einer anderen Zelle haben will, dann kann man ihn auch per Drag&Drop in die andere Zelle verschieben. Lässt man einen View in einer anderen Zelle "fallen", dann wird dieser automatisch der neuen Zelle zugeordnet.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Auto-Anordnen: Hiermit kann man die einzelnen Views in der Zelle automatisch anordnen. Es kann momentan sein, dass dadurch Änderungen verloren gehen. D.h. dieser Button sollte nur benutzt werden, wenn man seit dem Öffnen des Dialogs keine Änderungen gemacht hat. Außerdem schließt der Button dan Dialog. FUIP ordnet die Views in der Reihenfolge an, in der sie im Konfig-Popup erscheinen. Das zugrunde liegende Layout ist sehr einfach gehalten und kann sich auch noch ändern. Diese Funktion ist vor Allem brauchbar für mehrere gleichartige Views in derselben Zelle, wie z.B. bei Menus. <br />
;Neue Zelle: Legt eine neue (leere) Zelle auf der aktuellen Seite an. Der Konfig-Dialog wird dabei geschlossen und Änderungen gehen verloren.<br />
;Zelle kopieren: Kopiert die aktuelle Zelle. Man muss eine Seite angeben, zu der die kopierte Zelle gehören soll. Das entsprechende Feld ist mit der aktuellen Seite vorbelegt. Falls man dies nicht ändert, wird einfach eine Kopie der Zelle auf derselben Seite erzeugt. Ansonsten wird die Zelle auf die angegebene Seite kopiert. Die Funktion schließt den Konfig-Dialog und Änderungen gehen verloren. Falls man eine andere Seite angegeben hat, wird zu dieser gewechselt.<br />
;Zelle exportieren: Dies erlaubt die Definition der Zelle herunterzuladen und auf dem Client (also dem Rechner, auf dem der Browser läuft) zu speichern.<br />
;Zelle importieren: Damit lädt man eine exportierte Zelle wieder hoch. FUIP erzeugt dann auf der aktuellen Seite eine neue Zelle mit dem entsprechenden Inhalt. Das funktioniert auch mit Zellen, die von einer anderen FUIP-Seite, einem anderen FUIP-Device oder von einer anderen FHEM-Installation kommen.<br />
;Zelle löschen: Damit löscht man die aktuelle Zelle. Sie verschwindet dann von der aktuellen Seite.<br />
;Toggle editOnly: Bei manchen Views ist es schwierig, sie mit der Maus "anzufassen", da sie sofort eine Aktion auslösen (z.B. bei Links). Mit "Toggle editOnly" wird eine graue "Schicht" über die Views gelegt. Dadurch weiß man besser, wo man den View anfassen kann und Mausklicks haben keine Wirkung mehr, außer Drag&Drop.<br />
<br />
=== ...für Seiten ===<br />
[[Datei:FUIP_SeitenKonfig.png|mini|600px]]<br />
Drückt man im Konfig-Dialog für Zellen auf "Cell/Page" kommt man auf den Konfig-Dialog für ganze Seiten. Die Bedeutung der Einzelnen Elemente ist wie folgt.<br />
;Zur Zellen-Konfiguration:Das bringt einen zurück zum Konfig-Dialog für Zellen.<br />
;Seiten-Überschrift:Hier kann ein Titel für die Seite eingetragen werden. Das erscheint dann je nach Browser irgendwo oben. (Technisch ist es der Inhalt des <title> Tags in <head>.)<br />
;Abbrechen:Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Seite kopieren:Dadurch wird eine neue Seite angelegt, die so aussieht wie die aktuelle. Der Dialog wird dann geschlossen und automatisch zur neuen Seite gesprungen.<br />
;Seite exportieren:Das ist dasselbe wie für Zellen, nur für die ganze aktuelle Seite.<br />
;Seite importieren:Das ist im Prinzip auch wie für Zellen, nur dass eine neue Seite angelegt wird. Exportierte Zellen können nur als Zellen importiert werden und exportierte Seiten nur als Seiten.<br />
<br />
== Das FUIP-Device ==<br />
Wie in [[#Erste Schritte|Erste Schritte]] bereits beschrieben, muss man zur Verwendung von FUIP zuerst ein FUIP-Device anlegen. Alles, was man mit FUIP macht (bzw. was das System macht) passiert in Bezug auf ein FUIP-Device. Man kann auch jederzeit mehrere FUIP-Devices anlegen. Verschiedene Instanzen von FUIP stören sich nicht gegenseitig, man kann aber (z.B. in einem Menu) auf eine andere FUIP-Instanz verweisen (verlinken).<br />
<br />
Das FUIP-Device hat die folgenden Eigenschaften.<br />
=== Sets ===<br />
Die folgenden set-Kommandos sind für den Benutzer gedacht. Es gibt noch weitere set-Kommandos, welche aber vor Allem für FUIP-interne Zwecke gedacht sind. <br />
;save: Mit <code>set <name> save</code> wird der momentane Zustand der FUIP-Seiten zu diesem FUIP-Device gespeichert. Das betrifft nicht die Definition des FUIP-Device selbst (also auch nicht dessen Attribute). Diese müssen nach wie vor über <code>save</code> (also "Save config") gespeichert werden. Die FUIP-Seiten stehen in der Datei <fhem>/FHEM/lib/FUIP/config/FUIP_<name>.cfg. Dabei steht <fhem> in der Regel für /opt/fhem und <name> für den Namen des FUIP-Devices. Ohne ein <code>set <name> save</code> gehen alle Änderungen beim nächsten FHEM Restart verloren. <br />
;load: Mit <code>set <name> load</code> stellt man den Zustand wieder her, der mit <code>set <name> save</code> gespeichert wurde. Das ist vor Allem dann nützlich, wenn man sich beim Bearbeiten der Seiten vertan hat. Ansonsten wird beim FHEM Start das "load" automatisch ausgeführt. <br />
;pagedelete: Mit <code>set <name> pagedelete <page></code> wird die Seite <page> gelöscht. Das kann auch dazu genutzt werden, FUIP zum Neugenerieren einer Seite zu "zwingen", indem man die Seite nach dem Löschen einfach wieder aufruft. Auch das Löschen einer Seite geht ohne ein "save" verloren, d.h. die Seite ist dann nach einem FHEM Neustart wieder da. <br />
;refreshBuffer: FUIP verwendet Informationen aus dem "eigentlichen" FHEM, wie z.B. die Liste aller Devices sowie bestimmte Readings, Internals und Attribute. Insbesondere bei "entferntem" FUIP, also bei Verwendung des Attributs ''fhemwebUrl'', kann die Ermittlung dieser Daten länger dauern. Daher wird praktisch alles durch FUIP zwischengespeichert ("gepuffert"). Wenn man nun neue Devices anlegt bzw. bestehende Devices ändert, dann bekommt das FUIP-Device davon unter Umständen nichts mit. In so einem Fall kann man mit <code>set <name> refreshBuffer</code> den Zwischenspeicher löschen, um FUIP dazu zu zwingen, die Informationen erneut zu ermitteln.<br />
<br />
=== Gets ===<br />
Alle Get-Kommandos sind nur für FUIP-interne Zwecke bestimmt.<br />
<br />
=== Internals ===<br />
;editOnly: Hier wird der "editOnly-Modus" gespeichert, der auf der Konfig-Oberfläche ein- und ausgeschaltet werden kann. Siehe auch [[#Das Konfigurations-Popup|Das Konfigurations-Popup]].<br />
<br />
=== Readings ===<br />
FUIP-Devices haben keine Readings.<br />
<br />
=== Attribute ===<br />
;baseHeight: Basishöhe einer Zelle, d.h. eine 1x1-Zelle ist ''baseHeight'' Pixel hoch. Standardwert ist 108.<br />
;baseWidth: Basisbreite einer Zelle, d.h. eine 1x1-Zelle ist ''baseWidth'' Pixel breit. Standardwert ist 142. Diese Abmessungen beziehen sich nur auf die Zelle selbst, nicht auf den Zwischenraum zwischen zwei Zellen. Der Zwischenraum beträgt (horizontal und vertikal) 10 Pixel.<br />
;pageWidth: Seitenbreite in Pixel. Wenn ''pageWidth'' nicht gesetzt ist (das ist der Default), dann wird die Seitenbreite nicht festgelegt. Sie ergibt sich dann aus ''baseWidth'' (d.h. die Breite einer 1er-Zelle) und der Anzahl der verwendeten Spalten plus die Breite der Zwischenräume. D.h. in der Regel muss man ''pageWidth'' nicht angeben.<br />
;fhemwebUrl: Mit FUIP kann man sich auch an ein "entferntes" FHEM ankoppeln. Das Attribut ''fhemwebUrl'' hat dabei in etwa die Bedeutung wie ''fhemweb_url'' bei FTUI. (Siehe auch hier: [[FHEM Tablet UI#Verbindung zu FHEM|Verbindung zu FHEM (FTUI)]].) Genau wie beim "normalen" FTUI muss das Attribut ''CORS'' der FHEMWEB-Instanz des Ziels auf "1" stehen. Ansonsten würde schon FTUI nicht funktionieren. <br />
Man darf ''fhemwebUrl'' auf keinen Fall setzen (auch nicht auf 127.0.0.1 oder so), wenn sich die FUIP-Instanz auf das lokale FHEM beziehen soll. In dem Fall würde FHEM ewig auf sich selbst warten.<br />
;locked:<br />
;styleColor:<br />
<br />
== Links ==<br />
* {{Link2Forum|Topic=85869|LinkText=Foren-Thread zur Geburt von FUIP}}<br />
<br />
[[Kategorie:FHEM Frontends]]</div>Thorsten Pferdekämperhttp://wiki.fhem.de/w/index.php?title=FHEM_User_Interface_Painter&diff=27390FHEM User Interface Painter2018-07-10T18:30:18Z<p>Thorsten Pferdekämper: /* Attribute */</p>
<hr />
<div>[[Datei:FUIP_Symbolbild.png|mini|400px|FUIP in Aktion]]<br />
Der '''FHEM User Interface Painter (FUIP)''' ist ein FHEM-Modul, mit dem man [[FHEM Tablet UI]] (FTUI) Seiten graphisch ("klickibunti") erstellen kann. D.h. man kann sich ein UI zusammenklicken, welches die Tablet UI Technik verwendet, aber ohne sich selbst unbedingt mit HTML und CSS herumschlagen zu müssen.<br />
Hier ist ein kurzes Video, welches FUIP in Aktion zeigt:<br />
<br />
[https://forum.fhem.de/index.php?action=dlattach;topic=85869.0;attach=98455 Einführungsvideo]<br />
<br />
(Das Video zeigt nicht unbedingt den neusten Stand, aber es dürfte klar werden, wofür FUIP gut sein soll.)<br />
<br />
== Installation und Upgrade in FHEM ==<br />
Genau wie FTUI ist auch FUIP nicht automatisch Teil von FHEM. Es muss explizit installiert bzw. hinzugefügt werden. Die Installation funktioniert folgendermaßen:<br />
* FUIP verwendet FTUI. D.h. man sollte zuerst einmal FTUI installieren, falls noch nicht passiert. Wie das geht steht bei [[FHEM Tablet UI#Installation|FHEM Tablet UI]]. Dabei reicht der erste Schritt aus, da lediglich die FTUI-Dateien von FUIP benötigt werden.<br />
* Dann das FUIP-Repository zum FHEM Update hinzufügen: <br />
** <code>update add https://raw.githubusercontent.com/ThorstenPferdekaemper/FHEM-FUIP/master/controls_fuip.txt</code><br />
* Jetzt <code>update all fuip</code> und <code>shutdown restart</code>. FUIP sollte jetzt installiert sein.<br />
<br />
Zum Upgrade reicht ein <code>update</code>, wenn man FUIP wie oben beschrieben installiert hat. Will man nur den FUIP-Teil aktualisieren und nicht alles in FHEM, dann geht das mit <code>update all fuip</code>.<br />
<br />
Falls es insbesondere beim Upgrade oder nach einem Upgrade Probleme gibt (welcher Art auch immer), sollten die folgenden Punkte geprüft werden:<br />
* Wird das richtige Repository benutzt? Man kann das mit <code>update list</code> überprüfen. Wenn der Eintrag für fuip nicht genau so aussieht wie oben beschrieben, dann sollte er per <code>update delete</code> gelöscht werden und dann genau so eingetragen werden wie oben beschrieben. <br />
* FHEM braucht Schreibrechte im Verzeichnis <fhem>/FHEM/lib/FUIP/config (<fhem> steht meistens für /opt/fhem) und allen enthaltenen Dateien. Auf Betriebssystemebene (Linux) kann man das mit <code>ls -ls</code> überprüfen. Meistens kann es mit folgendem Befehl repariert werden: <code>chown -R fhem:dialout /opt/fhem/FHEM/lib/FUIP/config</code>. (Dieser Punkt gilt nicht bzw. nicht genau so, wenn man die configDB benutzt.)<br />
* Steht etwas verdächtiges im Logfile?<br />
<br />
== Erste Schritte ==<br />
Zuerst legt man ein "FUIP Device" an, also etwa <code>define ui FUIP</code>. Dieses Device meldet sich sozusagen als Webserver bei FHEM an (wie z.B. auch [[HTTPSRV]]), d.h. es erscheint im Menu oben links (über den Räumen) ein Link "ui". Beim Klick auf diesen Link generiert FUIP eine FTUI Übersichtsseite aus den Räumen im FHEM System. (Das kann ein bisschen dauern, wenn man viele Devices hat.) Nun kann man durch Verschieben und größer/kleiner-Ziehen der einzelnen Zellen bzw. durch Verschieben des Zelleninhalts die Gestaltung ändern. Außerdem kann man über das Zahnrad rechts oben in den Zellen neuen Inhalt hinzufügen, den bestehenden Inhalt ändern und vieles mehr.<br />
Durch Klicken auf die Räume im Menu der Übersichtsseite werden einzelne Raum-Seiten generiert. Diese kann man ebenfalls entsprechend bearbeiten. Natürlich können auch eigene Seiten hinzugefügt werden. Wie das geht sieht man im Video, welches oben verlinkt ist.<br />
<br />
Nachdem man die Seiten entsprechend bearbeitet hat sollte man ein <code>set ui save</code> machen. Ansonsten gehen die Änderungen beim nächsten FHEM-Neustart verloren. Ein normales <code>save config</code> reicht nicht aus und ist auch nicht notwendig.<br />
<br />
Die folgenden detaillierten Informationen können zum Teil veraltet sein, da FUIP noch weitereintwickelt wird. Es sollten allerdings keine Funktionen verschwinden.<br />
<br />
== Das Konfigurations-Popup ==<br />
=== ...für Zellen ===<br />
[[Datei:FUIP_KonfigZelle.png|mini|600px]]<br />
Beim Klick auf das Zahnrad rechts oben in einer Zelle wird der Konfigurations-Dialog für diese Zelle geöffnet. Im Folgenden werden die Funktionen der einzelnen Elemente erklärt.<br />
;Zur Seiten-Konfiguration: Damit kann man zum Konfig-Dialog für die ganze Seite wechseln. <br />
;Zellen-Überschrift: Hier wird die Überschrift der Zelle festgelegt. Eine Zelle muss keine Überschrift haben. (Die Zahlen hinter der Überschrift in der Zelle selbst verschwinden, wenn man das Attribut ''locked'' setzt.)<br />
;Neuer View: Hiermit fügt man einen neuen View, also neuen Inhalt, zu einer Zelle hinzu. Man wählt dann aus, welcher Art View angelegt werden soll und füllt die Details, wie z.B. das zugehörige Device. Der neue View wird an einer freien Stelle (falls möglich) in der Zelle eingefügt. Nach schließen des Konfig-Dialogs kann man den View dann per Drag&Drop geeignet positionieren.<br />
;Neuer View (Device): Dies dient ebenfalls dazu, neue Views in die Zelle zu packen. Allerdings wählt man nicht die Art des Views aus, sondern die FHEM-Devices, die dargestellt werden sollen. Das System sucht dann jeweils einen geeigneten View aus. Bisher funktioniert das nur sehr eingeschränkt, hat aber den Vorteil, dass man gleich mehrere Devices auswählen kann.<br />
;Abbrechen: Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Details zum View: Hier klappt man die Details zum View aus und kann diese ändern. Was man damit genau machen kann kommt auf die Art des View an. Per Drag&Drop kann man auch die Reihenfolge der Views im Konfig-Dialog ändern. Das hat allerdings keinen Effekt auf die Positonierung bereits existierender Views in der Zelle. <br />
;View löschen: Das löscht den View aus der Zelle. Wenn man den View eigentlich nicht löschen, sondern in einer anderen Zelle haben will, dann kann man ihn auch per Drag&Drop in die andere Zelle verschieben. Lässt man einen View in einer anderen Zelle "fallen", dann wird dieser automatisch der neuen Zelle zugeordnet.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Auto-Anordnen: Hiermit kann man die einzelnen Views in der Zelle automatisch anordnen. Es kann momentan sein, dass dadurch Änderungen verloren gehen. D.h. dieser Button sollte nur benutzt werden, wenn man seit dem Öffnen des Dialogs keine Änderungen gemacht hat. Außerdem schließt der Button dan Dialog. FUIP ordnet die Views in der Reihenfolge an, in der sie im Konfig-Popup erscheinen. Das zugrunde liegende Layout ist sehr einfach gehalten und kann sich auch noch ändern. Diese Funktion ist vor Allem brauchbar für mehrere gleichartige Views in derselben Zelle, wie z.B. bei Menus. <br />
;Neue Zelle: Legt eine neue (leere) Zelle auf der aktuellen Seite an. Der Konfig-Dialog wird dabei geschlossen und Änderungen gehen verloren.<br />
;Zelle kopieren: Kopiert die aktuelle Zelle. Man muss eine Seite angeben, zu der die kopierte Zelle gehören soll. Das entsprechende Feld ist mit der aktuellen Seite vorbelegt. Falls man dies nicht ändert, wird einfach eine Kopie der Zelle auf derselben Seite erzeugt. Ansonsten wird die Zelle auf die angegebene Seite kopiert. Die Funktion schließt den Konfig-Dialog und Änderungen gehen verloren. Falls man eine andere Seite angegeben hat, wird zu dieser gewechselt.<br />
;Zelle exportieren: Dies erlaubt die Definition der Zelle herunterzuladen und auf dem Client (also dem Rechner, auf dem der Browser läuft) zu speichern.<br />
;Zelle importieren: Damit lädt man eine exportierte Zelle wieder hoch. FUIP erzeugt dann auf der aktuellen Seite eine neue Zelle mit dem entsprechenden Inhalt. Das funktioniert auch mit Zellen, die von einer anderen FUIP-Seite, einem anderen FUIP-Device oder von einer anderen FHEM-Installation kommen.<br />
;Zelle löschen: Damit löscht man die aktuelle Zelle. Sie verschwindet dann von der aktuellen Seite.<br />
;Toggle editOnly: Bei manchen Views ist es schwierig, sie mit der Maus "anzufassen", da sie sofort eine Aktion auslösen (z.B. bei Links). Mit "Toggle editOnly" wird eine graue "Schicht" über die Views gelegt. Dadurch weiß man besser, wo man den View anfassen kann und Mausklicks haben keine Wirkung mehr, außer Drag&Drop.<br />
<br />
=== ...für Seiten ===<br />
[[Datei:FUIP_SeitenKonfig.png|mini|600px]]<br />
Drückt man im Konfig-Dialog für Zellen auf "Cell/Page" kommt man auf den Konfig-Dialog für ganze Seiten. Die Bedeutung der Einzelnen Elemente ist wie folgt.<br />
;Zur Zellen-Konfiguration:Das bringt einen zurück zum Konfig-Dialog für Zellen.<br />
;Seiten-Überschrift:Hier kann ein Titel für die Seite eingetragen werden. Das erscheint dann je nach Browser irgendwo oben. (Technisch ist es der Inhalt des <title> Tags in <head>.)<br />
;Abbrechen:Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Seite kopieren:Dadurch wird eine neue Seite angelegt, die so aussieht wie die aktuelle. Der Dialog wird dann geschlossen und automatisch zur neuen Seite gesprungen.<br />
;Seite exportieren:Das ist dasselbe wie für Zellen, nur für die ganze aktuelle Seite.<br />
;Seite importieren:Das ist im Prinzip auch wie für Zellen, nur dass eine neue Seite angelegt wird. Exportierte Zellen können nur als Zellen importiert werden und exportierte Seiten nur als Seiten.<br />
<br />
== Das FUIP-Device ==<br />
Wie in [[#Erste Schritte|Erste Schritte]] bereits beschrieben, muss man zur Verwendung von FUIP zuerst ein FUIP-Device anlegen. Alles, was man mit FUIP macht (bzw. was das System macht) passiert in Bezug auf ein FUIP-Device. Man kann auch jederzeit mehrere FUIP-Devices anlegen. Verschiedene Instanzen von FUIP stören sich nicht gegenseitig, man kann aber (z.B. in einem Menu) auf eine andere FUIP-Instanz verweisen (verlinken).<br />
<br />
Das FUIP-Device hat die folgenden Eigenschaften.<br />
=== Sets ===<br />
Die folgenden set-Kommandos sind für den Benutzer gedacht. Es gibt noch weitere set-Kommandos, welche aber vor Allem für FUIP-interne Zwecke gedacht sind. <br />
;save: Mit <code>set <name> save</code> wird der momentane Zustand der FUIP-Seiten zu diesem FUIP-Device gespeichert. Das betrifft nicht die Definition des FUIP-Device selbst (also auch nicht dessen Attribute). Diese müssen nach wie vor über <code>save</code> (also "Save config") gespeichert werden. Die FUIP-Seiten stehen in der Datei <fhem>/FHEM/lib/FUIP/config/FUIP_<name>.cfg. Dabei steht <fhem> in der Regel für /opt/fhem und <name> für den Namen des FUIP-Devices. Ohne ein <code>set <name> save</code> gehen alle Änderungen beim nächsten FHEM Restart verloren. <br />
;load: Mit <code>set <name> load</code> stellt man den Zustand wieder her, der mit <code>set <name> save</code> gespeichert wurde. Das ist vor Allem dann nützlich, wenn man sich beim Bearbeiten der Seiten vertan hat. Ansonsten wird beim FHEM Start das "load" automatisch ausgeführt. <br />
;pagedelete: Mit <code>set <name> pagedelete <page></code> wird die Seite <page> gelöscht. Das kann auch dazu genutzt werden, FUIP zum Neugenerieren einer Seite zu "zwingen", indem man die Seite nach dem Löschen einfach wieder aufruft. Auch das Löschen einer Seite geht ohne ein "save" verloren, d.h. die Seite ist dann nach einem FHEM Neustart wieder da. <br />
;refreshBuffer: FUIP verwendet Informationen aus dem "eigentlichen" FHEM, wie z.B. die Liste aller Devices sowie bestimmte Readings, Internals und Attribute. Insbesondere bei "entferntem" FUIP, also bei Verwendung des Attributs ''fhemwebUrl'', kann die Ermittlung dieser Daten länger dauern. Daher wird praktisch alles durch FUIP zwischengespeichert ("gepuffert"). Wenn man nun neue Devices anlegt bzw. bestehende Devices ändert, dann bekommt das FUIP-Device davon unter Umständen nichts mit. In so einem Fall kann man mit <code>set <name> refreshBuffer</code> den Zwischenspeicher löschen, um FUIP dazu zu zwingen, die Informationen erneut zu ermitteln.<br />
<br />
=== Gets ===<br />
Alle Get-Kommandos sind nur für FUIP-interne Zwecke bestimmt.<br />
<br />
=== Internals ===<br />
;editOnly: Hier wird der "editOnly-Modus" gespeichert, der auf der Konfig-Oberfläche ein- und ausgeschaltet werden kann. Siehe auch [[#Das Konfigurations-Popup|Das Konfigurations-Popup]].<br />
<br />
=== Readings ===<br />
FUIP-Devices haben keine Readings.<br />
<br />
=== Attribute ===<br />
;baseHeight: Basishöhe einer Zelle, d.h. eine 1x1-Zelle ist ''baseHeight'' Pixel hoch. Standardwert ist 108.<br />
;baseWidth: Basisbreite einer Zelle, d.h. eine 1x1-Zelle ist ''baseWidth'' Pixel breit. Standardwert ist 142. Diese Abmessungen beziehen sich nur auf die Zelle selbst, nicht auf den Zwischenraum zwischen zwei Zellen. Der Zwischenraum beträgt (horizontal und vertikal) 10 Pixel.<br />
;pageWidth: Seitenbreite in Pixel. Wenn ''pageWidth'' nicht gesetzt ist (das ist der Default), dann wird die Seitenbreite nicht festgelegt. Sie ergibt sich dann aus ''baseWidth'' (d.h. die Breite einer 1er-Zelle) und der Anzahl der verwendeten Spalten plus die Breite der Zwischenräume. D.h. in der Regel muss man ''pageWidth'' nicht angeben.<br />
;fhemwebUrl: Mit FUIP kann man sich auch an ein "entferntes" FHEM ankoppeln. Das Attribut ''fhemwebUrl'' hat dabei in etwa die Bedeutung wie ''fhemweb_url'' bei FTUI. (Siehe auch hier: [[FHEM Tablet UI#Verbindung zu FHEM|Verbindung zu FHEM (FTUI)]].) Genau wie beim "normalen" FTUI muss das Attribut ''CORS'' der FHEMWEB-Instanz des Ziels auf "1" stehen. Ansonsten würde schon FTUI nicht funktionieren. Man darf ''fhemwebUrl'' auf keinen Fall setzen (auch nicht auf 127.0.0.1 oder so), wenn sich die FUIP-Instanz auf das lokale FHEM beziehen soll. In dem Fall würde FHEM ewig auf sich selbst warten.<br />
;locked:<br />
;styleColor:<br />
<br />
== Links ==<br />
* {{Link2Forum|Topic=85869|LinkText=Foren-Thread zur Geburt von FUIP}}<br />
<br />
[[Kategorie:FHEM Frontends]]</div>Thorsten Pferdekämperhttp://wiki.fhem.de/w/index.php?title=FHEM_User_Interface_Painter&diff=27389FHEM User Interface Painter2018-07-10T18:25:37Z<p>Thorsten Pferdekämper: /* Attribute */</p>
<hr />
<div>[[Datei:FUIP_Symbolbild.png|mini|400px|FUIP in Aktion]]<br />
Der '''FHEM User Interface Painter (FUIP)''' ist ein FHEM-Modul, mit dem man [[FHEM Tablet UI]] (FTUI) Seiten graphisch ("klickibunti") erstellen kann. D.h. man kann sich ein UI zusammenklicken, welches die Tablet UI Technik verwendet, aber ohne sich selbst unbedingt mit HTML und CSS herumschlagen zu müssen.<br />
Hier ist ein kurzes Video, welches FUIP in Aktion zeigt:<br />
<br />
[https://forum.fhem.de/index.php?action=dlattach;topic=85869.0;attach=98455 Einführungsvideo]<br />
<br />
(Das Video zeigt nicht unbedingt den neusten Stand, aber es dürfte klar werden, wofür FUIP gut sein soll.)<br />
<br />
== Installation und Upgrade in FHEM ==<br />
Genau wie FTUI ist auch FUIP nicht automatisch Teil von FHEM. Es muss explizit installiert bzw. hinzugefügt werden. Die Installation funktioniert folgendermaßen:<br />
* FUIP verwendet FTUI. D.h. man sollte zuerst einmal FTUI installieren, falls noch nicht passiert. Wie das geht steht bei [[FHEM Tablet UI#Installation|FHEM Tablet UI]]. Dabei reicht der erste Schritt aus, da lediglich die FTUI-Dateien von FUIP benötigt werden.<br />
* Dann das FUIP-Repository zum FHEM Update hinzufügen: <br />
** <code>update add https://raw.githubusercontent.com/ThorstenPferdekaemper/FHEM-FUIP/master/controls_fuip.txt</code><br />
* Jetzt <code>update all fuip</code> und <code>shutdown restart</code>. FUIP sollte jetzt installiert sein.<br />
<br />
Zum Upgrade reicht ein <code>update</code>, wenn man FUIP wie oben beschrieben installiert hat. Will man nur den FUIP-Teil aktualisieren und nicht alles in FHEM, dann geht das mit <code>update all fuip</code>.<br />
<br />
Falls es insbesondere beim Upgrade oder nach einem Upgrade Probleme gibt (welcher Art auch immer), sollten die folgenden Punkte geprüft werden:<br />
* Wird das richtige Repository benutzt? Man kann das mit <code>update list</code> überprüfen. Wenn der Eintrag für fuip nicht genau so aussieht wie oben beschrieben, dann sollte er per <code>update delete</code> gelöscht werden und dann genau so eingetragen werden wie oben beschrieben. <br />
* FHEM braucht Schreibrechte im Verzeichnis <fhem>/FHEM/lib/FUIP/config (<fhem> steht meistens für /opt/fhem) und allen enthaltenen Dateien. Auf Betriebssystemebene (Linux) kann man das mit <code>ls -ls</code> überprüfen. Meistens kann es mit folgendem Befehl repariert werden: <code>chown -R fhem:dialout /opt/fhem/FHEM/lib/FUIP/config</code>. (Dieser Punkt gilt nicht bzw. nicht genau so, wenn man die configDB benutzt.)<br />
* Steht etwas verdächtiges im Logfile?<br />
<br />
== Erste Schritte ==<br />
Zuerst legt man ein "FUIP Device" an, also etwa <code>define ui FUIP</code>. Dieses Device meldet sich sozusagen als Webserver bei FHEM an (wie z.B. auch [[HTTPSRV]]), d.h. es erscheint im Menu oben links (über den Räumen) ein Link "ui". Beim Klick auf diesen Link generiert FUIP eine FTUI Übersichtsseite aus den Räumen im FHEM System. (Das kann ein bisschen dauern, wenn man viele Devices hat.) Nun kann man durch Verschieben und größer/kleiner-Ziehen der einzelnen Zellen bzw. durch Verschieben des Zelleninhalts die Gestaltung ändern. Außerdem kann man über das Zahnrad rechts oben in den Zellen neuen Inhalt hinzufügen, den bestehenden Inhalt ändern und vieles mehr.<br />
Durch Klicken auf die Räume im Menu der Übersichtsseite werden einzelne Raum-Seiten generiert. Diese kann man ebenfalls entsprechend bearbeiten. Natürlich können auch eigene Seiten hinzugefügt werden. Wie das geht sieht man im Video, welches oben verlinkt ist.<br />
<br />
Nachdem man die Seiten entsprechend bearbeitet hat sollte man ein <code>set ui save</code> machen. Ansonsten gehen die Änderungen beim nächsten FHEM-Neustart verloren. Ein normales <code>save config</code> reicht nicht aus und ist auch nicht notwendig.<br />
<br />
Die folgenden detaillierten Informationen können zum Teil veraltet sein, da FUIP noch weitereintwickelt wird. Es sollten allerdings keine Funktionen verschwinden.<br />
<br />
== Das Konfigurations-Popup ==<br />
=== ...für Zellen ===<br />
[[Datei:FUIP_KonfigZelle.png|mini|600px]]<br />
Beim Klick auf das Zahnrad rechts oben in einer Zelle wird der Konfigurations-Dialog für diese Zelle geöffnet. Im Folgenden werden die Funktionen der einzelnen Elemente erklärt.<br />
;Zur Seiten-Konfiguration: Damit kann man zum Konfig-Dialog für die ganze Seite wechseln. <br />
;Zellen-Überschrift: Hier wird die Überschrift der Zelle festgelegt. Eine Zelle muss keine Überschrift haben. (Die Zahlen hinter der Überschrift in der Zelle selbst verschwinden, wenn man das Attribut ''locked'' setzt.)<br />
;Neuer View: Hiermit fügt man einen neuen View, also neuen Inhalt, zu einer Zelle hinzu. Man wählt dann aus, welcher Art View angelegt werden soll und füllt die Details, wie z.B. das zugehörige Device. Der neue View wird an einer freien Stelle (falls möglich) in der Zelle eingefügt. Nach schließen des Konfig-Dialogs kann man den View dann per Drag&Drop geeignet positionieren.<br />
;Neuer View (Device): Dies dient ebenfalls dazu, neue Views in die Zelle zu packen. Allerdings wählt man nicht die Art des Views aus, sondern die FHEM-Devices, die dargestellt werden sollen. Das System sucht dann jeweils einen geeigneten View aus. Bisher funktioniert das nur sehr eingeschränkt, hat aber den Vorteil, dass man gleich mehrere Devices auswählen kann.<br />
;Abbrechen: Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Details zum View: Hier klappt man die Details zum View aus und kann diese ändern. Was man damit genau machen kann kommt auf die Art des View an. Per Drag&Drop kann man auch die Reihenfolge der Views im Konfig-Dialog ändern. Das hat allerdings keinen Effekt auf die Positonierung bereits existierender Views in der Zelle. <br />
;View löschen: Das löscht den View aus der Zelle. Wenn man den View eigentlich nicht löschen, sondern in einer anderen Zelle haben will, dann kann man ihn auch per Drag&Drop in die andere Zelle verschieben. Lässt man einen View in einer anderen Zelle "fallen", dann wird dieser automatisch der neuen Zelle zugeordnet.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Auto-Anordnen: Hiermit kann man die einzelnen Views in der Zelle automatisch anordnen. Es kann momentan sein, dass dadurch Änderungen verloren gehen. D.h. dieser Button sollte nur benutzt werden, wenn man seit dem Öffnen des Dialogs keine Änderungen gemacht hat. Außerdem schließt der Button dan Dialog. FUIP ordnet die Views in der Reihenfolge an, in der sie im Konfig-Popup erscheinen. Das zugrunde liegende Layout ist sehr einfach gehalten und kann sich auch noch ändern. Diese Funktion ist vor Allem brauchbar für mehrere gleichartige Views in derselben Zelle, wie z.B. bei Menus. <br />
;Neue Zelle: Legt eine neue (leere) Zelle auf der aktuellen Seite an. Der Konfig-Dialog wird dabei geschlossen und Änderungen gehen verloren.<br />
;Zelle kopieren: Kopiert die aktuelle Zelle. Man muss eine Seite angeben, zu der die kopierte Zelle gehören soll. Das entsprechende Feld ist mit der aktuellen Seite vorbelegt. Falls man dies nicht ändert, wird einfach eine Kopie der Zelle auf derselben Seite erzeugt. Ansonsten wird die Zelle auf die angegebene Seite kopiert. Die Funktion schließt den Konfig-Dialog und Änderungen gehen verloren. Falls man eine andere Seite angegeben hat, wird zu dieser gewechselt.<br />
;Zelle exportieren: Dies erlaubt die Definition der Zelle herunterzuladen und auf dem Client (also dem Rechner, auf dem der Browser läuft) zu speichern.<br />
;Zelle importieren: Damit lädt man eine exportierte Zelle wieder hoch. FUIP erzeugt dann auf der aktuellen Seite eine neue Zelle mit dem entsprechenden Inhalt. Das funktioniert auch mit Zellen, die von einer anderen FUIP-Seite, einem anderen FUIP-Device oder von einer anderen FHEM-Installation kommen.<br />
;Zelle löschen: Damit löscht man die aktuelle Zelle. Sie verschwindet dann von der aktuellen Seite.<br />
;Toggle editOnly: Bei manchen Views ist es schwierig, sie mit der Maus "anzufassen", da sie sofort eine Aktion auslösen (z.B. bei Links). Mit "Toggle editOnly" wird eine graue "Schicht" über die Views gelegt. Dadurch weiß man besser, wo man den View anfassen kann und Mausklicks haben keine Wirkung mehr, außer Drag&Drop.<br />
<br />
=== ...für Seiten ===<br />
[[Datei:FUIP_SeitenKonfig.png|mini|600px]]<br />
Drückt man im Konfig-Dialog für Zellen auf "Cell/Page" kommt man auf den Konfig-Dialog für ganze Seiten. Die Bedeutung der Einzelnen Elemente ist wie folgt.<br />
;Zur Zellen-Konfiguration:Das bringt einen zurück zum Konfig-Dialog für Zellen.<br />
;Seiten-Überschrift:Hier kann ein Titel für die Seite eingetragen werden. Das erscheint dann je nach Browser irgendwo oben. (Technisch ist es der Inhalt des <title> Tags in <head>.)<br />
;Abbrechen:Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Seite kopieren:Dadurch wird eine neue Seite angelegt, die so aussieht wie die aktuelle. Der Dialog wird dann geschlossen und automatisch zur neuen Seite gesprungen.<br />
;Seite exportieren:Das ist dasselbe wie für Zellen, nur für die ganze aktuelle Seite.<br />
;Seite importieren:Das ist im Prinzip auch wie für Zellen, nur dass eine neue Seite angelegt wird. Exportierte Zellen können nur als Zellen importiert werden und exportierte Seiten nur als Seiten.<br />
<br />
== Das FUIP-Device ==<br />
Wie in [[#Erste Schritte|Erste Schritte]] bereits beschrieben, muss man zur Verwendung von FUIP zuerst ein FUIP-Device anlegen. Alles, was man mit FUIP macht (bzw. was das System macht) passiert in Bezug auf ein FUIP-Device. Man kann auch jederzeit mehrere FUIP-Devices anlegen. Verschiedene Instanzen von FUIP stören sich nicht gegenseitig, man kann aber (z.B. in einem Menu) auf eine andere FUIP-Instanz verweisen (verlinken).<br />
<br />
Das FUIP-Device hat die folgenden Eigenschaften.<br />
=== Sets ===<br />
Die folgenden set-Kommandos sind für den Benutzer gedacht. Es gibt noch weitere set-Kommandos, welche aber vor Allem für FUIP-interne Zwecke gedacht sind. <br />
;save: Mit <code>set <name> save</code> wird der momentane Zustand der FUIP-Seiten zu diesem FUIP-Device gespeichert. Das betrifft nicht die Definition des FUIP-Device selbst (also auch nicht dessen Attribute). Diese müssen nach wie vor über <code>save</code> (also "Save config") gespeichert werden. Die FUIP-Seiten stehen in der Datei <fhem>/FHEM/lib/FUIP/config/FUIP_<name>.cfg. Dabei steht <fhem> in der Regel für /opt/fhem und <name> für den Namen des FUIP-Devices. Ohne ein <code>set <name> save</code> gehen alle Änderungen beim nächsten FHEM Restart verloren. <br />
;load: Mit <code>set <name> load</code> stellt man den Zustand wieder her, der mit <code>set <name> save</code> gespeichert wurde. Das ist vor Allem dann nützlich, wenn man sich beim Bearbeiten der Seiten vertan hat. Ansonsten wird beim FHEM Start das "load" automatisch ausgeführt. <br />
;pagedelete: Mit <code>set <name> pagedelete <page></code> wird die Seite <page> gelöscht. Das kann auch dazu genutzt werden, FUIP zum Neugenerieren einer Seite zu "zwingen", indem man die Seite nach dem Löschen einfach wieder aufruft. Auch das Löschen einer Seite geht ohne ein "save" verloren, d.h. die Seite ist dann nach einem FHEM Neustart wieder da. <br />
;refreshBuffer: FUIP verwendet Informationen aus dem "eigentlichen" FHEM, wie z.B. die Liste aller Devices sowie bestimmte Readings, Internals und Attribute. Insbesondere bei "entferntem" FUIP, also bei Verwendung des Attributs ''fhemwebUrl'', kann die Ermittlung dieser Daten länger dauern. Daher wird praktisch alles durch FUIP zwischengespeichert ("gepuffert"). Wenn man nun neue Devices anlegt bzw. bestehende Devices ändert, dann bekommt das FUIP-Device davon unter Umständen nichts mit. In so einem Fall kann man mit <code>set <name> refreshBuffer</code> den Zwischenspeicher löschen, um FUIP dazu zu zwingen, die Informationen erneut zu ermitteln.<br />
<br />
=== Gets ===<br />
Alle Get-Kommandos sind nur für FUIP-interne Zwecke bestimmt.<br />
<br />
=== Internals ===<br />
;editOnly: Hier wird der "editOnly-Modus" gespeichert, der auf der Konfig-Oberfläche ein- und ausgeschaltet werden kann. Siehe auch [[#Das Konfigurations-Popup|Das Konfigurations-Popup]].<br />
<br />
=== Readings ===<br />
FUIP-Devices haben keine Readings.<br />
<br />
=== Attribute ===<br />
;baseHeight: Basishöhe einer Zelle, d.h. eine 1x1-Zelle ist ''baseHeight'' Pixel hoch. Standardwert ist 108.<br />
;baseWidth: Basisbreite einer Zelle, d.h. eine 1x1-Zelle ist ''baseWidth'' Pixel breit. Standardwert ist 142. Diese Abmessungen beziehen sich nur auf die Zelle selbst, nicht auf den Zwischenraum zwischen zwei Zellen. Der Zwischenraum beträgt (horizontal und vertikal) 10 Pixel.<br />
;pageWidth: Seitenbreite in Pixel. Wenn ''pageWidth'' nicht gesetzt ist (das ist der Default), dann wird die Seitenbreite nicht festgelegt. Sie ergibt sich dann aus ''baseWidth'' (d.h. die Breite einer 1er-Zelle) und der Anzahl der verwendeten Spalten plus die Breite der Zwischenräume. D.h. in der Regel muss man ''pageWidth'' nicht angeben.<br />
;fhemwebUrl: Mit FUIP kann man sich auch an ein "entferntes" FHEM ankoppeln. Das Attribut ''fhemwebUrl'' hat dabei in etwa die Bedeutung wie ''fhemweb_url'' bei FTUI. (Siehe auch hier: [[FHEM Tablet UI#Verbindung zu FHEM|Verbindung zu FHEM (FTUI)]].)<br />
;locked:<br />
;styleColor:<br />
<br />
== Links ==<br />
* {{Link2Forum|Topic=85869|LinkText=Foren-Thread zur Geburt von FUIP}}<br />
<br />
[[Kategorie:FHEM Frontends]]</div>Thorsten Pferdekämperhttp://wiki.fhem.de/w/index.php?title=FHEM_User_Interface_Painter&diff=27388FHEM User Interface Painter2018-07-10T18:24:54Z<p>Thorsten Pferdekämper: /* Attribute */</p>
<hr />
<div>[[Datei:FUIP_Symbolbild.png|mini|400px|FUIP in Aktion]]<br />
Der '''FHEM User Interface Painter (FUIP)''' ist ein FHEM-Modul, mit dem man [[FHEM Tablet UI]] (FTUI) Seiten graphisch ("klickibunti") erstellen kann. D.h. man kann sich ein UI zusammenklicken, welches die Tablet UI Technik verwendet, aber ohne sich selbst unbedingt mit HTML und CSS herumschlagen zu müssen.<br />
Hier ist ein kurzes Video, welches FUIP in Aktion zeigt:<br />
<br />
[https://forum.fhem.de/index.php?action=dlattach;topic=85869.0;attach=98455 Einführungsvideo]<br />
<br />
(Das Video zeigt nicht unbedingt den neusten Stand, aber es dürfte klar werden, wofür FUIP gut sein soll.)<br />
<br />
== Installation und Upgrade in FHEM ==<br />
Genau wie FTUI ist auch FUIP nicht automatisch Teil von FHEM. Es muss explizit installiert bzw. hinzugefügt werden. Die Installation funktioniert folgendermaßen:<br />
* FUIP verwendet FTUI. D.h. man sollte zuerst einmal FTUI installieren, falls noch nicht passiert. Wie das geht steht bei [[FHEM Tablet UI#Installation|FHEM Tablet UI]]. Dabei reicht der erste Schritt aus, da lediglich die FTUI-Dateien von FUIP benötigt werden.<br />
* Dann das FUIP-Repository zum FHEM Update hinzufügen: <br />
** <code>update add https://raw.githubusercontent.com/ThorstenPferdekaemper/FHEM-FUIP/master/controls_fuip.txt</code><br />
* Jetzt <code>update all fuip</code> und <code>shutdown restart</code>. FUIP sollte jetzt installiert sein.<br />
<br />
Zum Upgrade reicht ein <code>update</code>, wenn man FUIP wie oben beschrieben installiert hat. Will man nur den FUIP-Teil aktualisieren und nicht alles in FHEM, dann geht das mit <code>update all fuip</code>.<br />
<br />
Falls es insbesondere beim Upgrade oder nach einem Upgrade Probleme gibt (welcher Art auch immer), sollten die folgenden Punkte geprüft werden:<br />
* Wird das richtige Repository benutzt? Man kann das mit <code>update list</code> überprüfen. Wenn der Eintrag für fuip nicht genau so aussieht wie oben beschrieben, dann sollte er per <code>update delete</code> gelöscht werden und dann genau so eingetragen werden wie oben beschrieben. <br />
* FHEM braucht Schreibrechte im Verzeichnis <fhem>/FHEM/lib/FUIP/config (<fhem> steht meistens für /opt/fhem) und allen enthaltenen Dateien. Auf Betriebssystemebene (Linux) kann man das mit <code>ls -ls</code> überprüfen. Meistens kann es mit folgendem Befehl repariert werden: <code>chown -R fhem:dialout /opt/fhem/FHEM/lib/FUIP/config</code>. (Dieser Punkt gilt nicht bzw. nicht genau so, wenn man die configDB benutzt.)<br />
* Steht etwas verdächtiges im Logfile?<br />
<br />
== Erste Schritte ==<br />
Zuerst legt man ein "FUIP Device" an, also etwa <code>define ui FUIP</code>. Dieses Device meldet sich sozusagen als Webserver bei FHEM an (wie z.B. auch [[HTTPSRV]]), d.h. es erscheint im Menu oben links (über den Räumen) ein Link "ui". Beim Klick auf diesen Link generiert FUIP eine FTUI Übersichtsseite aus den Räumen im FHEM System. (Das kann ein bisschen dauern, wenn man viele Devices hat.) Nun kann man durch Verschieben und größer/kleiner-Ziehen der einzelnen Zellen bzw. durch Verschieben des Zelleninhalts die Gestaltung ändern. Außerdem kann man über das Zahnrad rechts oben in den Zellen neuen Inhalt hinzufügen, den bestehenden Inhalt ändern und vieles mehr.<br />
Durch Klicken auf die Räume im Menu der Übersichtsseite werden einzelne Raum-Seiten generiert. Diese kann man ebenfalls entsprechend bearbeiten. Natürlich können auch eigene Seiten hinzugefügt werden. Wie das geht sieht man im Video, welches oben verlinkt ist.<br />
<br />
Nachdem man die Seiten entsprechend bearbeitet hat sollte man ein <code>set ui save</code> machen. Ansonsten gehen die Änderungen beim nächsten FHEM-Neustart verloren. Ein normales <code>save config</code> reicht nicht aus und ist auch nicht notwendig.<br />
<br />
Die folgenden detaillierten Informationen können zum Teil veraltet sein, da FUIP noch weitereintwickelt wird. Es sollten allerdings keine Funktionen verschwinden.<br />
<br />
== Das Konfigurations-Popup ==<br />
=== ...für Zellen ===<br />
[[Datei:FUIP_KonfigZelle.png|mini|600px]]<br />
Beim Klick auf das Zahnrad rechts oben in einer Zelle wird der Konfigurations-Dialog für diese Zelle geöffnet. Im Folgenden werden die Funktionen der einzelnen Elemente erklärt.<br />
;Zur Seiten-Konfiguration: Damit kann man zum Konfig-Dialog für die ganze Seite wechseln. <br />
;Zellen-Überschrift: Hier wird die Überschrift der Zelle festgelegt. Eine Zelle muss keine Überschrift haben. (Die Zahlen hinter der Überschrift in der Zelle selbst verschwinden, wenn man das Attribut ''locked'' setzt.)<br />
;Neuer View: Hiermit fügt man einen neuen View, also neuen Inhalt, zu einer Zelle hinzu. Man wählt dann aus, welcher Art View angelegt werden soll und füllt die Details, wie z.B. das zugehörige Device. Der neue View wird an einer freien Stelle (falls möglich) in der Zelle eingefügt. Nach schließen des Konfig-Dialogs kann man den View dann per Drag&Drop geeignet positionieren.<br />
;Neuer View (Device): Dies dient ebenfalls dazu, neue Views in die Zelle zu packen. Allerdings wählt man nicht die Art des Views aus, sondern die FHEM-Devices, die dargestellt werden sollen. Das System sucht dann jeweils einen geeigneten View aus. Bisher funktioniert das nur sehr eingeschränkt, hat aber den Vorteil, dass man gleich mehrere Devices auswählen kann.<br />
;Abbrechen: Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Details zum View: Hier klappt man die Details zum View aus und kann diese ändern. Was man damit genau machen kann kommt auf die Art des View an. Per Drag&Drop kann man auch die Reihenfolge der Views im Konfig-Dialog ändern. Das hat allerdings keinen Effekt auf die Positonierung bereits existierender Views in der Zelle. <br />
;View löschen: Das löscht den View aus der Zelle. Wenn man den View eigentlich nicht löschen, sondern in einer anderen Zelle haben will, dann kann man ihn auch per Drag&Drop in die andere Zelle verschieben. Lässt man einen View in einer anderen Zelle "fallen", dann wird dieser automatisch der neuen Zelle zugeordnet.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Auto-Anordnen: Hiermit kann man die einzelnen Views in der Zelle automatisch anordnen. Es kann momentan sein, dass dadurch Änderungen verloren gehen. D.h. dieser Button sollte nur benutzt werden, wenn man seit dem Öffnen des Dialogs keine Änderungen gemacht hat. Außerdem schließt der Button dan Dialog. FUIP ordnet die Views in der Reihenfolge an, in der sie im Konfig-Popup erscheinen. Das zugrunde liegende Layout ist sehr einfach gehalten und kann sich auch noch ändern. Diese Funktion ist vor Allem brauchbar für mehrere gleichartige Views in derselben Zelle, wie z.B. bei Menus. <br />
;Neue Zelle: Legt eine neue (leere) Zelle auf der aktuellen Seite an. Der Konfig-Dialog wird dabei geschlossen und Änderungen gehen verloren.<br />
;Zelle kopieren: Kopiert die aktuelle Zelle. Man muss eine Seite angeben, zu der die kopierte Zelle gehören soll. Das entsprechende Feld ist mit der aktuellen Seite vorbelegt. Falls man dies nicht ändert, wird einfach eine Kopie der Zelle auf derselben Seite erzeugt. Ansonsten wird die Zelle auf die angegebene Seite kopiert. Die Funktion schließt den Konfig-Dialog und Änderungen gehen verloren. Falls man eine andere Seite angegeben hat, wird zu dieser gewechselt.<br />
;Zelle exportieren: Dies erlaubt die Definition der Zelle herunterzuladen und auf dem Client (also dem Rechner, auf dem der Browser läuft) zu speichern.<br />
;Zelle importieren: Damit lädt man eine exportierte Zelle wieder hoch. FUIP erzeugt dann auf der aktuellen Seite eine neue Zelle mit dem entsprechenden Inhalt. Das funktioniert auch mit Zellen, die von einer anderen FUIP-Seite, einem anderen FUIP-Device oder von einer anderen FHEM-Installation kommen.<br />
;Zelle löschen: Damit löscht man die aktuelle Zelle. Sie verschwindet dann von der aktuellen Seite.<br />
;Toggle editOnly: Bei manchen Views ist es schwierig, sie mit der Maus "anzufassen", da sie sofort eine Aktion auslösen (z.B. bei Links). Mit "Toggle editOnly" wird eine graue "Schicht" über die Views gelegt. Dadurch weiß man besser, wo man den View anfassen kann und Mausklicks haben keine Wirkung mehr, außer Drag&Drop.<br />
<br />
=== ...für Seiten ===<br />
[[Datei:FUIP_SeitenKonfig.png|mini|600px]]<br />
Drückt man im Konfig-Dialog für Zellen auf "Cell/Page" kommt man auf den Konfig-Dialog für ganze Seiten. Die Bedeutung der Einzelnen Elemente ist wie folgt.<br />
;Zur Zellen-Konfiguration:Das bringt einen zurück zum Konfig-Dialog für Zellen.<br />
;Seiten-Überschrift:Hier kann ein Titel für die Seite eingetragen werden. Das erscheint dann je nach Browser irgendwo oben. (Technisch ist es der Inhalt des <title> Tags in <head>.)<br />
;Abbrechen:Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Seite kopieren:Dadurch wird eine neue Seite angelegt, die so aussieht wie die aktuelle. Der Dialog wird dann geschlossen und automatisch zur neuen Seite gesprungen.<br />
;Seite exportieren:Das ist dasselbe wie für Zellen, nur für die ganze aktuelle Seite.<br />
;Seite importieren:Das ist im Prinzip auch wie für Zellen, nur dass eine neue Seite angelegt wird. Exportierte Zellen können nur als Zellen importiert werden und exportierte Seiten nur als Seiten.<br />
<br />
== Das FUIP-Device ==<br />
Wie in [[#Erste Schritte|Erste Schritte]] bereits beschrieben, muss man zur Verwendung von FUIP zuerst ein FUIP-Device anlegen. Alles, was man mit FUIP macht (bzw. was das System macht) passiert in Bezug auf ein FUIP-Device. Man kann auch jederzeit mehrere FUIP-Devices anlegen. Verschiedene Instanzen von FUIP stören sich nicht gegenseitig, man kann aber (z.B. in einem Menu) auf eine andere FUIP-Instanz verweisen (verlinken).<br />
<br />
Das FUIP-Device hat die folgenden Eigenschaften.<br />
=== Sets ===<br />
Die folgenden set-Kommandos sind für den Benutzer gedacht. Es gibt noch weitere set-Kommandos, welche aber vor Allem für FUIP-interne Zwecke gedacht sind. <br />
;save: Mit <code>set <name> save</code> wird der momentane Zustand der FUIP-Seiten zu diesem FUIP-Device gespeichert. Das betrifft nicht die Definition des FUIP-Device selbst (also auch nicht dessen Attribute). Diese müssen nach wie vor über <code>save</code> (also "Save config") gespeichert werden. Die FUIP-Seiten stehen in der Datei <fhem>/FHEM/lib/FUIP/config/FUIP_<name>.cfg. Dabei steht <fhem> in der Regel für /opt/fhem und <name> für den Namen des FUIP-Devices. Ohne ein <code>set <name> save</code> gehen alle Änderungen beim nächsten FHEM Restart verloren. <br />
;load: Mit <code>set <name> load</code> stellt man den Zustand wieder her, der mit <code>set <name> save</code> gespeichert wurde. Das ist vor Allem dann nützlich, wenn man sich beim Bearbeiten der Seiten vertan hat. Ansonsten wird beim FHEM Start das "load" automatisch ausgeführt. <br />
;pagedelete: Mit <code>set <name> pagedelete <page></code> wird die Seite <page> gelöscht. Das kann auch dazu genutzt werden, FUIP zum Neugenerieren einer Seite zu "zwingen", indem man die Seite nach dem Löschen einfach wieder aufruft. Auch das Löschen einer Seite geht ohne ein "save" verloren, d.h. die Seite ist dann nach einem FHEM Neustart wieder da. <br />
;refreshBuffer: FUIP verwendet Informationen aus dem "eigentlichen" FHEM, wie z.B. die Liste aller Devices sowie bestimmte Readings, Internals und Attribute. Insbesondere bei "entferntem" FUIP, also bei Verwendung des Attributs ''fhemwebUrl'', kann die Ermittlung dieser Daten länger dauern. Daher wird praktisch alles durch FUIP zwischengespeichert ("gepuffert"). Wenn man nun neue Devices anlegt bzw. bestehende Devices ändert, dann bekommt das FUIP-Device davon unter Umständen nichts mit. In so einem Fall kann man mit <code>set <name> refreshBuffer</code> den Zwischenspeicher löschen, um FUIP dazu zu zwingen, die Informationen erneut zu ermitteln.<br />
<br />
=== Gets ===<br />
Alle Get-Kommandos sind nur für FUIP-interne Zwecke bestimmt.<br />
<br />
=== Internals ===<br />
;editOnly: Hier wird der "editOnly-Modus" gespeichert, der auf der Konfig-Oberfläche ein- und ausgeschaltet werden kann. Siehe auch [[#Das Konfigurations-Popup|Das Konfigurations-Popup]].<br />
<br />
=== Readings ===<br />
FUIP-Devices haben keine Readings.<br />
<br />
=== Attribute ===<br />
;baseHeight: Basishöhe einer Zelle, d.h. eine 1x1-Zelle ist ''baseHeight'' Pixel hoch. Standardwert ist 108.<br />
;baseWidth: Basisbreite einer Zelle, d.h. eine 1x1-Zelle ist ''baseWidth'' Pixel breit. Standardwert ist 142. Diese Abmessungen beziehen sich nur auf die Zelle selbst, nicht auf den Zwischenraum zwischen zwei Zellen. Der Zwischenraum beträgt (horizontal und vertikal) 10 Pixel.<br />
;pageWidth: Seitenbreite in Pixel. Wenn ''pageWidth'' nicht gesetzt ist (das ist der Default), dann wird die Seitenbreite nicht festgelegt. Sie ergibt sich dann aus ''baseWidth'' (d.h. die Breite einer 1er-Zelle) und der Anzahl der verwendeten Spalten plus die Breite der Zwischenräume. D.h. in der Regel muss man ''pageWidth'' nicht angeben.<br />
;fhemwebUrl: Mit FUIP kann man sich auch an ein "entferntes" FHEM ankoppeln. Das Attribut ''fhemwebUrl'' hat dabei in etwa die Bedeutung wie ''fhemweb_url'' bei FTUI. (Siehe auch hier: [[FHEM Tablet UI#Verbindung zu FHEM]].)<br />
;locked:<br />
;styleColor:<br />
<br />
== Links ==<br />
* {{Link2Forum|Topic=85869|LinkText=Foren-Thread zur Geburt von FUIP}}<br />
<br />
[[Kategorie:FHEM Frontends]]</div>Thorsten Pferdekämperhttp://wiki.fhem.de/w/index.php?title=FHEM_User_Interface_Painter&diff=27386FHEM User Interface Painter2018-07-10T13:42:42Z<p>Thorsten Pferdekämper: /* Attribute */</p>
<hr />
<div>[[Datei:FUIP_Symbolbild.png|mini|400px|FUIP in Aktion]]<br />
Der '''FHEM User Interface Painter (FUIP)''' ist ein FHEM-Modul, mit dem man [[FHEM Tablet UI]] (FTUI) Seiten graphisch ("klickibunti") erstellen kann. D.h. man kann sich ein UI zusammenklicken, welches die Tablet UI Technik verwendet, aber ohne sich selbst unbedingt mit HTML und CSS herumschlagen zu müssen.<br />
Hier ist ein kurzes Video, welches FUIP in Aktion zeigt:<br />
<br />
[https://forum.fhem.de/index.php?action=dlattach;topic=85869.0;attach=98455 Einführungsvideo]<br />
<br />
(Das Video zeigt nicht unbedingt den neusten Stand, aber es dürfte klar werden, wofür FUIP gut sein soll.)<br />
<br />
== Installation und Upgrade in FHEM ==<br />
Genau wie FTUI ist auch FUIP nicht automatisch Teil von FHEM. Es muss explizit installiert bzw. hinzugefügt werden. Die Installation funktioniert folgendermaßen:<br />
* FUIP verwendet FTUI. D.h. man sollte zuerst einmal FTUI installieren, falls noch nicht passiert. Wie das geht steht bei [[FHEM Tablet UI#Installation|FHEM Tablet UI]]. Dabei reicht der erste Schritt aus, da lediglich die FTUI-Dateien von FUIP benötigt werden.<br />
* Dann das FUIP-Repository zum FHEM Update hinzufügen: <br />
** <code>update add https://raw.githubusercontent.com/ThorstenPferdekaemper/FHEM-FUIP/master/controls_fuip.txt</code><br />
* Jetzt <code>update all fuip</code> und <code>shutdown restart</code>. FUIP sollte jetzt installiert sein.<br />
<br />
Zum Upgrade reicht ein <code>update</code>, wenn man FUIP wie oben beschrieben installiert hat. Will man nur den FUIP-Teil aktualisieren und nicht alles in FHEM, dann geht das mit <code>update all fuip</code>.<br />
<br />
Falls es insbesondere beim Upgrade oder nach einem Upgrade Probleme gibt (welcher Art auch immer), sollten die folgenden Punkte geprüft werden:<br />
* Wird das richtige Repository benutzt? Man kann das mit <code>update list</code> überprüfen. Wenn der Eintrag für fuip nicht genau so aussieht wie oben beschrieben, dann sollte er per <code>update delete</code> gelöscht werden und dann genau so eingetragen werden wie oben beschrieben. <br />
* FHEM braucht Schreibrechte im Verzeichnis <fhem>/FHEM/lib/FUIP/config (<fhem> steht meistens für /opt/fhem) und allen enthaltenen Dateien. Auf Betriebssystemebene (Linux) kann man das mit <code>ls -ls</code> überprüfen. Meistens kann es mit folgendem Befehl repariert werden: <code>chown -R fhem:dialout /opt/fhem/FHEM/lib/FUIP/config</code>. (Dieser Punkt gilt nicht bzw. nicht genau so, wenn man die configDB benutzt.)<br />
* Steht etwas verdächtiges im Logfile?<br />
<br />
== Erste Schritte ==<br />
Zuerst legt man ein "FUIP Device" an, also etwa <code>define ui FUIP</code>. Dieses Device meldet sich sozusagen als Webserver bei FHEM an (wie z.B. auch [[HTTPSRV]]), d.h. es erscheint im Menu oben links (über den Räumen) ein Link "ui". Beim Klick auf diesen Link generiert FUIP eine FTUI Übersichtsseite aus den Räumen im FHEM System. (Das kann ein bisschen dauern, wenn man viele Devices hat.) Nun kann man durch Verschieben und größer/kleiner-Ziehen der einzelnen Zellen bzw. durch Verschieben des Zelleninhalts die Gestaltung ändern. Außerdem kann man über das Zahnrad rechts oben in den Zellen neuen Inhalt hinzufügen, den bestehenden Inhalt ändern und vieles mehr.<br />
Durch Klicken auf die Räume im Menu der Übersichtsseite werden einzelne Raum-Seiten generiert. Diese kann man ebenfalls entsprechend bearbeiten. Natürlich können auch eigene Seiten hinzugefügt werden. Wie das geht sieht man im Video, welches oben verlinkt ist.<br />
<br />
Nachdem man die Seiten entsprechend bearbeitet hat sollte man ein <code>set ui save</code> machen. Ansonsten gehen die Änderungen beim nächsten FHEM-Neustart verloren. Ein normales <code>save config</code> reicht nicht aus und ist auch nicht notwendig.<br />
<br />
Die folgenden detaillierten Informationen können zum Teil veraltet sein, da FUIP noch weitereintwickelt wird. Es sollten allerdings keine Funktionen verschwinden.<br />
<br />
== Das Konfigurations-Popup ==<br />
=== ...für Zellen ===<br />
[[Datei:FUIP_KonfigZelle.png|mini|600px]]<br />
Beim Klick auf das Zahnrad rechts oben in einer Zelle wird der Konfigurations-Dialog für diese Zelle geöffnet. Im Folgenden werden die Funktionen der einzelnen Elemente erklärt.<br />
;Zur Seiten-Konfiguration: Damit kann man zum Konfig-Dialog für die ganze Seite wechseln. <br />
;Zellen-Überschrift: Hier wird die Überschrift der Zelle festgelegt. Eine Zelle muss keine Überschrift haben. (Die Zahlen hinter der Überschrift in der Zelle selbst verschwinden, wenn man das Attribut ''locked'' setzt.)<br />
;Neuer View: Hiermit fügt man einen neuen View, also neuen Inhalt, zu einer Zelle hinzu. Man wählt dann aus, welcher Art View angelegt werden soll und füllt die Details, wie z.B. das zugehörige Device. Der neue View wird an einer freien Stelle (falls möglich) in der Zelle eingefügt. Nach schließen des Konfig-Dialogs kann man den View dann per Drag&Drop geeignet positionieren.<br />
;Neuer View (Device): Dies dient ebenfalls dazu, neue Views in die Zelle zu packen. Allerdings wählt man nicht die Art des Views aus, sondern die FHEM-Devices, die dargestellt werden sollen. Das System sucht dann jeweils einen geeigneten View aus. Bisher funktioniert das nur sehr eingeschränkt, hat aber den Vorteil, dass man gleich mehrere Devices auswählen kann.<br />
;Abbrechen: Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Details zum View: Hier klappt man die Details zum View aus und kann diese ändern. Was man damit genau machen kann kommt auf die Art des View an. Per Drag&Drop kann man auch die Reihenfolge der Views im Konfig-Dialog ändern. Das hat allerdings keinen Effekt auf die Positonierung bereits existierender Views in der Zelle. <br />
;View löschen: Das löscht den View aus der Zelle. Wenn man den View eigentlich nicht löschen, sondern in einer anderen Zelle haben will, dann kann man ihn auch per Drag&Drop in die andere Zelle verschieben. Lässt man einen View in einer anderen Zelle "fallen", dann wird dieser automatisch der neuen Zelle zugeordnet.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Auto-Anordnen: Hiermit kann man die einzelnen Views in der Zelle automatisch anordnen. Es kann momentan sein, dass dadurch Änderungen verloren gehen. D.h. dieser Button sollte nur benutzt werden, wenn man seit dem Öffnen des Dialogs keine Änderungen gemacht hat. Außerdem schließt der Button dan Dialog. FUIP ordnet die Views in der Reihenfolge an, in der sie im Konfig-Popup erscheinen. Das zugrunde liegende Layout ist sehr einfach gehalten und kann sich auch noch ändern. Diese Funktion ist vor Allem brauchbar für mehrere gleichartige Views in derselben Zelle, wie z.B. bei Menus. <br />
;Neue Zelle: Legt eine neue (leere) Zelle auf der aktuellen Seite an. Der Konfig-Dialog wird dabei geschlossen und Änderungen gehen verloren.<br />
;Zelle kopieren: Kopiert die aktuelle Zelle. Man muss eine Seite angeben, zu der die kopierte Zelle gehören soll. Das entsprechende Feld ist mit der aktuellen Seite vorbelegt. Falls man dies nicht ändert, wird einfach eine Kopie der Zelle auf derselben Seite erzeugt. Ansonsten wird die Zelle auf die angegebene Seite kopiert. Die Funktion schließt den Konfig-Dialog und Änderungen gehen verloren. Falls man eine andere Seite angegeben hat, wird zu dieser gewechselt.<br />
;Zelle exportieren: Dies erlaubt die Definition der Zelle herunterzuladen und auf dem Client (also dem Rechner, auf dem der Browser läuft) zu speichern.<br />
;Zelle importieren: Damit lädt man eine exportierte Zelle wieder hoch. FUIP erzeugt dann auf der aktuellen Seite eine neue Zelle mit dem entsprechenden Inhalt. Das funktioniert auch mit Zellen, die von einer anderen FUIP-Seite, einem anderen FUIP-Device oder von einer anderen FHEM-Installation kommen.<br />
;Zelle löschen: Damit löscht man die aktuelle Zelle. Sie verschwindet dann von der aktuellen Seite.<br />
;Toggle editOnly: Bei manchen Views ist es schwierig, sie mit der Maus "anzufassen", da sie sofort eine Aktion auslösen (z.B. bei Links). Mit "Toggle editOnly" wird eine graue "Schicht" über die Views gelegt. Dadurch weiß man besser, wo man den View anfassen kann und Mausklicks haben keine Wirkung mehr, außer Drag&Drop.<br />
<br />
=== ...für Seiten ===<br />
[[Datei:FUIP_SeitenKonfig.png|mini|600px]]<br />
Drückt man im Konfig-Dialog für Zellen auf "Cell/Page" kommt man auf den Konfig-Dialog für ganze Seiten. Die Bedeutung der Einzelnen Elemente ist wie folgt.<br />
;Zur Zellen-Konfiguration:Das bringt einen zurück zum Konfig-Dialog für Zellen.<br />
;Seiten-Überschrift:Hier kann ein Titel für die Seite eingetragen werden. Das erscheint dann je nach Browser irgendwo oben. (Technisch ist es der Inhalt des <title> Tags in <head>.)<br />
;Abbrechen:Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Seite kopieren:Dadurch wird eine neue Seite angelegt, die so aussieht wie die aktuelle. Der Dialog wird dann geschlossen und automatisch zur neuen Seite gesprungen.<br />
;Seite exportieren:Das ist dasselbe wie für Zellen, nur für die ganze aktuelle Seite.<br />
;Seite importieren:Das ist im Prinzip auch wie für Zellen, nur dass eine neue Seite angelegt wird. Exportierte Zellen können nur als Zellen importiert werden und exportierte Seiten nur als Seiten.<br />
<br />
== Das FUIP-Device ==<br />
Wie in [[#Erste Schritte|Erste Schritte]] bereits beschrieben, muss man zur Verwendung von FUIP zuerst ein FUIP-Device anlegen. Alles, was man mit FUIP macht (bzw. was das System macht) passiert in Bezug auf ein FUIP-Device. Man kann auch jederzeit mehrere FUIP-Devices anlegen. Verschiedene Instanzen von FUIP stören sich nicht gegenseitig, man kann aber (z.B. in einem Menu) auf eine andere FUIP-Instanz verweisen (verlinken).<br />
<br />
Das FUIP-Device hat die folgenden Eigenschaften.<br />
=== Sets ===<br />
Die folgenden set-Kommandos sind für den Benutzer gedacht. Es gibt noch weitere set-Kommandos, welche aber vor Allem für FUIP-interne Zwecke gedacht sind. <br />
;save: Mit <code>set <name> save</code> wird der momentane Zustand der FUIP-Seiten zu diesem FUIP-Device gespeichert. Das betrifft nicht die Definition des FUIP-Device selbst (also auch nicht dessen Attribute). Diese müssen nach wie vor über <code>save</code> (also "Save config") gespeichert werden. Die FUIP-Seiten stehen in der Datei <fhem>/FHEM/lib/FUIP/config/FUIP_<name>.cfg. Dabei steht <fhem> in der Regel für /opt/fhem und <name> für den Namen des FUIP-Devices. Ohne ein <code>set <name> save</code> gehen alle Änderungen beim nächsten FHEM Restart verloren. <br />
;load: Mit <code>set <name> load</code> stellt man den Zustand wieder her, der mit <code>set <name> save</code> gespeichert wurde. Das ist vor Allem dann nützlich, wenn man sich beim Bearbeiten der Seiten vertan hat. Ansonsten wird beim FHEM Start das "load" automatisch ausgeführt. <br />
;pagedelete: Mit <code>set <name> pagedelete <page></code> wird die Seite <page> gelöscht. Das kann auch dazu genutzt werden, FUIP zum Neugenerieren einer Seite zu "zwingen", indem man die Seite nach dem Löschen einfach wieder aufruft. Auch das Löschen einer Seite geht ohne ein "save" verloren, d.h. die Seite ist dann nach einem FHEM Neustart wieder da. <br />
;refreshBuffer: FUIP verwendet Informationen aus dem "eigentlichen" FHEM, wie z.B. die Liste aller Devices sowie bestimmte Readings, Internals und Attribute. Insbesondere bei "entferntem" FUIP, also bei Verwendung des Attributs ''fhemwebUrl'', kann die Ermittlung dieser Daten länger dauern. Daher wird praktisch alles durch FUIP zwischengespeichert ("gepuffert"). Wenn man nun neue Devices anlegt bzw. bestehende Devices ändert, dann bekommt das FUIP-Device davon unter Umständen nichts mit. In so einem Fall kann man mit <code>set <name> refreshBuffer</code> den Zwischenspeicher löschen, um FUIP dazu zu zwingen, die Informationen erneut zu ermitteln.<br />
<br />
=== Gets ===<br />
Alle Get-Kommandos sind nur für FUIP-interne Zwecke bestimmt.<br />
<br />
=== Internals ===<br />
;editOnly: Hier wird der "editOnly-Modus" gespeichert, der auf der Konfig-Oberfläche ein- und ausgeschaltet werden kann. Siehe auch [[#Das Konfigurations-Popup|Das Konfigurations-Popup]].<br />
<br />
=== Readings ===<br />
FUIP-Devices haben keine Readings.<br />
<br />
=== Attribute ===<br />
;baseHeight: Basishöhe einer Zelle, d.h. eine 1x1-Zelle ist ''baseHeight'' Pixel hoch. Standardwert ist 108.<br />
;baseWidth: Basisbreite einer Zelle, d.h. eine 1x1-Zelle ist ''baseWidth'' Pixel breit. Standardwert ist 142. Diese Abmessungen beziehen sich nur auf die Zelle selbst, nicht auf den Zwischenraum zwischen zwei Zellen. Der Zwischenraum beträgt (horizontal und vertikal) 10 Pixel.<br />
;pageWidth: Seitenbreite in Pixel. Wenn ''pageWidth'' nicht gesetzt ist (das ist der Default), dann wird die Seitenbreite nicht festgelegt. Sie ergibt sich dann aus ''baseWidth'' (d.h. die Breite einer 1er-Zelle) und der Anzahl der verwendeten Spalten plus die Breite der Zwischenräume. D.h. in der Regel muss man ''pageWidth'' nicht angeben.<br />
;fhemwebUrl:<br />
;locked:<br />
;styleColor:<br />
<br />
== Links ==<br />
* {{Link2Forum|Topic=85869|LinkText=Foren-Thread zur Geburt von FUIP}}<br />
<br />
[[Kategorie:FHEM Frontends]]</div>Thorsten Pferdekämperhttp://wiki.fhem.de/w/index.php?title=FHEM_User_Interface_Painter&diff=27383FHEM User Interface Painter2018-07-10T13:30:33Z<p>Thorsten Pferdekämper: /* Readings */</p>
<hr />
<div>[[Datei:FUIP_Symbolbild.png|mini|400px|FUIP in Aktion]]<br />
Der '''FHEM User Interface Painter (FUIP)''' ist ein FHEM-Modul, mit dem man [[FHEM Tablet UI]] (FTUI) Seiten graphisch ("klickibunti") erstellen kann. D.h. man kann sich ein UI zusammenklicken, welches die Tablet UI Technik verwendet, aber ohne sich selbst unbedingt mit HTML und CSS herumschlagen zu müssen.<br />
Hier ist ein kurzes Video, welches FUIP in Aktion zeigt:<br />
<br />
[https://forum.fhem.de/index.php?action=dlattach;topic=85869.0;attach=98455 Einführungsvideo]<br />
<br />
(Das Video zeigt nicht unbedingt den neusten Stand, aber es dürfte klar werden, wofür FUIP gut sein soll.)<br />
<br />
== Installation und Upgrade in FHEM ==<br />
Genau wie FTUI ist auch FUIP nicht automatisch Teil von FHEM. Es muss explizit installiert bzw. hinzugefügt werden. Die Installation funktioniert folgendermaßen:<br />
* FUIP verwendet FTUI. D.h. man sollte zuerst einmal FTUI installieren, falls noch nicht passiert. Wie das geht steht bei [[FHEM Tablet UI#Installation|FHEM Tablet UI]]. Dabei reicht der erste Schritt aus, da lediglich die FTUI-Dateien von FUIP benötigt werden.<br />
* Dann das FUIP-Repository zum FHEM Update hinzufügen: <br />
** <code>update add https://raw.githubusercontent.com/ThorstenPferdekaemper/FHEM-FUIP/master/controls_fuip.txt</code><br />
* Jetzt <code>update all fuip</code> und <code>shutdown restart</code>. FUIP sollte jetzt installiert sein.<br />
<br />
Zum Upgrade reicht ein <code>update</code>, wenn man FUIP wie oben beschrieben installiert hat. Will man nur den FUIP-Teil aktualisieren und nicht alles in FHEM, dann geht das mit <code>update all fuip</code>.<br />
<br />
Falls es insbesondere beim Upgrade oder nach einem Upgrade Probleme gibt (welcher Art auch immer), sollten die folgenden Punkte geprüft werden:<br />
* Wird das richtige Repository benutzt? Man kann das mit <code>update list</code> überprüfen. Wenn der Eintrag für fuip nicht genau so aussieht wie oben beschrieben, dann sollte er per <code>update delete</code> gelöscht werden und dann genau so eingetragen werden wie oben beschrieben. <br />
* FHEM braucht Schreibrechte im Verzeichnis <fhem>/FHEM/lib/FUIP/config (<fhem> steht meistens für /opt/fhem) und allen enthaltenen Dateien. Auf Betriebssystemebene (Linux) kann man das mit <code>ls -ls</code> überprüfen. Meistens kann es mit folgendem Befehl repariert werden: <code>chown -R fhem:dialout /opt/fhem/FHEM/lib/FUIP/config</code>. (Dieser Punkt gilt nicht bzw. nicht genau so, wenn man die configDB benutzt.)<br />
* Steht etwas verdächtiges im Logfile?<br />
<br />
== Erste Schritte ==<br />
Zuerst legt man ein "FUIP Device" an, also etwa <code>define ui FUIP</code>. Dieses Device meldet sich sozusagen als Webserver bei FHEM an (wie z.B. auch [[HTTPSRV]]), d.h. es erscheint im Menu oben links (über den Räumen) ein Link "ui". Beim Klick auf diesen Link generiert FUIP eine FTUI Übersichtsseite aus den Räumen im FHEM System. (Das kann ein bisschen dauern, wenn man viele Devices hat.) Nun kann man durch Verschieben und größer/kleiner-Ziehen der einzelnen Zellen bzw. durch Verschieben des Zelleninhalts die Gestaltung ändern. Außerdem kann man über das Zahnrad rechts oben in den Zellen neuen Inhalt hinzufügen, den bestehenden Inhalt ändern und vieles mehr.<br />
Durch Klicken auf die Räume im Menu der Übersichtsseite werden einzelne Raum-Seiten generiert. Diese kann man ebenfalls entsprechend bearbeiten. Natürlich können auch eigene Seiten hinzugefügt werden. Wie das geht sieht man im Video, welches oben verlinkt ist.<br />
<br />
Nachdem man die Seiten entsprechend bearbeitet hat sollte man ein <code>set ui save</code> machen. Ansonsten gehen die Änderungen beim nächsten FHEM-Neustart verloren. Ein normales <code>save config</code> reicht nicht aus und ist auch nicht notwendig.<br />
<br />
Die folgenden detaillierten Informationen können zum Teil veraltet sein, da FUIP noch weitereintwickelt wird. Es sollten allerdings keine Funktionen verschwinden.<br />
<br />
== Das Konfigurations-Popup ==<br />
=== ...für Zellen ===<br />
[[Datei:FUIP_KonfigZelle.png|mini|600px]]<br />
Beim Klick auf das Zahnrad rechts oben in einer Zelle wird der Konfigurations-Dialog für diese Zelle geöffnet. Im Folgenden werden die Funktionen der einzelnen Elemente erklärt.<br />
;Zur Seiten-Konfiguration: Damit kann man zum Konfig-Dialog für die ganze Seite wechseln. <br />
;Zellen-Überschrift: Hier wird die Überschrift der Zelle festgelegt. Eine Zelle muss keine Überschrift haben. (Die Zahlen hinter der Überschrift in der Zelle selbst verschwinden, wenn man das Attribut ''locked'' setzt.)<br />
;Neuer View: Hiermit fügt man einen neuen View, also neuen Inhalt, zu einer Zelle hinzu. Man wählt dann aus, welcher Art View angelegt werden soll und füllt die Details, wie z.B. das zugehörige Device. Der neue View wird an einer freien Stelle (falls möglich) in der Zelle eingefügt. Nach schließen des Konfig-Dialogs kann man den View dann per Drag&Drop geeignet positionieren.<br />
;Neuer View (Device): Dies dient ebenfalls dazu, neue Views in die Zelle zu packen. Allerdings wählt man nicht die Art des Views aus, sondern die FHEM-Devices, die dargestellt werden sollen. Das System sucht dann jeweils einen geeigneten View aus. Bisher funktioniert das nur sehr eingeschränkt, hat aber den Vorteil, dass man gleich mehrere Devices auswählen kann.<br />
;Abbrechen: Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Details zum View: Hier klappt man die Details zum View aus und kann diese ändern. Was man damit genau machen kann kommt auf die Art des View an. Per Drag&Drop kann man auch die Reihenfolge der Views im Konfig-Dialog ändern. Das hat allerdings keinen Effekt auf die Positonierung bereits existierender Views in der Zelle. <br />
;View löschen: Das löscht den View aus der Zelle. Wenn man den View eigentlich nicht löschen, sondern in einer anderen Zelle haben will, dann kann man ihn auch per Drag&Drop in die andere Zelle verschieben. Lässt man einen View in einer anderen Zelle "fallen", dann wird dieser automatisch der neuen Zelle zugeordnet.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Auto-Anordnen: Hiermit kann man die einzelnen Views in der Zelle automatisch anordnen. Es kann momentan sein, dass dadurch Änderungen verloren gehen. D.h. dieser Button sollte nur benutzt werden, wenn man seit dem Öffnen des Dialogs keine Änderungen gemacht hat. Außerdem schließt der Button dan Dialog. FUIP ordnet die Views in der Reihenfolge an, in der sie im Konfig-Popup erscheinen. Das zugrunde liegende Layout ist sehr einfach gehalten und kann sich auch noch ändern. Diese Funktion ist vor Allem brauchbar für mehrere gleichartige Views in derselben Zelle, wie z.B. bei Menus. <br />
;Neue Zelle: Legt eine neue (leere) Zelle auf der aktuellen Seite an. Der Konfig-Dialog wird dabei geschlossen und Änderungen gehen verloren.<br />
;Zelle kopieren: Kopiert die aktuelle Zelle. Man muss eine Seite angeben, zu der die kopierte Zelle gehören soll. Das entsprechende Feld ist mit der aktuellen Seite vorbelegt. Falls man dies nicht ändert, wird einfach eine Kopie der Zelle auf derselben Seite erzeugt. Ansonsten wird die Zelle auf die angegebene Seite kopiert. Die Funktion schließt den Konfig-Dialog und Änderungen gehen verloren. Falls man eine andere Seite angegeben hat, wird zu dieser gewechselt.<br />
;Zelle exportieren: Dies erlaubt die Definition der Zelle herunterzuladen und auf dem Client (also dem Rechner, auf dem der Browser läuft) zu speichern.<br />
;Zelle importieren: Damit lädt man eine exportierte Zelle wieder hoch. FUIP erzeugt dann auf der aktuellen Seite eine neue Zelle mit dem entsprechenden Inhalt. Das funktioniert auch mit Zellen, die von einer anderen FUIP-Seite, einem anderen FUIP-Device oder von einer anderen FHEM-Installation kommen.<br />
;Zelle löschen: Damit löscht man die aktuelle Zelle. Sie verschwindet dann von der aktuellen Seite.<br />
;Toggle editOnly: Bei manchen Views ist es schwierig, sie mit der Maus "anzufassen", da sie sofort eine Aktion auslösen (z.B. bei Links). Mit "Toggle editOnly" wird eine graue "Schicht" über die Views gelegt. Dadurch weiß man besser, wo man den View anfassen kann und Mausklicks haben keine Wirkung mehr, außer Drag&Drop.<br />
<br />
=== ...für Seiten ===<br />
[[Datei:FUIP_SeitenKonfig.png|mini|600px]]<br />
Drückt man im Konfig-Dialog für Zellen auf "Cell/Page" kommt man auf den Konfig-Dialog für ganze Seiten. Die Bedeutung der Einzelnen Elemente ist wie folgt.<br />
;Zur Zellen-Konfiguration:Das bringt einen zurück zum Konfig-Dialog für Zellen.<br />
;Seiten-Überschrift:Hier kann ein Titel für die Seite eingetragen werden. Das erscheint dann je nach Browser irgendwo oben. (Technisch ist es der Inhalt des <title> Tags in <head>.)<br />
;Abbrechen:Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Seite kopieren:Dadurch wird eine neue Seite angelegt, die so aussieht wie die aktuelle. Der Dialog wird dann geschlossen und automatisch zur neuen Seite gesprungen.<br />
;Seite exportieren:Das ist dasselbe wie für Zellen, nur für die ganze aktuelle Seite.<br />
;Seite importieren:Das ist im Prinzip auch wie für Zellen, nur dass eine neue Seite angelegt wird. Exportierte Zellen können nur als Zellen importiert werden und exportierte Seiten nur als Seiten.<br />
<br />
== Das FUIP-Device ==<br />
Wie in [[#Erste Schritte|Erste Schritte]] bereits beschrieben, muss man zur Verwendung von FUIP zuerst ein FUIP-Device anlegen. Alles, was man mit FUIP macht (bzw. was das System macht) passiert in Bezug auf ein FUIP-Device. Man kann auch jederzeit mehrere FUIP-Devices anlegen. Verschiedene Instanzen von FUIP stören sich nicht gegenseitig, man kann aber (z.B. in einem Menu) auf eine andere FUIP-Instanz verweisen (verlinken).<br />
<br />
Das FUIP-Device hat die folgenden Eigenschaften.<br />
=== Sets ===<br />
Die folgenden set-Kommandos sind für den Benutzer gedacht. Es gibt noch weitere set-Kommandos, welche aber vor Allem für FUIP-interne Zwecke gedacht sind. <br />
;save: Mit <code>set <name> save</code> wird der momentane Zustand der FUIP-Seiten zu diesem FUIP-Device gespeichert. Das betrifft nicht die Definition des FUIP-Device selbst (also auch nicht dessen Attribute). Diese müssen nach wie vor über <code>save</code> (also "Save config") gespeichert werden. Die FUIP-Seiten stehen in der Datei <fhem>/FHEM/lib/FUIP/config/FUIP_<name>.cfg. Dabei steht <fhem> in der Regel für /opt/fhem und <name> für den Namen des FUIP-Devices. Ohne ein <code>set <name> save</code> gehen alle Änderungen beim nächsten FHEM Restart verloren. <br />
;load: Mit <code>set <name> load</code> stellt man den Zustand wieder her, der mit <code>set <name> save</code> gespeichert wurde. Das ist vor Allem dann nützlich, wenn man sich beim Bearbeiten der Seiten vertan hat. Ansonsten wird beim FHEM Start das "load" automatisch ausgeführt. <br />
;pagedelete: Mit <code>set <name> pagedelete <page></code> wird die Seite <page> gelöscht. Das kann auch dazu genutzt werden, FUIP zum Neugenerieren einer Seite zu "zwingen", indem man die Seite nach dem Löschen einfach wieder aufruft. Auch das Löschen einer Seite geht ohne ein "save" verloren, d.h. die Seite ist dann nach einem FHEM Neustart wieder da. <br />
;refreshBuffer: FUIP verwendet Informationen aus dem "eigentlichen" FHEM, wie z.B. die Liste aller Devices sowie bestimmte Readings, Internals und Attribute. Insbesondere bei "entferntem" FUIP, also bei Verwendung des Attributs ''fhemwebUrl'', kann die Ermittlung dieser Daten länger dauern. Daher wird praktisch alles durch FUIP zwischengespeichert ("gepuffert"). Wenn man nun neue Devices anlegt bzw. bestehende Devices ändert, dann bekommt das FUIP-Device davon unter Umständen nichts mit. In so einem Fall kann man mit <code>set <name> refreshBuffer</code> den Zwischenspeicher löschen, um FUIP dazu zu zwingen, die Informationen erneut zu ermitteln.<br />
<br />
=== Gets ===<br />
Alle Get-Kommandos sind nur für FUIP-interne Zwecke bestimmt.<br />
<br />
=== Internals ===<br />
;editOnly: Hier wird der "editOnly-Modus" gespeichert, der auf der Konfig-Oberfläche ein- und ausgeschaltet werden kann. Siehe auch [[#Das Konfigurations-Popup|Das Konfigurations-Popup]].<br />
<br />
=== Readings ===<br />
FUIP-Devices haben keine Readings.<br />
<br />
=== Attribute ===<br />
<br />
== Links ==<br />
* {{Link2Forum|Topic=85869|LinkText=Foren-Thread zur Geburt von FUIP}}<br />
<br />
[[Kategorie:FHEM Frontends]]</div>Thorsten Pferdekämperhttp://wiki.fhem.de/w/index.php?title=FHEM_User_Interface_Painter&diff=27382FHEM User Interface Painter2018-07-10T13:30:10Z<p>Thorsten Pferdekämper: /* Internals */</p>
<hr />
<div>[[Datei:FUIP_Symbolbild.png|mini|400px|FUIP in Aktion]]<br />
Der '''FHEM User Interface Painter (FUIP)''' ist ein FHEM-Modul, mit dem man [[FHEM Tablet UI]] (FTUI) Seiten graphisch ("klickibunti") erstellen kann. D.h. man kann sich ein UI zusammenklicken, welches die Tablet UI Technik verwendet, aber ohne sich selbst unbedingt mit HTML und CSS herumschlagen zu müssen.<br />
Hier ist ein kurzes Video, welches FUIP in Aktion zeigt:<br />
<br />
[https://forum.fhem.de/index.php?action=dlattach;topic=85869.0;attach=98455 Einführungsvideo]<br />
<br />
(Das Video zeigt nicht unbedingt den neusten Stand, aber es dürfte klar werden, wofür FUIP gut sein soll.)<br />
<br />
== Installation und Upgrade in FHEM ==<br />
Genau wie FTUI ist auch FUIP nicht automatisch Teil von FHEM. Es muss explizit installiert bzw. hinzugefügt werden. Die Installation funktioniert folgendermaßen:<br />
* FUIP verwendet FTUI. D.h. man sollte zuerst einmal FTUI installieren, falls noch nicht passiert. Wie das geht steht bei [[FHEM Tablet UI#Installation|FHEM Tablet UI]]. Dabei reicht der erste Schritt aus, da lediglich die FTUI-Dateien von FUIP benötigt werden.<br />
* Dann das FUIP-Repository zum FHEM Update hinzufügen: <br />
** <code>update add https://raw.githubusercontent.com/ThorstenPferdekaemper/FHEM-FUIP/master/controls_fuip.txt</code><br />
* Jetzt <code>update all fuip</code> und <code>shutdown restart</code>. FUIP sollte jetzt installiert sein.<br />
<br />
Zum Upgrade reicht ein <code>update</code>, wenn man FUIP wie oben beschrieben installiert hat. Will man nur den FUIP-Teil aktualisieren und nicht alles in FHEM, dann geht das mit <code>update all fuip</code>.<br />
<br />
Falls es insbesondere beim Upgrade oder nach einem Upgrade Probleme gibt (welcher Art auch immer), sollten die folgenden Punkte geprüft werden:<br />
* Wird das richtige Repository benutzt? Man kann das mit <code>update list</code> überprüfen. Wenn der Eintrag für fuip nicht genau so aussieht wie oben beschrieben, dann sollte er per <code>update delete</code> gelöscht werden und dann genau so eingetragen werden wie oben beschrieben. <br />
* FHEM braucht Schreibrechte im Verzeichnis <fhem>/FHEM/lib/FUIP/config (<fhem> steht meistens für /opt/fhem) und allen enthaltenen Dateien. Auf Betriebssystemebene (Linux) kann man das mit <code>ls -ls</code> überprüfen. Meistens kann es mit folgendem Befehl repariert werden: <code>chown -R fhem:dialout /opt/fhem/FHEM/lib/FUIP/config</code>. (Dieser Punkt gilt nicht bzw. nicht genau so, wenn man die configDB benutzt.)<br />
* Steht etwas verdächtiges im Logfile?<br />
<br />
== Erste Schritte ==<br />
Zuerst legt man ein "FUIP Device" an, also etwa <code>define ui FUIP</code>. Dieses Device meldet sich sozusagen als Webserver bei FHEM an (wie z.B. auch [[HTTPSRV]]), d.h. es erscheint im Menu oben links (über den Räumen) ein Link "ui". Beim Klick auf diesen Link generiert FUIP eine FTUI Übersichtsseite aus den Räumen im FHEM System. (Das kann ein bisschen dauern, wenn man viele Devices hat.) Nun kann man durch Verschieben und größer/kleiner-Ziehen der einzelnen Zellen bzw. durch Verschieben des Zelleninhalts die Gestaltung ändern. Außerdem kann man über das Zahnrad rechts oben in den Zellen neuen Inhalt hinzufügen, den bestehenden Inhalt ändern und vieles mehr.<br />
Durch Klicken auf die Räume im Menu der Übersichtsseite werden einzelne Raum-Seiten generiert. Diese kann man ebenfalls entsprechend bearbeiten. Natürlich können auch eigene Seiten hinzugefügt werden. Wie das geht sieht man im Video, welches oben verlinkt ist.<br />
<br />
Nachdem man die Seiten entsprechend bearbeitet hat sollte man ein <code>set ui save</code> machen. Ansonsten gehen die Änderungen beim nächsten FHEM-Neustart verloren. Ein normales <code>save config</code> reicht nicht aus und ist auch nicht notwendig.<br />
<br />
Die folgenden detaillierten Informationen können zum Teil veraltet sein, da FUIP noch weitereintwickelt wird. Es sollten allerdings keine Funktionen verschwinden.<br />
<br />
== Das Konfigurations-Popup ==<br />
=== ...für Zellen ===<br />
[[Datei:FUIP_KonfigZelle.png|mini|600px]]<br />
Beim Klick auf das Zahnrad rechts oben in einer Zelle wird der Konfigurations-Dialog für diese Zelle geöffnet. Im Folgenden werden die Funktionen der einzelnen Elemente erklärt.<br />
;Zur Seiten-Konfiguration: Damit kann man zum Konfig-Dialog für die ganze Seite wechseln. <br />
;Zellen-Überschrift: Hier wird die Überschrift der Zelle festgelegt. Eine Zelle muss keine Überschrift haben. (Die Zahlen hinter der Überschrift in der Zelle selbst verschwinden, wenn man das Attribut ''locked'' setzt.)<br />
;Neuer View: Hiermit fügt man einen neuen View, also neuen Inhalt, zu einer Zelle hinzu. Man wählt dann aus, welcher Art View angelegt werden soll und füllt die Details, wie z.B. das zugehörige Device. Der neue View wird an einer freien Stelle (falls möglich) in der Zelle eingefügt. Nach schließen des Konfig-Dialogs kann man den View dann per Drag&Drop geeignet positionieren.<br />
;Neuer View (Device): Dies dient ebenfalls dazu, neue Views in die Zelle zu packen. Allerdings wählt man nicht die Art des Views aus, sondern die FHEM-Devices, die dargestellt werden sollen. Das System sucht dann jeweils einen geeigneten View aus. Bisher funktioniert das nur sehr eingeschränkt, hat aber den Vorteil, dass man gleich mehrere Devices auswählen kann.<br />
;Abbrechen: Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Details zum View: Hier klappt man die Details zum View aus und kann diese ändern. Was man damit genau machen kann kommt auf die Art des View an. Per Drag&Drop kann man auch die Reihenfolge der Views im Konfig-Dialog ändern. Das hat allerdings keinen Effekt auf die Positonierung bereits existierender Views in der Zelle. <br />
;View löschen: Das löscht den View aus der Zelle. Wenn man den View eigentlich nicht löschen, sondern in einer anderen Zelle haben will, dann kann man ihn auch per Drag&Drop in die andere Zelle verschieben. Lässt man einen View in einer anderen Zelle "fallen", dann wird dieser automatisch der neuen Zelle zugeordnet.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Auto-Anordnen: Hiermit kann man die einzelnen Views in der Zelle automatisch anordnen. Es kann momentan sein, dass dadurch Änderungen verloren gehen. D.h. dieser Button sollte nur benutzt werden, wenn man seit dem Öffnen des Dialogs keine Änderungen gemacht hat. Außerdem schließt der Button dan Dialog. FUIP ordnet die Views in der Reihenfolge an, in der sie im Konfig-Popup erscheinen. Das zugrunde liegende Layout ist sehr einfach gehalten und kann sich auch noch ändern. Diese Funktion ist vor Allem brauchbar für mehrere gleichartige Views in derselben Zelle, wie z.B. bei Menus. <br />
;Neue Zelle: Legt eine neue (leere) Zelle auf der aktuellen Seite an. Der Konfig-Dialog wird dabei geschlossen und Änderungen gehen verloren.<br />
;Zelle kopieren: Kopiert die aktuelle Zelle. Man muss eine Seite angeben, zu der die kopierte Zelle gehören soll. Das entsprechende Feld ist mit der aktuellen Seite vorbelegt. Falls man dies nicht ändert, wird einfach eine Kopie der Zelle auf derselben Seite erzeugt. Ansonsten wird die Zelle auf die angegebene Seite kopiert. Die Funktion schließt den Konfig-Dialog und Änderungen gehen verloren. Falls man eine andere Seite angegeben hat, wird zu dieser gewechselt.<br />
;Zelle exportieren: Dies erlaubt die Definition der Zelle herunterzuladen und auf dem Client (also dem Rechner, auf dem der Browser läuft) zu speichern.<br />
;Zelle importieren: Damit lädt man eine exportierte Zelle wieder hoch. FUIP erzeugt dann auf der aktuellen Seite eine neue Zelle mit dem entsprechenden Inhalt. Das funktioniert auch mit Zellen, die von einer anderen FUIP-Seite, einem anderen FUIP-Device oder von einer anderen FHEM-Installation kommen.<br />
;Zelle löschen: Damit löscht man die aktuelle Zelle. Sie verschwindet dann von der aktuellen Seite.<br />
;Toggle editOnly: Bei manchen Views ist es schwierig, sie mit der Maus "anzufassen", da sie sofort eine Aktion auslösen (z.B. bei Links). Mit "Toggle editOnly" wird eine graue "Schicht" über die Views gelegt. Dadurch weiß man besser, wo man den View anfassen kann und Mausklicks haben keine Wirkung mehr, außer Drag&Drop.<br />
<br />
=== ...für Seiten ===<br />
[[Datei:FUIP_SeitenKonfig.png|mini|600px]]<br />
Drückt man im Konfig-Dialog für Zellen auf "Cell/Page" kommt man auf den Konfig-Dialog für ganze Seiten. Die Bedeutung der Einzelnen Elemente ist wie folgt.<br />
;Zur Zellen-Konfiguration:Das bringt einen zurück zum Konfig-Dialog für Zellen.<br />
;Seiten-Überschrift:Hier kann ein Titel für die Seite eingetragen werden. Das erscheint dann je nach Browser irgendwo oben. (Technisch ist es der Inhalt des <title> Tags in <head>.)<br />
;Abbrechen:Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Seite kopieren:Dadurch wird eine neue Seite angelegt, die so aussieht wie die aktuelle. Der Dialog wird dann geschlossen und automatisch zur neuen Seite gesprungen.<br />
;Seite exportieren:Das ist dasselbe wie für Zellen, nur für die ganze aktuelle Seite.<br />
;Seite importieren:Das ist im Prinzip auch wie für Zellen, nur dass eine neue Seite angelegt wird. Exportierte Zellen können nur als Zellen importiert werden und exportierte Seiten nur als Seiten.<br />
<br />
== Das FUIP-Device ==<br />
Wie in [[#Erste Schritte|Erste Schritte]] bereits beschrieben, muss man zur Verwendung von FUIP zuerst ein FUIP-Device anlegen. Alles, was man mit FUIP macht (bzw. was das System macht) passiert in Bezug auf ein FUIP-Device. Man kann auch jederzeit mehrere FUIP-Devices anlegen. Verschiedene Instanzen von FUIP stören sich nicht gegenseitig, man kann aber (z.B. in einem Menu) auf eine andere FUIP-Instanz verweisen (verlinken).<br />
<br />
Das FUIP-Device hat die folgenden Eigenschaften.<br />
=== Sets ===<br />
Die folgenden set-Kommandos sind für den Benutzer gedacht. Es gibt noch weitere set-Kommandos, welche aber vor Allem für FUIP-interne Zwecke gedacht sind. <br />
;save: Mit <code>set <name> save</code> wird der momentane Zustand der FUIP-Seiten zu diesem FUIP-Device gespeichert. Das betrifft nicht die Definition des FUIP-Device selbst (also auch nicht dessen Attribute). Diese müssen nach wie vor über <code>save</code> (also "Save config") gespeichert werden. Die FUIP-Seiten stehen in der Datei <fhem>/FHEM/lib/FUIP/config/FUIP_<name>.cfg. Dabei steht <fhem> in der Regel für /opt/fhem und <name> für den Namen des FUIP-Devices. Ohne ein <code>set <name> save</code> gehen alle Änderungen beim nächsten FHEM Restart verloren. <br />
;load: Mit <code>set <name> load</code> stellt man den Zustand wieder her, der mit <code>set <name> save</code> gespeichert wurde. Das ist vor Allem dann nützlich, wenn man sich beim Bearbeiten der Seiten vertan hat. Ansonsten wird beim FHEM Start das "load" automatisch ausgeführt. <br />
;pagedelete: Mit <code>set <name> pagedelete <page></code> wird die Seite <page> gelöscht. Das kann auch dazu genutzt werden, FUIP zum Neugenerieren einer Seite zu "zwingen", indem man die Seite nach dem Löschen einfach wieder aufruft. Auch das Löschen einer Seite geht ohne ein "save" verloren, d.h. die Seite ist dann nach einem FHEM Neustart wieder da. <br />
;refreshBuffer: FUIP verwendet Informationen aus dem "eigentlichen" FHEM, wie z.B. die Liste aller Devices sowie bestimmte Readings, Internals und Attribute. Insbesondere bei "entferntem" FUIP, also bei Verwendung des Attributs ''fhemwebUrl'', kann die Ermittlung dieser Daten länger dauern. Daher wird praktisch alles durch FUIP zwischengespeichert ("gepuffert"). Wenn man nun neue Devices anlegt bzw. bestehende Devices ändert, dann bekommt das FUIP-Device davon unter Umständen nichts mit. In so einem Fall kann man mit <code>set <name> refreshBuffer</code> den Zwischenspeicher löschen, um FUIP dazu zu zwingen, die Informationen erneut zu ermitteln.<br />
<br />
=== Gets ===<br />
Alle Get-Kommandos sind nur für FUIP-interne Zwecke bestimmt.<br />
<br />
=== Internals ===<br />
;editOnly: Hier wird der "editOnly-Modus" gespeichert, der auf der Konfig-Oberfläche ein- und ausgeschaltet werden kann. Siehe auch [[#Das Konfigurations-Popup|Das Konfigurations-Popup]].<br />
<br />
=== Readings ===<br />
<br />
=== Attribute ===<br />
<br />
== Links ==<br />
* {{Link2Forum|Topic=85869|LinkText=Foren-Thread zur Geburt von FUIP}}<br />
<br />
[[Kategorie:FHEM Frontends]]</div>Thorsten Pferdekämperhttp://wiki.fhem.de/w/index.php?title=FHEM_User_Interface_Painter&diff=27381FHEM User Interface Painter2018-07-10T13:29:24Z<p>Thorsten Pferdekämper: /* Internals */</p>
<hr />
<div>[[Datei:FUIP_Symbolbild.png|mini|400px|FUIP in Aktion]]<br />
Der '''FHEM User Interface Painter (FUIP)''' ist ein FHEM-Modul, mit dem man [[FHEM Tablet UI]] (FTUI) Seiten graphisch ("klickibunti") erstellen kann. D.h. man kann sich ein UI zusammenklicken, welches die Tablet UI Technik verwendet, aber ohne sich selbst unbedingt mit HTML und CSS herumschlagen zu müssen.<br />
Hier ist ein kurzes Video, welches FUIP in Aktion zeigt:<br />
<br />
[https://forum.fhem.de/index.php?action=dlattach;topic=85869.0;attach=98455 Einführungsvideo]<br />
<br />
(Das Video zeigt nicht unbedingt den neusten Stand, aber es dürfte klar werden, wofür FUIP gut sein soll.)<br />
<br />
== Installation und Upgrade in FHEM ==<br />
Genau wie FTUI ist auch FUIP nicht automatisch Teil von FHEM. Es muss explizit installiert bzw. hinzugefügt werden. Die Installation funktioniert folgendermaßen:<br />
* FUIP verwendet FTUI. D.h. man sollte zuerst einmal FTUI installieren, falls noch nicht passiert. Wie das geht steht bei [[FHEM Tablet UI#Installation|FHEM Tablet UI]]. Dabei reicht der erste Schritt aus, da lediglich die FTUI-Dateien von FUIP benötigt werden.<br />
* Dann das FUIP-Repository zum FHEM Update hinzufügen: <br />
** <code>update add https://raw.githubusercontent.com/ThorstenPferdekaemper/FHEM-FUIP/master/controls_fuip.txt</code><br />
* Jetzt <code>update all fuip</code> und <code>shutdown restart</code>. FUIP sollte jetzt installiert sein.<br />
<br />
Zum Upgrade reicht ein <code>update</code>, wenn man FUIP wie oben beschrieben installiert hat. Will man nur den FUIP-Teil aktualisieren und nicht alles in FHEM, dann geht das mit <code>update all fuip</code>.<br />
<br />
Falls es insbesondere beim Upgrade oder nach einem Upgrade Probleme gibt (welcher Art auch immer), sollten die folgenden Punkte geprüft werden:<br />
* Wird das richtige Repository benutzt? Man kann das mit <code>update list</code> überprüfen. Wenn der Eintrag für fuip nicht genau so aussieht wie oben beschrieben, dann sollte er per <code>update delete</code> gelöscht werden und dann genau so eingetragen werden wie oben beschrieben. <br />
* FHEM braucht Schreibrechte im Verzeichnis <fhem>/FHEM/lib/FUIP/config (<fhem> steht meistens für /opt/fhem) und allen enthaltenen Dateien. Auf Betriebssystemebene (Linux) kann man das mit <code>ls -ls</code> überprüfen. Meistens kann es mit folgendem Befehl repariert werden: <code>chown -R fhem:dialout /opt/fhem/FHEM/lib/FUIP/config</code>. (Dieser Punkt gilt nicht bzw. nicht genau so, wenn man die configDB benutzt.)<br />
* Steht etwas verdächtiges im Logfile?<br />
<br />
== Erste Schritte ==<br />
Zuerst legt man ein "FUIP Device" an, also etwa <code>define ui FUIP</code>. Dieses Device meldet sich sozusagen als Webserver bei FHEM an (wie z.B. auch [[HTTPSRV]]), d.h. es erscheint im Menu oben links (über den Räumen) ein Link "ui". Beim Klick auf diesen Link generiert FUIP eine FTUI Übersichtsseite aus den Räumen im FHEM System. (Das kann ein bisschen dauern, wenn man viele Devices hat.) Nun kann man durch Verschieben und größer/kleiner-Ziehen der einzelnen Zellen bzw. durch Verschieben des Zelleninhalts die Gestaltung ändern. Außerdem kann man über das Zahnrad rechts oben in den Zellen neuen Inhalt hinzufügen, den bestehenden Inhalt ändern und vieles mehr.<br />
Durch Klicken auf die Räume im Menu der Übersichtsseite werden einzelne Raum-Seiten generiert. Diese kann man ebenfalls entsprechend bearbeiten. Natürlich können auch eigene Seiten hinzugefügt werden. Wie das geht sieht man im Video, welches oben verlinkt ist.<br />
<br />
Nachdem man die Seiten entsprechend bearbeitet hat sollte man ein <code>set ui save</code> machen. Ansonsten gehen die Änderungen beim nächsten FHEM-Neustart verloren. Ein normales <code>save config</code> reicht nicht aus und ist auch nicht notwendig.<br />
<br />
Die folgenden detaillierten Informationen können zum Teil veraltet sein, da FUIP noch weitereintwickelt wird. Es sollten allerdings keine Funktionen verschwinden.<br />
<br />
== Das Konfigurations-Popup ==<br />
=== ...für Zellen ===<br />
[[Datei:FUIP_KonfigZelle.png|mini|600px]]<br />
Beim Klick auf das Zahnrad rechts oben in einer Zelle wird der Konfigurations-Dialog für diese Zelle geöffnet. Im Folgenden werden die Funktionen der einzelnen Elemente erklärt.<br />
;Zur Seiten-Konfiguration: Damit kann man zum Konfig-Dialog für die ganze Seite wechseln. <br />
;Zellen-Überschrift: Hier wird die Überschrift der Zelle festgelegt. Eine Zelle muss keine Überschrift haben. (Die Zahlen hinter der Überschrift in der Zelle selbst verschwinden, wenn man das Attribut ''locked'' setzt.)<br />
;Neuer View: Hiermit fügt man einen neuen View, also neuen Inhalt, zu einer Zelle hinzu. Man wählt dann aus, welcher Art View angelegt werden soll und füllt die Details, wie z.B. das zugehörige Device. Der neue View wird an einer freien Stelle (falls möglich) in der Zelle eingefügt. Nach schließen des Konfig-Dialogs kann man den View dann per Drag&Drop geeignet positionieren.<br />
;Neuer View (Device): Dies dient ebenfalls dazu, neue Views in die Zelle zu packen. Allerdings wählt man nicht die Art des Views aus, sondern die FHEM-Devices, die dargestellt werden sollen. Das System sucht dann jeweils einen geeigneten View aus. Bisher funktioniert das nur sehr eingeschränkt, hat aber den Vorteil, dass man gleich mehrere Devices auswählen kann.<br />
;Abbrechen: Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Details zum View: Hier klappt man die Details zum View aus und kann diese ändern. Was man damit genau machen kann kommt auf die Art des View an. Per Drag&Drop kann man auch die Reihenfolge der Views im Konfig-Dialog ändern. Das hat allerdings keinen Effekt auf die Positonierung bereits existierender Views in der Zelle. <br />
;View löschen: Das löscht den View aus der Zelle. Wenn man den View eigentlich nicht löschen, sondern in einer anderen Zelle haben will, dann kann man ihn auch per Drag&Drop in die andere Zelle verschieben. Lässt man einen View in einer anderen Zelle "fallen", dann wird dieser automatisch der neuen Zelle zugeordnet.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Auto-Anordnen: Hiermit kann man die einzelnen Views in der Zelle automatisch anordnen. Es kann momentan sein, dass dadurch Änderungen verloren gehen. D.h. dieser Button sollte nur benutzt werden, wenn man seit dem Öffnen des Dialogs keine Änderungen gemacht hat. Außerdem schließt der Button dan Dialog. FUIP ordnet die Views in der Reihenfolge an, in der sie im Konfig-Popup erscheinen. Das zugrunde liegende Layout ist sehr einfach gehalten und kann sich auch noch ändern. Diese Funktion ist vor Allem brauchbar für mehrere gleichartige Views in derselben Zelle, wie z.B. bei Menus. <br />
;Neue Zelle: Legt eine neue (leere) Zelle auf der aktuellen Seite an. Der Konfig-Dialog wird dabei geschlossen und Änderungen gehen verloren.<br />
;Zelle kopieren: Kopiert die aktuelle Zelle. Man muss eine Seite angeben, zu der die kopierte Zelle gehören soll. Das entsprechende Feld ist mit der aktuellen Seite vorbelegt. Falls man dies nicht ändert, wird einfach eine Kopie der Zelle auf derselben Seite erzeugt. Ansonsten wird die Zelle auf die angegebene Seite kopiert. Die Funktion schließt den Konfig-Dialog und Änderungen gehen verloren. Falls man eine andere Seite angegeben hat, wird zu dieser gewechselt.<br />
;Zelle exportieren: Dies erlaubt die Definition der Zelle herunterzuladen und auf dem Client (also dem Rechner, auf dem der Browser läuft) zu speichern.<br />
;Zelle importieren: Damit lädt man eine exportierte Zelle wieder hoch. FUIP erzeugt dann auf der aktuellen Seite eine neue Zelle mit dem entsprechenden Inhalt. Das funktioniert auch mit Zellen, die von einer anderen FUIP-Seite, einem anderen FUIP-Device oder von einer anderen FHEM-Installation kommen.<br />
;Zelle löschen: Damit löscht man die aktuelle Zelle. Sie verschwindet dann von der aktuellen Seite.<br />
;Toggle editOnly: Bei manchen Views ist es schwierig, sie mit der Maus "anzufassen", da sie sofort eine Aktion auslösen (z.B. bei Links). Mit "Toggle editOnly" wird eine graue "Schicht" über die Views gelegt. Dadurch weiß man besser, wo man den View anfassen kann und Mausklicks haben keine Wirkung mehr, außer Drag&Drop.<br />
<br />
=== ...für Seiten ===<br />
[[Datei:FUIP_SeitenKonfig.png|mini|600px]]<br />
Drückt man im Konfig-Dialog für Zellen auf "Cell/Page" kommt man auf den Konfig-Dialog für ganze Seiten. Die Bedeutung der Einzelnen Elemente ist wie folgt.<br />
;Zur Zellen-Konfiguration:Das bringt einen zurück zum Konfig-Dialog für Zellen.<br />
;Seiten-Überschrift:Hier kann ein Titel für die Seite eingetragen werden. Das erscheint dann je nach Browser irgendwo oben. (Technisch ist es der Inhalt des <title> Tags in <head>.)<br />
;Abbrechen:Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Seite kopieren:Dadurch wird eine neue Seite angelegt, die so aussieht wie die aktuelle. Der Dialog wird dann geschlossen und automatisch zur neuen Seite gesprungen.<br />
;Seite exportieren:Das ist dasselbe wie für Zellen, nur für die ganze aktuelle Seite.<br />
;Seite importieren:Das ist im Prinzip auch wie für Zellen, nur dass eine neue Seite angelegt wird. Exportierte Zellen können nur als Zellen importiert werden und exportierte Seiten nur als Seiten.<br />
<br />
== Das FUIP-Device ==<br />
Wie in [[#Erste Schritte|Erste Schritte]] bereits beschrieben, muss man zur Verwendung von FUIP zuerst ein FUIP-Device anlegen. Alles, was man mit FUIP macht (bzw. was das System macht) passiert in Bezug auf ein FUIP-Device. Man kann auch jederzeit mehrere FUIP-Devices anlegen. Verschiedene Instanzen von FUIP stören sich nicht gegenseitig, man kann aber (z.B. in einem Menu) auf eine andere FUIP-Instanz verweisen (verlinken).<br />
<br />
Das FUIP-Device hat die folgenden Eigenschaften.<br />
=== Sets ===<br />
Die folgenden set-Kommandos sind für den Benutzer gedacht. Es gibt noch weitere set-Kommandos, welche aber vor Allem für FUIP-interne Zwecke gedacht sind. <br />
;save: Mit <code>set <name> save</code> wird der momentane Zustand der FUIP-Seiten zu diesem FUIP-Device gespeichert. Das betrifft nicht die Definition des FUIP-Device selbst (also auch nicht dessen Attribute). Diese müssen nach wie vor über <code>save</code> (also "Save config") gespeichert werden. Die FUIP-Seiten stehen in der Datei <fhem>/FHEM/lib/FUIP/config/FUIP_<name>.cfg. Dabei steht <fhem> in der Regel für /opt/fhem und <name> für den Namen des FUIP-Devices. Ohne ein <code>set <name> save</code> gehen alle Änderungen beim nächsten FHEM Restart verloren. <br />
;load: Mit <code>set <name> load</code> stellt man den Zustand wieder her, der mit <code>set <name> save</code> gespeichert wurde. Das ist vor Allem dann nützlich, wenn man sich beim Bearbeiten der Seiten vertan hat. Ansonsten wird beim FHEM Start das "load" automatisch ausgeführt. <br />
;pagedelete: Mit <code>set <name> pagedelete <page></code> wird die Seite <page> gelöscht. Das kann auch dazu genutzt werden, FUIP zum Neugenerieren einer Seite zu "zwingen", indem man die Seite nach dem Löschen einfach wieder aufruft. Auch das Löschen einer Seite geht ohne ein "save" verloren, d.h. die Seite ist dann nach einem FHEM Neustart wieder da. <br />
;refreshBuffer: FUIP verwendet Informationen aus dem "eigentlichen" FHEM, wie z.B. die Liste aller Devices sowie bestimmte Readings, Internals und Attribute. Insbesondere bei "entferntem" FUIP, also bei Verwendung des Attributs ''fhemwebUrl'', kann die Ermittlung dieser Daten länger dauern. Daher wird praktisch alles durch FUIP zwischengespeichert ("gepuffert"). Wenn man nun neue Devices anlegt bzw. bestehende Devices ändert, dann bekommt das FUIP-Device davon unter Umständen nichts mit. In so einem Fall kann man mit <code>set <name> refreshBuffer</code> den Zwischenspeicher löschen, um FUIP dazu zu zwingen, die Informationen erneut zu ermitteln.<br />
<br />
=== Gets ===<br />
Alle Get-Kommandos sind nur für FUIP-interne Zwecke bestimmt.<br />
<br />
=== Internals ===<br />
;editOnly: Hier wird der "editOnly-Modus" gespeichert, der auf der Konfig-Oberfläche ein- und ausgeschaltet werden kann.<br />
<br />
=== Readings ===<br />
<br />
=== Attribute ===<br />
<br />
== Links ==<br />
* {{Link2Forum|Topic=85869|LinkText=Foren-Thread zur Geburt von FUIP}}<br />
<br />
[[Kategorie:FHEM Frontends]]</div>Thorsten Pferdekämperhttp://wiki.fhem.de/w/index.php?title=FHEM_User_Interface_Painter&diff=27380FHEM User Interface Painter2018-07-10T13:27:51Z<p>Thorsten Pferdekämper: /* Das FUIP-Device */</p>
<hr />
<div>[[Datei:FUIP_Symbolbild.png|mini|400px|FUIP in Aktion]]<br />
Der '''FHEM User Interface Painter (FUIP)''' ist ein FHEM-Modul, mit dem man [[FHEM Tablet UI]] (FTUI) Seiten graphisch ("klickibunti") erstellen kann. D.h. man kann sich ein UI zusammenklicken, welches die Tablet UI Technik verwendet, aber ohne sich selbst unbedingt mit HTML und CSS herumschlagen zu müssen.<br />
Hier ist ein kurzes Video, welches FUIP in Aktion zeigt:<br />
<br />
[https://forum.fhem.de/index.php?action=dlattach;topic=85869.0;attach=98455 Einführungsvideo]<br />
<br />
(Das Video zeigt nicht unbedingt den neusten Stand, aber es dürfte klar werden, wofür FUIP gut sein soll.)<br />
<br />
== Installation und Upgrade in FHEM ==<br />
Genau wie FTUI ist auch FUIP nicht automatisch Teil von FHEM. Es muss explizit installiert bzw. hinzugefügt werden. Die Installation funktioniert folgendermaßen:<br />
* FUIP verwendet FTUI. D.h. man sollte zuerst einmal FTUI installieren, falls noch nicht passiert. Wie das geht steht bei [[FHEM Tablet UI#Installation|FHEM Tablet UI]]. Dabei reicht der erste Schritt aus, da lediglich die FTUI-Dateien von FUIP benötigt werden.<br />
* Dann das FUIP-Repository zum FHEM Update hinzufügen: <br />
** <code>update add https://raw.githubusercontent.com/ThorstenPferdekaemper/FHEM-FUIP/master/controls_fuip.txt</code><br />
* Jetzt <code>update all fuip</code> und <code>shutdown restart</code>. FUIP sollte jetzt installiert sein.<br />
<br />
Zum Upgrade reicht ein <code>update</code>, wenn man FUIP wie oben beschrieben installiert hat. Will man nur den FUIP-Teil aktualisieren und nicht alles in FHEM, dann geht das mit <code>update all fuip</code>.<br />
<br />
Falls es insbesondere beim Upgrade oder nach einem Upgrade Probleme gibt (welcher Art auch immer), sollten die folgenden Punkte geprüft werden:<br />
* Wird das richtige Repository benutzt? Man kann das mit <code>update list</code> überprüfen. Wenn der Eintrag für fuip nicht genau so aussieht wie oben beschrieben, dann sollte er per <code>update delete</code> gelöscht werden und dann genau so eingetragen werden wie oben beschrieben. <br />
* FHEM braucht Schreibrechte im Verzeichnis <fhem>/FHEM/lib/FUIP/config (<fhem> steht meistens für /opt/fhem) und allen enthaltenen Dateien. Auf Betriebssystemebene (Linux) kann man das mit <code>ls -ls</code> überprüfen. Meistens kann es mit folgendem Befehl repariert werden: <code>chown -R fhem:dialout /opt/fhem/FHEM/lib/FUIP/config</code>. (Dieser Punkt gilt nicht bzw. nicht genau so, wenn man die configDB benutzt.)<br />
* Steht etwas verdächtiges im Logfile?<br />
<br />
== Erste Schritte ==<br />
Zuerst legt man ein "FUIP Device" an, also etwa <code>define ui FUIP</code>. Dieses Device meldet sich sozusagen als Webserver bei FHEM an (wie z.B. auch [[HTTPSRV]]), d.h. es erscheint im Menu oben links (über den Räumen) ein Link "ui". Beim Klick auf diesen Link generiert FUIP eine FTUI Übersichtsseite aus den Räumen im FHEM System. (Das kann ein bisschen dauern, wenn man viele Devices hat.) Nun kann man durch Verschieben und größer/kleiner-Ziehen der einzelnen Zellen bzw. durch Verschieben des Zelleninhalts die Gestaltung ändern. Außerdem kann man über das Zahnrad rechts oben in den Zellen neuen Inhalt hinzufügen, den bestehenden Inhalt ändern und vieles mehr.<br />
Durch Klicken auf die Räume im Menu der Übersichtsseite werden einzelne Raum-Seiten generiert. Diese kann man ebenfalls entsprechend bearbeiten. Natürlich können auch eigene Seiten hinzugefügt werden. Wie das geht sieht man im Video, welches oben verlinkt ist.<br />
<br />
Nachdem man die Seiten entsprechend bearbeitet hat sollte man ein <code>set ui save</code> machen. Ansonsten gehen die Änderungen beim nächsten FHEM-Neustart verloren. Ein normales <code>save config</code> reicht nicht aus und ist auch nicht notwendig.<br />
<br />
Die folgenden detaillierten Informationen können zum Teil veraltet sein, da FUIP noch weitereintwickelt wird. Es sollten allerdings keine Funktionen verschwinden.<br />
<br />
== Das Konfigurations-Popup ==<br />
=== ...für Zellen ===<br />
[[Datei:FUIP_KonfigZelle.png|mini|600px]]<br />
Beim Klick auf das Zahnrad rechts oben in einer Zelle wird der Konfigurations-Dialog für diese Zelle geöffnet. Im Folgenden werden die Funktionen der einzelnen Elemente erklärt.<br />
;Zur Seiten-Konfiguration: Damit kann man zum Konfig-Dialog für die ganze Seite wechseln. <br />
;Zellen-Überschrift: Hier wird die Überschrift der Zelle festgelegt. Eine Zelle muss keine Überschrift haben. (Die Zahlen hinter der Überschrift in der Zelle selbst verschwinden, wenn man das Attribut ''locked'' setzt.)<br />
;Neuer View: Hiermit fügt man einen neuen View, also neuen Inhalt, zu einer Zelle hinzu. Man wählt dann aus, welcher Art View angelegt werden soll und füllt die Details, wie z.B. das zugehörige Device. Der neue View wird an einer freien Stelle (falls möglich) in der Zelle eingefügt. Nach schließen des Konfig-Dialogs kann man den View dann per Drag&Drop geeignet positionieren.<br />
;Neuer View (Device): Dies dient ebenfalls dazu, neue Views in die Zelle zu packen. Allerdings wählt man nicht die Art des Views aus, sondern die FHEM-Devices, die dargestellt werden sollen. Das System sucht dann jeweils einen geeigneten View aus. Bisher funktioniert das nur sehr eingeschränkt, hat aber den Vorteil, dass man gleich mehrere Devices auswählen kann.<br />
;Abbrechen: Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Details zum View: Hier klappt man die Details zum View aus und kann diese ändern. Was man damit genau machen kann kommt auf die Art des View an. Per Drag&Drop kann man auch die Reihenfolge der Views im Konfig-Dialog ändern. Das hat allerdings keinen Effekt auf die Positonierung bereits existierender Views in der Zelle. <br />
;View löschen: Das löscht den View aus der Zelle. Wenn man den View eigentlich nicht löschen, sondern in einer anderen Zelle haben will, dann kann man ihn auch per Drag&Drop in die andere Zelle verschieben. Lässt man einen View in einer anderen Zelle "fallen", dann wird dieser automatisch der neuen Zelle zugeordnet.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Auto-Anordnen: Hiermit kann man die einzelnen Views in der Zelle automatisch anordnen. Es kann momentan sein, dass dadurch Änderungen verloren gehen. D.h. dieser Button sollte nur benutzt werden, wenn man seit dem Öffnen des Dialogs keine Änderungen gemacht hat. Außerdem schließt der Button dan Dialog. FUIP ordnet die Views in der Reihenfolge an, in der sie im Konfig-Popup erscheinen. Das zugrunde liegende Layout ist sehr einfach gehalten und kann sich auch noch ändern. Diese Funktion ist vor Allem brauchbar für mehrere gleichartige Views in derselben Zelle, wie z.B. bei Menus. <br />
;Neue Zelle: Legt eine neue (leere) Zelle auf der aktuellen Seite an. Der Konfig-Dialog wird dabei geschlossen und Änderungen gehen verloren.<br />
;Zelle kopieren: Kopiert die aktuelle Zelle. Man muss eine Seite angeben, zu der die kopierte Zelle gehören soll. Das entsprechende Feld ist mit der aktuellen Seite vorbelegt. Falls man dies nicht ändert, wird einfach eine Kopie der Zelle auf derselben Seite erzeugt. Ansonsten wird die Zelle auf die angegebene Seite kopiert. Die Funktion schließt den Konfig-Dialog und Änderungen gehen verloren. Falls man eine andere Seite angegeben hat, wird zu dieser gewechselt.<br />
;Zelle exportieren: Dies erlaubt die Definition der Zelle herunterzuladen und auf dem Client (also dem Rechner, auf dem der Browser läuft) zu speichern.<br />
;Zelle importieren: Damit lädt man eine exportierte Zelle wieder hoch. FUIP erzeugt dann auf der aktuellen Seite eine neue Zelle mit dem entsprechenden Inhalt. Das funktioniert auch mit Zellen, die von einer anderen FUIP-Seite, einem anderen FUIP-Device oder von einer anderen FHEM-Installation kommen.<br />
;Zelle löschen: Damit löscht man die aktuelle Zelle. Sie verschwindet dann von der aktuellen Seite.<br />
;Toggle editOnly: Bei manchen Views ist es schwierig, sie mit der Maus "anzufassen", da sie sofort eine Aktion auslösen (z.B. bei Links). Mit "Toggle editOnly" wird eine graue "Schicht" über die Views gelegt. Dadurch weiß man besser, wo man den View anfassen kann und Mausklicks haben keine Wirkung mehr, außer Drag&Drop.<br />
<br />
=== ...für Seiten ===<br />
[[Datei:FUIP_SeitenKonfig.png|mini|600px]]<br />
Drückt man im Konfig-Dialog für Zellen auf "Cell/Page" kommt man auf den Konfig-Dialog für ganze Seiten. Die Bedeutung der Einzelnen Elemente ist wie folgt.<br />
;Zur Zellen-Konfiguration:Das bringt einen zurück zum Konfig-Dialog für Zellen.<br />
;Seiten-Überschrift:Hier kann ein Titel für die Seite eingetragen werden. Das erscheint dann je nach Browser irgendwo oben. (Technisch ist es der Inhalt des <title> Tags in <head>.)<br />
;Abbrechen:Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Seite kopieren:Dadurch wird eine neue Seite angelegt, die so aussieht wie die aktuelle. Der Dialog wird dann geschlossen und automatisch zur neuen Seite gesprungen.<br />
;Seite exportieren:Das ist dasselbe wie für Zellen, nur für die ganze aktuelle Seite.<br />
;Seite importieren:Das ist im Prinzip auch wie für Zellen, nur dass eine neue Seite angelegt wird. Exportierte Zellen können nur als Zellen importiert werden und exportierte Seiten nur als Seiten.<br />
<br />
== Das FUIP-Device ==<br />
Wie in [[#Erste Schritte|Erste Schritte]] bereits beschrieben, muss man zur Verwendung von FUIP zuerst ein FUIP-Device anlegen. Alles, was man mit FUIP macht (bzw. was das System macht) passiert in Bezug auf ein FUIP-Device. Man kann auch jederzeit mehrere FUIP-Devices anlegen. Verschiedene Instanzen von FUIP stören sich nicht gegenseitig, man kann aber (z.B. in einem Menu) auf eine andere FUIP-Instanz verweisen (verlinken).<br />
<br />
Das FUIP-Device hat die folgenden Eigenschaften.<br />
=== Sets ===<br />
Die folgenden set-Kommandos sind für den Benutzer gedacht. Es gibt noch weitere set-Kommandos, welche aber vor Allem für FUIP-interne Zwecke gedacht sind. <br />
;save: Mit <code>set <name> save</code> wird der momentane Zustand der FUIP-Seiten zu diesem FUIP-Device gespeichert. Das betrifft nicht die Definition des FUIP-Device selbst (also auch nicht dessen Attribute). Diese müssen nach wie vor über <code>save</code> (also "Save config") gespeichert werden. Die FUIP-Seiten stehen in der Datei <fhem>/FHEM/lib/FUIP/config/FUIP_<name>.cfg. Dabei steht <fhem> in der Regel für /opt/fhem und <name> für den Namen des FUIP-Devices. Ohne ein <code>set <name> save</code> gehen alle Änderungen beim nächsten FHEM Restart verloren. <br />
;load: Mit <code>set <name> load</code> stellt man den Zustand wieder her, der mit <code>set <name> save</code> gespeichert wurde. Das ist vor Allem dann nützlich, wenn man sich beim Bearbeiten der Seiten vertan hat. Ansonsten wird beim FHEM Start das "load" automatisch ausgeführt. <br />
;pagedelete: Mit <code>set <name> pagedelete <page></code> wird die Seite <page> gelöscht. Das kann auch dazu genutzt werden, FUIP zum Neugenerieren einer Seite zu "zwingen", indem man die Seite nach dem Löschen einfach wieder aufruft. Auch das Löschen einer Seite geht ohne ein "save" verloren, d.h. die Seite ist dann nach einem FHEM Neustart wieder da. <br />
;refreshBuffer: FUIP verwendet Informationen aus dem "eigentlichen" FHEM, wie z.B. die Liste aller Devices sowie bestimmte Readings, Internals und Attribute. Insbesondere bei "entferntem" FUIP, also bei Verwendung des Attributs ''fhemwebUrl'', kann die Ermittlung dieser Daten länger dauern. Daher wird praktisch alles durch FUIP zwischengespeichert ("gepuffert"). Wenn man nun neue Devices anlegt bzw. bestehende Devices ändert, dann bekommt das FUIP-Device davon unter Umständen nichts mit. In so einem Fall kann man mit <code>set <name> refreshBuffer</code> den Zwischenspeicher löschen, um FUIP dazu zu zwingen, die Informationen erneut zu ermitteln.<br />
<br />
=== Gets ===<br />
Alle Get-Kommandos sind nur für FUIP-interne Zwecke bestimmt.<br />
<br />
=== Internals ===<br />
<br />
=== Readings ===<br />
<br />
=== Attribute ===<br />
<br />
== Links ==<br />
* {{Link2Forum|Topic=85869|LinkText=Foren-Thread zur Geburt von FUIP}}<br />
<br />
[[Kategorie:FHEM Frontends]]</div>Thorsten Pferdekämperhttp://wiki.fhem.de/w/index.php?title=FHEM_User_Interface_Painter&diff=27379FHEM User Interface Painter2018-07-10T13:27:05Z<p>Thorsten Pferdekämper: /* Gets */</p>
<hr />
<div>[[Datei:FUIP_Symbolbild.png|mini|400px|FUIP in Aktion]]<br />
Der '''FHEM User Interface Painter (FUIP)''' ist ein FHEM-Modul, mit dem man [[FHEM Tablet UI]] (FTUI) Seiten graphisch ("klickibunti") erstellen kann. D.h. man kann sich ein UI zusammenklicken, welches die Tablet UI Technik verwendet, aber ohne sich selbst unbedingt mit HTML und CSS herumschlagen zu müssen.<br />
Hier ist ein kurzes Video, welches FUIP in Aktion zeigt:<br />
<br />
[https://forum.fhem.de/index.php?action=dlattach;topic=85869.0;attach=98455 Einführungsvideo]<br />
<br />
(Das Video zeigt nicht unbedingt den neusten Stand, aber es dürfte klar werden, wofür FUIP gut sein soll.)<br />
<br />
== Installation und Upgrade in FHEM ==<br />
Genau wie FTUI ist auch FUIP nicht automatisch Teil von FHEM. Es muss explizit installiert bzw. hinzugefügt werden. Die Installation funktioniert folgendermaßen:<br />
* FUIP verwendet FTUI. D.h. man sollte zuerst einmal FTUI installieren, falls noch nicht passiert. Wie das geht steht bei [[FHEM Tablet UI#Installation|FHEM Tablet UI]]. Dabei reicht der erste Schritt aus, da lediglich die FTUI-Dateien von FUIP benötigt werden.<br />
* Dann das FUIP-Repository zum FHEM Update hinzufügen: <br />
** <code>update add https://raw.githubusercontent.com/ThorstenPferdekaemper/FHEM-FUIP/master/controls_fuip.txt</code><br />
* Jetzt <code>update all fuip</code> und <code>shutdown restart</code>. FUIP sollte jetzt installiert sein.<br />
<br />
Zum Upgrade reicht ein <code>update</code>, wenn man FUIP wie oben beschrieben installiert hat. Will man nur den FUIP-Teil aktualisieren und nicht alles in FHEM, dann geht das mit <code>update all fuip</code>.<br />
<br />
Falls es insbesondere beim Upgrade oder nach einem Upgrade Probleme gibt (welcher Art auch immer), sollten die folgenden Punkte geprüft werden:<br />
* Wird das richtige Repository benutzt? Man kann das mit <code>update list</code> überprüfen. Wenn der Eintrag für fuip nicht genau so aussieht wie oben beschrieben, dann sollte er per <code>update delete</code> gelöscht werden und dann genau so eingetragen werden wie oben beschrieben. <br />
* FHEM braucht Schreibrechte im Verzeichnis <fhem>/FHEM/lib/FUIP/config (<fhem> steht meistens für /opt/fhem) und allen enthaltenen Dateien. Auf Betriebssystemebene (Linux) kann man das mit <code>ls -ls</code> überprüfen. Meistens kann es mit folgendem Befehl repariert werden: <code>chown -R fhem:dialout /opt/fhem/FHEM/lib/FUIP/config</code>. (Dieser Punkt gilt nicht bzw. nicht genau so, wenn man die configDB benutzt.)<br />
* Steht etwas verdächtiges im Logfile?<br />
<br />
== Erste Schritte ==<br />
Zuerst legt man ein "FUIP Device" an, also etwa <code>define ui FUIP</code>. Dieses Device meldet sich sozusagen als Webserver bei FHEM an (wie z.B. auch [[HTTPSRV]]), d.h. es erscheint im Menu oben links (über den Räumen) ein Link "ui". Beim Klick auf diesen Link generiert FUIP eine FTUI Übersichtsseite aus den Räumen im FHEM System. (Das kann ein bisschen dauern, wenn man viele Devices hat.) Nun kann man durch Verschieben und größer/kleiner-Ziehen der einzelnen Zellen bzw. durch Verschieben des Zelleninhalts die Gestaltung ändern. Außerdem kann man über das Zahnrad rechts oben in den Zellen neuen Inhalt hinzufügen, den bestehenden Inhalt ändern und vieles mehr.<br />
Durch Klicken auf die Räume im Menu der Übersichtsseite werden einzelne Raum-Seiten generiert. Diese kann man ebenfalls entsprechend bearbeiten. Natürlich können auch eigene Seiten hinzugefügt werden. Wie das geht sieht man im Video, welches oben verlinkt ist.<br />
<br />
Nachdem man die Seiten entsprechend bearbeitet hat sollte man ein <code>set ui save</code> machen. Ansonsten gehen die Änderungen beim nächsten FHEM-Neustart verloren. Ein normales <code>save config</code> reicht nicht aus und ist auch nicht notwendig.<br />
<br />
Die folgenden detaillierten Informationen können zum Teil veraltet sein, da FUIP noch weitereintwickelt wird. Es sollten allerdings keine Funktionen verschwinden.<br />
<br />
== Das Konfigurations-Popup ==<br />
=== ...für Zellen ===<br />
[[Datei:FUIP_KonfigZelle.png|mini|600px]]<br />
Beim Klick auf das Zahnrad rechts oben in einer Zelle wird der Konfigurations-Dialog für diese Zelle geöffnet. Im Folgenden werden die Funktionen der einzelnen Elemente erklärt.<br />
;Zur Seiten-Konfiguration: Damit kann man zum Konfig-Dialog für die ganze Seite wechseln. <br />
;Zellen-Überschrift: Hier wird die Überschrift der Zelle festgelegt. Eine Zelle muss keine Überschrift haben. (Die Zahlen hinter der Überschrift in der Zelle selbst verschwinden, wenn man das Attribut ''locked'' setzt.)<br />
;Neuer View: Hiermit fügt man einen neuen View, also neuen Inhalt, zu einer Zelle hinzu. Man wählt dann aus, welcher Art View angelegt werden soll und füllt die Details, wie z.B. das zugehörige Device. Der neue View wird an einer freien Stelle (falls möglich) in der Zelle eingefügt. Nach schließen des Konfig-Dialogs kann man den View dann per Drag&Drop geeignet positionieren.<br />
;Neuer View (Device): Dies dient ebenfalls dazu, neue Views in die Zelle zu packen. Allerdings wählt man nicht die Art des Views aus, sondern die FHEM-Devices, die dargestellt werden sollen. Das System sucht dann jeweils einen geeigneten View aus. Bisher funktioniert das nur sehr eingeschränkt, hat aber den Vorteil, dass man gleich mehrere Devices auswählen kann.<br />
;Abbrechen: Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Details zum View: Hier klappt man die Details zum View aus und kann diese ändern. Was man damit genau machen kann kommt auf die Art des View an. Per Drag&Drop kann man auch die Reihenfolge der Views im Konfig-Dialog ändern. Das hat allerdings keinen Effekt auf die Positonierung bereits existierender Views in der Zelle. <br />
;View löschen: Das löscht den View aus der Zelle. Wenn man den View eigentlich nicht löschen, sondern in einer anderen Zelle haben will, dann kann man ihn auch per Drag&Drop in die andere Zelle verschieben. Lässt man einen View in einer anderen Zelle "fallen", dann wird dieser automatisch der neuen Zelle zugeordnet.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Auto-Anordnen: Hiermit kann man die einzelnen Views in der Zelle automatisch anordnen. Es kann momentan sein, dass dadurch Änderungen verloren gehen. D.h. dieser Button sollte nur benutzt werden, wenn man seit dem Öffnen des Dialogs keine Änderungen gemacht hat. Außerdem schließt der Button dan Dialog. FUIP ordnet die Views in der Reihenfolge an, in der sie im Konfig-Popup erscheinen. Das zugrunde liegende Layout ist sehr einfach gehalten und kann sich auch noch ändern. Diese Funktion ist vor Allem brauchbar für mehrere gleichartige Views in derselben Zelle, wie z.B. bei Menus. <br />
;Neue Zelle: Legt eine neue (leere) Zelle auf der aktuellen Seite an. Der Konfig-Dialog wird dabei geschlossen und Änderungen gehen verloren.<br />
;Zelle kopieren: Kopiert die aktuelle Zelle. Man muss eine Seite angeben, zu der die kopierte Zelle gehören soll. Das entsprechende Feld ist mit der aktuellen Seite vorbelegt. Falls man dies nicht ändert, wird einfach eine Kopie der Zelle auf derselben Seite erzeugt. Ansonsten wird die Zelle auf die angegebene Seite kopiert. Die Funktion schließt den Konfig-Dialog und Änderungen gehen verloren. Falls man eine andere Seite angegeben hat, wird zu dieser gewechselt.<br />
;Zelle exportieren: Dies erlaubt die Definition der Zelle herunterzuladen und auf dem Client (also dem Rechner, auf dem der Browser läuft) zu speichern.<br />
;Zelle importieren: Damit lädt man eine exportierte Zelle wieder hoch. FUIP erzeugt dann auf der aktuellen Seite eine neue Zelle mit dem entsprechenden Inhalt. Das funktioniert auch mit Zellen, die von einer anderen FUIP-Seite, einem anderen FUIP-Device oder von einer anderen FHEM-Installation kommen.<br />
;Zelle löschen: Damit löscht man die aktuelle Zelle. Sie verschwindet dann von der aktuellen Seite.<br />
;Toggle editOnly: Bei manchen Views ist es schwierig, sie mit der Maus "anzufassen", da sie sofort eine Aktion auslösen (z.B. bei Links). Mit "Toggle editOnly" wird eine graue "Schicht" über die Views gelegt. Dadurch weiß man besser, wo man den View anfassen kann und Mausklicks haben keine Wirkung mehr, außer Drag&Drop.<br />
<br />
=== ...für Seiten ===<br />
[[Datei:FUIP_SeitenKonfig.png|mini|600px]]<br />
Drückt man im Konfig-Dialog für Zellen auf "Cell/Page" kommt man auf den Konfig-Dialog für ganze Seiten. Die Bedeutung der Einzelnen Elemente ist wie folgt.<br />
;Zur Zellen-Konfiguration:Das bringt einen zurück zum Konfig-Dialog für Zellen.<br />
;Seiten-Überschrift:Hier kann ein Titel für die Seite eingetragen werden. Das erscheint dann je nach Browser irgendwo oben. (Technisch ist es der Inhalt des <title> Tags in <head>.)<br />
;Abbrechen:Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Seite kopieren:Dadurch wird eine neue Seite angelegt, die so aussieht wie die aktuelle. Der Dialog wird dann geschlossen und automatisch zur neuen Seite gesprungen.<br />
;Seite exportieren:Das ist dasselbe wie für Zellen, nur für die ganze aktuelle Seite.<br />
;Seite importieren:Das ist im Prinzip auch wie für Zellen, nur dass eine neue Seite angelegt wird. Exportierte Zellen können nur als Zellen importiert werden und exportierte Seiten nur als Seiten.<br />
<br />
== Das FUIP-Device ==<br />
Wie in [[#Erste Schritte|Erste Schritte]] bereits beschrieben, muss man zur Verwendung von FUIP zuerst ein FUIP-Device anlegen. Alles, was man mit FUIP macht (bzw. was das System macht) passiert in Bezug auf ein FUIP-Device. Man kann auch jederzeit mehrere FUIP-Devices anlegen. Verschiedene Instanzen von FUIP stören sich nicht gegenseitig, man kann aber (z.B. in einem Menu) auf eine andere FUIP-Instanz verweisen (verlinken).<br />
<br />
Das FUIP-Device hat die folgenden Eigenschaften.<br />
=== Sets ===<br />
Die folgenden set-Kommandos sind für den Benutzer gedacht. Es gibt noch weitere set-Kommandos, welche aber vor Allem für FUIP-interne Zwecke gedacht sind. Möglicherweise werden diese Kommandos sogar in Zukunft von der (FHEMWEB-) Oberfläche verschwinden.<br />
;save: Mit <code>set <name> save</code> wird der momentane Zustand der FUIP-Seiten zu diesem FUIP-Device gespeichert. Das betrifft nicht die Definition des FUIP-Device selbst (also auch nicht dessen Attribute). Diese müssen nach wie vor über <code>save</code> (also "Save config") gespeichert werden. Die FUIP-Seiten stehen in der Datei <fhem>/FHEM/lib/FUIP/config/FUIP_<name>.cfg. Dabei steht <fhem> in der Regel für /opt/fhem und <name> für den Namen des FUIP-Devices. Ohne ein <code>set <name> save</code> gehen alle Änderungen beim nächsten FHEM Restart verloren. <br />
;load: Mit <code>set <name> load</code> stellt man den Zustand wieder her, der mit <code>set <name> save</code> gespeichert wurde. Das ist vor Allem dann nützlich, wenn man sich beim Bearbeiten der Seiten vertan hat. Ansonsten wird beim FHEM Start das "load" automatisch ausgeführt. <br />
;pagedelete: Mit <code>set <name> pagedelete <page></code> wird die Seite <page> gelöscht. Das kann auch dazu genutzt werden, FUIP zum Neugenerieren einer Seite zu "zwingen", indem man die Seite nach dem Löschen einfach wieder aufruft. Auch das Löschen einer Seite geht ohne ein "save" verloren, d.h. die Seite ist dann nach einem FHEM Neustart wieder da. <br />
;refreshBuffer: FUIP verwendet Informationen aus dem "eigentlichen" FHEM, wie z.B. die Liste aller Devices sowie bestimmte Readings, Internals und Attribute. Insbesondere bei "entferntem" FUIP, also bei Verwendung des Attributs ''fhemwebUrl'', kann die Ermittlung dieser Daten länger dauern. Daher wird praktisch alles durch FUIP zwischengespeichert ("gepuffert"). Wenn man nun neue Devices anlegt bzw. bestehende Devices ändert, dann bekommt das FUIP-Device davon unter Umständen nichts mit. In so einem Fall kann man mit <code>set <name> refreshBuffer</code> den Zwischenspeicher löschen, um FUIP dazu zu zwingen, die Informationen erneut zu ermitteln.<br />
<br />
=== Gets ===<br />
Alle Get-Kommandos sind nur für FUIP-interne Zwecke bestimmt.<br />
<br />
=== Internals ===<br />
<br />
=== Readings ===<br />
<br />
=== Attribute ===<br />
<br />
== Links ==<br />
* {{Link2Forum|Topic=85869|LinkText=Foren-Thread zur Geburt von FUIP}}<br />
<br />
[[Kategorie:FHEM Frontends]]</div>Thorsten Pferdekämperhttp://wiki.fhem.de/w/index.php?title=FHEM_User_Interface_Painter&diff=27378FHEM User Interface Painter2018-07-10T13:26:10Z<p>Thorsten Pferdekämper: /* Sets */</p>
<hr />
<div>[[Datei:FUIP_Symbolbild.png|mini|400px|FUIP in Aktion]]<br />
Der '''FHEM User Interface Painter (FUIP)''' ist ein FHEM-Modul, mit dem man [[FHEM Tablet UI]] (FTUI) Seiten graphisch ("klickibunti") erstellen kann. D.h. man kann sich ein UI zusammenklicken, welches die Tablet UI Technik verwendet, aber ohne sich selbst unbedingt mit HTML und CSS herumschlagen zu müssen.<br />
Hier ist ein kurzes Video, welches FUIP in Aktion zeigt:<br />
<br />
[https://forum.fhem.de/index.php?action=dlattach;topic=85869.0;attach=98455 Einführungsvideo]<br />
<br />
(Das Video zeigt nicht unbedingt den neusten Stand, aber es dürfte klar werden, wofür FUIP gut sein soll.)<br />
<br />
== Installation und Upgrade in FHEM ==<br />
Genau wie FTUI ist auch FUIP nicht automatisch Teil von FHEM. Es muss explizit installiert bzw. hinzugefügt werden. Die Installation funktioniert folgendermaßen:<br />
* FUIP verwendet FTUI. D.h. man sollte zuerst einmal FTUI installieren, falls noch nicht passiert. Wie das geht steht bei [[FHEM Tablet UI#Installation|FHEM Tablet UI]]. Dabei reicht der erste Schritt aus, da lediglich die FTUI-Dateien von FUIP benötigt werden.<br />
* Dann das FUIP-Repository zum FHEM Update hinzufügen: <br />
** <code>update add https://raw.githubusercontent.com/ThorstenPferdekaemper/FHEM-FUIP/master/controls_fuip.txt</code><br />
* Jetzt <code>update all fuip</code> und <code>shutdown restart</code>. FUIP sollte jetzt installiert sein.<br />
<br />
Zum Upgrade reicht ein <code>update</code>, wenn man FUIP wie oben beschrieben installiert hat. Will man nur den FUIP-Teil aktualisieren und nicht alles in FHEM, dann geht das mit <code>update all fuip</code>.<br />
<br />
Falls es insbesondere beim Upgrade oder nach einem Upgrade Probleme gibt (welcher Art auch immer), sollten die folgenden Punkte geprüft werden:<br />
* Wird das richtige Repository benutzt? Man kann das mit <code>update list</code> überprüfen. Wenn der Eintrag für fuip nicht genau so aussieht wie oben beschrieben, dann sollte er per <code>update delete</code> gelöscht werden und dann genau so eingetragen werden wie oben beschrieben. <br />
* FHEM braucht Schreibrechte im Verzeichnis <fhem>/FHEM/lib/FUIP/config (<fhem> steht meistens für /opt/fhem) und allen enthaltenen Dateien. Auf Betriebssystemebene (Linux) kann man das mit <code>ls -ls</code> überprüfen. Meistens kann es mit folgendem Befehl repariert werden: <code>chown -R fhem:dialout /opt/fhem/FHEM/lib/FUIP/config</code>. (Dieser Punkt gilt nicht bzw. nicht genau so, wenn man die configDB benutzt.)<br />
* Steht etwas verdächtiges im Logfile?<br />
<br />
== Erste Schritte ==<br />
Zuerst legt man ein "FUIP Device" an, also etwa <code>define ui FUIP</code>. Dieses Device meldet sich sozusagen als Webserver bei FHEM an (wie z.B. auch [[HTTPSRV]]), d.h. es erscheint im Menu oben links (über den Räumen) ein Link "ui". Beim Klick auf diesen Link generiert FUIP eine FTUI Übersichtsseite aus den Räumen im FHEM System. (Das kann ein bisschen dauern, wenn man viele Devices hat.) Nun kann man durch Verschieben und größer/kleiner-Ziehen der einzelnen Zellen bzw. durch Verschieben des Zelleninhalts die Gestaltung ändern. Außerdem kann man über das Zahnrad rechts oben in den Zellen neuen Inhalt hinzufügen, den bestehenden Inhalt ändern und vieles mehr.<br />
Durch Klicken auf die Räume im Menu der Übersichtsseite werden einzelne Raum-Seiten generiert. Diese kann man ebenfalls entsprechend bearbeiten. Natürlich können auch eigene Seiten hinzugefügt werden. Wie das geht sieht man im Video, welches oben verlinkt ist.<br />
<br />
Nachdem man die Seiten entsprechend bearbeitet hat sollte man ein <code>set ui save</code> machen. Ansonsten gehen die Änderungen beim nächsten FHEM-Neustart verloren. Ein normales <code>save config</code> reicht nicht aus und ist auch nicht notwendig.<br />
<br />
Die folgenden detaillierten Informationen können zum Teil veraltet sein, da FUIP noch weitereintwickelt wird. Es sollten allerdings keine Funktionen verschwinden.<br />
<br />
== Das Konfigurations-Popup ==<br />
=== ...für Zellen ===<br />
[[Datei:FUIP_KonfigZelle.png|mini|600px]]<br />
Beim Klick auf das Zahnrad rechts oben in einer Zelle wird der Konfigurations-Dialog für diese Zelle geöffnet. Im Folgenden werden die Funktionen der einzelnen Elemente erklärt.<br />
;Zur Seiten-Konfiguration: Damit kann man zum Konfig-Dialog für die ganze Seite wechseln. <br />
;Zellen-Überschrift: Hier wird die Überschrift der Zelle festgelegt. Eine Zelle muss keine Überschrift haben. (Die Zahlen hinter der Überschrift in der Zelle selbst verschwinden, wenn man das Attribut ''locked'' setzt.)<br />
;Neuer View: Hiermit fügt man einen neuen View, also neuen Inhalt, zu einer Zelle hinzu. Man wählt dann aus, welcher Art View angelegt werden soll und füllt die Details, wie z.B. das zugehörige Device. Der neue View wird an einer freien Stelle (falls möglich) in der Zelle eingefügt. Nach schließen des Konfig-Dialogs kann man den View dann per Drag&Drop geeignet positionieren.<br />
;Neuer View (Device): Dies dient ebenfalls dazu, neue Views in die Zelle zu packen. Allerdings wählt man nicht die Art des Views aus, sondern die FHEM-Devices, die dargestellt werden sollen. Das System sucht dann jeweils einen geeigneten View aus. Bisher funktioniert das nur sehr eingeschränkt, hat aber den Vorteil, dass man gleich mehrere Devices auswählen kann.<br />
;Abbrechen: Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Details zum View: Hier klappt man die Details zum View aus und kann diese ändern. Was man damit genau machen kann kommt auf die Art des View an. Per Drag&Drop kann man auch die Reihenfolge der Views im Konfig-Dialog ändern. Das hat allerdings keinen Effekt auf die Positonierung bereits existierender Views in der Zelle. <br />
;View löschen: Das löscht den View aus der Zelle. Wenn man den View eigentlich nicht löschen, sondern in einer anderen Zelle haben will, dann kann man ihn auch per Drag&Drop in die andere Zelle verschieben. Lässt man einen View in einer anderen Zelle "fallen", dann wird dieser automatisch der neuen Zelle zugeordnet.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Auto-Anordnen: Hiermit kann man die einzelnen Views in der Zelle automatisch anordnen. Es kann momentan sein, dass dadurch Änderungen verloren gehen. D.h. dieser Button sollte nur benutzt werden, wenn man seit dem Öffnen des Dialogs keine Änderungen gemacht hat. Außerdem schließt der Button dan Dialog. FUIP ordnet die Views in der Reihenfolge an, in der sie im Konfig-Popup erscheinen. Das zugrunde liegende Layout ist sehr einfach gehalten und kann sich auch noch ändern. Diese Funktion ist vor Allem brauchbar für mehrere gleichartige Views in derselben Zelle, wie z.B. bei Menus. <br />
;Neue Zelle: Legt eine neue (leere) Zelle auf der aktuellen Seite an. Der Konfig-Dialog wird dabei geschlossen und Änderungen gehen verloren.<br />
;Zelle kopieren: Kopiert die aktuelle Zelle. Man muss eine Seite angeben, zu der die kopierte Zelle gehören soll. Das entsprechende Feld ist mit der aktuellen Seite vorbelegt. Falls man dies nicht ändert, wird einfach eine Kopie der Zelle auf derselben Seite erzeugt. Ansonsten wird die Zelle auf die angegebene Seite kopiert. Die Funktion schließt den Konfig-Dialog und Änderungen gehen verloren. Falls man eine andere Seite angegeben hat, wird zu dieser gewechselt.<br />
;Zelle exportieren: Dies erlaubt die Definition der Zelle herunterzuladen und auf dem Client (also dem Rechner, auf dem der Browser läuft) zu speichern.<br />
;Zelle importieren: Damit lädt man eine exportierte Zelle wieder hoch. FUIP erzeugt dann auf der aktuellen Seite eine neue Zelle mit dem entsprechenden Inhalt. Das funktioniert auch mit Zellen, die von einer anderen FUIP-Seite, einem anderen FUIP-Device oder von einer anderen FHEM-Installation kommen.<br />
;Zelle löschen: Damit löscht man die aktuelle Zelle. Sie verschwindet dann von der aktuellen Seite.<br />
;Toggle editOnly: Bei manchen Views ist es schwierig, sie mit der Maus "anzufassen", da sie sofort eine Aktion auslösen (z.B. bei Links). Mit "Toggle editOnly" wird eine graue "Schicht" über die Views gelegt. Dadurch weiß man besser, wo man den View anfassen kann und Mausklicks haben keine Wirkung mehr, außer Drag&Drop.<br />
<br />
=== ...für Seiten ===<br />
[[Datei:FUIP_SeitenKonfig.png|mini|600px]]<br />
Drückt man im Konfig-Dialog für Zellen auf "Cell/Page" kommt man auf den Konfig-Dialog für ganze Seiten. Die Bedeutung der Einzelnen Elemente ist wie folgt.<br />
;Zur Zellen-Konfiguration:Das bringt einen zurück zum Konfig-Dialog für Zellen.<br />
;Seiten-Überschrift:Hier kann ein Titel für die Seite eingetragen werden. Das erscheint dann je nach Browser irgendwo oben. (Technisch ist es der Inhalt des <title> Tags in <head>.)<br />
;Abbrechen:Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Seite kopieren:Dadurch wird eine neue Seite angelegt, die so aussieht wie die aktuelle. Der Dialog wird dann geschlossen und automatisch zur neuen Seite gesprungen.<br />
;Seite exportieren:Das ist dasselbe wie für Zellen, nur für die ganze aktuelle Seite.<br />
;Seite importieren:Das ist im Prinzip auch wie für Zellen, nur dass eine neue Seite angelegt wird. Exportierte Zellen können nur als Zellen importiert werden und exportierte Seiten nur als Seiten.<br />
<br />
== Das FUIP-Device ==<br />
Wie in [[#Erste Schritte|Erste Schritte]] bereits beschrieben, muss man zur Verwendung von FUIP zuerst ein FUIP-Device anlegen. Alles, was man mit FUIP macht (bzw. was das System macht) passiert in Bezug auf ein FUIP-Device. Man kann auch jederzeit mehrere FUIP-Devices anlegen. Verschiedene Instanzen von FUIP stören sich nicht gegenseitig, man kann aber (z.B. in einem Menu) auf eine andere FUIP-Instanz verweisen (verlinken).<br />
<br />
Das FUIP-Device hat die folgenden Eigenschaften.<br />
=== Sets ===<br />
Die folgenden set-Kommandos sind für den Benutzer gedacht. Es gibt noch weitere set-Kommandos, welche aber vor Allem für FUIP-interne Zwecke gedacht sind. Möglicherweise werden diese Kommandos sogar in Zukunft von der (FHEMWEB-) Oberfläche verschwinden.<br />
;save: Mit <code>set <name> save</code> wird der momentane Zustand der FUIP-Seiten zu diesem FUIP-Device gespeichert. Das betrifft nicht die Definition des FUIP-Device selbst (also auch nicht dessen Attribute). Diese müssen nach wie vor über <code>save</code> (also "Save config") gespeichert werden. Die FUIP-Seiten stehen in der Datei <fhem>/FHEM/lib/FUIP/config/FUIP_<name>.cfg. Dabei steht <fhem> in der Regel für /opt/fhem und <name> für den Namen des FUIP-Devices. Ohne ein <code>set <name> save</code> gehen alle Änderungen beim nächsten FHEM Restart verloren. <br />
;load: Mit <code>set <name> load</code> stellt man den Zustand wieder her, der mit <code>set <name> save</code> gespeichert wurde. Das ist vor Allem dann nützlich, wenn man sich beim Bearbeiten der Seiten vertan hat. Ansonsten wird beim FHEM Start das "load" automatisch ausgeführt. <br />
;pagedelete: Mit <code>set <name> pagedelete <page></code> wird die Seite <page> gelöscht. Das kann auch dazu genutzt werden, FUIP zum Neugenerieren einer Seite zu "zwingen", indem man die Seite nach dem Löschen einfach wieder aufruft. Auch das Löschen einer Seite geht ohne ein "save" verloren, d.h. die Seite ist dann nach einem FHEM Neustart wieder da. <br />
;refreshBuffer: FUIP verwendet Informationen aus dem "eigentlichen" FHEM, wie z.B. die Liste aller Devices sowie bestimmte Readings, Internals und Attribute. Insbesondere bei "entferntem" FUIP, also bei Verwendung des Attributs ''fhemwebUrl'', kann die Ermittlung dieser Daten länger dauern. Daher wird praktisch alles durch FUIP zwischengespeichert ("gepuffert"). Wenn man nun neue Devices anlegt bzw. bestehende Devices ändert, dann bekommt das FUIP-Device davon unter Umständen nichts mit. In so einem Fall kann man mit <code>set <name> refreshBuffer</code> den Zwischenspeicher löschen, um FUIP dazu zu zwingen, die Informationen erneut zu ermitteln.<br />
<br />
=== Gets ===<br />
<br />
<br />
=== Internals ===<br />
<br />
=== Readings ===<br />
<br />
=== Attribute ===<br />
<br />
== Links ==<br />
* {{Link2Forum|Topic=85869|LinkText=Foren-Thread zur Geburt von FUIP}}<br />
<br />
[[Kategorie:FHEM Frontends]]</div>Thorsten Pferdekämperhttp://wiki.fhem.de/w/index.php?title=FHEM_User_Interface_Painter&diff=27377FHEM User Interface Painter2018-07-10T13:25:53Z<p>Thorsten Pferdekämper: /* Das FUIP-Device */</p>
<hr />
<div>[[Datei:FUIP_Symbolbild.png|mini|400px|FUIP in Aktion]]<br />
Der '''FHEM User Interface Painter (FUIP)''' ist ein FHEM-Modul, mit dem man [[FHEM Tablet UI]] (FTUI) Seiten graphisch ("klickibunti") erstellen kann. D.h. man kann sich ein UI zusammenklicken, welches die Tablet UI Technik verwendet, aber ohne sich selbst unbedingt mit HTML und CSS herumschlagen zu müssen.<br />
Hier ist ein kurzes Video, welches FUIP in Aktion zeigt:<br />
<br />
[https://forum.fhem.de/index.php?action=dlattach;topic=85869.0;attach=98455 Einführungsvideo]<br />
<br />
(Das Video zeigt nicht unbedingt den neusten Stand, aber es dürfte klar werden, wofür FUIP gut sein soll.)<br />
<br />
== Installation und Upgrade in FHEM ==<br />
Genau wie FTUI ist auch FUIP nicht automatisch Teil von FHEM. Es muss explizit installiert bzw. hinzugefügt werden. Die Installation funktioniert folgendermaßen:<br />
* FUIP verwendet FTUI. D.h. man sollte zuerst einmal FTUI installieren, falls noch nicht passiert. Wie das geht steht bei [[FHEM Tablet UI#Installation|FHEM Tablet UI]]. Dabei reicht der erste Schritt aus, da lediglich die FTUI-Dateien von FUIP benötigt werden.<br />
* Dann das FUIP-Repository zum FHEM Update hinzufügen: <br />
** <code>update add https://raw.githubusercontent.com/ThorstenPferdekaemper/FHEM-FUIP/master/controls_fuip.txt</code><br />
* Jetzt <code>update all fuip</code> und <code>shutdown restart</code>. FUIP sollte jetzt installiert sein.<br />
<br />
Zum Upgrade reicht ein <code>update</code>, wenn man FUIP wie oben beschrieben installiert hat. Will man nur den FUIP-Teil aktualisieren und nicht alles in FHEM, dann geht das mit <code>update all fuip</code>.<br />
<br />
Falls es insbesondere beim Upgrade oder nach einem Upgrade Probleme gibt (welcher Art auch immer), sollten die folgenden Punkte geprüft werden:<br />
* Wird das richtige Repository benutzt? Man kann das mit <code>update list</code> überprüfen. Wenn der Eintrag für fuip nicht genau so aussieht wie oben beschrieben, dann sollte er per <code>update delete</code> gelöscht werden und dann genau so eingetragen werden wie oben beschrieben. <br />
* FHEM braucht Schreibrechte im Verzeichnis <fhem>/FHEM/lib/FUIP/config (<fhem> steht meistens für /opt/fhem) und allen enthaltenen Dateien. Auf Betriebssystemebene (Linux) kann man das mit <code>ls -ls</code> überprüfen. Meistens kann es mit folgendem Befehl repariert werden: <code>chown -R fhem:dialout /opt/fhem/FHEM/lib/FUIP/config</code>. (Dieser Punkt gilt nicht bzw. nicht genau so, wenn man die configDB benutzt.)<br />
* Steht etwas verdächtiges im Logfile?<br />
<br />
== Erste Schritte ==<br />
Zuerst legt man ein "FUIP Device" an, also etwa <code>define ui FUIP</code>. Dieses Device meldet sich sozusagen als Webserver bei FHEM an (wie z.B. auch [[HTTPSRV]]), d.h. es erscheint im Menu oben links (über den Räumen) ein Link "ui". Beim Klick auf diesen Link generiert FUIP eine FTUI Übersichtsseite aus den Räumen im FHEM System. (Das kann ein bisschen dauern, wenn man viele Devices hat.) Nun kann man durch Verschieben und größer/kleiner-Ziehen der einzelnen Zellen bzw. durch Verschieben des Zelleninhalts die Gestaltung ändern. Außerdem kann man über das Zahnrad rechts oben in den Zellen neuen Inhalt hinzufügen, den bestehenden Inhalt ändern und vieles mehr.<br />
Durch Klicken auf die Räume im Menu der Übersichtsseite werden einzelne Raum-Seiten generiert. Diese kann man ebenfalls entsprechend bearbeiten. Natürlich können auch eigene Seiten hinzugefügt werden. Wie das geht sieht man im Video, welches oben verlinkt ist.<br />
<br />
Nachdem man die Seiten entsprechend bearbeitet hat sollte man ein <code>set ui save</code> machen. Ansonsten gehen die Änderungen beim nächsten FHEM-Neustart verloren. Ein normales <code>save config</code> reicht nicht aus und ist auch nicht notwendig.<br />
<br />
Die folgenden detaillierten Informationen können zum Teil veraltet sein, da FUIP noch weitereintwickelt wird. Es sollten allerdings keine Funktionen verschwinden.<br />
<br />
== Das Konfigurations-Popup ==<br />
=== ...für Zellen ===<br />
[[Datei:FUIP_KonfigZelle.png|mini|600px]]<br />
Beim Klick auf das Zahnrad rechts oben in einer Zelle wird der Konfigurations-Dialog für diese Zelle geöffnet. Im Folgenden werden die Funktionen der einzelnen Elemente erklärt.<br />
;Zur Seiten-Konfiguration: Damit kann man zum Konfig-Dialog für die ganze Seite wechseln. <br />
;Zellen-Überschrift: Hier wird die Überschrift der Zelle festgelegt. Eine Zelle muss keine Überschrift haben. (Die Zahlen hinter der Überschrift in der Zelle selbst verschwinden, wenn man das Attribut ''locked'' setzt.)<br />
;Neuer View: Hiermit fügt man einen neuen View, also neuen Inhalt, zu einer Zelle hinzu. Man wählt dann aus, welcher Art View angelegt werden soll und füllt die Details, wie z.B. das zugehörige Device. Der neue View wird an einer freien Stelle (falls möglich) in der Zelle eingefügt. Nach schließen des Konfig-Dialogs kann man den View dann per Drag&Drop geeignet positionieren.<br />
;Neuer View (Device): Dies dient ebenfalls dazu, neue Views in die Zelle zu packen. Allerdings wählt man nicht die Art des Views aus, sondern die FHEM-Devices, die dargestellt werden sollen. Das System sucht dann jeweils einen geeigneten View aus. Bisher funktioniert das nur sehr eingeschränkt, hat aber den Vorteil, dass man gleich mehrere Devices auswählen kann.<br />
;Abbrechen: Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Details zum View: Hier klappt man die Details zum View aus und kann diese ändern. Was man damit genau machen kann kommt auf die Art des View an. Per Drag&Drop kann man auch die Reihenfolge der Views im Konfig-Dialog ändern. Das hat allerdings keinen Effekt auf die Positonierung bereits existierender Views in der Zelle. <br />
;View löschen: Das löscht den View aus der Zelle. Wenn man den View eigentlich nicht löschen, sondern in einer anderen Zelle haben will, dann kann man ihn auch per Drag&Drop in die andere Zelle verschieben. Lässt man einen View in einer anderen Zelle "fallen", dann wird dieser automatisch der neuen Zelle zugeordnet.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Auto-Anordnen: Hiermit kann man die einzelnen Views in der Zelle automatisch anordnen. Es kann momentan sein, dass dadurch Änderungen verloren gehen. D.h. dieser Button sollte nur benutzt werden, wenn man seit dem Öffnen des Dialogs keine Änderungen gemacht hat. Außerdem schließt der Button dan Dialog. FUIP ordnet die Views in der Reihenfolge an, in der sie im Konfig-Popup erscheinen. Das zugrunde liegende Layout ist sehr einfach gehalten und kann sich auch noch ändern. Diese Funktion ist vor Allem brauchbar für mehrere gleichartige Views in derselben Zelle, wie z.B. bei Menus. <br />
;Neue Zelle: Legt eine neue (leere) Zelle auf der aktuellen Seite an. Der Konfig-Dialog wird dabei geschlossen und Änderungen gehen verloren.<br />
;Zelle kopieren: Kopiert die aktuelle Zelle. Man muss eine Seite angeben, zu der die kopierte Zelle gehören soll. Das entsprechende Feld ist mit der aktuellen Seite vorbelegt. Falls man dies nicht ändert, wird einfach eine Kopie der Zelle auf derselben Seite erzeugt. Ansonsten wird die Zelle auf die angegebene Seite kopiert. Die Funktion schließt den Konfig-Dialog und Änderungen gehen verloren. Falls man eine andere Seite angegeben hat, wird zu dieser gewechselt.<br />
;Zelle exportieren: Dies erlaubt die Definition der Zelle herunterzuladen und auf dem Client (also dem Rechner, auf dem der Browser läuft) zu speichern.<br />
;Zelle importieren: Damit lädt man eine exportierte Zelle wieder hoch. FUIP erzeugt dann auf der aktuellen Seite eine neue Zelle mit dem entsprechenden Inhalt. Das funktioniert auch mit Zellen, die von einer anderen FUIP-Seite, einem anderen FUIP-Device oder von einer anderen FHEM-Installation kommen.<br />
;Zelle löschen: Damit löscht man die aktuelle Zelle. Sie verschwindet dann von der aktuellen Seite.<br />
;Toggle editOnly: Bei manchen Views ist es schwierig, sie mit der Maus "anzufassen", da sie sofort eine Aktion auslösen (z.B. bei Links). Mit "Toggle editOnly" wird eine graue "Schicht" über die Views gelegt. Dadurch weiß man besser, wo man den View anfassen kann und Mausklicks haben keine Wirkung mehr, außer Drag&Drop.<br />
<br />
=== ...für Seiten ===<br />
[[Datei:FUIP_SeitenKonfig.png|mini|600px]]<br />
Drückt man im Konfig-Dialog für Zellen auf "Cell/Page" kommt man auf den Konfig-Dialog für ganze Seiten. Die Bedeutung der Einzelnen Elemente ist wie folgt.<br />
;Zur Zellen-Konfiguration:Das bringt einen zurück zum Konfig-Dialog für Zellen.<br />
;Seiten-Überschrift:Hier kann ein Titel für die Seite eingetragen werden. Das erscheint dann je nach Browser irgendwo oben. (Technisch ist es der Inhalt des <title> Tags in <head>.)<br />
;Abbrechen:Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Seite kopieren:Dadurch wird eine neue Seite angelegt, die so aussieht wie die aktuelle. Der Dialog wird dann geschlossen und automatisch zur neuen Seite gesprungen.<br />
;Seite exportieren:Das ist dasselbe wie für Zellen, nur für die ganze aktuelle Seite.<br />
;Seite importieren:Das ist im Prinzip auch wie für Zellen, nur dass eine neue Seite angelegt wird. Exportierte Zellen können nur als Zellen importiert werden und exportierte Seiten nur als Seiten.<br />
<br />
== Das FUIP-Device ==<br />
Wie in [[#Erste Schritte|Erste Schritte]] bereits beschrieben, muss man zur Verwendung von FUIP zuerst ein FUIP-Device anlegen. Alles, was man mit FUIP macht (bzw. was das System macht) passiert in Bezug auf ein FUIP-Device. Man kann auch jederzeit mehrere FUIP-Devices anlegen. Verschiedene Instanzen von FUIP stören sich nicht gegenseitig, man kann aber (z.B. in einem Menu) auf eine andere FUIP-Instanz verweisen (verlinken).<br />
<br />
Das FUIP-Device hat die folgenden Eigenschaften.<br />
=== Sets ===<br />
Die folgenden set-Kommandos sind für den Benutzer gedacht. Es gibt noch weitere set-Kommandos, welche aber vor Allem für FUIP-interne Zwecke gedacht sind. Möglicherweise werden diese Kommandos sogar in Zukunft von der (FHEMWEB-) Oberfläche verschwinden.<br />
;save: Mit <code>set <name> save</code> wird der momentane Zustand der FUIP-Seiten zu diesem FUIP-Device gespeichert. Das betrifft nicht die Definition des FUIP-Device selbst (also auch nicht dessen Attribute). Diese müssen nach wie vor über <code>save</code> (also "Save config") gespeichert werden. Die FUIP-Seiten stehen in der Datei <fhem>/FHEM/lib/FUIP/config/FUIP_<name>.cfg. Dabei steht <fhem> in der Regel für /opt/fhem und <name> für den Namen des FUIP-Devices. Ohne ein <code>set <name> save</code> gehen alle Änderungen beim nächsten FHEM Restart verloren. <br />
;load: Mit <code>set <name> load</code> stellt man den Zustand wieder her, der mit <code>set <name> save</code> gespeichert wurde. Das ist vor Allem dann nützlich, wenn man sich beim Bearbeiten der Seiten vertan hat. Ansonsten wird beim FHEM Start das "load" automatisch ausgeführt. <br />
;pagedelete: Mit <code>set <name> pagedelete <page></code> wird die Seite <page> gelöscht. Das kann auch dazu genutzt werden, FUIP zum Neugenerieren einer Seite zu "zwingen", indem man die Seite nach dem Löschen einfach wieder aufruft. Auch das Löschen einer Seite geht ohne ein "save" verloren, d.h. die Seite ist dann nach einem FHEM Neustart wieder da. Möglicherweise verschwindet "pagedelete" demnächst aus der FHEMWEB-Oberfläche und wandert auf das Konfig-Popup für Seiten. <br />
;refreshBuffer: FUIP verwendet Informationen aus dem "eigentlichen" FHEM, wie z.B. die Liste aller Devices sowie bestimmte Readings, Internals und Attribute. Insbesondere bei "entferntem" FUIP, also bei Verwendung des Attributs ''fhemwebUrl'', kann die Ermittlung dieser Daten länger dauern. Daher wird praktisch alles durch FUIP zwischengespeichert ("gepuffert"). Wenn man nun neue Devices anlegt bzw. bestehende Devices ändert, dann bekommt das FUIP-Device davon unter Umständen nichts mit. In so einem Fall kann man mit <code>set <name> refreshBuffer</code> den Zwischenspeicher löschen, um FUIP dazu zu zwingen, die Informationen erneut zu ermitteln.<br />
<br />
=== Gets ===<br />
<br />
<br />
=== Internals ===<br />
<br />
=== Readings ===<br />
<br />
=== Attribute ===<br />
<br />
== Links ==<br />
* {{Link2Forum|Topic=85869|LinkText=Foren-Thread zur Geburt von FUIP}}<br />
<br />
[[Kategorie:FHEM Frontends]]</div>Thorsten Pferdekämperhttp://wiki.fhem.de/w/index.php?title=FHEM_User_Interface_Painter&diff=27376FHEM User Interface Painter2018-07-10T13:24:42Z<p>Thorsten Pferdekämper: /* Sets */</p>
<hr />
<div>[[Datei:FUIP_Symbolbild.png|mini|400px|FUIP in Aktion]]<br />
Der '''FHEM User Interface Painter (FUIP)''' ist ein FHEM-Modul, mit dem man [[FHEM Tablet UI]] (FTUI) Seiten graphisch ("klickibunti") erstellen kann. D.h. man kann sich ein UI zusammenklicken, welches die Tablet UI Technik verwendet, aber ohne sich selbst unbedingt mit HTML und CSS herumschlagen zu müssen.<br />
Hier ist ein kurzes Video, welches FUIP in Aktion zeigt:<br />
<br />
[https://forum.fhem.de/index.php?action=dlattach;topic=85869.0;attach=98455 Einführungsvideo]<br />
<br />
(Das Video zeigt nicht unbedingt den neusten Stand, aber es dürfte klar werden, wofür FUIP gut sein soll.)<br />
<br />
== Installation und Upgrade in FHEM ==<br />
Genau wie FTUI ist auch FUIP nicht automatisch Teil von FHEM. Es muss explizit installiert bzw. hinzugefügt werden. Die Installation funktioniert folgendermaßen:<br />
* FUIP verwendet FTUI. D.h. man sollte zuerst einmal FTUI installieren, falls noch nicht passiert. Wie das geht steht bei [[FHEM Tablet UI#Installation|FHEM Tablet UI]]. Dabei reicht der erste Schritt aus, da lediglich die FTUI-Dateien von FUIP benötigt werden.<br />
* Dann das FUIP-Repository zum FHEM Update hinzufügen: <br />
** <code>update add https://raw.githubusercontent.com/ThorstenPferdekaemper/FHEM-FUIP/master/controls_fuip.txt</code><br />
* Jetzt <code>update all fuip</code> und <code>shutdown restart</code>. FUIP sollte jetzt installiert sein.<br />
<br />
Zum Upgrade reicht ein <code>update</code>, wenn man FUIP wie oben beschrieben installiert hat. Will man nur den FUIP-Teil aktualisieren und nicht alles in FHEM, dann geht das mit <code>update all fuip</code>.<br />
<br />
Falls es insbesondere beim Upgrade oder nach einem Upgrade Probleme gibt (welcher Art auch immer), sollten die folgenden Punkte geprüft werden:<br />
* Wird das richtige Repository benutzt? Man kann das mit <code>update list</code> überprüfen. Wenn der Eintrag für fuip nicht genau so aussieht wie oben beschrieben, dann sollte er per <code>update delete</code> gelöscht werden und dann genau so eingetragen werden wie oben beschrieben. <br />
* FHEM braucht Schreibrechte im Verzeichnis <fhem>/FHEM/lib/FUIP/config (<fhem> steht meistens für /opt/fhem) und allen enthaltenen Dateien. Auf Betriebssystemebene (Linux) kann man das mit <code>ls -ls</code> überprüfen. Meistens kann es mit folgendem Befehl repariert werden: <code>chown -R fhem:dialout /opt/fhem/FHEM/lib/FUIP/config</code>. (Dieser Punkt gilt nicht bzw. nicht genau so, wenn man die configDB benutzt.)<br />
* Steht etwas verdächtiges im Logfile?<br />
<br />
== Erste Schritte ==<br />
Zuerst legt man ein "FUIP Device" an, also etwa <code>define ui FUIP</code>. Dieses Device meldet sich sozusagen als Webserver bei FHEM an (wie z.B. auch [[HTTPSRV]]), d.h. es erscheint im Menu oben links (über den Räumen) ein Link "ui". Beim Klick auf diesen Link generiert FUIP eine FTUI Übersichtsseite aus den Räumen im FHEM System. (Das kann ein bisschen dauern, wenn man viele Devices hat.) Nun kann man durch Verschieben und größer/kleiner-Ziehen der einzelnen Zellen bzw. durch Verschieben des Zelleninhalts die Gestaltung ändern. Außerdem kann man über das Zahnrad rechts oben in den Zellen neuen Inhalt hinzufügen, den bestehenden Inhalt ändern und vieles mehr.<br />
Durch Klicken auf die Räume im Menu der Übersichtsseite werden einzelne Raum-Seiten generiert. Diese kann man ebenfalls entsprechend bearbeiten. Natürlich können auch eigene Seiten hinzugefügt werden. Wie das geht sieht man im Video, welches oben verlinkt ist.<br />
<br />
Nachdem man die Seiten entsprechend bearbeitet hat sollte man ein <code>set ui save</code> machen. Ansonsten gehen die Änderungen beim nächsten FHEM-Neustart verloren. Ein normales <code>save config</code> reicht nicht aus und ist auch nicht notwendig.<br />
<br />
Die folgenden detaillierten Informationen können zum Teil veraltet sein, da FUIP noch weitereintwickelt wird. Es sollten allerdings keine Funktionen verschwinden.<br />
<br />
== Das Konfigurations-Popup ==<br />
=== ...für Zellen ===<br />
[[Datei:FUIP_KonfigZelle.png|mini|600px]]<br />
Beim Klick auf das Zahnrad rechts oben in einer Zelle wird der Konfigurations-Dialog für diese Zelle geöffnet. Im Folgenden werden die Funktionen der einzelnen Elemente erklärt.<br />
;Zur Seiten-Konfiguration: Damit kann man zum Konfig-Dialog für die ganze Seite wechseln. <br />
;Zellen-Überschrift: Hier wird die Überschrift der Zelle festgelegt. Eine Zelle muss keine Überschrift haben. (Die Zahlen hinter der Überschrift in der Zelle selbst verschwinden, wenn man das Attribut ''locked'' setzt.)<br />
;Neuer View: Hiermit fügt man einen neuen View, also neuen Inhalt, zu einer Zelle hinzu. Man wählt dann aus, welcher Art View angelegt werden soll und füllt die Details, wie z.B. das zugehörige Device. Der neue View wird an einer freien Stelle (falls möglich) in der Zelle eingefügt. Nach schließen des Konfig-Dialogs kann man den View dann per Drag&Drop geeignet positionieren.<br />
;Neuer View (Device): Dies dient ebenfalls dazu, neue Views in die Zelle zu packen. Allerdings wählt man nicht die Art des Views aus, sondern die FHEM-Devices, die dargestellt werden sollen. Das System sucht dann jeweils einen geeigneten View aus. Bisher funktioniert das nur sehr eingeschränkt, hat aber den Vorteil, dass man gleich mehrere Devices auswählen kann.<br />
;Abbrechen: Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Details zum View: Hier klappt man die Details zum View aus und kann diese ändern. Was man damit genau machen kann kommt auf die Art des View an. Per Drag&Drop kann man auch die Reihenfolge der Views im Konfig-Dialog ändern. Das hat allerdings keinen Effekt auf die Positonierung bereits existierender Views in der Zelle. <br />
;View löschen: Das löscht den View aus der Zelle. Wenn man den View eigentlich nicht löschen, sondern in einer anderen Zelle haben will, dann kann man ihn auch per Drag&Drop in die andere Zelle verschieben. Lässt man einen View in einer anderen Zelle "fallen", dann wird dieser automatisch der neuen Zelle zugeordnet.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Auto-Anordnen: Hiermit kann man die einzelnen Views in der Zelle automatisch anordnen. Es kann momentan sein, dass dadurch Änderungen verloren gehen. D.h. dieser Button sollte nur benutzt werden, wenn man seit dem Öffnen des Dialogs keine Änderungen gemacht hat. Außerdem schließt der Button dan Dialog. FUIP ordnet die Views in der Reihenfolge an, in der sie im Konfig-Popup erscheinen. Das zugrunde liegende Layout ist sehr einfach gehalten und kann sich auch noch ändern. Diese Funktion ist vor Allem brauchbar für mehrere gleichartige Views in derselben Zelle, wie z.B. bei Menus. <br />
;Neue Zelle: Legt eine neue (leere) Zelle auf der aktuellen Seite an. Der Konfig-Dialog wird dabei geschlossen und Änderungen gehen verloren.<br />
;Zelle kopieren: Kopiert die aktuelle Zelle. Man muss eine Seite angeben, zu der die kopierte Zelle gehören soll. Das entsprechende Feld ist mit der aktuellen Seite vorbelegt. Falls man dies nicht ändert, wird einfach eine Kopie der Zelle auf derselben Seite erzeugt. Ansonsten wird die Zelle auf die angegebene Seite kopiert. Die Funktion schließt den Konfig-Dialog und Änderungen gehen verloren. Falls man eine andere Seite angegeben hat, wird zu dieser gewechselt.<br />
;Zelle exportieren: Dies erlaubt die Definition der Zelle herunterzuladen und auf dem Client (also dem Rechner, auf dem der Browser läuft) zu speichern.<br />
;Zelle importieren: Damit lädt man eine exportierte Zelle wieder hoch. FUIP erzeugt dann auf der aktuellen Seite eine neue Zelle mit dem entsprechenden Inhalt. Das funktioniert auch mit Zellen, die von einer anderen FUIP-Seite, einem anderen FUIP-Device oder von einer anderen FHEM-Installation kommen.<br />
;Zelle löschen: Damit löscht man die aktuelle Zelle. Sie verschwindet dann von der aktuellen Seite.<br />
;Toggle editOnly: Bei manchen Views ist es schwierig, sie mit der Maus "anzufassen", da sie sofort eine Aktion auslösen (z.B. bei Links). Mit "Toggle editOnly" wird eine graue "Schicht" über die Views gelegt. Dadurch weiß man besser, wo man den View anfassen kann und Mausklicks haben keine Wirkung mehr, außer Drag&Drop.<br />
<br />
=== ...für Seiten ===<br />
[[Datei:FUIP_SeitenKonfig.png|mini|600px]]<br />
Drückt man im Konfig-Dialog für Zellen auf "Cell/Page" kommt man auf den Konfig-Dialog für ganze Seiten. Die Bedeutung der Einzelnen Elemente ist wie folgt.<br />
;Zur Zellen-Konfiguration:Das bringt einen zurück zum Konfig-Dialog für Zellen.<br />
;Seiten-Überschrift:Hier kann ein Titel für die Seite eingetragen werden. Das erscheint dann je nach Browser irgendwo oben. (Technisch ist es der Inhalt des <title> Tags in <head>.)<br />
;Abbrechen:Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Seite kopieren:Dadurch wird eine neue Seite angelegt, die so aussieht wie die aktuelle. Der Dialog wird dann geschlossen und automatisch zur neuen Seite gesprungen.<br />
;Seite exportieren:Das ist dasselbe wie für Zellen, nur für die ganze aktuelle Seite.<br />
;Seite importieren:Das ist im Prinzip auch wie für Zellen, nur dass eine neue Seite angelegt wird. Exportierte Zellen können nur als Zellen importiert werden und exportierte Seiten nur als Seiten.<br />
<br />
== Das FUIP-Device ==<br />
Wie in [[#Erste Schritte|Erste Schritte]] bereits beschrieben, muss man zur Verwendung von FUIP zuerst ein FUIP-Device anlegen. Alles, was man mit FUIP macht (bzw. was das System macht) passiert in Bezug auf ein FUIP-Device. Man kann auch jederzeit mehrere FUIP-Devices anlegen. Verschiedene Instanzen von FUIP stören sich nicht gegenseitig, man kann aber (z.B. in einem Menu) auf eine andere FUIP-Instanz verweisen (verlinken).<br />
<br />
Das FUIP-Device hat die folgenden Eigenschaften.<br />
=== Sets ===<br />
Die folgenden set-Kommandos sind für den Benutzer gedacht. Es gibt noch weitere set-Kommandos, welche aber vor Allem für FUIP-interne Zwecke gedacht sind. Möglicherweise werden diese Kommandos sogar in Zukunft von der (FHEMWEB-) Oberfläche verschwinden.<br />
;save: Mit <code>set <name> save</code> wird der momentane Zustand der FUIP-Seiten zu diesem FUIP-Device gespeichert. Das betrifft nicht die Definition des FUIP-Device selbst (also auch nicht dessen Attribute). Diese müssen nach wie vor über <code>save</code> (also "Save config") gespeichert werden. Die FUIP-Seiten stehen in der Datei <fhem>/FHEM/lib/FUIP/config/FUIP_<name>.cfg. Dabei steht <fhem> in der Regel für /opt/fhem und <name> für den Namen des FUIP-Devices. Ohne ein <code>set <name> save</code> gehen alle Änderungen beim nächsten FHEM Restart verloren. <br />
;load: Mit <code>set <name> load</code> stellt man den Zustand wieder her, der mit <code>set <name> save</code> gespeichert wurde. Das ist vor Allem dann nützlich, wenn man sich beim Bearbeiten der Seiten vertan hat. Ansonsten wird beim FHEM Start das "load" automatisch ausgeführt. <br />
;pagedelete: Mit <code>set <name> pagedelete <page></code> wird die Seite <page> gelöscht. Das kann auch dazu genutzt werden, FUIP zum Neugenerieren einer Seite zu "zwingen", indem man die Seite nach dem Löschen einfach wieder aufruft. Auch das Löschen einer Seite geht ohne ein "save" verloren, d.h. die Seite ist dann nach einem FHEM Neustart wieder da.<br />
;refreshBuffer: FUIP verwendet Informationen aus dem "eigentlichen" FHEM, wie z.B. die Liste aller Devices sowie bestimmte Readings, Internals und Attribute. Insbesondere bei "entferntem" FUIP, also bei Verwendung des Attributs ''fhemwebUrl'', kann die Ermittlung dieser Daten länger dauern. Daher wird praktisch alles durch FUIP zwischengespeichert ("gepuffert"). Wenn man nun neue Devices anlegt bzw. bestehende Devices ändert, dann bekommt das FUIP-Device davon unter Umständen nichts mit. In so einem Fall kann man mit <code>set <name> refreshBuffer</code> den Zwischenspeicher löschen, um FUIP dazu zu zwingen, die Informationen erneut zu ermitteln.<br />
<br />
=== Gets ===<br />
<br />
<br />
=== Internals ===<br />
<br />
=== Readings ===<br />
<br />
=== Attribute ===<br />
<br />
== Links ==<br />
* {{Link2Forum|Topic=85869|LinkText=Foren-Thread zur Geburt von FUIP}}<br />
<br />
[[Kategorie:FHEM Frontends]]</div>Thorsten Pferdekämperhttp://wiki.fhem.de/w/index.php?title=FHEM_User_Interface_Painter&diff=27375FHEM User Interface Painter2018-07-10T13:24:25Z<p>Thorsten Pferdekämper: /* Sets */</p>
<hr />
<div>[[Datei:FUIP_Symbolbild.png|mini|400px|FUIP in Aktion]]<br />
Der '''FHEM User Interface Painter (FUIP)''' ist ein FHEM-Modul, mit dem man [[FHEM Tablet UI]] (FTUI) Seiten graphisch ("klickibunti") erstellen kann. D.h. man kann sich ein UI zusammenklicken, welches die Tablet UI Technik verwendet, aber ohne sich selbst unbedingt mit HTML und CSS herumschlagen zu müssen.<br />
Hier ist ein kurzes Video, welches FUIP in Aktion zeigt:<br />
<br />
[https://forum.fhem.de/index.php?action=dlattach;topic=85869.0;attach=98455 Einführungsvideo]<br />
<br />
(Das Video zeigt nicht unbedingt den neusten Stand, aber es dürfte klar werden, wofür FUIP gut sein soll.)<br />
<br />
== Installation und Upgrade in FHEM ==<br />
Genau wie FTUI ist auch FUIP nicht automatisch Teil von FHEM. Es muss explizit installiert bzw. hinzugefügt werden. Die Installation funktioniert folgendermaßen:<br />
* FUIP verwendet FTUI. D.h. man sollte zuerst einmal FTUI installieren, falls noch nicht passiert. Wie das geht steht bei [[FHEM Tablet UI#Installation|FHEM Tablet UI]]. Dabei reicht der erste Schritt aus, da lediglich die FTUI-Dateien von FUIP benötigt werden.<br />
* Dann das FUIP-Repository zum FHEM Update hinzufügen: <br />
** <code>update add https://raw.githubusercontent.com/ThorstenPferdekaemper/FHEM-FUIP/master/controls_fuip.txt</code><br />
* Jetzt <code>update all fuip</code> und <code>shutdown restart</code>. FUIP sollte jetzt installiert sein.<br />
<br />
Zum Upgrade reicht ein <code>update</code>, wenn man FUIP wie oben beschrieben installiert hat. Will man nur den FUIP-Teil aktualisieren und nicht alles in FHEM, dann geht das mit <code>update all fuip</code>.<br />
<br />
Falls es insbesondere beim Upgrade oder nach einem Upgrade Probleme gibt (welcher Art auch immer), sollten die folgenden Punkte geprüft werden:<br />
* Wird das richtige Repository benutzt? Man kann das mit <code>update list</code> überprüfen. Wenn der Eintrag für fuip nicht genau so aussieht wie oben beschrieben, dann sollte er per <code>update delete</code> gelöscht werden und dann genau so eingetragen werden wie oben beschrieben. <br />
* FHEM braucht Schreibrechte im Verzeichnis <fhem>/FHEM/lib/FUIP/config (<fhem> steht meistens für /opt/fhem) und allen enthaltenen Dateien. Auf Betriebssystemebene (Linux) kann man das mit <code>ls -ls</code> überprüfen. Meistens kann es mit folgendem Befehl repariert werden: <code>chown -R fhem:dialout /opt/fhem/FHEM/lib/FUIP/config</code>. (Dieser Punkt gilt nicht bzw. nicht genau so, wenn man die configDB benutzt.)<br />
* Steht etwas verdächtiges im Logfile?<br />
<br />
== Erste Schritte ==<br />
Zuerst legt man ein "FUIP Device" an, also etwa <code>define ui FUIP</code>. Dieses Device meldet sich sozusagen als Webserver bei FHEM an (wie z.B. auch [[HTTPSRV]]), d.h. es erscheint im Menu oben links (über den Räumen) ein Link "ui". Beim Klick auf diesen Link generiert FUIP eine FTUI Übersichtsseite aus den Räumen im FHEM System. (Das kann ein bisschen dauern, wenn man viele Devices hat.) Nun kann man durch Verschieben und größer/kleiner-Ziehen der einzelnen Zellen bzw. durch Verschieben des Zelleninhalts die Gestaltung ändern. Außerdem kann man über das Zahnrad rechts oben in den Zellen neuen Inhalt hinzufügen, den bestehenden Inhalt ändern und vieles mehr.<br />
Durch Klicken auf die Räume im Menu der Übersichtsseite werden einzelne Raum-Seiten generiert. Diese kann man ebenfalls entsprechend bearbeiten. Natürlich können auch eigene Seiten hinzugefügt werden. Wie das geht sieht man im Video, welches oben verlinkt ist.<br />
<br />
Nachdem man die Seiten entsprechend bearbeitet hat sollte man ein <code>set ui save</code> machen. Ansonsten gehen die Änderungen beim nächsten FHEM-Neustart verloren. Ein normales <code>save config</code> reicht nicht aus und ist auch nicht notwendig.<br />
<br />
Die folgenden detaillierten Informationen können zum Teil veraltet sein, da FUIP noch weitereintwickelt wird. Es sollten allerdings keine Funktionen verschwinden.<br />
<br />
== Das Konfigurations-Popup ==<br />
=== ...für Zellen ===<br />
[[Datei:FUIP_KonfigZelle.png|mini|600px]]<br />
Beim Klick auf das Zahnrad rechts oben in einer Zelle wird der Konfigurations-Dialog für diese Zelle geöffnet. Im Folgenden werden die Funktionen der einzelnen Elemente erklärt.<br />
;Zur Seiten-Konfiguration: Damit kann man zum Konfig-Dialog für die ganze Seite wechseln. <br />
;Zellen-Überschrift: Hier wird die Überschrift der Zelle festgelegt. Eine Zelle muss keine Überschrift haben. (Die Zahlen hinter der Überschrift in der Zelle selbst verschwinden, wenn man das Attribut ''locked'' setzt.)<br />
;Neuer View: Hiermit fügt man einen neuen View, also neuen Inhalt, zu einer Zelle hinzu. Man wählt dann aus, welcher Art View angelegt werden soll und füllt die Details, wie z.B. das zugehörige Device. Der neue View wird an einer freien Stelle (falls möglich) in der Zelle eingefügt. Nach schließen des Konfig-Dialogs kann man den View dann per Drag&Drop geeignet positionieren.<br />
;Neuer View (Device): Dies dient ebenfalls dazu, neue Views in die Zelle zu packen. Allerdings wählt man nicht die Art des Views aus, sondern die FHEM-Devices, die dargestellt werden sollen. Das System sucht dann jeweils einen geeigneten View aus. Bisher funktioniert das nur sehr eingeschränkt, hat aber den Vorteil, dass man gleich mehrere Devices auswählen kann.<br />
;Abbrechen: Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Details zum View: Hier klappt man die Details zum View aus und kann diese ändern. Was man damit genau machen kann kommt auf die Art des View an. Per Drag&Drop kann man auch die Reihenfolge der Views im Konfig-Dialog ändern. Das hat allerdings keinen Effekt auf die Positonierung bereits existierender Views in der Zelle. <br />
;View löschen: Das löscht den View aus der Zelle. Wenn man den View eigentlich nicht löschen, sondern in einer anderen Zelle haben will, dann kann man ihn auch per Drag&Drop in die andere Zelle verschieben. Lässt man einen View in einer anderen Zelle "fallen", dann wird dieser automatisch der neuen Zelle zugeordnet.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Auto-Anordnen: Hiermit kann man die einzelnen Views in der Zelle automatisch anordnen. Es kann momentan sein, dass dadurch Änderungen verloren gehen. D.h. dieser Button sollte nur benutzt werden, wenn man seit dem Öffnen des Dialogs keine Änderungen gemacht hat. Außerdem schließt der Button dan Dialog. FUIP ordnet die Views in der Reihenfolge an, in der sie im Konfig-Popup erscheinen. Das zugrunde liegende Layout ist sehr einfach gehalten und kann sich auch noch ändern. Diese Funktion ist vor Allem brauchbar für mehrere gleichartige Views in derselben Zelle, wie z.B. bei Menus. <br />
;Neue Zelle: Legt eine neue (leere) Zelle auf der aktuellen Seite an. Der Konfig-Dialog wird dabei geschlossen und Änderungen gehen verloren.<br />
;Zelle kopieren: Kopiert die aktuelle Zelle. Man muss eine Seite angeben, zu der die kopierte Zelle gehören soll. Das entsprechende Feld ist mit der aktuellen Seite vorbelegt. Falls man dies nicht ändert, wird einfach eine Kopie der Zelle auf derselben Seite erzeugt. Ansonsten wird die Zelle auf die angegebene Seite kopiert. Die Funktion schließt den Konfig-Dialog und Änderungen gehen verloren. Falls man eine andere Seite angegeben hat, wird zu dieser gewechselt.<br />
;Zelle exportieren: Dies erlaubt die Definition der Zelle herunterzuladen und auf dem Client (also dem Rechner, auf dem der Browser läuft) zu speichern.<br />
;Zelle importieren: Damit lädt man eine exportierte Zelle wieder hoch. FUIP erzeugt dann auf der aktuellen Seite eine neue Zelle mit dem entsprechenden Inhalt. Das funktioniert auch mit Zellen, die von einer anderen FUIP-Seite, einem anderen FUIP-Device oder von einer anderen FHEM-Installation kommen.<br />
;Zelle löschen: Damit löscht man die aktuelle Zelle. Sie verschwindet dann von der aktuellen Seite.<br />
;Toggle editOnly: Bei manchen Views ist es schwierig, sie mit der Maus "anzufassen", da sie sofort eine Aktion auslösen (z.B. bei Links). Mit "Toggle editOnly" wird eine graue "Schicht" über die Views gelegt. Dadurch weiß man besser, wo man den View anfassen kann und Mausklicks haben keine Wirkung mehr, außer Drag&Drop.<br />
<br />
=== ...für Seiten ===<br />
[[Datei:FUIP_SeitenKonfig.png|mini|600px]]<br />
Drückt man im Konfig-Dialog für Zellen auf "Cell/Page" kommt man auf den Konfig-Dialog für ganze Seiten. Die Bedeutung der Einzelnen Elemente ist wie folgt.<br />
;Zur Zellen-Konfiguration:Das bringt einen zurück zum Konfig-Dialog für Zellen.<br />
;Seiten-Überschrift:Hier kann ein Titel für die Seite eingetragen werden. Das erscheint dann je nach Browser irgendwo oben. (Technisch ist es der Inhalt des <title> Tags in <head>.)<br />
;Abbrechen:Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Seite kopieren:Dadurch wird eine neue Seite angelegt, die so aussieht wie die aktuelle. Der Dialog wird dann geschlossen und automatisch zur neuen Seite gesprungen.<br />
;Seite exportieren:Das ist dasselbe wie für Zellen, nur für die ganze aktuelle Seite.<br />
;Seite importieren:Das ist im Prinzip auch wie für Zellen, nur dass eine neue Seite angelegt wird. Exportierte Zellen können nur als Zellen importiert werden und exportierte Seiten nur als Seiten.<br />
<br />
== Das FUIP-Device ==<br />
Wie in [[#Erste Schritte|Erste Schritte]] bereits beschrieben, muss man zur Verwendung von FUIP zuerst ein FUIP-Device anlegen. Alles, was man mit FUIP macht (bzw. was das System macht) passiert in Bezug auf ein FUIP-Device. Man kann auch jederzeit mehrere FUIP-Devices anlegen. Verschiedene Instanzen von FUIP stören sich nicht gegenseitig, man kann aber (z.B. in einem Menu) auf eine andere FUIP-Instanz verweisen (verlinken).<br />
<br />
Das FUIP-Device hat die folgenden Eigenschaften.<br />
=== Sets ===<br />
Die folgenden set-Kommandos sind für den Benutzer gedacht. Es gibt noch weitere set-Kommandos, welche aber vor Allem für FUIP-interne Zwecke gedacht sind. Möglicherweise werden diese Kommandos sogar in Zukunft von der (FHEMWEB-) Oberfläche verschwinden.<br />
;save: Mit <code>set <name> save</code> wird der momentane Zustand der FUIP-Seiten zu diesem FUIP-Device gespeichert. Das betrifft nicht die Definition des FUIP-Device selbst (also auch nicht dessen Attribute). Diese müssen nach wie vor über <code>save</code> (also "Save config") gespeichert werden. Die FUIP-Seiten stehen in der Datei <fhem>/FHEM/lib/FUIP/config/FUIP_<name>.cfg. Dabei steht <fhem> in der Regel für /opt/fhem und <name> für den Namen des FUIP-Devices. Ohne ein <code>set <name> save</code> gehen alle Änderungen beim nächsten FHEM Restart verloren. <br />
;load: Mit <code>set <name> load</code> stellt man den Zustand wieder her, der mit <code>set <name> save</code> gespeichert wurde. Das ist vor Allem dann nützlich, wenn man sich beim Bearbeiten der Seiten vertan hat. Ansonsten wird beim FHEM Start das "load" automatisch ausgeführt. <br />
;pagedelete: Mit <code>set <name> pagedelete <page></code> wird die Seite <page> gelöscht. Das kann auch dazu genutzt werden, FUIP zum Neugenerieren einer Seite zu "zwingen", indem man die Seite nach dem Löschen einfach wieder aufruft. Auch das Löschen einer Seite geht ohne ein "save" verloren, d.h. die Seite ist dann nach einem FHEM Neustart wieder da.<br />
;refreshBuffer: FUIP verwendet Informationen aus dem "eigentlichen" FHEM, wie z.B. die Liste aller Devices sowie bestimmte Readings, Internals und Attribute. Insbesondere bei "entferntem" FUIP, also bei Verwendung des Attributs ''fhemwebUrl'', kann die Ermittlung dieser Daten länger dauern. Daher wird praktisch alles durch FUIP zwischengespeichert ("gebuffert"). Wenn man nun neue Devices anlegt bzw. bestehende Devices ändert, dann bekommt das FUIP-Device davon unter Umständen nichts mit. In so einem Fall kann man mit <code>set <name> refreshBuffer</code> den Zwischenspeicher löschen, um FUIP dazu zu zwingen, die Informationen erneut zu ermitteln.<br />
<br />
=== Gets ===<br />
<br />
<br />
=== Internals ===<br />
<br />
=== Readings ===<br />
<br />
=== Attribute ===<br />
<br />
== Links ==<br />
* {{Link2Forum|Topic=85869|LinkText=Foren-Thread zur Geburt von FUIP}}<br />
<br />
[[Kategorie:FHEM Frontends]]</div>Thorsten Pferdekämperhttp://wiki.fhem.de/w/index.php?title=FHEM_User_Interface_Painter&diff=27374FHEM User Interface Painter2018-07-10T13:19:59Z<p>Thorsten Pferdekämper: /* Sets */</p>
<hr />
<div>[[Datei:FUIP_Symbolbild.png|mini|400px|FUIP in Aktion]]<br />
Der '''FHEM User Interface Painter (FUIP)''' ist ein FHEM-Modul, mit dem man [[FHEM Tablet UI]] (FTUI) Seiten graphisch ("klickibunti") erstellen kann. D.h. man kann sich ein UI zusammenklicken, welches die Tablet UI Technik verwendet, aber ohne sich selbst unbedingt mit HTML und CSS herumschlagen zu müssen.<br />
Hier ist ein kurzes Video, welches FUIP in Aktion zeigt:<br />
<br />
[https://forum.fhem.de/index.php?action=dlattach;topic=85869.0;attach=98455 Einführungsvideo]<br />
<br />
(Das Video zeigt nicht unbedingt den neusten Stand, aber es dürfte klar werden, wofür FUIP gut sein soll.)<br />
<br />
== Installation und Upgrade in FHEM ==<br />
Genau wie FTUI ist auch FUIP nicht automatisch Teil von FHEM. Es muss explizit installiert bzw. hinzugefügt werden. Die Installation funktioniert folgendermaßen:<br />
* FUIP verwendet FTUI. D.h. man sollte zuerst einmal FTUI installieren, falls noch nicht passiert. Wie das geht steht bei [[FHEM Tablet UI#Installation|FHEM Tablet UI]]. Dabei reicht der erste Schritt aus, da lediglich die FTUI-Dateien von FUIP benötigt werden.<br />
* Dann das FUIP-Repository zum FHEM Update hinzufügen: <br />
** <code>update add https://raw.githubusercontent.com/ThorstenPferdekaemper/FHEM-FUIP/master/controls_fuip.txt</code><br />
* Jetzt <code>update all fuip</code> und <code>shutdown restart</code>. FUIP sollte jetzt installiert sein.<br />
<br />
Zum Upgrade reicht ein <code>update</code>, wenn man FUIP wie oben beschrieben installiert hat. Will man nur den FUIP-Teil aktualisieren und nicht alles in FHEM, dann geht das mit <code>update all fuip</code>.<br />
<br />
Falls es insbesondere beim Upgrade oder nach einem Upgrade Probleme gibt (welcher Art auch immer), sollten die folgenden Punkte geprüft werden:<br />
* Wird das richtige Repository benutzt? Man kann das mit <code>update list</code> überprüfen. Wenn der Eintrag für fuip nicht genau so aussieht wie oben beschrieben, dann sollte er per <code>update delete</code> gelöscht werden und dann genau so eingetragen werden wie oben beschrieben. <br />
* FHEM braucht Schreibrechte im Verzeichnis <fhem>/FHEM/lib/FUIP/config (<fhem> steht meistens für /opt/fhem) und allen enthaltenen Dateien. Auf Betriebssystemebene (Linux) kann man das mit <code>ls -ls</code> überprüfen. Meistens kann es mit folgendem Befehl repariert werden: <code>chown -R fhem:dialout /opt/fhem/FHEM/lib/FUIP/config</code>. (Dieser Punkt gilt nicht bzw. nicht genau so, wenn man die configDB benutzt.)<br />
* Steht etwas verdächtiges im Logfile?<br />
<br />
== Erste Schritte ==<br />
Zuerst legt man ein "FUIP Device" an, also etwa <code>define ui FUIP</code>. Dieses Device meldet sich sozusagen als Webserver bei FHEM an (wie z.B. auch [[HTTPSRV]]), d.h. es erscheint im Menu oben links (über den Räumen) ein Link "ui". Beim Klick auf diesen Link generiert FUIP eine FTUI Übersichtsseite aus den Räumen im FHEM System. (Das kann ein bisschen dauern, wenn man viele Devices hat.) Nun kann man durch Verschieben und größer/kleiner-Ziehen der einzelnen Zellen bzw. durch Verschieben des Zelleninhalts die Gestaltung ändern. Außerdem kann man über das Zahnrad rechts oben in den Zellen neuen Inhalt hinzufügen, den bestehenden Inhalt ändern und vieles mehr.<br />
Durch Klicken auf die Räume im Menu der Übersichtsseite werden einzelne Raum-Seiten generiert. Diese kann man ebenfalls entsprechend bearbeiten. Natürlich können auch eigene Seiten hinzugefügt werden. Wie das geht sieht man im Video, welches oben verlinkt ist.<br />
<br />
Nachdem man die Seiten entsprechend bearbeitet hat sollte man ein <code>set ui save</code> machen. Ansonsten gehen die Änderungen beim nächsten FHEM-Neustart verloren. Ein normales <code>save config</code> reicht nicht aus und ist auch nicht notwendig.<br />
<br />
Die folgenden detaillierten Informationen können zum Teil veraltet sein, da FUIP noch weitereintwickelt wird. Es sollten allerdings keine Funktionen verschwinden.<br />
<br />
== Das Konfigurations-Popup ==<br />
=== ...für Zellen ===<br />
[[Datei:FUIP_KonfigZelle.png|mini|600px]]<br />
Beim Klick auf das Zahnrad rechts oben in einer Zelle wird der Konfigurations-Dialog für diese Zelle geöffnet. Im Folgenden werden die Funktionen der einzelnen Elemente erklärt.<br />
;Zur Seiten-Konfiguration: Damit kann man zum Konfig-Dialog für die ganze Seite wechseln. <br />
;Zellen-Überschrift: Hier wird die Überschrift der Zelle festgelegt. Eine Zelle muss keine Überschrift haben. (Die Zahlen hinter der Überschrift in der Zelle selbst verschwinden, wenn man das Attribut ''locked'' setzt.)<br />
;Neuer View: Hiermit fügt man einen neuen View, also neuen Inhalt, zu einer Zelle hinzu. Man wählt dann aus, welcher Art View angelegt werden soll und füllt die Details, wie z.B. das zugehörige Device. Der neue View wird an einer freien Stelle (falls möglich) in der Zelle eingefügt. Nach schließen des Konfig-Dialogs kann man den View dann per Drag&Drop geeignet positionieren.<br />
;Neuer View (Device): Dies dient ebenfalls dazu, neue Views in die Zelle zu packen. Allerdings wählt man nicht die Art des Views aus, sondern die FHEM-Devices, die dargestellt werden sollen. Das System sucht dann jeweils einen geeigneten View aus. Bisher funktioniert das nur sehr eingeschränkt, hat aber den Vorteil, dass man gleich mehrere Devices auswählen kann.<br />
;Abbrechen: Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Details zum View: Hier klappt man die Details zum View aus und kann diese ändern. Was man damit genau machen kann kommt auf die Art des View an. Per Drag&Drop kann man auch die Reihenfolge der Views im Konfig-Dialog ändern. Das hat allerdings keinen Effekt auf die Positonierung bereits existierender Views in der Zelle. <br />
;View löschen: Das löscht den View aus der Zelle. Wenn man den View eigentlich nicht löschen, sondern in einer anderen Zelle haben will, dann kann man ihn auch per Drag&Drop in die andere Zelle verschieben. Lässt man einen View in einer anderen Zelle "fallen", dann wird dieser automatisch der neuen Zelle zugeordnet.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Auto-Anordnen: Hiermit kann man die einzelnen Views in der Zelle automatisch anordnen. Es kann momentan sein, dass dadurch Änderungen verloren gehen. D.h. dieser Button sollte nur benutzt werden, wenn man seit dem Öffnen des Dialogs keine Änderungen gemacht hat. Außerdem schließt der Button dan Dialog. FUIP ordnet die Views in der Reihenfolge an, in der sie im Konfig-Popup erscheinen. Das zugrunde liegende Layout ist sehr einfach gehalten und kann sich auch noch ändern. Diese Funktion ist vor Allem brauchbar für mehrere gleichartige Views in derselben Zelle, wie z.B. bei Menus. <br />
;Neue Zelle: Legt eine neue (leere) Zelle auf der aktuellen Seite an. Der Konfig-Dialog wird dabei geschlossen und Änderungen gehen verloren.<br />
;Zelle kopieren: Kopiert die aktuelle Zelle. Man muss eine Seite angeben, zu der die kopierte Zelle gehören soll. Das entsprechende Feld ist mit der aktuellen Seite vorbelegt. Falls man dies nicht ändert, wird einfach eine Kopie der Zelle auf derselben Seite erzeugt. Ansonsten wird die Zelle auf die angegebene Seite kopiert. Die Funktion schließt den Konfig-Dialog und Änderungen gehen verloren. Falls man eine andere Seite angegeben hat, wird zu dieser gewechselt.<br />
;Zelle exportieren: Dies erlaubt die Definition der Zelle herunterzuladen und auf dem Client (also dem Rechner, auf dem der Browser läuft) zu speichern.<br />
;Zelle importieren: Damit lädt man eine exportierte Zelle wieder hoch. FUIP erzeugt dann auf der aktuellen Seite eine neue Zelle mit dem entsprechenden Inhalt. Das funktioniert auch mit Zellen, die von einer anderen FUIP-Seite, einem anderen FUIP-Device oder von einer anderen FHEM-Installation kommen.<br />
;Zelle löschen: Damit löscht man die aktuelle Zelle. Sie verschwindet dann von der aktuellen Seite.<br />
;Toggle editOnly: Bei manchen Views ist es schwierig, sie mit der Maus "anzufassen", da sie sofort eine Aktion auslösen (z.B. bei Links). Mit "Toggle editOnly" wird eine graue "Schicht" über die Views gelegt. Dadurch weiß man besser, wo man den View anfassen kann und Mausklicks haben keine Wirkung mehr, außer Drag&Drop.<br />
<br />
=== ...für Seiten ===<br />
[[Datei:FUIP_SeitenKonfig.png|mini|600px]]<br />
Drückt man im Konfig-Dialog für Zellen auf "Cell/Page" kommt man auf den Konfig-Dialog für ganze Seiten. Die Bedeutung der Einzelnen Elemente ist wie folgt.<br />
;Zur Zellen-Konfiguration:Das bringt einen zurück zum Konfig-Dialog für Zellen.<br />
;Seiten-Überschrift:Hier kann ein Titel für die Seite eingetragen werden. Das erscheint dann je nach Browser irgendwo oben. (Technisch ist es der Inhalt des <title> Tags in <head>.)<br />
;Abbrechen:Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Seite kopieren:Dadurch wird eine neue Seite angelegt, die so aussieht wie die aktuelle. Der Dialog wird dann geschlossen und automatisch zur neuen Seite gesprungen.<br />
;Seite exportieren:Das ist dasselbe wie für Zellen, nur für die ganze aktuelle Seite.<br />
;Seite importieren:Das ist im Prinzip auch wie für Zellen, nur dass eine neue Seite angelegt wird. Exportierte Zellen können nur als Zellen importiert werden und exportierte Seiten nur als Seiten.<br />
<br />
== Das FUIP-Device ==<br />
Wie in [[#Erste Schritte|Erste Schritte]] bereits beschrieben, muss man zur Verwendung von FUIP zuerst ein FUIP-Device anlegen. Alles, was man mit FUIP macht (bzw. was das System macht) passiert in Bezug auf ein FUIP-Device. Man kann auch jederzeit mehrere FUIP-Devices anlegen. Verschiedene Instanzen von FUIP stören sich nicht gegenseitig, man kann aber (z.B. in einem Menu) auf eine andere FUIP-Instanz verweisen (verlinken).<br />
<br />
Das FUIP-Device hat die folgenden Eigenschaften.<br />
=== Sets ===<br />
Die folgenden set-Kommandos sind für den Benutzer gedacht. Es gibt noch weitere set-Kommandos, welche aber vor Allem für FUIP-interne Zwecke gedacht sind. Möglicherweise werden diese Kommandos sogar in Zukunft von der (FHEMWEB-) Oberfläche verschwinden.<br />
;save: Mit <code>set <name> save</code> wird der momentane Zustand der FUIP-Seiten zu diesem FUIP-Device gespeichert. Das betrifft nicht die Definition des FUIP-Device selbst (also auch nicht dessen Attribute). Diese müssen nach wie vor über <code>save</code> (also "Save config") gespeichert werden. Die FUIP-Seiten stehen in der Datei <fhem>/FHEM/lib/FUIP/config/FUIP_<name>.cfg. Dabei steht <fhem> in der Regel für /opt/fhem und <name> für den Namen des FUIP-Devices. Ohne ein <code>set <name> save</code> gehen alle Änderungen beim nächsten FHEM Restart verloren. <br />
;load: Mit <code>set <name> load</code> stellt man den Zustand wieder her, der mit <code>set <name> save</code> gespeichert wurde. Das ist vor Allem dann nützlich, wenn man sich beim Bearbeiten der Seiten vertan hat. Ansonsten wird beim FHEM Start das "load" automatisch ausgeführt. <br />
;pagedelete: Mit <code>set <name> pagedelete <page></code> wird die Seite <page> gelöscht. Das kann auch dazu genutzt werden, FUIP zum Neugenerieren einer Seite zu "zwingen", indem man die Seite nach dem Löschen einfach wieder aufruft. Auch das Löschen einer Seite geht ohne ein "save" verloren, d.h. die Seite ist dann nach einem FHEM Neustart wieder da.<br />
;refreshBuffer:<br />
<br />
=== Gets ===<br />
<br />
<br />
=== Internals ===<br />
<br />
=== Readings ===<br />
<br />
=== Attribute ===<br />
<br />
== Links ==<br />
* {{Link2Forum|Topic=85869|LinkText=Foren-Thread zur Geburt von FUIP}}<br />
<br />
[[Kategorie:FHEM Frontends]]</div>Thorsten Pferdekämperhttp://wiki.fhem.de/w/index.php?title=FHEM_User_Interface_Painter&diff=27373FHEM User Interface Painter2018-07-10T13:19:36Z<p>Thorsten Pferdekämper: /* Sets */</p>
<hr />
<div>[[Datei:FUIP_Symbolbild.png|mini|400px|FUIP in Aktion]]<br />
Der '''FHEM User Interface Painter (FUIP)''' ist ein FHEM-Modul, mit dem man [[FHEM Tablet UI]] (FTUI) Seiten graphisch ("klickibunti") erstellen kann. D.h. man kann sich ein UI zusammenklicken, welches die Tablet UI Technik verwendet, aber ohne sich selbst unbedingt mit HTML und CSS herumschlagen zu müssen.<br />
Hier ist ein kurzes Video, welches FUIP in Aktion zeigt:<br />
<br />
[https://forum.fhem.de/index.php?action=dlattach;topic=85869.0;attach=98455 Einführungsvideo]<br />
<br />
(Das Video zeigt nicht unbedingt den neusten Stand, aber es dürfte klar werden, wofür FUIP gut sein soll.)<br />
<br />
== Installation und Upgrade in FHEM ==<br />
Genau wie FTUI ist auch FUIP nicht automatisch Teil von FHEM. Es muss explizit installiert bzw. hinzugefügt werden. Die Installation funktioniert folgendermaßen:<br />
* FUIP verwendet FTUI. D.h. man sollte zuerst einmal FTUI installieren, falls noch nicht passiert. Wie das geht steht bei [[FHEM Tablet UI#Installation|FHEM Tablet UI]]. Dabei reicht der erste Schritt aus, da lediglich die FTUI-Dateien von FUIP benötigt werden.<br />
* Dann das FUIP-Repository zum FHEM Update hinzufügen: <br />
** <code>update add https://raw.githubusercontent.com/ThorstenPferdekaemper/FHEM-FUIP/master/controls_fuip.txt</code><br />
* Jetzt <code>update all fuip</code> und <code>shutdown restart</code>. FUIP sollte jetzt installiert sein.<br />
<br />
Zum Upgrade reicht ein <code>update</code>, wenn man FUIP wie oben beschrieben installiert hat. Will man nur den FUIP-Teil aktualisieren und nicht alles in FHEM, dann geht das mit <code>update all fuip</code>.<br />
<br />
Falls es insbesondere beim Upgrade oder nach einem Upgrade Probleme gibt (welcher Art auch immer), sollten die folgenden Punkte geprüft werden:<br />
* Wird das richtige Repository benutzt? Man kann das mit <code>update list</code> überprüfen. Wenn der Eintrag für fuip nicht genau so aussieht wie oben beschrieben, dann sollte er per <code>update delete</code> gelöscht werden und dann genau so eingetragen werden wie oben beschrieben. <br />
* FHEM braucht Schreibrechte im Verzeichnis <fhem>/FHEM/lib/FUIP/config (<fhem> steht meistens für /opt/fhem) und allen enthaltenen Dateien. Auf Betriebssystemebene (Linux) kann man das mit <code>ls -ls</code> überprüfen. Meistens kann es mit folgendem Befehl repariert werden: <code>chown -R fhem:dialout /opt/fhem/FHEM/lib/FUIP/config</code>. (Dieser Punkt gilt nicht bzw. nicht genau so, wenn man die configDB benutzt.)<br />
* Steht etwas verdächtiges im Logfile?<br />
<br />
== Erste Schritte ==<br />
Zuerst legt man ein "FUIP Device" an, also etwa <code>define ui FUIP</code>. Dieses Device meldet sich sozusagen als Webserver bei FHEM an (wie z.B. auch [[HTTPSRV]]), d.h. es erscheint im Menu oben links (über den Räumen) ein Link "ui". Beim Klick auf diesen Link generiert FUIP eine FTUI Übersichtsseite aus den Räumen im FHEM System. (Das kann ein bisschen dauern, wenn man viele Devices hat.) Nun kann man durch Verschieben und größer/kleiner-Ziehen der einzelnen Zellen bzw. durch Verschieben des Zelleninhalts die Gestaltung ändern. Außerdem kann man über das Zahnrad rechts oben in den Zellen neuen Inhalt hinzufügen, den bestehenden Inhalt ändern und vieles mehr.<br />
Durch Klicken auf die Räume im Menu der Übersichtsseite werden einzelne Raum-Seiten generiert. Diese kann man ebenfalls entsprechend bearbeiten. Natürlich können auch eigene Seiten hinzugefügt werden. Wie das geht sieht man im Video, welches oben verlinkt ist.<br />
<br />
Nachdem man die Seiten entsprechend bearbeitet hat sollte man ein <code>set ui save</code> machen. Ansonsten gehen die Änderungen beim nächsten FHEM-Neustart verloren. Ein normales <code>save config</code> reicht nicht aus und ist auch nicht notwendig.<br />
<br />
Die folgenden detaillierten Informationen können zum Teil veraltet sein, da FUIP noch weitereintwickelt wird. Es sollten allerdings keine Funktionen verschwinden.<br />
<br />
== Das Konfigurations-Popup ==<br />
=== ...für Zellen ===<br />
[[Datei:FUIP_KonfigZelle.png|mini|600px]]<br />
Beim Klick auf das Zahnrad rechts oben in einer Zelle wird der Konfigurations-Dialog für diese Zelle geöffnet. Im Folgenden werden die Funktionen der einzelnen Elemente erklärt.<br />
;Zur Seiten-Konfiguration: Damit kann man zum Konfig-Dialog für die ganze Seite wechseln. <br />
;Zellen-Überschrift: Hier wird die Überschrift der Zelle festgelegt. Eine Zelle muss keine Überschrift haben. (Die Zahlen hinter der Überschrift in der Zelle selbst verschwinden, wenn man das Attribut ''locked'' setzt.)<br />
;Neuer View: Hiermit fügt man einen neuen View, also neuen Inhalt, zu einer Zelle hinzu. Man wählt dann aus, welcher Art View angelegt werden soll und füllt die Details, wie z.B. das zugehörige Device. Der neue View wird an einer freien Stelle (falls möglich) in der Zelle eingefügt. Nach schließen des Konfig-Dialogs kann man den View dann per Drag&Drop geeignet positionieren.<br />
;Neuer View (Device): Dies dient ebenfalls dazu, neue Views in die Zelle zu packen. Allerdings wählt man nicht die Art des Views aus, sondern die FHEM-Devices, die dargestellt werden sollen. Das System sucht dann jeweils einen geeigneten View aus. Bisher funktioniert das nur sehr eingeschränkt, hat aber den Vorteil, dass man gleich mehrere Devices auswählen kann.<br />
;Abbrechen: Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Details zum View: Hier klappt man die Details zum View aus und kann diese ändern. Was man damit genau machen kann kommt auf die Art des View an. Per Drag&Drop kann man auch die Reihenfolge der Views im Konfig-Dialog ändern. Das hat allerdings keinen Effekt auf die Positonierung bereits existierender Views in der Zelle. <br />
;View löschen: Das löscht den View aus der Zelle. Wenn man den View eigentlich nicht löschen, sondern in einer anderen Zelle haben will, dann kann man ihn auch per Drag&Drop in die andere Zelle verschieben. Lässt man einen View in einer anderen Zelle "fallen", dann wird dieser automatisch der neuen Zelle zugeordnet.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Auto-Anordnen: Hiermit kann man die einzelnen Views in der Zelle automatisch anordnen. Es kann momentan sein, dass dadurch Änderungen verloren gehen. D.h. dieser Button sollte nur benutzt werden, wenn man seit dem Öffnen des Dialogs keine Änderungen gemacht hat. Außerdem schließt der Button dan Dialog. FUIP ordnet die Views in der Reihenfolge an, in der sie im Konfig-Popup erscheinen. Das zugrunde liegende Layout ist sehr einfach gehalten und kann sich auch noch ändern. Diese Funktion ist vor Allem brauchbar für mehrere gleichartige Views in derselben Zelle, wie z.B. bei Menus. <br />
;Neue Zelle: Legt eine neue (leere) Zelle auf der aktuellen Seite an. Der Konfig-Dialog wird dabei geschlossen und Änderungen gehen verloren.<br />
;Zelle kopieren: Kopiert die aktuelle Zelle. Man muss eine Seite angeben, zu der die kopierte Zelle gehören soll. Das entsprechende Feld ist mit der aktuellen Seite vorbelegt. Falls man dies nicht ändert, wird einfach eine Kopie der Zelle auf derselben Seite erzeugt. Ansonsten wird die Zelle auf die angegebene Seite kopiert. Die Funktion schließt den Konfig-Dialog und Änderungen gehen verloren. Falls man eine andere Seite angegeben hat, wird zu dieser gewechselt.<br />
;Zelle exportieren: Dies erlaubt die Definition der Zelle herunterzuladen und auf dem Client (also dem Rechner, auf dem der Browser läuft) zu speichern.<br />
;Zelle importieren: Damit lädt man eine exportierte Zelle wieder hoch. FUIP erzeugt dann auf der aktuellen Seite eine neue Zelle mit dem entsprechenden Inhalt. Das funktioniert auch mit Zellen, die von einer anderen FUIP-Seite, einem anderen FUIP-Device oder von einer anderen FHEM-Installation kommen.<br />
;Zelle löschen: Damit löscht man die aktuelle Zelle. Sie verschwindet dann von der aktuellen Seite.<br />
;Toggle editOnly: Bei manchen Views ist es schwierig, sie mit der Maus "anzufassen", da sie sofort eine Aktion auslösen (z.B. bei Links). Mit "Toggle editOnly" wird eine graue "Schicht" über die Views gelegt. Dadurch weiß man besser, wo man den View anfassen kann und Mausklicks haben keine Wirkung mehr, außer Drag&Drop.<br />
<br />
=== ...für Seiten ===<br />
[[Datei:FUIP_SeitenKonfig.png|mini|600px]]<br />
Drückt man im Konfig-Dialog für Zellen auf "Cell/Page" kommt man auf den Konfig-Dialog für ganze Seiten. Die Bedeutung der Einzelnen Elemente ist wie folgt.<br />
;Zur Zellen-Konfiguration:Das bringt einen zurück zum Konfig-Dialog für Zellen.<br />
;Seiten-Überschrift:Hier kann ein Titel für die Seite eingetragen werden. Das erscheint dann je nach Browser irgendwo oben. (Technisch ist es der Inhalt des <title> Tags in <head>.)<br />
;Abbrechen:Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Seite kopieren:Dadurch wird eine neue Seite angelegt, die so aussieht wie die aktuelle. Der Dialog wird dann geschlossen und automatisch zur neuen Seite gesprungen.<br />
;Seite exportieren:Das ist dasselbe wie für Zellen, nur für die ganze aktuelle Seite.<br />
;Seite importieren:Das ist im Prinzip auch wie für Zellen, nur dass eine neue Seite angelegt wird. Exportierte Zellen können nur als Zellen importiert werden und exportierte Seiten nur als Seiten.<br />
<br />
== Das FUIP-Device ==<br />
Wie in [[#Erste Schritte|Erste Schritte]] bereits beschrieben, muss man zur Verwendung von FUIP zuerst ein FUIP-Device anlegen. Alles, was man mit FUIP macht (bzw. was das System macht) passiert in Bezug auf ein FUIP-Device. Man kann auch jederzeit mehrere FUIP-Devices anlegen. Verschiedene Instanzen von FUIP stören sich nicht gegenseitig, man kann aber (z.B. in einem Menu) auf eine andere FUIP-Instanz verweisen (verlinken).<br />
<br />
Das FUIP-Device hat die folgenden Eigenschaften.<br />
=== Sets ===<br />
Die folgenden set-Kommandos sind für den Benutzer gedacht. Es gibt noch weitere set-Kommandos, welche aber vor Allem für FUIP-interne Zwecke gedacht sind. Möglicherweise werden diese Kommandos sogar in Zukunft von der (FHEMWEB-) Oberfläche verschwinden.<br />
;save: Mit <code>set <name> save</code> wird der momentane Zustand der FUIP-Seiten zu diesem FUIP-Device gespeichert. Das betrifft nicht die Definition des FUIP-Device selbst (also auch nicht dessen Attribute). Diese müssen nach wie vor über <code>save</code> (also "Save config") gespeichert werden. Die FUIP-Seiten stehen in der Datei <fhem>/FHEM/lib/FUIP/config/FUIP_<name>.cfg. Dabei steht <fhem> in der Regel für /opt/fhem und <name> für den Namen des FUIP-Devices. Ohne ein <code>set <name> save</code> gehen alle Änderungen beim nächsten FHEM Restart verloren. <br />
;load: Mit <code>set <name> load</code> stellt man den Zustand wieder her, der mit <code>set <name> save</code> gespeichert wurde. Das ist vor Allem dann nützlich, wenn man sich beim Bearbeiten der Seiten vertan hat. Ansonsten wird beim FHEM Start das "load" automatisch ausgeführt. <br />
;pagedelete: Mit <code>set <name> pagedelete <page></code> wird die Seite <page> gelöscht. Das kann auch dazu genutzt werden, FUIP zum Neugenerieren einer Seite zu "zwingen", indem man die Seite nach dem Löschen einfach wieder aufruft. Auch das Löschen einer Seite geht ohne ein "save" verloren.<br />
;refreshBuffer:<br />
<br />
=== Gets ===<br />
<br />
<br />
=== Internals ===<br />
<br />
=== Readings ===<br />
<br />
=== Attribute ===<br />
<br />
== Links ==<br />
* {{Link2Forum|Topic=85869|LinkText=Foren-Thread zur Geburt von FUIP}}<br />
<br />
[[Kategorie:FHEM Frontends]]</div>Thorsten Pferdekämperhttp://wiki.fhem.de/w/index.php?title=FHEM_User_Interface_Painter&diff=27372FHEM User Interface Painter2018-07-10T13:17:08Z<p>Thorsten Pferdekämper: /* Sets */</p>
<hr />
<div>[[Datei:FUIP_Symbolbild.png|mini|400px|FUIP in Aktion]]<br />
Der '''FHEM User Interface Painter (FUIP)''' ist ein FHEM-Modul, mit dem man [[FHEM Tablet UI]] (FTUI) Seiten graphisch ("klickibunti") erstellen kann. D.h. man kann sich ein UI zusammenklicken, welches die Tablet UI Technik verwendet, aber ohne sich selbst unbedingt mit HTML und CSS herumschlagen zu müssen.<br />
Hier ist ein kurzes Video, welches FUIP in Aktion zeigt:<br />
<br />
[https://forum.fhem.de/index.php?action=dlattach;topic=85869.0;attach=98455 Einführungsvideo]<br />
<br />
(Das Video zeigt nicht unbedingt den neusten Stand, aber es dürfte klar werden, wofür FUIP gut sein soll.)<br />
<br />
== Installation und Upgrade in FHEM ==<br />
Genau wie FTUI ist auch FUIP nicht automatisch Teil von FHEM. Es muss explizit installiert bzw. hinzugefügt werden. Die Installation funktioniert folgendermaßen:<br />
* FUIP verwendet FTUI. D.h. man sollte zuerst einmal FTUI installieren, falls noch nicht passiert. Wie das geht steht bei [[FHEM Tablet UI#Installation|FHEM Tablet UI]]. Dabei reicht der erste Schritt aus, da lediglich die FTUI-Dateien von FUIP benötigt werden.<br />
* Dann das FUIP-Repository zum FHEM Update hinzufügen: <br />
** <code>update add https://raw.githubusercontent.com/ThorstenPferdekaemper/FHEM-FUIP/master/controls_fuip.txt</code><br />
* Jetzt <code>update all fuip</code> und <code>shutdown restart</code>. FUIP sollte jetzt installiert sein.<br />
<br />
Zum Upgrade reicht ein <code>update</code>, wenn man FUIP wie oben beschrieben installiert hat. Will man nur den FUIP-Teil aktualisieren und nicht alles in FHEM, dann geht das mit <code>update all fuip</code>.<br />
<br />
Falls es insbesondere beim Upgrade oder nach einem Upgrade Probleme gibt (welcher Art auch immer), sollten die folgenden Punkte geprüft werden:<br />
* Wird das richtige Repository benutzt? Man kann das mit <code>update list</code> überprüfen. Wenn der Eintrag für fuip nicht genau so aussieht wie oben beschrieben, dann sollte er per <code>update delete</code> gelöscht werden und dann genau so eingetragen werden wie oben beschrieben. <br />
* FHEM braucht Schreibrechte im Verzeichnis <fhem>/FHEM/lib/FUIP/config (<fhem> steht meistens für /opt/fhem) und allen enthaltenen Dateien. Auf Betriebssystemebene (Linux) kann man das mit <code>ls -ls</code> überprüfen. Meistens kann es mit folgendem Befehl repariert werden: <code>chown -R fhem:dialout /opt/fhem/FHEM/lib/FUIP/config</code>. (Dieser Punkt gilt nicht bzw. nicht genau so, wenn man die configDB benutzt.)<br />
* Steht etwas verdächtiges im Logfile?<br />
<br />
== Erste Schritte ==<br />
Zuerst legt man ein "FUIP Device" an, also etwa <code>define ui FUIP</code>. Dieses Device meldet sich sozusagen als Webserver bei FHEM an (wie z.B. auch [[HTTPSRV]]), d.h. es erscheint im Menu oben links (über den Räumen) ein Link "ui". Beim Klick auf diesen Link generiert FUIP eine FTUI Übersichtsseite aus den Räumen im FHEM System. (Das kann ein bisschen dauern, wenn man viele Devices hat.) Nun kann man durch Verschieben und größer/kleiner-Ziehen der einzelnen Zellen bzw. durch Verschieben des Zelleninhalts die Gestaltung ändern. Außerdem kann man über das Zahnrad rechts oben in den Zellen neuen Inhalt hinzufügen, den bestehenden Inhalt ändern und vieles mehr.<br />
Durch Klicken auf die Räume im Menu der Übersichtsseite werden einzelne Raum-Seiten generiert. Diese kann man ebenfalls entsprechend bearbeiten. Natürlich können auch eigene Seiten hinzugefügt werden. Wie das geht sieht man im Video, welches oben verlinkt ist.<br />
<br />
Nachdem man die Seiten entsprechend bearbeitet hat sollte man ein <code>set ui save</code> machen. Ansonsten gehen die Änderungen beim nächsten FHEM-Neustart verloren. Ein normales <code>save config</code> reicht nicht aus und ist auch nicht notwendig.<br />
<br />
Die folgenden detaillierten Informationen können zum Teil veraltet sein, da FUIP noch weitereintwickelt wird. Es sollten allerdings keine Funktionen verschwinden.<br />
<br />
== Das Konfigurations-Popup ==<br />
=== ...für Zellen ===<br />
[[Datei:FUIP_KonfigZelle.png|mini|600px]]<br />
Beim Klick auf das Zahnrad rechts oben in einer Zelle wird der Konfigurations-Dialog für diese Zelle geöffnet. Im Folgenden werden die Funktionen der einzelnen Elemente erklärt.<br />
;Zur Seiten-Konfiguration: Damit kann man zum Konfig-Dialog für die ganze Seite wechseln. <br />
;Zellen-Überschrift: Hier wird die Überschrift der Zelle festgelegt. Eine Zelle muss keine Überschrift haben. (Die Zahlen hinter der Überschrift in der Zelle selbst verschwinden, wenn man das Attribut ''locked'' setzt.)<br />
;Neuer View: Hiermit fügt man einen neuen View, also neuen Inhalt, zu einer Zelle hinzu. Man wählt dann aus, welcher Art View angelegt werden soll und füllt die Details, wie z.B. das zugehörige Device. Der neue View wird an einer freien Stelle (falls möglich) in der Zelle eingefügt. Nach schließen des Konfig-Dialogs kann man den View dann per Drag&Drop geeignet positionieren.<br />
;Neuer View (Device): Dies dient ebenfalls dazu, neue Views in die Zelle zu packen. Allerdings wählt man nicht die Art des Views aus, sondern die FHEM-Devices, die dargestellt werden sollen. Das System sucht dann jeweils einen geeigneten View aus. Bisher funktioniert das nur sehr eingeschränkt, hat aber den Vorteil, dass man gleich mehrere Devices auswählen kann.<br />
;Abbrechen: Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Details zum View: Hier klappt man die Details zum View aus und kann diese ändern. Was man damit genau machen kann kommt auf die Art des View an. Per Drag&Drop kann man auch die Reihenfolge der Views im Konfig-Dialog ändern. Das hat allerdings keinen Effekt auf die Positonierung bereits existierender Views in der Zelle. <br />
;View löschen: Das löscht den View aus der Zelle. Wenn man den View eigentlich nicht löschen, sondern in einer anderen Zelle haben will, dann kann man ihn auch per Drag&Drop in die andere Zelle verschieben. Lässt man einen View in einer anderen Zelle "fallen", dann wird dieser automatisch der neuen Zelle zugeordnet.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Auto-Anordnen: Hiermit kann man die einzelnen Views in der Zelle automatisch anordnen. Es kann momentan sein, dass dadurch Änderungen verloren gehen. D.h. dieser Button sollte nur benutzt werden, wenn man seit dem Öffnen des Dialogs keine Änderungen gemacht hat. Außerdem schließt der Button dan Dialog. FUIP ordnet die Views in der Reihenfolge an, in der sie im Konfig-Popup erscheinen. Das zugrunde liegende Layout ist sehr einfach gehalten und kann sich auch noch ändern. Diese Funktion ist vor Allem brauchbar für mehrere gleichartige Views in derselben Zelle, wie z.B. bei Menus. <br />
;Neue Zelle: Legt eine neue (leere) Zelle auf der aktuellen Seite an. Der Konfig-Dialog wird dabei geschlossen und Änderungen gehen verloren.<br />
;Zelle kopieren: Kopiert die aktuelle Zelle. Man muss eine Seite angeben, zu der die kopierte Zelle gehören soll. Das entsprechende Feld ist mit der aktuellen Seite vorbelegt. Falls man dies nicht ändert, wird einfach eine Kopie der Zelle auf derselben Seite erzeugt. Ansonsten wird die Zelle auf die angegebene Seite kopiert. Die Funktion schließt den Konfig-Dialog und Änderungen gehen verloren. Falls man eine andere Seite angegeben hat, wird zu dieser gewechselt.<br />
;Zelle exportieren: Dies erlaubt die Definition der Zelle herunterzuladen und auf dem Client (also dem Rechner, auf dem der Browser läuft) zu speichern.<br />
;Zelle importieren: Damit lädt man eine exportierte Zelle wieder hoch. FUIP erzeugt dann auf der aktuellen Seite eine neue Zelle mit dem entsprechenden Inhalt. Das funktioniert auch mit Zellen, die von einer anderen FUIP-Seite, einem anderen FUIP-Device oder von einer anderen FHEM-Installation kommen.<br />
;Zelle löschen: Damit löscht man die aktuelle Zelle. Sie verschwindet dann von der aktuellen Seite.<br />
;Toggle editOnly: Bei manchen Views ist es schwierig, sie mit der Maus "anzufassen", da sie sofort eine Aktion auslösen (z.B. bei Links). Mit "Toggle editOnly" wird eine graue "Schicht" über die Views gelegt. Dadurch weiß man besser, wo man den View anfassen kann und Mausklicks haben keine Wirkung mehr, außer Drag&Drop.<br />
<br />
=== ...für Seiten ===<br />
[[Datei:FUIP_SeitenKonfig.png|mini|600px]]<br />
Drückt man im Konfig-Dialog für Zellen auf "Cell/Page" kommt man auf den Konfig-Dialog für ganze Seiten. Die Bedeutung der Einzelnen Elemente ist wie folgt.<br />
;Zur Zellen-Konfiguration:Das bringt einen zurück zum Konfig-Dialog für Zellen.<br />
;Seiten-Überschrift:Hier kann ein Titel für die Seite eingetragen werden. Das erscheint dann je nach Browser irgendwo oben. (Technisch ist es der Inhalt des <title> Tags in <head>.)<br />
;Abbrechen:Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Seite kopieren:Dadurch wird eine neue Seite angelegt, die so aussieht wie die aktuelle. Der Dialog wird dann geschlossen und automatisch zur neuen Seite gesprungen.<br />
;Seite exportieren:Das ist dasselbe wie für Zellen, nur für die ganze aktuelle Seite.<br />
;Seite importieren:Das ist im Prinzip auch wie für Zellen, nur dass eine neue Seite angelegt wird. Exportierte Zellen können nur als Zellen importiert werden und exportierte Seiten nur als Seiten.<br />
<br />
== Das FUIP-Device ==<br />
Wie in [[#Erste Schritte|Erste Schritte]] bereits beschrieben, muss man zur Verwendung von FUIP zuerst ein FUIP-Device anlegen. Alles, was man mit FUIP macht (bzw. was das System macht) passiert in Bezug auf ein FUIP-Device. Man kann auch jederzeit mehrere FUIP-Devices anlegen. Verschiedene Instanzen von FUIP stören sich nicht gegenseitig, man kann aber (z.B. in einem Menu) auf eine andere FUIP-Instanz verweisen (verlinken).<br />
<br />
Das FUIP-Device hat die folgenden Eigenschaften.<br />
=== Sets ===<br />
Die folgenden set-Kommandos sind für den Benutzer gedacht. Es gibt noch weitere set-Kommandos, welche aber vor Allem für FUIP-interne Zwecke gedacht sind. Möglicherweise werden diese Kommandos sogar in Zukunft von der (FHEMWEB-) Oberfläche verschwinden.<br />
;save: Mit <code>set <name> save</code> wird der momentane Zustand der FUIP-Seiten zu diesem FUIP-Device gespeichert. Das betrifft nicht die Definition des FUIP-Device selbst (also auch nicht dessen Attribute). Diese müssen nach wie vor über <code>save</code> (also "Save config") gespeichert werden. Die FUIP-Seiten stehen in der Datei <fhem>/FHEM/lib/FUIP/config/FUIP_<name>.cfg. Dabei steht <fhem> in der Regel für /opt/fhem und <name> für den Namen des FUIP-Devices. Ohne ein <code>set <name> save</code> gehen alle Änderungen beim nächsten FHEM Restart verloren. <br />
;load: Mit <code>set <name> load</code> stellt man den Zustand wieder her, der mit <code>set <name> save</code> gespeichert wurde. Das ist vor Allem dann nützlich, wenn man sich beim Bearbeiten der Seiten vertan hat. Ansonsten wird beim FHEM Start das "load" automatisch ausgeführt. <br />
;pagedelete:<br />
;refreshBuffer:<br />
<br />
=== Gets ===<br />
<br />
<br />
=== Internals ===<br />
<br />
=== Readings ===<br />
<br />
=== Attribute ===<br />
<br />
== Links ==<br />
* {{Link2Forum|Topic=85869|LinkText=Foren-Thread zur Geburt von FUIP}}<br />
<br />
[[Kategorie:FHEM Frontends]]</div>Thorsten Pferdekämperhttp://wiki.fhem.de/w/index.php?title=FHEM_User_Interface_Painter&diff=27371FHEM User Interface Painter2018-07-10T13:16:53Z<p>Thorsten Pferdekämper: /* Sets */</p>
<hr />
<div>[[Datei:FUIP_Symbolbild.png|mini|400px|FUIP in Aktion]]<br />
Der '''FHEM User Interface Painter (FUIP)''' ist ein FHEM-Modul, mit dem man [[FHEM Tablet UI]] (FTUI) Seiten graphisch ("klickibunti") erstellen kann. D.h. man kann sich ein UI zusammenklicken, welches die Tablet UI Technik verwendet, aber ohne sich selbst unbedingt mit HTML und CSS herumschlagen zu müssen.<br />
Hier ist ein kurzes Video, welches FUIP in Aktion zeigt:<br />
<br />
[https://forum.fhem.de/index.php?action=dlattach;topic=85869.0;attach=98455 Einführungsvideo]<br />
<br />
(Das Video zeigt nicht unbedingt den neusten Stand, aber es dürfte klar werden, wofür FUIP gut sein soll.)<br />
<br />
== Installation und Upgrade in FHEM ==<br />
Genau wie FTUI ist auch FUIP nicht automatisch Teil von FHEM. Es muss explizit installiert bzw. hinzugefügt werden. Die Installation funktioniert folgendermaßen:<br />
* FUIP verwendet FTUI. D.h. man sollte zuerst einmal FTUI installieren, falls noch nicht passiert. Wie das geht steht bei [[FHEM Tablet UI#Installation|FHEM Tablet UI]]. Dabei reicht der erste Schritt aus, da lediglich die FTUI-Dateien von FUIP benötigt werden.<br />
* Dann das FUIP-Repository zum FHEM Update hinzufügen: <br />
** <code>update add https://raw.githubusercontent.com/ThorstenPferdekaemper/FHEM-FUIP/master/controls_fuip.txt</code><br />
* Jetzt <code>update all fuip</code> und <code>shutdown restart</code>. FUIP sollte jetzt installiert sein.<br />
<br />
Zum Upgrade reicht ein <code>update</code>, wenn man FUIP wie oben beschrieben installiert hat. Will man nur den FUIP-Teil aktualisieren und nicht alles in FHEM, dann geht das mit <code>update all fuip</code>.<br />
<br />
Falls es insbesondere beim Upgrade oder nach einem Upgrade Probleme gibt (welcher Art auch immer), sollten die folgenden Punkte geprüft werden:<br />
* Wird das richtige Repository benutzt? Man kann das mit <code>update list</code> überprüfen. Wenn der Eintrag für fuip nicht genau so aussieht wie oben beschrieben, dann sollte er per <code>update delete</code> gelöscht werden und dann genau so eingetragen werden wie oben beschrieben. <br />
* FHEM braucht Schreibrechte im Verzeichnis <fhem>/FHEM/lib/FUIP/config (<fhem> steht meistens für /opt/fhem) und allen enthaltenen Dateien. Auf Betriebssystemebene (Linux) kann man das mit <code>ls -ls</code> überprüfen. Meistens kann es mit folgendem Befehl repariert werden: <code>chown -R fhem:dialout /opt/fhem/FHEM/lib/FUIP/config</code>. (Dieser Punkt gilt nicht bzw. nicht genau so, wenn man die configDB benutzt.)<br />
* Steht etwas verdächtiges im Logfile?<br />
<br />
== Erste Schritte ==<br />
Zuerst legt man ein "FUIP Device" an, also etwa <code>define ui FUIP</code>. Dieses Device meldet sich sozusagen als Webserver bei FHEM an (wie z.B. auch [[HTTPSRV]]), d.h. es erscheint im Menu oben links (über den Räumen) ein Link "ui". Beim Klick auf diesen Link generiert FUIP eine FTUI Übersichtsseite aus den Räumen im FHEM System. (Das kann ein bisschen dauern, wenn man viele Devices hat.) Nun kann man durch Verschieben und größer/kleiner-Ziehen der einzelnen Zellen bzw. durch Verschieben des Zelleninhalts die Gestaltung ändern. Außerdem kann man über das Zahnrad rechts oben in den Zellen neuen Inhalt hinzufügen, den bestehenden Inhalt ändern und vieles mehr.<br />
Durch Klicken auf die Räume im Menu der Übersichtsseite werden einzelne Raum-Seiten generiert. Diese kann man ebenfalls entsprechend bearbeiten. Natürlich können auch eigene Seiten hinzugefügt werden. Wie das geht sieht man im Video, welches oben verlinkt ist.<br />
<br />
Nachdem man die Seiten entsprechend bearbeitet hat sollte man ein <code>set ui save</code> machen. Ansonsten gehen die Änderungen beim nächsten FHEM-Neustart verloren. Ein normales <code>save config</code> reicht nicht aus und ist auch nicht notwendig.<br />
<br />
Die folgenden detaillierten Informationen können zum Teil veraltet sein, da FUIP noch weitereintwickelt wird. Es sollten allerdings keine Funktionen verschwinden.<br />
<br />
== Das Konfigurations-Popup ==<br />
=== ...für Zellen ===<br />
[[Datei:FUIP_KonfigZelle.png|mini|600px]]<br />
Beim Klick auf das Zahnrad rechts oben in einer Zelle wird der Konfigurations-Dialog für diese Zelle geöffnet. Im Folgenden werden die Funktionen der einzelnen Elemente erklärt.<br />
;Zur Seiten-Konfiguration: Damit kann man zum Konfig-Dialog für die ganze Seite wechseln. <br />
;Zellen-Überschrift: Hier wird die Überschrift der Zelle festgelegt. Eine Zelle muss keine Überschrift haben. (Die Zahlen hinter der Überschrift in der Zelle selbst verschwinden, wenn man das Attribut ''locked'' setzt.)<br />
;Neuer View: Hiermit fügt man einen neuen View, also neuen Inhalt, zu einer Zelle hinzu. Man wählt dann aus, welcher Art View angelegt werden soll und füllt die Details, wie z.B. das zugehörige Device. Der neue View wird an einer freien Stelle (falls möglich) in der Zelle eingefügt. Nach schließen des Konfig-Dialogs kann man den View dann per Drag&Drop geeignet positionieren.<br />
;Neuer View (Device): Dies dient ebenfalls dazu, neue Views in die Zelle zu packen. Allerdings wählt man nicht die Art des Views aus, sondern die FHEM-Devices, die dargestellt werden sollen. Das System sucht dann jeweils einen geeigneten View aus. Bisher funktioniert das nur sehr eingeschränkt, hat aber den Vorteil, dass man gleich mehrere Devices auswählen kann.<br />
;Abbrechen: Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Details zum View: Hier klappt man die Details zum View aus und kann diese ändern. Was man damit genau machen kann kommt auf die Art des View an. Per Drag&Drop kann man auch die Reihenfolge der Views im Konfig-Dialog ändern. Das hat allerdings keinen Effekt auf die Positonierung bereits existierender Views in der Zelle. <br />
;View löschen: Das löscht den View aus der Zelle. Wenn man den View eigentlich nicht löschen, sondern in einer anderen Zelle haben will, dann kann man ihn auch per Drag&Drop in die andere Zelle verschieben. Lässt man einen View in einer anderen Zelle "fallen", dann wird dieser automatisch der neuen Zelle zugeordnet.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Auto-Anordnen: Hiermit kann man die einzelnen Views in der Zelle automatisch anordnen. Es kann momentan sein, dass dadurch Änderungen verloren gehen. D.h. dieser Button sollte nur benutzt werden, wenn man seit dem Öffnen des Dialogs keine Änderungen gemacht hat. Außerdem schließt der Button dan Dialog. FUIP ordnet die Views in der Reihenfolge an, in der sie im Konfig-Popup erscheinen. Das zugrunde liegende Layout ist sehr einfach gehalten und kann sich auch noch ändern. Diese Funktion ist vor Allem brauchbar für mehrere gleichartige Views in derselben Zelle, wie z.B. bei Menus. <br />
;Neue Zelle: Legt eine neue (leere) Zelle auf der aktuellen Seite an. Der Konfig-Dialog wird dabei geschlossen und Änderungen gehen verloren.<br />
;Zelle kopieren: Kopiert die aktuelle Zelle. Man muss eine Seite angeben, zu der die kopierte Zelle gehören soll. Das entsprechende Feld ist mit der aktuellen Seite vorbelegt. Falls man dies nicht ändert, wird einfach eine Kopie der Zelle auf derselben Seite erzeugt. Ansonsten wird die Zelle auf die angegebene Seite kopiert. Die Funktion schließt den Konfig-Dialog und Änderungen gehen verloren. Falls man eine andere Seite angegeben hat, wird zu dieser gewechselt.<br />
;Zelle exportieren: Dies erlaubt die Definition der Zelle herunterzuladen und auf dem Client (also dem Rechner, auf dem der Browser läuft) zu speichern.<br />
;Zelle importieren: Damit lädt man eine exportierte Zelle wieder hoch. FUIP erzeugt dann auf der aktuellen Seite eine neue Zelle mit dem entsprechenden Inhalt. Das funktioniert auch mit Zellen, die von einer anderen FUIP-Seite, einem anderen FUIP-Device oder von einer anderen FHEM-Installation kommen.<br />
;Zelle löschen: Damit löscht man die aktuelle Zelle. Sie verschwindet dann von der aktuellen Seite.<br />
;Toggle editOnly: Bei manchen Views ist es schwierig, sie mit der Maus "anzufassen", da sie sofort eine Aktion auslösen (z.B. bei Links). Mit "Toggle editOnly" wird eine graue "Schicht" über die Views gelegt. Dadurch weiß man besser, wo man den View anfassen kann und Mausklicks haben keine Wirkung mehr, außer Drag&Drop.<br />
<br />
=== ...für Seiten ===<br />
[[Datei:FUIP_SeitenKonfig.png|mini|600px]]<br />
Drückt man im Konfig-Dialog für Zellen auf "Cell/Page" kommt man auf den Konfig-Dialog für ganze Seiten. Die Bedeutung der Einzelnen Elemente ist wie folgt.<br />
;Zur Zellen-Konfiguration:Das bringt einen zurück zum Konfig-Dialog für Zellen.<br />
;Seiten-Überschrift:Hier kann ein Titel für die Seite eingetragen werden. Das erscheint dann je nach Browser irgendwo oben. (Technisch ist es der Inhalt des <title> Tags in <head>.)<br />
;Abbrechen:Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Seite kopieren:Dadurch wird eine neue Seite angelegt, die so aussieht wie die aktuelle. Der Dialog wird dann geschlossen und automatisch zur neuen Seite gesprungen.<br />
;Seite exportieren:Das ist dasselbe wie für Zellen, nur für die ganze aktuelle Seite.<br />
;Seite importieren:Das ist im Prinzip auch wie für Zellen, nur dass eine neue Seite angelegt wird. Exportierte Zellen können nur als Zellen importiert werden und exportierte Seiten nur als Seiten.<br />
<br />
== Das FUIP-Device ==<br />
Wie in [[#Erste Schritte|Erste Schritte]] bereits beschrieben, muss man zur Verwendung von FUIP zuerst ein FUIP-Device anlegen. Alles, was man mit FUIP macht (bzw. was das System macht) passiert in Bezug auf ein FUIP-Device. Man kann auch jederzeit mehrere FUIP-Devices anlegen. Verschiedene Instanzen von FUIP stören sich nicht gegenseitig, man kann aber (z.B. in einem Menu) auf eine andere FUIP-Instanz verweisen (verlinken).<br />
<br />
Das FUIP-Device hat die folgenden Eigenschaften.<br />
=== Sets ===<br />
Die folgenden set-Kommandos sind für den Benutzer gedacht. Es gibt noch weitere set-Kommandos, welche aber vor Allem für FUIP-interne Zwecke gedacht sind. Möglicherweise werden diese Kommandos sogar in Zukunft von der (FHEMWEB-) Oberfläche verschwinden.<br />
;save: Mit <code>set <name> save</code> wird der momentane Zustand der FUIP-Seiten zu diesem FUIP-Device gespeichert. Das betrifft nicht die Definition des FUIP-Device selbst (also auch nicht dessen Attribute). Diese müssen nach wie vor über <code>save</code> (also "Save config") gespeichert werden. Die FUIP-Seiten stehen in der Datei <fhem>/FHEM/lib/FUIP/config/FUIP_<name>.cfg. Dabei steht <fhem> in der Regel für /opt/fhem und <name> für den Namen des FUIP-Devices. <br />
Ohne ein <code>set <name> save</code> gehen alle Änderungen beim nächsten FHEM Restart verloren. <br />
;load: Mit <code>set <name> load</code> stellt man den Zustand wieder her, der mit <code>set <name> save</code> gespeichert wurde. Das ist vor Allem dann nützlich, wenn man sich beim Bearbeiten der Seiten vertan hat. Ansonsten wird beim FHEM Start das "load" automatisch ausgeführt. <br />
;pagedelete:<br />
;refreshBuffer:<br />
<br />
=== Gets ===<br />
<br />
<br />
=== Internals ===<br />
<br />
=== Readings ===<br />
<br />
=== Attribute ===<br />
<br />
== Links ==<br />
* {{Link2Forum|Topic=85869|LinkText=Foren-Thread zur Geburt von FUIP}}<br />
<br />
[[Kategorie:FHEM Frontends]]</div>Thorsten Pferdekämperhttp://wiki.fhem.de/w/index.php?title=FHEM_User_Interface_Painter&diff=27370FHEM User Interface Painter2018-07-10T13:13:21Z<p>Thorsten Pferdekämper: /* Sets */</p>
<hr />
<div>[[Datei:FUIP_Symbolbild.png|mini|400px|FUIP in Aktion]]<br />
Der '''FHEM User Interface Painter (FUIP)''' ist ein FHEM-Modul, mit dem man [[FHEM Tablet UI]] (FTUI) Seiten graphisch ("klickibunti") erstellen kann. D.h. man kann sich ein UI zusammenklicken, welches die Tablet UI Technik verwendet, aber ohne sich selbst unbedingt mit HTML und CSS herumschlagen zu müssen.<br />
Hier ist ein kurzes Video, welches FUIP in Aktion zeigt:<br />
<br />
[https://forum.fhem.de/index.php?action=dlattach;topic=85869.0;attach=98455 Einführungsvideo]<br />
<br />
(Das Video zeigt nicht unbedingt den neusten Stand, aber es dürfte klar werden, wofür FUIP gut sein soll.)<br />
<br />
== Installation und Upgrade in FHEM ==<br />
Genau wie FTUI ist auch FUIP nicht automatisch Teil von FHEM. Es muss explizit installiert bzw. hinzugefügt werden. Die Installation funktioniert folgendermaßen:<br />
* FUIP verwendet FTUI. D.h. man sollte zuerst einmal FTUI installieren, falls noch nicht passiert. Wie das geht steht bei [[FHEM Tablet UI#Installation|FHEM Tablet UI]]. Dabei reicht der erste Schritt aus, da lediglich die FTUI-Dateien von FUIP benötigt werden.<br />
* Dann das FUIP-Repository zum FHEM Update hinzufügen: <br />
** <code>update add https://raw.githubusercontent.com/ThorstenPferdekaemper/FHEM-FUIP/master/controls_fuip.txt</code><br />
* Jetzt <code>update all fuip</code> und <code>shutdown restart</code>. FUIP sollte jetzt installiert sein.<br />
<br />
Zum Upgrade reicht ein <code>update</code>, wenn man FUIP wie oben beschrieben installiert hat. Will man nur den FUIP-Teil aktualisieren und nicht alles in FHEM, dann geht das mit <code>update all fuip</code>.<br />
<br />
Falls es insbesondere beim Upgrade oder nach einem Upgrade Probleme gibt (welcher Art auch immer), sollten die folgenden Punkte geprüft werden:<br />
* Wird das richtige Repository benutzt? Man kann das mit <code>update list</code> überprüfen. Wenn der Eintrag für fuip nicht genau so aussieht wie oben beschrieben, dann sollte er per <code>update delete</code> gelöscht werden und dann genau so eingetragen werden wie oben beschrieben. <br />
* FHEM braucht Schreibrechte im Verzeichnis <fhem>/FHEM/lib/FUIP/config (<fhem> steht meistens für /opt/fhem) und allen enthaltenen Dateien. Auf Betriebssystemebene (Linux) kann man das mit <code>ls -ls</code> überprüfen. Meistens kann es mit folgendem Befehl repariert werden: <code>chown -R fhem:dialout /opt/fhem/FHEM/lib/FUIP/config</code>. (Dieser Punkt gilt nicht bzw. nicht genau so, wenn man die configDB benutzt.)<br />
* Steht etwas verdächtiges im Logfile?<br />
<br />
== Erste Schritte ==<br />
Zuerst legt man ein "FUIP Device" an, also etwa <code>define ui FUIP</code>. Dieses Device meldet sich sozusagen als Webserver bei FHEM an (wie z.B. auch [[HTTPSRV]]), d.h. es erscheint im Menu oben links (über den Räumen) ein Link "ui". Beim Klick auf diesen Link generiert FUIP eine FTUI Übersichtsseite aus den Räumen im FHEM System. (Das kann ein bisschen dauern, wenn man viele Devices hat.) Nun kann man durch Verschieben und größer/kleiner-Ziehen der einzelnen Zellen bzw. durch Verschieben des Zelleninhalts die Gestaltung ändern. Außerdem kann man über das Zahnrad rechts oben in den Zellen neuen Inhalt hinzufügen, den bestehenden Inhalt ändern und vieles mehr.<br />
Durch Klicken auf die Räume im Menu der Übersichtsseite werden einzelne Raum-Seiten generiert. Diese kann man ebenfalls entsprechend bearbeiten. Natürlich können auch eigene Seiten hinzugefügt werden. Wie das geht sieht man im Video, welches oben verlinkt ist.<br />
<br />
Nachdem man die Seiten entsprechend bearbeitet hat sollte man ein <code>set ui save</code> machen. Ansonsten gehen die Änderungen beim nächsten FHEM-Neustart verloren. Ein normales <code>save config</code> reicht nicht aus und ist auch nicht notwendig.<br />
<br />
Die folgenden detaillierten Informationen können zum Teil veraltet sein, da FUIP noch weitereintwickelt wird. Es sollten allerdings keine Funktionen verschwinden.<br />
<br />
== Das Konfigurations-Popup ==<br />
=== ...für Zellen ===<br />
[[Datei:FUIP_KonfigZelle.png|mini|600px]]<br />
Beim Klick auf das Zahnrad rechts oben in einer Zelle wird der Konfigurations-Dialog für diese Zelle geöffnet. Im Folgenden werden die Funktionen der einzelnen Elemente erklärt.<br />
;Zur Seiten-Konfiguration: Damit kann man zum Konfig-Dialog für die ganze Seite wechseln. <br />
;Zellen-Überschrift: Hier wird die Überschrift der Zelle festgelegt. Eine Zelle muss keine Überschrift haben. (Die Zahlen hinter der Überschrift in der Zelle selbst verschwinden, wenn man das Attribut ''locked'' setzt.)<br />
;Neuer View: Hiermit fügt man einen neuen View, also neuen Inhalt, zu einer Zelle hinzu. Man wählt dann aus, welcher Art View angelegt werden soll und füllt die Details, wie z.B. das zugehörige Device. Der neue View wird an einer freien Stelle (falls möglich) in der Zelle eingefügt. Nach schließen des Konfig-Dialogs kann man den View dann per Drag&Drop geeignet positionieren.<br />
;Neuer View (Device): Dies dient ebenfalls dazu, neue Views in die Zelle zu packen. Allerdings wählt man nicht die Art des Views aus, sondern die FHEM-Devices, die dargestellt werden sollen. Das System sucht dann jeweils einen geeigneten View aus. Bisher funktioniert das nur sehr eingeschränkt, hat aber den Vorteil, dass man gleich mehrere Devices auswählen kann.<br />
;Abbrechen: Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Details zum View: Hier klappt man die Details zum View aus und kann diese ändern. Was man damit genau machen kann kommt auf die Art des View an. Per Drag&Drop kann man auch die Reihenfolge der Views im Konfig-Dialog ändern. Das hat allerdings keinen Effekt auf die Positonierung bereits existierender Views in der Zelle. <br />
;View löschen: Das löscht den View aus der Zelle. Wenn man den View eigentlich nicht löschen, sondern in einer anderen Zelle haben will, dann kann man ihn auch per Drag&Drop in die andere Zelle verschieben. Lässt man einen View in einer anderen Zelle "fallen", dann wird dieser automatisch der neuen Zelle zugeordnet.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Auto-Anordnen: Hiermit kann man die einzelnen Views in der Zelle automatisch anordnen. Es kann momentan sein, dass dadurch Änderungen verloren gehen. D.h. dieser Button sollte nur benutzt werden, wenn man seit dem Öffnen des Dialogs keine Änderungen gemacht hat. Außerdem schließt der Button dan Dialog. FUIP ordnet die Views in der Reihenfolge an, in der sie im Konfig-Popup erscheinen. Das zugrunde liegende Layout ist sehr einfach gehalten und kann sich auch noch ändern. Diese Funktion ist vor Allem brauchbar für mehrere gleichartige Views in derselben Zelle, wie z.B. bei Menus. <br />
;Neue Zelle: Legt eine neue (leere) Zelle auf der aktuellen Seite an. Der Konfig-Dialog wird dabei geschlossen und Änderungen gehen verloren.<br />
;Zelle kopieren: Kopiert die aktuelle Zelle. Man muss eine Seite angeben, zu der die kopierte Zelle gehören soll. Das entsprechende Feld ist mit der aktuellen Seite vorbelegt. Falls man dies nicht ändert, wird einfach eine Kopie der Zelle auf derselben Seite erzeugt. Ansonsten wird die Zelle auf die angegebene Seite kopiert. Die Funktion schließt den Konfig-Dialog und Änderungen gehen verloren. Falls man eine andere Seite angegeben hat, wird zu dieser gewechselt.<br />
;Zelle exportieren: Dies erlaubt die Definition der Zelle herunterzuladen und auf dem Client (also dem Rechner, auf dem der Browser läuft) zu speichern.<br />
;Zelle importieren: Damit lädt man eine exportierte Zelle wieder hoch. FUIP erzeugt dann auf der aktuellen Seite eine neue Zelle mit dem entsprechenden Inhalt. Das funktioniert auch mit Zellen, die von einer anderen FUIP-Seite, einem anderen FUIP-Device oder von einer anderen FHEM-Installation kommen.<br />
;Zelle löschen: Damit löscht man die aktuelle Zelle. Sie verschwindet dann von der aktuellen Seite.<br />
;Toggle editOnly: Bei manchen Views ist es schwierig, sie mit der Maus "anzufassen", da sie sofort eine Aktion auslösen (z.B. bei Links). Mit "Toggle editOnly" wird eine graue "Schicht" über die Views gelegt. Dadurch weiß man besser, wo man den View anfassen kann und Mausklicks haben keine Wirkung mehr, außer Drag&Drop.<br />
<br />
=== ...für Seiten ===<br />
[[Datei:FUIP_SeitenKonfig.png|mini|600px]]<br />
Drückt man im Konfig-Dialog für Zellen auf "Cell/Page" kommt man auf den Konfig-Dialog für ganze Seiten. Die Bedeutung der Einzelnen Elemente ist wie folgt.<br />
;Zur Zellen-Konfiguration:Das bringt einen zurück zum Konfig-Dialog für Zellen.<br />
;Seiten-Überschrift:Hier kann ein Titel für die Seite eingetragen werden. Das erscheint dann je nach Browser irgendwo oben. (Technisch ist es der Inhalt des <title> Tags in <head>.)<br />
;Abbrechen:Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Seite kopieren:Dadurch wird eine neue Seite angelegt, die so aussieht wie die aktuelle. Der Dialog wird dann geschlossen und automatisch zur neuen Seite gesprungen.<br />
;Seite exportieren:Das ist dasselbe wie für Zellen, nur für die ganze aktuelle Seite.<br />
;Seite importieren:Das ist im Prinzip auch wie für Zellen, nur dass eine neue Seite angelegt wird. Exportierte Zellen können nur als Zellen importiert werden und exportierte Seiten nur als Seiten.<br />
<br />
== Das FUIP-Device ==<br />
Wie in [[#Erste Schritte|Erste Schritte]] bereits beschrieben, muss man zur Verwendung von FUIP zuerst ein FUIP-Device anlegen. Alles, was man mit FUIP macht (bzw. was das System macht) passiert in Bezug auf ein FUIP-Device. Man kann auch jederzeit mehrere FUIP-Devices anlegen. Verschiedene Instanzen von FUIP stören sich nicht gegenseitig, man kann aber (z.B. in einem Menu) auf eine andere FUIP-Instanz verweisen (verlinken).<br />
<br />
Das FUIP-Device hat die folgenden Eigenschaften.<br />
=== Sets ===<br />
Die folgenden set-Kommandos sind für den Benutzer gedacht. Es gibt noch weitere set-Kommandos, welche aber vor Allem für FUIP-interne Zwecke gedacht sind. Möglicherweise werden diese Kommandos sogar in Zukunft von der (FHEMWEB-) Oberfläche verschwinden.<br />
;save: Mit <code>set <name> save</code> wird der momentane Zustand der FUIP-Seiten zu diesem FUIP-Device gespeichert. Das betrifft nicht die Definition des FUIP-Device selbst (also auch nicht dessen Attribute). Diese müssen nach wie vor über <code>save</code> (also "Save config") gespeichert werden. Die FUIP-Seiten stehen in der Datei <fhem>/FHEM/lib/FUIP/config/FUIP_<name>.cfg. Dabei steht <fhem> in der Regel für /opt/fhem und <name> für den Namen des FUIP-Devices. <br />
;load:<br />
;pagedelete:<br />
;refreshBuffer:<br />
<br />
=== Gets ===<br />
<br />
<br />
=== Internals ===<br />
<br />
=== Readings ===<br />
<br />
=== Attribute ===<br />
<br />
== Links ==<br />
* {{Link2Forum|Topic=85869|LinkText=Foren-Thread zur Geburt von FUIP}}<br />
<br />
[[Kategorie:FHEM Frontends]]</div>Thorsten Pferdekämperhttp://wiki.fhem.de/w/index.php?title=FHEM_User_Interface_Painter&diff=27369FHEM User Interface Painter2018-07-10T13:03:32Z<p>Thorsten Pferdekämper: /* Das FUIP-Device */</p>
<hr />
<div>[[Datei:FUIP_Symbolbild.png|mini|400px|FUIP in Aktion]]<br />
Der '''FHEM User Interface Painter (FUIP)''' ist ein FHEM-Modul, mit dem man [[FHEM Tablet UI]] (FTUI) Seiten graphisch ("klickibunti") erstellen kann. D.h. man kann sich ein UI zusammenklicken, welches die Tablet UI Technik verwendet, aber ohne sich selbst unbedingt mit HTML und CSS herumschlagen zu müssen.<br />
Hier ist ein kurzes Video, welches FUIP in Aktion zeigt:<br />
<br />
[https://forum.fhem.de/index.php?action=dlattach;topic=85869.0;attach=98455 Einführungsvideo]<br />
<br />
(Das Video zeigt nicht unbedingt den neusten Stand, aber es dürfte klar werden, wofür FUIP gut sein soll.)<br />
<br />
== Installation und Upgrade in FHEM ==<br />
Genau wie FTUI ist auch FUIP nicht automatisch Teil von FHEM. Es muss explizit installiert bzw. hinzugefügt werden. Die Installation funktioniert folgendermaßen:<br />
* FUIP verwendet FTUI. D.h. man sollte zuerst einmal FTUI installieren, falls noch nicht passiert. Wie das geht steht bei [[FHEM Tablet UI#Installation|FHEM Tablet UI]]. Dabei reicht der erste Schritt aus, da lediglich die FTUI-Dateien von FUIP benötigt werden.<br />
* Dann das FUIP-Repository zum FHEM Update hinzufügen: <br />
** <code>update add https://raw.githubusercontent.com/ThorstenPferdekaemper/FHEM-FUIP/master/controls_fuip.txt</code><br />
* Jetzt <code>update all fuip</code> und <code>shutdown restart</code>. FUIP sollte jetzt installiert sein.<br />
<br />
Zum Upgrade reicht ein <code>update</code>, wenn man FUIP wie oben beschrieben installiert hat. Will man nur den FUIP-Teil aktualisieren und nicht alles in FHEM, dann geht das mit <code>update all fuip</code>.<br />
<br />
Falls es insbesondere beim Upgrade oder nach einem Upgrade Probleme gibt (welcher Art auch immer), sollten die folgenden Punkte geprüft werden:<br />
* Wird das richtige Repository benutzt? Man kann das mit <code>update list</code> überprüfen. Wenn der Eintrag für fuip nicht genau so aussieht wie oben beschrieben, dann sollte er per <code>update delete</code> gelöscht werden und dann genau so eingetragen werden wie oben beschrieben. <br />
* FHEM braucht Schreibrechte im Verzeichnis <fhem>/FHEM/lib/FUIP/config (<fhem> steht meistens für /opt/fhem) und allen enthaltenen Dateien. Auf Betriebssystemebene (Linux) kann man das mit <code>ls -ls</code> überprüfen. Meistens kann es mit folgendem Befehl repariert werden: <code>chown -R fhem:dialout /opt/fhem/FHEM/lib/FUIP/config</code>. (Dieser Punkt gilt nicht bzw. nicht genau so, wenn man die configDB benutzt.)<br />
* Steht etwas verdächtiges im Logfile?<br />
<br />
== Erste Schritte ==<br />
Zuerst legt man ein "FUIP Device" an, also etwa <code>define ui FUIP</code>. Dieses Device meldet sich sozusagen als Webserver bei FHEM an (wie z.B. auch [[HTTPSRV]]), d.h. es erscheint im Menu oben links (über den Räumen) ein Link "ui". Beim Klick auf diesen Link generiert FUIP eine FTUI Übersichtsseite aus den Räumen im FHEM System. (Das kann ein bisschen dauern, wenn man viele Devices hat.) Nun kann man durch Verschieben und größer/kleiner-Ziehen der einzelnen Zellen bzw. durch Verschieben des Zelleninhalts die Gestaltung ändern. Außerdem kann man über das Zahnrad rechts oben in den Zellen neuen Inhalt hinzufügen, den bestehenden Inhalt ändern und vieles mehr.<br />
Durch Klicken auf die Räume im Menu der Übersichtsseite werden einzelne Raum-Seiten generiert. Diese kann man ebenfalls entsprechend bearbeiten. Natürlich können auch eigene Seiten hinzugefügt werden. Wie das geht sieht man im Video, welches oben verlinkt ist.<br />
<br />
Nachdem man die Seiten entsprechend bearbeitet hat sollte man ein <code>set ui save</code> machen. Ansonsten gehen die Änderungen beim nächsten FHEM-Neustart verloren. Ein normales <code>save config</code> reicht nicht aus und ist auch nicht notwendig.<br />
<br />
Die folgenden detaillierten Informationen können zum Teil veraltet sein, da FUIP noch weitereintwickelt wird. Es sollten allerdings keine Funktionen verschwinden.<br />
<br />
== Das Konfigurations-Popup ==<br />
=== ...für Zellen ===<br />
[[Datei:FUIP_KonfigZelle.png|mini|600px]]<br />
Beim Klick auf das Zahnrad rechts oben in einer Zelle wird der Konfigurations-Dialog für diese Zelle geöffnet. Im Folgenden werden die Funktionen der einzelnen Elemente erklärt.<br />
;Zur Seiten-Konfiguration: Damit kann man zum Konfig-Dialog für die ganze Seite wechseln. <br />
;Zellen-Überschrift: Hier wird die Überschrift der Zelle festgelegt. Eine Zelle muss keine Überschrift haben. (Die Zahlen hinter der Überschrift in der Zelle selbst verschwinden, wenn man das Attribut ''locked'' setzt.)<br />
;Neuer View: Hiermit fügt man einen neuen View, also neuen Inhalt, zu einer Zelle hinzu. Man wählt dann aus, welcher Art View angelegt werden soll und füllt die Details, wie z.B. das zugehörige Device. Der neue View wird an einer freien Stelle (falls möglich) in der Zelle eingefügt. Nach schließen des Konfig-Dialogs kann man den View dann per Drag&Drop geeignet positionieren.<br />
;Neuer View (Device): Dies dient ebenfalls dazu, neue Views in die Zelle zu packen. Allerdings wählt man nicht die Art des Views aus, sondern die FHEM-Devices, die dargestellt werden sollen. Das System sucht dann jeweils einen geeigneten View aus. Bisher funktioniert das nur sehr eingeschränkt, hat aber den Vorteil, dass man gleich mehrere Devices auswählen kann.<br />
;Abbrechen: Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Details zum View: Hier klappt man die Details zum View aus und kann diese ändern. Was man damit genau machen kann kommt auf die Art des View an. Per Drag&Drop kann man auch die Reihenfolge der Views im Konfig-Dialog ändern. Das hat allerdings keinen Effekt auf die Positonierung bereits existierender Views in der Zelle. <br />
;View löschen: Das löscht den View aus der Zelle. Wenn man den View eigentlich nicht löschen, sondern in einer anderen Zelle haben will, dann kann man ihn auch per Drag&Drop in die andere Zelle verschieben. Lässt man einen View in einer anderen Zelle "fallen", dann wird dieser automatisch der neuen Zelle zugeordnet.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Auto-Anordnen: Hiermit kann man die einzelnen Views in der Zelle automatisch anordnen. Es kann momentan sein, dass dadurch Änderungen verloren gehen. D.h. dieser Button sollte nur benutzt werden, wenn man seit dem Öffnen des Dialogs keine Änderungen gemacht hat. Außerdem schließt der Button dan Dialog. FUIP ordnet die Views in der Reihenfolge an, in der sie im Konfig-Popup erscheinen. Das zugrunde liegende Layout ist sehr einfach gehalten und kann sich auch noch ändern. Diese Funktion ist vor Allem brauchbar für mehrere gleichartige Views in derselben Zelle, wie z.B. bei Menus. <br />
;Neue Zelle: Legt eine neue (leere) Zelle auf der aktuellen Seite an. Der Konfig-Dialog wird dabei geschlossen und Änderungen gehen verloren.<br />
;Zelle kopieren: Kopiert die aktuelle Zelle. Man muss eine Seite angeben, zu der die kopierte Zelle gehören soll. Das entsprechende Feld ist mit der aktuellen Seite vorbelegt. Falls man dies nicht ändert, wird einfach eine Kopie der Zelle auf derselben Seite erzeugt. Ansonsten wird die Zelle auf die angegebene Seite kopiert. Die Funktion schließt den Konfig-Dialog und Änderungen gehen verloren. Falls man eine andere Seite angegeben hat, wird zu dieser gewechselt.<br />
;Zelle exportieren: Dies erlaubt die Definition der Zelle herunterzuladen und auf dem Client (also dem Rechner, auf dem der Browser läuft) zu speichern.<br />
;Zelle importieren: Damit lädt man eine exportierte Zelle wieder hoch. FUIP erzeugt dann auf der aktuellen Seite eine neue Zelle mit dem entsprechenden Inhalt. Das funktioniert auch mit Zellen, die von einer anderen FUIP-Seite, einem anderen FUIP-Device oder von einer anderen FHEM-Installation kommen.<br />
;Zelle löschen: Damit löscht man die aktuelle Zelle. Sie verschwindet dann von der aktuellen Seite.<br />
;Toggle editOnly: Bei manchen Views ist es schwierig, sie mit der Maus "anzufassen", da sie sofort eine Aktion auslösen (z.B. bei Links). Mit "Toggle editOnly" wird eine graue "Schicht" über die Views gelegt. Dadurch weiß man besser, wo man den View anfassen kann und Mausklicks haben keine Wirkung mehr, außer Drag&Drop.<br />
<br />
=== ...für Seiten ===<br />
[[Datei:FUIP_SeitenKonfig.png|mini|600px]]<br />
Drückt man im Konfig-Dialog für Zellen auf "Cell/Page" kommt man auf den Konfig-Dialog für ganze Seiten. Die Bedeutung der Einzelnen Elemente ist wie folgt.<br />
;Zur Zellen-Konfiguration:Das bringt einen zurück zum Konfig-Dialog für Zellen.<br />
;Seiten-Überschrift:Hier kann ein Titel für die Seite eingetragen werden. Das erscheint dann je nach Browser irgendwo oben. (Technisch ist es der Inhalt des <title> Tags in <head>.)<br />
;Abbrechen:Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Seite kopieren:Dadurch wird eine neue Seite angelegt, die so aussieht wie die aktuelle. Der Dialog wird dann geschlossen und automatisch zur neuen Seite gesprungen.<br />
;Seite exportieren:Das ist dasselbe wie für Zellen, nur für die ganze aktuelle Seite.<br />
;Seite importieren:Das ist im Prinzip auch wie für Zellen, nur dass eine neue Seite angelegt wird. Exportierte Zellen können nur als Zellen importiert werden und exportierte Seiten nur als Seiten.<br />
<br />
== Das FUIP-Device ==<br />
Wie in [[#Erste Schritte|Erste Schritte]] bereits beschrieben, muss man zur Verwendung von FUIP zuerst ein FUIP-Device anlegen. Alles, was man mit FUIP macht (bzw. was das System macht) passiert in Bezug auf ein FUIP-Device. Man kann auch jederzeit mehrere FUIP-Devices anlegen. Verschiedene Instanzen von FUIP stören sich nicht gegenseitig, man kann aber (z.B. in einem Menu) auf eine andere FUIP-Instanz verweisen (verlinken).<br />
<br />
Das FUIP-Device hat die folgenden Eigenschaften.<br />
=== Sets ===<br />
<br />
<br />
=== Gets ===<br />
<br />
<br />
=== Internals ===<br />
<br />
=== Readings ===<br />
<br />
=== Attribute ===<br />
<br />
== Links ==<br />
* {{Link2Forum|Topic=85869|LinkText=Foren-Thread zur Geburt von FUIP}}<br />
<br />
[[Kategorie:FHEM Frontends]]</div>Thorsten Pferdekämperhttp://wiki.fhem.de/w/index.php?title=FHEM_User_Interface_Painter&diff=27368FHEM User Interface Painter2018-07-10T12:58:31Z<p>Thorsten Pferdekämper: /* Das FUIP-Device */</p>
<hr />
<div>[[Datei:FUIP_Symbolbild.png|mini|400px|FUIP in Aktion]]<br />
Der '''FHEM User Interface Painter (FUIP)''' ist ein FHEM-Modul, mit dem man [[FHEM Tablet UI]] (FTUI) Seiten graphisch ("klickibunti") erstellen kann. D.h. man kann sich ein UI zusammenklicken, welches die Tablet UI Technik verwendet, aber ohne sich selbst unbedingt mit HTML und CSS herumschlagen zu müssen.<br />
Hier ist ein kurzes Video, welches FUIP in Aktion zeigt:<br />
<br />
[https://forum.fhem.de/index.php?action=dlattach;topic=85869.0;attach=98455 Einführungsvideo]<br />
<br />
(Das Video zeigt nicht unbedingt den neusten Stand, aber es dürfte klar werden, wofür FUIP gut sein soll.)<br />
<br />
== Installation und Upgrade in FHEM ==<br />
Genau wie FTUI ist auch FUIP nicht automatisch Teil von FHEM. Es muss explizit installiert bzw. hinzugefügt werden. Die Installation funktioniert folgendermaßen:<br />
* FUIP verwendet FTUI. D.h. man sollte zuerst einmal FTUI installieren, falls noch nicht passiert. Wie das geht steht bei [[FHEM Tablet UI#Installation|FHEM Tablet UI]]. Dabei reicht der erste Schritt aus, da lediglich die FTUI-Dateien von FUIP benötigt werden.<br />
* Dann das FUIP-Repository zum FHEM Update hinzufügen: <br />
** <code>update add https://raw.githubusercontent.com/ThorstenPferdekaemper/FHEM-FUIP/master/controls_fuip.txt</code><br />
* Jetzt <code>update all fuip</code> und <code>shutdown restart</code>. FUIP sollte jetzt installiert sein.<br />
<br />
Zum Upgrade reicht ein <code>update</code>, wenn man FUIP wie oben beschrieben installiert hat. Will man nur den FUIP-Teil aktualisieren und nicht alles in FHEM, dann geht das mit <code>update all fuip</code>.<br />
<br />
Falls es insbesondere beim Upgrade oder nach einem Upgrade Probleme gibt (welcher Art auch immer), sollten die folgenden Punkte geprüft werden:<br />
* Wird das richtige Repository benutzt? Man kann das mit <code>update list</code> überprüfen. Wenn der Eintrag für fuip nicht genau so aussieht wie oben beschrieben, dann sollte er per <code>update delete</code> gelöscht werden und dann genau so eingetragen werden wie oben beschrieben. <br />
* FHEM braucht Schreibrechte im Verzeichnis <fhem>/FHEM/lib/FUIP/config (<fhem> steht meistens für /opt/fhem) und allen enthaltenen Dateien. Auf Betriebssystemebene (Linux) kann man das mit <code>ls -ls</code> überprüfen. Meistens kann es mit folgendem Befehl repariert werden: <code>chown -R fhem:dialout /opt/fhem/FHEM/lib/FUIP/config</code>. (Dieser Punkt gilt nicht bzw. nicht genau so, wenn man die configDB benutzt.)<br />
* Steht etwas verdächtiges im Logfile?<br />
<br />
== Erste Schritte ==<br />
Zuerst legt man ein "FUIP Device" an, also etwa <code>define ui FUIP</code>. Dieses Device meldet sich sozusagen als Webserver bei FHEM an (wie z.B. auch [[HTTPSRV]]), d.h. es erscheint im Menu oben links (über den Räumen) ein Link "ui". Beim Klick auf diesen Link generiert FUIP eine FTUI Übersichtsseite aus den Räumen im FHEM System. (Das kann ein bisschen dauern, wenn man viele Devices hat.) Nun kann man durch Verschieben und größer/kleiner-Ziehen der einzelnen Zellen bzw. durch Verschieben des Zelleninhalts die Gestaltung ändern. Außerdem kann man über das Zahnrad rechts oben in den Zellen neuen Inhalt hinzufügen, den bestehenden Inhalt ändern und vieles mehr.<br />
Durch Klicken auf die Räume im Menu der Übersichtsseite werden einzelne Raum-Seiten generiert. Diese kann man ebenfalls entsprechend bearbeiten. Natürlich können auch eigene Seiten hinzugefügt werden. Wie das geht sieht man im Video, welches oben verlinkt ist.<br />
<br />
Nachdem man die Seiten entsprechend bearbeitet hat sollte man ein <code>set ui save</code> machen. Ansonsten gehen die Änderungen beim nächsten FHEM-Neustart verloren. Ein normales <code>save config</code> reicht nicht aus und ist auch nicht notwendig.<br />
<br />
Die folgenden detaillierten Informationen können zum Teil veraltet sein, da FUIP noch weitereintwickelt wird. Es sollten allerdings keine Funktionen verschwinden.<br />
<br />
== Das Konfigurations-Popup ==<br />
=== ...für Zellen ===<br />
[[Datei:FUIP_KonfigZelle.png|mini|600px]]<br />
Beim Klick auf das Zahnrad rechts oben in einer Zelle wird der Konfigurations-Dialog für diese Zelle geöffnet. Im Folgenden werden die Funktionen der einzelnen Elemente erklärt.<br />
;Zur Seiten-Konfiguration: Damit kann man zum Konfig-Dialog für die ganze Seite wechseln. <br />
;Zellen-Überschrift: Hier wird die Überschrift der Zelle festgelegt. Eine Zelle muss keine Überschrift haben. (Die Zahlen hinter der Überschrift in der Zelle selbst verschwinden, wenn man das Attribut ''locked'' setzt.)<br />
;Neuer View: Hiermit fügt man einen neuen View, also neuen Inhalt, zu einer Zelle hinzu. Man wählt dann aus, welcher Art View angelegt werden soll und füllt die Details, wie z.B. das zugehörige Device. Der neue View wird an einer freien Stelle (falls möglich) in der Zelle eingefügt. Nach schließen des Konfig-Dialogs kann man den View dann per Drag&Drop geeignet positionieren.<br />
;Neuer View (Device): Dies dient ebenfalls dazu, neue Views in die Zelle zu packen. Allerdings wählt man nicht die Art des Views aus, sondern die FHEM-Devices, die dargestellt werden sollen. Das System sucht dann jeweils einen geeigneten View aus. Bisher funktioniert das nur sehr eingeschränkt, hat aber den Vorteil, dass man gleich mehrere Devices auswählen kann.<br />
;Abbrechen: Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Details zum View: Hier klappt man die Details zum View aus und kann diese ändern. Was man damit genau machen kann kommt auf die Art des View an. Per Drag&Drop kann man auch die Reihenfolge der Views im Konfig-Dialog ändern. Das hat allerdings keinen Effekt auf die Positonierung bereits existierender Views in der Zelle. <br />
;View löschen: Das löscht den View aus der Zelle. Wenn man den View eigentlich nicht löschen, sondern in einer anderen Zelle haben will, dann kann man ihn auch per Drag&Drop in die andere Zelle verschieben. Lässt man einen View in einer anderen Zelle "fallen", dann wird dieser automatisch der neuen Zelle zugeordnet.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Auto-Anordnen: Hiermit kann man die einzelnen Views in der Zelle automatisch anordnen. Es kann momentan sein, dass dadurch Änderungen verloren gehen. D.h. dieser Button sollte nur benutzt werden, wenn man seit dem Öffnen des Dialogs keine Änderungen gemacht hat. Außerdem schließt der Button dan Dialog. FUIP ordnet die Views in der Reihenfolge an, in der sie im Konfig-Popup erscheinen. Das zugrunde liegende Layout ist sehr einfach gehalten und kann sich auch noch ändern. Diese Funktion ist vor Allem brauchbar für mehrere gleichartige Views in derselben Zelle, wie z.B. bei Menus. <br />
;Neue Zelle: Legt eine neue (leere) Zelle auf der aktuellen Seite an. Der Konfig-Dialog wird dabei geschlossen und Änderungen gehen verloren.<br />
;Zelle kopieren: Kopiert die aktuelle Zelle. Man muss eine Seite angeben, zu der die kopierte Zelle gehören soll. Das entsprechende Feld ist mit der aktuellen Seite vorbelegt. Falls man dies nicht ändert, wird einfach eine Kopie der Zelle auf derselben Seite erzeugt. Ansonsten wird die Zelle auf die angegebene Seite kopiert. Die Funktion schließt den Konfig-Dialog und Änderungen gehen verloren. Falls man eine andere Seite angegeben hat, wird zu dieser gewechselt.<br />
;Zelle exportieren: Dies erlaubt die Definition der Zelle herunterzuladen und auf dem Client (also dem Rechner, auf dem der Browser läuft) zu speichern.<br />
;Zelle importieren: Damit lädt man eine exportierte Zelle wieder hoch. FUIP erzeugt dann auf der aktuellen Seite eine neue Zelle mit dem entsprechenden Inhalt. Das funktioniert auch mit Zellen, die von einer anderen FUIP-Seite, einem anderen FUIP-Device oder von einer anderen FHEM-Installation kommen.<br />
;Zelle löschen: Damit löscht man die aktuelle Zelle. Sie verschwindet dann von der aktuellen Seite.<br />
;Toggle editOnly: Bei manchen Views ist es schwierig, sie mit der Maus "anzufassen", da sie sofort eine Aktion auslösen (z.B. bei Links). Mit "Toggle editOnly" wird eine graue "Schicht" über die Views gelegt. Dadurch weiß man besser, wo man den View anfassen kann und Mausklicks haben keine Wirkung mehr, außer Drag&Drop.<br />
<br />
=== ...für Seiten ===<br />
[[Datei:FUIP_SeitenKonfig.png|mini|600px]]<br />
Drückt man im Konfig-Dialog für Zellen auf "Cell/Page" kommt man auf den Konfig-Dialog für ganze Seiten. Die Bedeutung der Einzelnen Elemente ist wie folgt.<br />
;Zur Zellen-Konfiguration:Das bringt einen zurück zum Konfig-Dialog für Zellen.<br />
;Seiten-Überschrift:Hier kann ein Titel für die Seite eingetragen werden. Das erscheint dann je nach Browser irgendwo oben. (Technisch ist es der Inhalt des <title> Tags in <head>.)<br />
;Abbrechen:Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Seite kopieren:Dadurch wird eine neue Seite angelegt, die so aussieht wie die aktuelle. Der Dialog wird dann geschlossen und automatisch zur neuen Seite gesprungen.<br />
;Seite exportieren:Das ist dasselbe wie für Zellen, nur für die ganze aktuelle Seite.<br />
;Seite importieren:Das ist im Prinzip auch wie für Zellen, nur dass eine neue Seite angelegt wird. Exportierte Zellen können nur als Zellen importiert werden und exportierte Seiten nur als Seiten.<br />
<br />
== Das FUIP-Device ==<br />
Wie in [[#Erste Schritte|Erste Schritte]] bereits beschrieben, muss man für die Verwendung des FUIP zuerst einmal ein Device zum Modul FUIP anlegen.<br />
<br />
== Links ==<br />
* {{Link2Forum|Topic=85869|LinkText=Foren-Thread zur Geburt von FUIP}}<br />
<br />
[[Kategorie:FHEM Frontends]]</div>Thorsten Pferdekämperhttp://wiki.fhem.de/w/index.php?title=FHEM_User_Interface_Painter&diff=27367FHEM User Interface Painter2018-07-10T12:58:05Z<p>Thorsten Pferdekämper: /* Das Konfigurations-Popup */</p>
<hr />
<div>[[Datei:FUIP_Symbolbild.png|mini|400px|FUIP in Aktion]]<br />
Der '''FHEM User Interface Painter (FUIP)''' ist ein FHEM-Modul, mit dem man [[FHEM Tablet UI]] (FTUI) Seiten graphisch ("klickibunti") erstellen kann. D.h. man kann sich ein UI zusammenklicken, welches die Tablet UI Technik verwendet, aber ohne sich selbst unbedingt mit HTML und CSS herumschlagen zu müssen.<br />
Hier ist ein kurzes Video, welches FUIP in Aktion zeigt:<br />
<br />
[https://forum.fhem.de/index.php?action=dlattach;topic=85869.0;attach=98455 Einführungsvideo]<br />
<br />
(Das Video zeigt nicht unbedingt den neusten Stand, aber es dürfte klar werden, wofür FUIP gut sein soll.)<br />
<br />
== Installation und Upgrade in FHEM ==<br />
Genau wie FTUI ist auch FUIP nicht automatisch Teil von FHEM. Es muss explizit installiert bzw. hinzugefügt werden. Die Installation funktioniert folgendermaßen:<br />
* FUIP verwendet FTUI. D.h. man sollte zuerst einmal FTUI installieren, falls noch nicht passiert. Wie das geht steht bei [[FHEM Tablet UI#Installation|FHEM Tablet UI]]. Dabei reicht der erste Schritt aus, da lediglich die FTUI-Dateien von FUIP benötigt werden.<br />
* Dann das FUIP-Repository zum FHEM Update hinzufügen: <br />
** <code>update add https://raw.githubusercontent.com/ThorstenPferdekaemper/FHEM-FUIP/master/controls_fuip.txt</code><br />
* Jetzt <code>update all fuip</code> und <code>shutdown restart</code>. FUIP sollte jetzt installiert sein.<br />
<br />
Zum Upgrade reicht ein <code>update</code>, wenn man FUIP wie oben beschrieben installiert hat. Will man nur den FUIP-Teil aktualisieren und nicht alles in FHEM, dann geht das mit <code>update all fuip</code>.<br />
<br />
Falls es insbesondere beim Upgrade oder nach einem Upgrade Probleme gibt (welcher Art auch immer), sollten die folgenden Punkte geprüft werden:<br />
* Wird das richtige Repository benutzt? Man kann das mit <code>update list</code> überprüfen. Wenn der Eintrag für fuip nicht genau so aussieht wie oben beschrieben, dann sollte er per <code>update delete</code> gelöscht werden und dann genau so eingetragen werden wie oben beschrieben. <br />
* FHEM braucht Schreibrechte im Verzeichnis <fhem>/FHEM/lib/FUIP/config (<fhem> steht meistens für /opt/fhem) und allen enthaltenen Dateien. Auf Betriebssystemebene (Linux) kann man das mit <code>ls -ls</code> überprüfen. Meistens kann es mit folgendem Befehl repariert werden: <code>chown -R fhem:dialout /opt/fhem/FHEM/lib/FUIP/config</code>. (Dieser Punkt gilt nicht bzw. nicht genau so, wenn man die configDB benutzt.)<br />
* Steht etwas verdächtiges im Logfile?<br />
<br />
== Erste Schritte ==<br />
Zuerst legt man ein "FUIP Device" an, also etwa <code>define ui FUIP</code>. Dieses Device meldet sich sozusagen als Webserver bei FHEM an (wie z.B. auch [[HTTPSRV]]), d.h. es erscheint im Menu oben links (über den Räumen) ein Link "ui". Beim Klick auf diesen Link generiert FUIP eine FTUI Übersichtsseite aus den Räumen im FHEM System. (Das kann ein bisschen dauern, wenn man viele Devices hat.) Nun kann man durch Verschieben und größer/kleiner-Ziehen der einzelnen Zellen bzw. durch Verschieben des Zelleninhalts die Gestaltung ändern. Außerdem kann man über das Zahnrad rechts oben in den Zellen neuen Inhalt hinzufügen, den bestehenden Inhalt ändern und vieles mehr.<br />
Durch Klicken auf die Räume im Menu der Übersichtsseite werden einzelne Raum-Seiten generiert. Diese kann man ebenfalls entsprechend bearbeiten. Natürlich können auch eigene Seiten hinzugefügt werden. Wie das geht sieht man im Video, welches oben verlinkt ist.<br />
<br />
Nachdem man die Seiten entsprechend bearbeitet hat sollte man ein <code>set ui save</code> machen. Ansonsten gehen die Änderungen beim nächsten FHEM-Neustart verloren. Ein normales <code>save config</code> reicht nicht aus und ist auch nicht notwendig.<br />
<br />
Die folgenden detaillierten Informationen können zum Teil veraltet sein, da FUIP noch weitereintwickelt wird. Es sollten allerdings keine Funktionen verschwinden.<br />
<br />
== Das Konfigurations-Popup ==<br />
=== ...für Zellen ===<br />
[[Datei:FUIP_KonfigZelle.png|mini|600px]]<br />
Beim Klick auf das Zahnrad rechts oben in einer Zelle wird der Konfigurations-Dialog für diese Zelle geöffnet. Im Folgenden werden die Funktionen der einzelnen Elemente erklärt.<br />
;Zur Seiten-Konfiguration: Damit kann man zum Konfig-Dialog für die ganze Seite wechseln. <br />
;Zellen-Überschrift: Hier wird die Überschrift der Zelle festgelegt. Eine Zelle muss keine Überschrift haben. (Die Zahlen hinter der Überschrift in der Zelle selbst verschwinden, wenn man das Attribut ''locked'' setzt.)<br />
;Neuer View: Hiermit fügt man einen neuen View, also neuen Inhalt, zu einer Zelle hinzu. Man wählt dann aus, welcher Art View angelegt werden soll und füllt die Details, wie z.B. das zugehörige Device. Der neue View wird an einer freien Stelle (falls möglich) in der Zelle eingefügt. Nach schließen des Konfig-Dialogs kann man den View dann per Drag&Drop geeignet positionieren.<br />
;Neuer View (Device): Dies dient ebenfalls dazu, neue Views in die Zelle zu packen. Allerdings wählt man nicht die Art des Views aus, sondern die FHEM-Devices, die dargestellt werden sollen. Das System sucht dann jeweils einen geeigneten View aus. Bisher funktioniert das nur sehr eingeschränkt, hat aber den Vorteil, dass man gleich mehrere Devices auswählen kann.<br />
;Abbrechen: Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Details zum View: Hier klappt man die Details zum View aus und kann diese ändern. Was man damit genau machen kann kommt auf die Art des View an. Per Drag&Drop kann man auch die Reihenfolge der Views im Konfig-Dialog ändern. Das hat allerdings keinen Effekt auf die Positonierung bereits existierender Views in der Zelle. <br />
;View löschen: Das löscht den View aus der Zelle. Wenn man den View eigentlich nicht löschen, sondern in einer anderen Zelle haben will, dann kann man ihn auch per Drag&Drop in die andere Zelle verschieben. Lässt man einen View in einer anderen Zelle "fallen", dann wird dieser automatisch der neuen Zelle zugeordnet.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Auto-Anordnen: Hiermit kann man die einzelnen Views in der Zelle automatisch anordnen. Es kann momentan sein, dass dadurch Änderungen verloren gehen. D.h. dieser Button sollte nur benutzt werden, wenn man seit dem Öffnen des Dialogs keine Änderungen gemacht hat. Außerdem schließt der Button dan Dialog. FUIP ordnet die Views in der Reihenfolge an, in der sie im Konfig-Popup erscheinen. Das zugrunde liegende Layout ist sehr einfach gehalten und kann sich auch noch ändern. Diese Funktion ist vor Allem brauchbar für mehrere gleichartige Views in derselben Zelle, wie z.B. bei Menus. <br />
;Neue Zelle: Legt eine neue (leere) Zelle auf der aktuellen Seite an. Der Konfig-Dialog wird dabei geschlossen und Änderungen gehen verloren.<br />
;Zelle kopieren: Kopiert die aktuelle Zelle. Man muss eine Seite angeben, zu der die kopierte Zelle gehören soll. Das entsprechende Feld ist mit der aktuellen Seite vorbelegt. Falls man dies nicht ändert, wird einfach eine Kopie der Zelle auf derselben Seite erzeugt. Ansonsten wird die Zelle auf die angegebene Seite kopiert. Die Funktion schließt den Konfig-Dialog und Änderungen gehen verloren. Falls man eine andere Seite angegeben hat, wird zu dieser gewechselt.<br />
;Zelle exportieren: Dies erlaubt die Definition der Zelle herunterzuladen und auf dem Client (also dem Rechner, auf dem der Browser läuft) zu speichern.<br />
;Zelle importieren: Damit lädt man eine exportierte Zelle wieder hoch. FUIP erzeugt dann auf der aktuellen Seite eine neue Zelle mit dem entsprechenden Inhalt. Das funktioniert auch mit Zellen, die von einer anderen FUIP-Seite, einem anderen FUIP-Device oder von einer anderen FHEM-Installation kommen.<br />
;Zelle löschen: Damit löscht man die aktuelle Zelle. Sie verschwindet dann von der aktuellen Seite.<br />
;Toggle editOnly: Bei manchen Views ist es schwierig, sie mit der Maus "anzufassen", da sie sofort eine Aktion auslösen (z.B. bei Links). Mit "Toggle editOnly" wird eine graue "Schicht" über die Views gelegt. Dadurch weiß man besser, wo man den View anfassen kann und Mausklicks haben keine Wirkung mehr, außer Drag&Drop.<br />
<br />
=== ...für Seiten ===<br />
[[Datei:FUIP_SeitenKonfig.png|mini|600px]]<br />
Drückt man im Konfig-Dialog für Zellen auf "Cell/Page" kommt man auf den Konfig-Dialog für ganze Seiten. Die Bedeutung der Einzelnen Elemente ist wie folgt.<br />
;Zur Zellen-Konfiguration:Das bringt einen zurück zum Konfig-Dialog für Zellen.<br />
;Seiten-Überschrift:Hier kann ein Titel für die Seite eingetragen werden. Das erscheint dann je nach Browser irgendwo oben. (Technisch ist es der Inhalt des <title> Tags in <head>.)<br />
;Abbrechen:Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Seite kopieren:Dadurch wird eine neue Seite angelegt, die so aussieht wie die aktuelle. Der Dialog wird dann geschlossen und automatisch zur neuen Seite gesprungen.<br />
;Seite exportieren:Das ist dasselbe wie für Zellen, nur für die ganze aktuelle Seite.<br />
;Seite importieren:Das ist im Prinzip auch wie für Zellen, nur dass eine neue Seite angelegt wird. Exportierte Zellen können nur als Zellen importiert werden und exportierte Seiten nur als Seiten.<br />
<br />
== Das FUIP-Device ==<br />
Wie in [[#Erste Schritte]] bereits beschrieben, muss man für die Verwendung des FUIP zuerst einmal ein Device zum Modul FUIP anlegen.<br />
<br />
== Links ==<br />
* {{Link2Forum|Topic=85869|LinkText=Foren-Thread zur Geburt von FUIP}}<br />
<br />
[[Kategorie:FHEM Frontends]]</div>Thorsten Pferdekämperhttp://wiki.fhem.de/w/index.php?title=FHEM_User_Interface_Painter&diff=27357FHEM User Interface Painter2018-07-09T14:15:05Z<p>Thorsten Pferdekämper: /* Erste Schritte */</p>
<hr />
<div>[[Datei:FUIP_Symbolbild.png|mini|400px|FUIP in Aktion]]<br />
Der '''FHEM User Interface Painter (FUIP)''' ist ein FHEM-Modul, mit dem man [[FHEM Tablet UI]] (FTUI) Seiten graphisch ("klickibunti") erstellen kann. D.h. man kann sich ein UI zusammenklicken, welches die Tablet UI Technik verwendet, aber ohne sich selbst unbedingt mit HTML und CSS herumschlagen zu müssen.<br />
Hier ist ein kurzes Video, welches FUIP in Aktion zeigt:<br />
<br />
[https://forum.fhem.de/index.php?action=dlattach;topic=85869.0;attach=98455 Einführungsvideo]<br />
<br />
(Das Video zeigt nicht unbedingt den neusten Stand, aber es dürfte klar werden, wofür FUIP gut sein soll.)<br />
<br />
== Installation und Upgrade in FHEM ==<br />
Genau wie FTUI ist auch FUIP nicht automatisch Teil von FHEM. Es muss explizit installiert bzw. hinzugefügt werden. Die Installation funktioniert folgendermaßen:<br />
* FUIP verwendet FTUI. D.h. man sollte zuerst einmal FTUI installieren, falls noch nicht passiert. Wie das geht steht bei [[FHEM Tablet UI#Installation|FHEM Tablet UI]]. Dabei reicht der erste Schritt aus, da lediglich die FTUI-Dateien von FUIP benötigt werden.<br />
* Dann das FUIP-Repository zum FHEM Update hinzufügen: <br />
** <code>update add https://raw.githubusercontent.com/ThorstenPferdekaemper/FHEM-FUIP/master/controls_fuip.txt</code><br />
* Jetzt <code>update all fuip</code> und <code>shutdown restart</code>. FUIP sollte jetzt installiert sein.<br />
<br />
Zum Upgrade reicht ein <code>update</code>, wenn man FUIP wie oben beschrieben installiert hat. Will man nur den FUIP-Teil aktualisieren und nicht alles in FHEM, dann geht das mit <code>update all fuip</code>.<br />
<br />
Falls es insbesondere beim Upgrade oder nach einem Upgrade Probleme gibt (welcher Art auch immer), sollten die folgenden Punkte geprüft werden:<br />
* Wird das richtige Repository benutzt? Man kann das mit <code>update list</code> überprüfen. Wenn der Eintrag für fuip nicht genau so aussieht wie oben beschrieben, dann sollte er per <code>update delete</code> gelöscht werden und dann genau so eingetragen werden wie oben beschrieben. <br />
* FHEM braucht Schreibrechte im Verzeichnis <fhem>/FHEM/lib/FUIP/config (<fhem> steht meistens für /opt/fhem) und allen enthaltenen Dateien. Auf Betriebssystemebene (Linux) kann man das mit <code>ls -ls</code> überprüfen. Meistens kann es mit folgendem Befehl repariert werden: <code>chown -R fhem:dialout /opt/fhem/FHEM/lib/FUIP/config</code>. (Dieser Punkt gilt nicht bzw. nicht genau so, wenn man die configDB benutzt.)<br />
* Steht etwas verdächtiges im Logfile?<br />
<br />
== Erste Schritte ==<br />
Zuerst legt man ein "FUIP Device" an, also etwa <code>define ui FUIP</code>. Dieses Device meldet sich sozusagen als Webserver bei FHEM an (wie z.B. auch [[HTTPSRV]]), d.h. es erscheint im Menu oben links (über den Räumen) ein Link "ui". Beim Klick auf diesen Link generiert FUIP eine FTUI Übersichtsseite aus den Räumen im FHEM System. (Das kann ein bisschen dauern, wenn man viele Devices hat.) Nun kann man durch Verschieben und größer/kleiner-Ziehen der einzelnen Zellen bzw. durch Verschieben des Zelleninhalts die Gestaltung ändern. Außerdem kann man über das Zahnrad rechts oben in den Zellen neuen Inhalt hinzufügen, den bestehenden Inhalt ändern und vieles mehr.<br />
Durch Klicken auf die Räume im Menu der Übersichtsseite werden einzelne Raum-Seiten generiert. Diese kann man ebenfalls entsprechend bearbeiten. Natürlich können auch eigene Seiten hinzugefügt werden. Wie das geht sieht man im Video, welches oben verlinkt ist.<br />
<br />
Nachdem man die Seiten entsprechend bearbeitet hat sollte man ein <code>set ui save</code> machen. Ansonsten gehen die Änderungen beim nächsten FHEM-Neustart verloren. Ein normales <code>save config</code> reicht nicht aus und ist auch nicht notwendig.<br />
<br />
Die folgenden detaillierten Informationen können zum Teil veraltet sein, da FUIP noch weitereintwickelt wird. Es sollten allerdings keine Funktionen verschwinden.<br />
<br />
== Das Konfigurations-Popup ==<br />
=== ...für Zellen ===<br />
[[Datei:FUIP_KonfigZelle.png|mini|600px]]<br />
Beim Klick auf das Zahnrad rechts oben in einer Zelle wird der Konfigurations-Dialog für diese Zelle geöffnet. Im Folgenden werden die Funktionen der einzelnen Elemente erklärt.<br />
;Zur Seiten-Konfiguration: Damit kann man zum Konfig-Dialog für die ganze Seite wechseln. <br />
;Zellen-Überschrift: Hier wird die Überschrift der Zelle festgelegt. Eine Zelle muss keine Überschrift haben. (Die Zahlen hinter der Überschrift in der Zelle selbst verschwinden, wenn man das Attribut ''locked'' setzt.)<br />
;Neuer View: Hiermit fügt man einen neuen View, also neuen Inhalt, zu einer Zelle hinzu. Man wählt dann aus, welcher Art View angelegt werden soll und füllt die Details, wie z.B. das zugehörige Device. Der neue View wird an einer freien Stelle (falls möglich) in der Zelle eingefügt. Nach schließen des Konfig-Dialogs kann man den View dann per Drag&Drop geeignet positionieren.<br />
;Neuer View (Device): Dies dient ebenfalls dazu, neue Views in die Zelle zu packen. Allerdings wählt man nicht die Art des Views aus, sondern die FHEM-Devices, die dargestellt werden sollen. Das System sucht dann jeweils einen geeigneten View aus. Bisher funktioniert das nur sehr eingeschränkt, hat aber den Vorteil, dass man gleich mehrere Devices auswählen kann.<br />
;Abbrechen: Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Details zum View: Hier klappt man die Details zum View aus und kann diese ändern. Was man damit genau machen kann kommt auf die Art des View an. Per Drag&Drop kann man auch die Reihenfolge der Views im Konfig-Dialog ändern. Das hat allerdings keinen Effekt auf die Positonierung bereits existierender Views in der Zelle. <br />
;View löschen: Das löscht den View aus der Zelle. Wenn man den View eigentlich nicht löschen, sondern in einer anderen Zelle haben will, dann kann man ihn auch per Drag&Drop in die andere Zelle verschieben. Lässt man einen View in einer anderen Zelle "fallen", dann wird dieser automatisch der neuen Zelle zugeordnet.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Auto-Anordnen: Hiermit kann man die einzelnen Views in der Zelle automatisch anordnen. Es kann momentan sein, dass dadurch Änderungen verloren gehen. D.h. dieser Button sollte nur benutzt werden, wenn man seit dem Öffnen des Dialogs keine Änderungen gemacht hat. Außerdem schließt der Button dan Dialog. FUIP ordnet die Views in der Reihenfolge an, in der sie im Konfig-Popup erscheinen. Das zugrunde liegende Layout ist sehr einfach gehalten und kann sich auch noch ändern. Diese Funktion ist vor Allem brauchbar für mehrere gleichartige Views in derselben Zelle, wie z.B. bei Menus. <br />
;Neue Zelle: Legt eine neue (leere) Zelle auf der aktuellen Seite an. Der Konfig-Dialog wird dabei geschlossen und Änderungen gehen verloren.<br />
;Zelle kopieren: Kopiert die aktuelle Zelle. Man muss eine Seite angeben, zu der die kopierte Zelle gehören soll. Das entsprechende Feld ist mit der aktuellen Seite vorbelegt. Falls man dies nicht ändert, wird einfach eine Kopie der Zelle auf derselben Seite erzeugt. Ansonsten wird die Zelle auf die angegebene Seite kopiert. Die Funktion schließt den Konfig-Dialog und Änderungen gehen verloren. Falls man eine andere Seite angegeben hat, wird zu dieser gewechselt.<br />
;Zelle exportieren: Dies erlaubt die Definition der Zelle herunterzuladen und auf dem Client (also dem Rechner, auf dem der Browser läuft) zu speichern.<br />
;Zelle importieren: Damit lädt man eine exportierte Zelle wieder hoch. FUIP erzeugt dann auf der aktuellen Seite eine neue Zelle mit dem entsprechenden Inhalt. Das funktioniert auch mit Zellen, die von einer anderen FUIP-Seite, einem anderen FUIP-Device oder von einer anderen FHEM-Installation kommen.<br />
;Zelle löschen: Damit löscht man die aktuelle Zelle. Sie verschwindet dann von der aktuellen Seite.<br />
;Toggle editOnly: Bei manchen Views ist es schwierig, sie mit der Maus "anzufassen", da sie sofort eine Aktion auslösen (z.B. bei Links). Mit "Toggle editOnly" wird eine graue "Schicht" über die Views gelegt. Dadurch weiß man besser, wo man den View anfassen kann und Mausklicks haben keine Wirkung mehr, außer Drag&Drop.<br />
<br />
=== ...für Seiten ===<br />
[[Datei:FUIP_SeitenKonfig.png|mini|600px]]<br />
Drückt man im Konfig-Dialog für Zellen auf "Cell/Page" kommt man auf den Konfig-Dialog für ganze Seiten. Die Bedeutung der Einzelnen Elemente ist wie folgt.<br />
;Zur Zellen-Konfiguration:Das bringt einen zurück zum Konfig-Dialog für Zellen.<br />
;Seiten-Überschrift:Hier kann ein Titel für die Seite eingetragen werden. Das erscheint dann je nach Browser irgendwo oben. (Technisch ist es der Inhalt des <title> Tags in <head>.)<br />
;Abbrechen:Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Seite kopieren:Dadurch wird eine neue Seite angelegt, die so aussieht wie die aktuelle. Der Dialog wird dann geschlossen und automatisch zur neuen Seite gesprungen.<br />
;Seite exportieren:Das ist dasselbe wie für Zellen, nur für die ganze aktuelle Seite.<br />
;Seite importieren:Das ist im Prinzip auch wie für Zellen, nur dass eine neue Seite angelegt wird. Exportierte Zellen können nur als Zellen importiert werden und exportierte Seiten nur als Seiten.<br />
<br />
== Links ==<br />
* {{Link2Forum|Topic=85869|LinkText=Foren-Thread zur Geburt von FUIP}}<br />
<br />
[[Kategorie:FHEM Frontends]]</div>Thorsten Pferdekämperhttp://wiki.fhem.de/w/index.php?title=FHEM_User_Interface_Painter&diff=27355FHEM User Interface Painter2018-07-09T14:13:58Z<p>Thorsten Pferdekämper: /* Installation und Upgrade in FHEM */</p>
<hr />
<div>[[Datei:FUIP_Symbolbild.png|mini|400px|FUIP in Aktion]]<br />
Der '''FHEM User Interface Painter (FUIP)''' ist ein FHEM-Modul, mit dem man [[FHEM Tablet UI]] (FTUI) Seiten graphisch ("klickibunti") erstellen kann. D.h. man kann sich ein UI zusammenklicken, welches die Tablet UI Technik verwendet, aber ohne sich selbst unbedingt mit HTML und CSS herumschlagen zu müssen.<br />
Hier ist ein kurzes Video, welches FUIP in Aktion zeigt:<br />
<br />
[https://forum.fhem.de/index.php?action=dlattach;topic=85869.0;attach=98455 Einführungsvideo]<br />
<br />
(Das Video zeigt nicht unbedingt den neusten Stand, aber es dürfte klar werden, wofür FUIP gut sein soll.)<br />
<br />
== Installation und Upgrade in FHEM ==<br />
Genau wie FTUI ist auch FUIP nicht automatisch Teil von FHEM. Es muss explizit installiert bzw. hinzugefügt werden. Die Installation funktioniert folgendermaßen:<br />
* FUIP verwendet FTUI. D.h. man sollte zuerst einmal FTUI installieren, falls noch nicht passiert. Wie das geht steht bei [[FHEM Tablet UI#Installation|FHEM Tablet UI]]. Dabei reicht der erste Schritt aus, da lediglich die FTUI-Dateien von FUIP benötigt werden.<br />
* Dann das FUIP-Repository zum FHEM Update hinzufügen: <br />
** <code>update add https://raw.githubusercontent.com/ThorstenPferdekaemper/FHEM-FUIP/master/controls_fuip.txt</code><br />
* Jetzt <code>update all fuip</code> und <code>shutdown restart</code>. FUIP sollte jetzt installiert sein.<br />
<br />
Zum Upgrade reicht ein <code>update</code>, wenn man FUIP wie oben beschrieben installiert hat. Will man nur den FUIP-Teil aktualisieren und nicht alles in FHEM, dann geht das mit <code>update all fuip</code>.<br />
<br />
Falls es insbesondere beim Upgrade oder nach einem Upgrade Probleme gibt (welcher Art auch immer), sollten die folgenden Punkte geprüft werden:<br />
* Wird das richtige Repository benutzt? Man kann das mit <code>update list</code> überprüfen. Wenn der Eintrag für fuip nicht genau so aussieht wie oben beschrieben, dann sollte er per <code>update delete</code> gelöscht werden und dann genau so eingetragen werden wie oben beschrieben. <br />
* FHEM braucht Schreibrechte im Verzeichnis <fhem>/FHEM/lib/FUIP/config (<fhem> steht meistens für /opt/fhem) und allen enthaltenen Dateien. Auf Betriebssystemebene (Linux) kann man das mit <code>ls -ls</code> überprüfen. Meistens kann es mit folgendem Befehl repariert werden: <code>chown -R fhem:dialout /opt/fhem/FHEM/lib/FUIP/config</code>. (Dieser Punkt gilt nicht bzw. nicht genau so, wenn man die configDB benutzt.)<br />
* Steht etwas verdächtiges im Logfile?<br />
<br />
== Erste Schritte ==<br />
Zuerst legt man ein "FUIP Device" an, also etwa <code>define ui FUIP</code>. Dieses Device meldet sich sozusagen als Webserver bei FHEM an (wie z.B. auch [[HTTPSRV]]), d.h. es erscheint im Menu oben links (über den Räumen) ein Link "ui". Beim Klick auf diesen Link generiert FUIP eine FTUI Übersichtsseite aus den Räumen im FHEM System. Nun kann man durch Verschieben und größer/kleiner-Ziehen der einzelnen Zellen bzw. durch Verschieben des Zelleninhalts die Gestaltung ändern. Außerdem kann man über das Zahnrad rechts oben in den Zellen neuen Inhalt hinzufügen, den bestehenden Inhalt ändern und vieles mehr.<br />
Durch Klicken auf die Räume im Menu der Übersichtsseite werden einzelne Raum-Seiten generiert. Diese kann man ebenfalls entsprechend bearbeiten. Natürlich können auch eigene Seiten hinzugefügt werden. Wie das geht sieht man im Video, welches oben verlinkt ist.<br />
<br />
Nachdem man die Seiten entsprechend bearbeitet hat sollte man ein <code>set ui save</code> machen. Ansonsten gehen die Änderungen beim nächsten FHEM-Neustart verloren. Ein normales <code>save config</code> reicht nicht aus und ist auch nicht notwendig.<br />
<br />
Die folgenden detaillierten Informationen können zum Teil veraltet sein, da FUIP noch weitereintwickelt wird. Es sollten allerdings keine Funktionen verschwinden.<br />
<br />
== Das Konfigurations-Popup ==<br />
=== ...für Zellen ===<br />
[[Datei:FUIP_KonfigZelle.png|mini|600px]]<br />
Beim Klick auf das Zahnrad rechts oben in einer Zelle wird der Konfigurations-Dialog für diese Zelle geöffnet. Im Folgenden werden die Funktionen der einzelnen Elemente erklärt.<br />
;Zur Seiten-Konfiguration: Damit kann man zum Konfig-Dialog für die ganze Seite wechseln. <br />
;Zellen-Überschrift: Hier wird die Überschrift der Zelle festgelegt. Eine Zelle muss keine Überschrift haben. (Die Zahlen hinter der Überschrift in der Zelle selbst verschwinden, wenn man das Attribut ''locked'' setzt.)<br />
;Neuer View: Hiermit fügt man einen neuen View, also neuen Inhalt, zu einer Zelle hinzu. Man wählt dann aus, welcher Art View angelegt werden soll und füllt die Details, wie z.B. das zugehörige Device. Der neue View wird an einer freien Stelle (falls möglich) in der Zelle eingefügt. Nach schließen des Konfig-Dialogs kann man den View dann per Drag&Drop geeignet positionieren.<br />
;Neuer View (Device): Dies dient ebenfalls dazu, neue Views in die Zelle zu packen. Allerdings wählt man nicht die Art des Views aus, sondern die FHEM-Devices, die dargestellt werden sollen. Das System sucht dann jeweils einen geeigneten View aus. Bisher funktioniert das nur sehr eingeschränkt, hat aber den Vorteil, dass man gleich mehrere Devices auswählen kann.<br />
;Abbrechen: Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Details zum View: Hier klappt man die Details zum View aus und kann diese ändern. Was man damit genau machen kann kommt auf die Art des View an. Per Drag&Drop kann man auch die Reihenfolge der Views im Konfig-Dialog ändern. Das hat allerdings keinen Effekt auf die Positonierung bereits existierender Views in der Zelle. <br />
;View löschen: Das löscht den View aus der Zelle. Wenn man den View eigentlich nicht löschen, sondern in einer anderen Zelle haben will, dann kann man ihn auch per Drag&Drop in die andere Zelle verschieben. Lässt man einen View in einer anderen Zelle "fallen", dann wird dieser automatisch der neuen Zelle zugeordnet.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Auto-Anordnen: Hiermit kann man die einzelnen Views in der Zelle automatisch anordnen. Es kann momentan sein, dass dadurch Änderungen verloren gehen. D.h. dieser Button sollte nur benutzt werden, wenn man seit dem Öffnen des Dialogs keine Änderungen gemacht hat. Außerdem schließt der Button dan Dialog. FUIP ordnet die Views in der Reihenfolge an, in der sie im Konfig-Popup erscheinen. Das zugrunde liegende Layout ist sehr einfach gehalten und kann sich auch noch ändern. Diese Funktion ist vor Allem brauchbar für mehrere gleichartige Views in derselben Zelle, wie z.B. bei Menus. <br />
;Neue Zelle: Legt eine neue (leere) Zelle auf der aktuellen Seite an. Der Konfig-Dialog wird dabei geschlossen und Änderungen gehen verloren.<br />
;Zelle kopieren: Kopiert die aktuelle Zelle. Man muss eine Seite angeben, zu der die kopierte Zelle gehören soll. Das entsprechende Feld ist mit der aktuellen Seite vorbelegt. Falls man dies nicht ändert, wird einfach eine Kopie der Zelle auf derselben Seite erzeugt. Ansonsten wird die Zelle auf die angegebene Seite kopiert. Die Funktion schließt den Konfig-Dialog und Änderungen gehen verloren. Falls man eine andere Seite angegeben hat, wird zu dieser gewechselt.<br />
;Zelle exportieren: Dies erlaubt die Definition der Zelle herunterzuladen und auf dem Client (also dem Rechner, auf dem der Browser läuft) zu speichern.<br />
;Zelle importieren: Damit lädt man eine exportierte Zelle wieder hoch. FUIP erzeugt dann auf der aktuellen Seite eine neue Zelle mit dem entsprechenden Inhalt. Das funktioniert auch mit Zellen, die von einer anderen FUIP-Seite, einem anderen FUIP-Device oder von einer anderen FHEM-Installation kommen.<br />
;Zelle löschen: Damit löscht man die aktuelle Zelle. Sie verschwindet dann von der aktuellen Seite.<br />
;Toggle editOnly: Bei manchen Views ist es schwierig, sie mit der Maus "anzufassen", da sie sofort eine Aktion auslösen (z.B. bei Links). Mit "Toggle editOnly" wird eine graue "Schicht" über die Views gelegt. Dadurch weiß man besser, wo man den View anfassen kann und Mausklicks haben keine Wirkung mehr, außer Drag&Drop.<br />
<br />
=== ...für Seiten ===<br />
[[Datei:FUIP_SeitenKonfig.png|mini|600px]]<br />
Drückt man im Konfig-Dialog für Zellen auf "Cell/Page" kommt man auf den Konfig-Dialog für ganze Seiten. Die Bedeutung der Einzelnen Elemente ist wie folgt.<br />
;Zur Zellen-Konfiguration:Das bringt einen zurück zum Konfig-Dialog für Zellen.<br />
;Seiten-Überschrift:Hier kann ein Titel für die Seite eingetragen werden. Das erscheint dann je nach Browser irgendwo oben. (Technisch ist es der Inhalt des <title> Tags in <head>.)<br />
;Abbrechen:Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Seite kopieren:Dadurch wird eine neue Seite angelegt, die so aussieht wie die aktuelle. Der Dialog wird dann geschlossen und automatisch zur neuen Seite gesprungen.<br />
;Seite exportieren:Das ist dasselbe wie für Zellen, nur für die ganze aktuelle Seite.<br />
;Seite importieren:Das ist im Prinzip auch wie für Zellen, nur dass eine neue Seite angelegt wird. Exportierte Zellen können nur als Zellen importiert werden und exportierte Seiten nur als Seiten.<br />
<br />
== Links ==<br />
* {{Link2Forum|Topic=85869|LinkText=Foren-Thread zur Geburt von FUIP}}<br />
<br />
[[Kategorie:FHEM Frontends]]</div>Thorsten Pferdekämperhttp://wiki.fhem.de/w/index.php?title=FHEM_User_Interface_Painter&diff=27353FHEM User Interface Painter2018-07-09T14:12:23Z<p>Thorsten Pferdekämper: /* Installation und Upgrade in FHEM */</p>
<hr />
<div>[[Datei:FUIP_Symbolbild.png|mini|400px|FUIP in Aktion]]<br />
Der '''FHEM User Interface Painter (FUIP)''' ist ein FHEM-Modul, mit dem man [[FHEM Tablet UI]] (FTUI) Seiten graphisch ("klickibunti") erstellen kann. D.h. man kann sich ein UI zusammenklicken, welches die Tablet UI Technik verwendet, aber ohne sich selbst unbedingt mit HTML und CSS herumschlagen zu müssen.<br />
Hier ist ein kurzes Video, welches FUIP in Aktion zeigt:<br />
<br />
[https://forum.fhem.de/index.php?action=dlattach;topic=85869.0;attach=98455 Einführungsvideo]<br />
<br />
(Das Video zeigt nicht unbedingt den neusten Stand, aber es dürfte klar werden, wofür FUIP gut sein soll.)<br />
<br />
== Installation und Upgrade in FHEM ==<br />
Genau wie FTUI ist auch FUIP nicht automatisch Teil von FHEM. Es muss explizit installiert bzw. hinzugefügt werden. Die Installation funktioniert folgendermaßen:<br />
* FUIP verwendet FTUI. D.h. man sollte zuerst einmal FTUI installieren, falls noch nicht passiert. Wie das geht steht bei [[FHEM Tablet UI#Installation|FHEM Tablet UI]]. Dabei reicht der erste Schritt aus, da lediglich die FTUI-Dateien von FUIP benötigt werden.<br />
* Dann das FUIP-Repository zum FHEM Update hinzufügen: <br />
** <code>update add https://raw.githubusercontent.com/ThorstenPferdekaemper/FHEM-FUIP/master/controls_fuip.txt</code><br />
* Jetzt <code>update all fuip</code> und <code>shutdown restart</code>. FUIP sollte jetzt installiert sein.<br />
<br />
Zum Upgrade reicht ein <code>update</code>, wenn man FUIP wie oben beschrieben installiert hat. Will man nur den FUIP-Teil aktualisieren und nicht alles in FHEM, dann geht das mit <code>update all fuip</code>.<br />
<br />
Falls es insbesondere beim Upgrade oder nach einem Upgrade Probleme gibt (welcher Art auch immer), sollten die folgenden Punkte geprüft werden:<br />
* Wird das richtige Repository benutzt? Man kann das mit <code>update list</code> überprüfen. Wenn der Eintrag für fuip nicht genau so aussieht wie oben beschrieben, dann sollte er per <code>update delete</code> gelöscht werden und dann genau so eingetragen werden wie oben beschrieben. <br />
* Sind die Abhängigkeiten (Perl Module) installiert? Siehe die Installationanleitung weiter oben für Details.<br />
* FHEM braucht Schreibrechte im Verzeichnis <fhem>/FHEM/lib/FUIP/config (<fhem> steht meistens für /opt/fhem) und allen enthaltenen Dateien. Auf Betriebssystemebene (Linux) kann man das mit <code>ls -ls</code> überprüfen. Meistens kann es mit folgendem Befehl repariert werden: <code>chown -R fhem:dialout /opt/fhem/FHEM/lib/FUIP/config</code>. (Dieser Punkt gilt nicht bzw. nicht genau so, wenn man die configDB benutzt.)<br />
<br />
== Erste Schritte ==<br />
Zuerst legt man ein "FUIP Device" an, also etwa <code>define ui FUIP</code>. Dieses Device meldet sich sozusagen als Webserver bei FHEM an (wie z.B. auch [[HTTPSRV]]), d.h. es erscheint im Menu oben links (über den Räumen) ein Link "ui". Beim Klick auf diesen Link generiert FUIP eine FTUI Übersichtsseite aus den Räumen im FHEM System. Nun kann man durch Verschieben und größer/kleiner-Ziehen der einzelnen Zellen bzw. durch Verschieben des Zelleninhalts die Gestaltung ändern. Außerdem kann man über das Zahnrad rechts oben in den Zellen neuen Inhalt hinzufügen, den bestehenden Inhalt ändern und vieles mehr.<br />
Durch Klicken auf die Räume im Menu der Übersichtsseite werden einzelne Raum-Seiten generiert. Diese kann man ebenfalls entsprechend bearbeiten. Natürlich können auch eigene Seiten hinzugefügt werden. Wie das geht sieht man im Video, welches oben verlinkt ist.<br />
<br />
Nachdem man die Seiten entsprechend bearbeitet hat sollte man ein <code>set ui save</code> machen. Ansonsten gehen die Änderungen beim nächsten FHEM-Neustart verloren. Ein normales <code>save config</code> reicht nicht aus und ist auch nicht notwendig.<br />
<br />
Die folgenden detaillierten Informationen können zum Teil veraltet sein, da FUIP noch weitereintwickelt wird. Es sollten allerdings keine Funktionen verschwinden.<br />
<br />
== Das Konfigurations-Popup ==<br />
=== ...für Zellen ===<br />
[[Datei:FUIP_KonfigZelle.png|mini|600px]]<br />
Beim Klick auf das Zahnrad rechts oben in einer Zelle wird der Konfigurations-Dialog für diese Zelle geöffnet. Im Folgenden werden die Funktionen der einzelnen Elemente erklärt.<br />
;Zur Seiten-Konfiguration: Damit kann man zum Konfig-Dialog für die ganze Seite wechseln. <br />
;Zellen-Überschrift: Hier wird die Überschrift der Zelle festgelegt. Eine Zelle muss keine Überschrift haben. (Die Zahlen hinter der Überschrift in der Zelle selbst verschwinden, wenn man das Attribut ''locked'' setzt.)<br />
;Neuer View: Hiermit fügt man einen neuen View, also neuen Inhalt, zu einer Zelle hinzu. Man wählt dann aus, welcher Art View angelegt werden soll und füllt die Details, wie z.B. das zugehörige Device. Der neue View wird an einer freien Stelle (falls möglich) in der Zelle eingefügt. Nach schließen des Konfig-Dialogs kann man den View dann per Drag&Drop geeignet positionieren.<br />
;Neuer View (Device): Dies dient ebenfalls dazu, neue Views in die Zelle zu packen. Allerdings wählt man nicht die Art des Views aus, sondern die FHEM-Devices, die dargestellt werden sollen. Das System sucht dann jeweils einen geeigneten View aus. Bisher funktioniert das nur sehr eingeschränkt, hat aber den Vorteil, dass man gleich mehrere Devices auswählen kann.<br />
;Abbrechen: Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Details zum View: Hier klappt man die Details zum View aus und kann diese ändern. Was man damit genau machen kann kommt auf die Art des View an. Per Drag&Drop kann man auch die Reihenfolge der Views im Konfig-Dialog ändern. Das hat allerdings keinen Effekt auf die Positonierung bereits existierender Views in der Zelle. <br />
;View löschen: Das löscht den View aus der Zelle. Wenn man den View eigentlich nicht löschen, sondern in einer anderen Zelle haben will, dann kann man ihn auch per Drag&Drop in die andere Zelle verschieben. Lässt man einen View in einer anderen Zelle "fallen", dann wird dieser automatisch der neuen Zelle zugeordnet.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Auto-Anordnen: Hiermit kann man die einzelnen Views in der Zelle automatisch anordnen. Es kann momentan sein, dass dadurch Änderungen verloren gehen. D.h. dieser Button sollte nur benutzt werden, wenn man seit dem Öffnen des Dialogs keine Änderungen gemacht hat. Außerdem schließt der Button dan Dialog. FUIP ordnet die Views in der Reihenfolge an, in der sie im Konfig-Popup erscheinen. Das zugrunde liegende Layout ist sehr einfach gehalten und kann sich auch noch ändern. Diese Funktion ist vor Allem brauchbar für mehrere gleichartige Views in derselben Zelle, wie z.B. bei Menus. <br />
;Neue Zelle: Legt eine neue (leere) Zelle auf der aktuellen Seite an. Der Konfig-Dialog wird dabei geschlossen und Änderungen gehen verloren.<br />
;Zelle kopieren: Kopiert die aktuelle Zelle. Man muss eine Seite angeben, zu der die kopierte Zelle gehören soll. Das entsprechende Feld ist mit der aktuellen Seite vorbelegt. Falls man dies nicht ändert, wird einfach eine Kopie der Zelle auf derselben Seite erzeugt. Ansonsten wird die Zelle auf die angegebene Seite kopiert. Die Funktion schließt den Konfig-Dialog und Änderungen gehen verloren. Falls man eine andere Seite angegeben hat, wird zu dieser gewechselt.<br />
;Zelle exportieren: Dies erlaubt die Definition der Zelle herunterzuladen und auf dem Client (also dem Rechner, auf dem der Browser läuft) zu speichern.<br />
;Zelle importieren: Damit lädt man eine exportierte Zelle wieder hoch. FUIP erzeugt dann auf der aktuellen Seite eine neue Zelle mit dem entsprechenden Inhalt. Das funktioniert auch mit Zellen, die von einer anderen FUIP-Seite, einem anderen FUIP-Device oder von einer anderen FHEM-Installation kommen.<br />
;Zelle löschen: Damit löscht man die aktuelle Zelle. Sie verschwindet dann von der aktuellen Seite.<br />
;Toggle editOnly: Bei manchen Views ist es schwierig, sie mit der Maus "anzufassen", da sie sofort eine Aktion auslösen (z.B. bei Links). Mit "Toggle editOnly" wird eine graue "Schicht" über die Views gelegt. Dadurch weiß man besser, wo man den View anfassen kann und Mausklicks haben keine Wirkung mehr, außer Drag&Drop.<br />
<br />
=== ...für Seiten ===<br />
[[Datei:FUIP_SeitenKonfig.png|mini|600px]]<br />
Drückt man im Konfig-Dialog für Zellen auf "Cell/Page" kommt man auf den Konfig-Dialog für ganze Seiten. Die Bedeutung der Einzelnen Elemente ist wie folgt.<br />
;Zur Zellen-Konfiguration:Das bringt einen zurück zum Konfig-Dialog für Zellen.<br />
;Seiten-Überschrift:Hier kann ein Titel für die Seite eingetragen werden. Das erscheint dann je nach Browser irgendwo oben. (Technisch ist es der Inhalt des <title> Tags in <head>.)<br />
;Abbrechen:Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Seite kopieren:Dadurch wird eine neue Seite angelegt, die so aussieht wie die aktuelle. Der Dialog wird dann geschlossen und automatisch zur neuen Seite gesprungen.<br />
;Seite exportieren:Das ist dasselbe wie für Zellen, nur für die ganze aktuelle Seite.<br />
;Seite importieren:Das ist im Prinzip auch wie für Zellen, nur dass eine neue Seite angelegt wird. Exportierte Zellen können nur als Zellen importiert werden und exportierte Seiten nur als Seiten.<br />
<br />
== Links ==<br />
* {{Link2Forum|Topic=85869|LinkText=Foren-Thread zur Geburt von FUIP}}<br />
<br />
[[Kategorie:FHEM Frontends]]</div>Thorsten Pferdekämperhttp://wiki.fhem.de/w/index.php?title=FHEM_User_Interface_Painter&diff=27340FHEM User Interface Painter2018-07-06T14:20:38Z<p>Thorsten Pferdekämper: </p>
<hr />
<div>[[Datei:FUIP_Symbolbild.png|mini|400px|FUIP in Aktion]]<br />
Der '''FHEM User Interface Painter (FUIP)''' ist ein FHEM-Modul, mit dem man [[FHEM Tablet UI]] (FTUI) Seiten graphisch ("klickibunti") erstellen kann. D.h. man kann sich ein UI zusammenklicken, welches die Tablet UI Technik verwendet, aber ohne sich selbst unbedingt mit HTML und CSS herumschlagen zu müssen.<br />
Hier ist ein kurzes Video, welches FUIP in Aktion zeigt:<br />
<br />
[https://forum.fhem.de/index.php?action=dlattach;topic=85869.0;attach=98455 Einführungsvideo]<br />
<br />
(Das Video zeigt nicht unbedingt den neusten Stand, aber es dürfte klar werden, wofür FUIP gut sein soll.)<br />
<br />
== Installation und Upgrade in FHEM ==<br />
Genau wie FTUI ist auch FUIP nicht automatisch Teil von FHEM. Es muss explizit installiert bzw. hinzugefügt werden. Die Installation funktioniert folgendermaßen:<br />
* FUIP verwendet FTUI. D.h. man sollte zuerst einmal FTUI installieren, falls noch nicht passiert. Wie das geht steht bei [[FHEM Tablet UI#Installation|FHEM Tablet UI]]. Dabei reicht der erste Schritt aus, da lediglich die FTUI-Dateien von FUIP benötigt werden.<br />
* FUIP benötigt die Perl-Module URI::Escape::XS und JSON::Parse. Oft fehlt mindestens eins dieser Module in einer normalen FHEM-Installation. Unter Debian (inklusive normaler Raspberry-Installationen) ist zumindest URI::Escape::XS im Paket liburi-escape-xs-perl enthalten, es kann also mittels <code>apt-get install liburi-escape-xs-perl</code> (auf Betriebssystemebene als root) installiert werden. Ansonsten kann es z.B. über Cpan installiert werden, also etwa <code>cpan URI::Escape::XS</code>. Zu JSON::Parse scheint es kein Debian-Paket zu geben, also am besten installieren per <code>cpan JSON::Parse</code>.<br />
* Dann das FUIP-Repository zum FHEM Update hinzufügen: <br />
** <code>update add https://raw.githubusercontent.com/ThorstenPferdekaemper/FHEM-FUIP/master/controls_fuip.txt</code><br />
* Jetzt <code>update all fuip</code> und <code>shutdown restart</code>. FUIP sollte jetzt installiert sein.<br />
<br />
Zum Upgrade reicht ein <code>update</code>, wenn man FUIP wie oben beschrieben installiert hat. Will man nur den FUIP-Teil aktualisieren und nicht alles in FHEM, dann geht das mit <code>update all fuip</code>.<br />
<br />
Falls es insbesondere beim Upgrade oder nach einem Upgrade Probleme gibt (welcher Art auch immer), sollten die folgenden Punkte geprüft werden:<br />
* Wird das richtige Repository benutzt? Man kann das mit <code>update list</code> überprüfen. Wenn der Eintrag für fuip nicht genau so aussieht wie oben beschrieben, dann sollte er per <code>update delete</code> gelöscht werden und dann genau so eingetragen werden wie oben beschrieben. <br />
* Sind die Abhängigkeiten (Perl Module) installiert? Siehe die Installationanleitung weiter oben für Details.<br />
* FHEM braucht Schreibrechte im Verzeichnis <fhem>/FHEM/lib/FUIP/config (<fhem> steht meistens für /opt/fhem) und allen enthaltenen Dateien. Auf Betriebssystemebene (Linux) kann man das mit <code>ls -ls</code> überprüfen. Meistens kann es mit folgendem Befehl repariert werden: <code>chown -R fhem:dialout /opt/fhem/FHEM/lib/FUIP/config</code>. (Dieser Punkt gilt nicht bzw. nicht genau so, wenn man die configDB benutzt.)<br />
<br />
== Erste Schritte ==<br />
Zuerst legt man ein "FUIP Device" an, also etwa <code>define ui FUIP</code>. Dieses Device meldet sich sozusagen als Webserver bei FHEM an (wie z.B. auch [[HTTPSRV]]), d.h. es erscheint im Menu oben links (über den Räumen) ein Link "ui". Beim Klick auf diesen Link generiert FUIP eine FTUI Übersichtsseite aus den Räumen im FHEM System. Nun kann man durch Verschieben und größer/kleiner-Ziehen der einzelnen Zellen bzw. durch Verschieben des Zelleninhalts die Gestaltung ändern. Außerdem kann man über das Zahnrad rechts oben in den Zellen neuen Inhalt hinzufügen, den bestehenden Inhalt ändern und vieles mehr.<br />
Durch Klicken auf die Räume im Menu der Übersichtsseite werden einzelne Raum-Seiten generiert. Diese kann man ebenfalls entsprechend bearbeiten. Natürlich können auch eigene Seiten hinzugefügt werden. Wie das geht sieht man im Video, welches oben verlinkt ist.<br />
<br />
Nachdem man die Seiten entsprechend bearbeitet hat sollte man ein <code>set ui save</code> machen. Ansonsten gehen die Änderungen beim nächsten FHEM-Neustart verloren. Ein normales <code>save config</code> reicht nicht aus und ist auch nicht notwendig.<br />
<br />
Die folgenden detaillierten Informationen können zum Teil veraltet sein, da FUIP noch weitereintwickelt wird. Es sollten allerdings keine Funktionen verschwinden.<br />
<br />
== Das Konfigurations-Popup ==<br />
=== ...für Zellen ===<br />
[[Datei:FUIP_KonfigZelle.png|mini|600px]]<br />
Beim Klick auf das Zahnrad rechts oben in einer Zelle wird der Konfigurations-Dialog für diese Zelle geöffnet. Im Folgenden werden die Funktionen der einzelnen Elemente erklärt.<br />
;Zur Seiten-Konfiguration: Damit kann man zum Konfig-Dialog für die ganze Seite wechseln. <br />
;Zellen-Überschrift: Hier wird die Überschrift der Zelle festgelegt. Eine Zelle muss keine Überschrift haben. (Die Zahlen hinter der Überschrift in der Zelle selbst verschwinden, wenn man das Attribut ''locked'' setzt.)<br />
;Neuer View: Hiermit fügt man einen neuen View, also neuen Inhalt, zu einer Zelle hinzu. Man wählt dann aus, welcher Art View angelegt werden soll und füllt die Details, wie z.B. das zugehörige Device. Der neue View wird an einer freien Stelle (falls möglich) in der Zelle eingefügt. Nach schließen des Konfig-Dialogs kann man den View dann per Drag&Drop geeignet positionieren.<br />
;Neuer View (Device): Dies dient ebenfalls dazu, neue Views in die Zelle zu packen. Allerdings wählt man nicht die Art des Views aus, sondern die FHEM-Devices, die dargestellt werden sollen. Das System sucht dann jeweils einen geeigneten View aus. Bisher funktioniert das nur sehr eingeschränkt, hat aber den Vorteil, dass man gleich mehrere Devices auswählen kann.<br />
;Abbrechen: Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Details zum View: Hier klappt man die Details zum View aus und kann diese ändern. Was man damit genau machen kann kommt auf die Art des View an. Per Drag&Drop kann man auch die Reihenfolge der Views im Konfig-Dialog ändern. Das hat allerdings keinen Effekt auf die Positonierung bereits existierender Views in der Zelle. <br />
;View löschen: Das löscht den View aus der Zelle. Wenn man den View eigentlich nicht löschen, sondern in einer anderen Zelle haben will, dann kann man ihn auch per Drag&Drop in die andere Zelle verschieben. Lässt man einen View in einer anderen Zelle "fallen", dann wird dieser automatisch der neuen Zelle zugeordnet.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Auto-Anordnen: Hiermit kann man die einzelnen Views in der Zelle automatisch anordnen. Es kann momentan sein, dass dadurch Änderungen verloren gehen. D.h. dieser Button sollte nur benutzt werden, wenn man seit dem Öffnen des Dialogs keine Änderungen gemacht hat. Außerdem schließt der Button dan Dialog. FUIP ordnet die Views in der Reihenfolge an, in der sie im Konfig-Popup erscheinen. Das zugrunde liegende Layout ist sehr einfach gehalten und kann sich auch noch ändern. Diese Funktion ist vor Allem brauchbar für mehrere gleichartige Views in derselben Zelle, wie z.B. bei Menus. <br />
;Neue Zelle: Legt eine neue (leere) Zelle auf der aktuellen Seite an. Der Konfig-Dialog wird dabei geschlossen und Änderungen gehen verloren.<br />
;Zelle kopieren: Kopiert die aktuelle Zelle. Man muss eine Seite angeben, zu der die kopierte Zelle gehören soll. Das entsprechende Feld ist mit der aktuellen Seite vorbelegt. Falls man dies nicht ändert, wird einfach eine Kopie der Zelle auf derselben Seite erzeugt. Ansonsten wird die Zelle auf die angegebene Seite kopiert. Die Funktion schließt den Konfig-Dialog und Änderungen gehen verloren. Falls man eine andere Seite angegeben hat, wird zu dieser gewechselt.<br />
;Zelle exportieren: Dies erlaubt die Definition der Zelle herunterzuladen und auf dem Client (also dem Rechner, auf dem der Browser läuft) zu speichern.<br />
;Zelle importieren: Damit lädt man eine exportierte Zelle wieder hoch. FUIP erzeugt dann auf der aktuellen Seite eine neue Zelle mit dem entsprechenden Inhalt. Das funktioniert auch mit Zellen, die von einer anderen FUIP-Seite, einem anderen FUIP-Device oder von einer anderen FHEM-Installation kommen.<br />
;Zelle löschen: Damit löscht man die aktuelle Zelle. Sie verschwindet dann von der aktuellen Seite.<br />
;Toggle editOnly: Bei manchen Views ist es schwierig, sie mit der Maus "anzufassen", da sie sofort eine Aktion auslösen (z.B. bei Links). Mit "Toggle editOnly" wird eine graue "Schicht" über die Views gelegt. Dadurch weiß man besser, wo man den View anfassen kann und Mausklicks haben keine Wirkung mehr, außer Drag&Drop.<br />
<br />
=== ...für Seiten ===<br />
[[Datei:FUIP_SeitenKonfig.png|mini|600px]]<br />
Drückt man im Konfig-Dialog für Zellen auf "Cell/Page" kommt man auf den Konfig-Dialog für ganze Seiten. Die Bedeutung der Einzelnen Elemente ist wie folgt.<br />
;Zur Zellen-Konfiguration:Das bringt einen zurück zum Konfig-Dialog für Zellen.<br />
;Seiten-Überschrift:Hier kann ein Titel für die Seite eingetragen werden. Das erscheint dann je nach Browser irgendwo oben. (Technisch ist es der Inhalt des <title> Tags in <head>.)<br />
;Abbrechen:Damit schließt man den Dialog ohne die Änderungen zu übernehmen.<br />
;Übernehmen: Das schließt den Dialog und übernimmt die Änderungen. Dadurch kann man die Auswirkungen auf dem UI selbst sehen. Um die Änderungen allerdings den nächsten FHEM Neustart überleben zu lassen muss man noch ein <code>set ui save</code> machen.<br />
;Seite kopieren:Dadurch wird eine neue Seite angelegt, die so aussieht wie die aktuelle. Der Dialog wird dann geschlossen und automatisch zur neuen Seite gesprungen.<br />
;Seite exportieren:Das ist dasselbe wie für Zellen, nur für die ganze aktuelle Seite.<br />
;Seite importieren:Das ist im Prinzip auch wie für Zellen, nur dass eine neue Seite angelegt wird. Exportierte Zellen können nur als Zellen importiert werden und exportierte Seiten nur als Seiten.<br />
<br />
== Links ==<br />
* {{Link2Forum|Topic=85869|LinkText=Foren-Thread zur Geburt von FUIP}}<br />
<br />
[[Kategorie:FHEM Frontends]]</div>Thorsten Pferdekämper