FHEM Forum

FHEM - Entwicklung => Wunschliste => Thema gestartet von: Loredo am 21 August 2016, 18:35:49

Titel: Code-Schnipsel leichter übernehmen
Beitrag von: Loredo am 21 August 2016, 18:35:49
Es wäre leichter Code-Schnipsel aus dem Forum oder aus anderen Quellen zu übernehmen, wenn die FHEM-Eingabeleiste dafür mehrzeiligen Code akzeptieren und dann jede Zeile einzeln ausführen würde. Das könnte man z.B. durch einen Doppelklick auf die Leiste auslösen, wonach ein großes Fenster aufgeht, worin man den Code hinein kopieren und anschließend auf "Ausführen" o.ä. klickte. Da das dafür nötige Widget ja generell schon da ist und man statt dem Semikolon einfach nur ein \n als Trennzeichen der Befehle hat, sollte der Aufwand nicht allzu groß sein.


Ich habe mich nicht tief in FHEMWEB eingearbeitet und weiß daher nicht, wo ich hinfassen muss für einen Patch. Vielleicht geht es ja jemand anderem leicht von der Hand, der die Idee auch gut findet.
Titel: Antw:Code-Schnipsel leichter übernehmen
Beitrag von: igami am 21 August 2016, 20:17:48
Ist der device 'simulator' (https://forum.fhem.de/index.php/topic,41056.msg332574.html#msg332574) vielleicht das, was du suchst?
Titel: Antw:Code-Schnipsel leichter übernehmen
Beitrag von: Loredo am 21 August 2016, 22:47:42
Das ist zwar auch interessant, ist aber nicht das, was ich mir als Input vorstelle.


André stellt dort den kompletten Device-Zustand mit her. Das ist gut fürs debuggen, aber nicht, wenn man reine Konfigurationen miteinander teilt. Hier im Forum werden dazu die Ausschnitte aus der fhem.cfg geteilt oder (noch häufiger) die direkten FHEM-Befehle in ihrer Abfolge (was ja quasi das gleiche ist wie fhem.cfg, allerdings ohne die Quotes und das macht da ne Menge aus).


Ich stelle mir also vor, dass man entweder 1-zu-1 einen Abschnitt aus einer fhem.cfg inkl. der Quotes (oder eben die Befehlsfolge wie man sie nacheinander in die FHEM-Befehlszeile eingeben würde) in ein Fenster pasten kann statt es dann Zeile für Zeile copy&pasten zu müssen.


Hier im Forum und auch im Wiki gibt es eben häufig Vorlagen und Templates, die man manchmal einfach zunächst wie sie sind übernehmen möchte. Es sparte dabei viel Zeit, wenn man da so eine Eingabemöglichkeit hätte.










Als nächsten Schritt hätte ich aber in der Tat auch gedacht, dass man ein bestehendes FHEM-Device einfach über einen Link exportiertbar machen sollte (sprich die Definition aus der fhem.cfg mit oder besser ohne die Quotes anzeigen lässt), so dass man den exakten Text auf der anderen Seite dann wieder nur pasten muss und das Gerät ist wieder das gleiche.
Das Json2-Format ist dafür halt nicht das, was man schön lesen kann und gewohnt ist. Allerdings sollte das auch in einem Developer-Debug-Modus als Json2 möglich sein. Dann hätte man beides: Einmal mit dem gesamten Devicestatus und einmal nur die reine Device Definition und deren Attribute.
Titel: Antw:Code-Schnipsel leichter übernehmen
Beitrag von: Loredo am 22 August 2016, 01:42:52
Ich habe als ersten Schritt mal einen neuen Befehl "exportdevice" eingecheckt, den man auch schon manuell ausführen kann. Eine schicke Verlinkung in der Deviceansicht in FHEMWEB, die ein Popup mit dem Ergebnis öffnet, fehlt noch. Damit wäre der Export-Teil so wie ich es meinte.
Titel: Antw:Code-Schnipsel leichter übernehmen
Beitrag von: marvin78 am 22 August 2016, 07:41:00
Das kann man mit Telnet schon lange machen. Wenn es mal nötig sein sollte, einen ganzen Konfigurationsabschnitt einzugebeben, ist es sicher kein Problem Telnet dafür für verwenden. Viele Fälle kann es allerdings nicht geben, da Copy & Paste ohnehin nicht empfohlen ist. Eher empfiehlt man nachzudenken und dann macht man es ohnehin besser Zeile für Zeile.
Titel: Antw:Code-Schnipsel leichter übernehmen
Beitrag von: Loredo am 22 August 2016, 09:57:55
Hallo Marvin,


du hast recht, über Telnet funktioniert das sicherlich schon, ist aber doch etwas umständlich für den Anwendungsfall extra ein Telnet Fenster öffnen zu müssen.


Das ganze Zeile für Zeile zu tun bliebe ja erhalten. Oder meinst du wirklich, dass jemand, der nicht nachdenken möchte es doch tut, nur weil er gezwungen bleibt jede Zeile einzeln kopieren zu müssen statt alle auf einmal? Ich glaube eher weniger.


Zumal man das "nachdenken", wie du es nennst, manchmal auch einfach in einem Texteditor macht - sprich dort seine Änderungen vornimmt, die man vielleicht braucht (z.B. anderer Gerätenamen o.ä.). Da hätte ich anschließend gerne die Möglichkeit einfach alle Befehle direkt im Browser hintereinander abzufeuern. Gäbe es dafür ein mehrzeiliges Fenster mit Codemirror in FHEM, könnte ich mir den externen Editor sogar sparen und könnte das komplett in FHEM bearbeiten, bevor ich dann auf "Ausführen" klicke.
Titel: Antw:Code-Schnipsel leichter übernehmen
Beitrag von: FunkOdyssey am 22 August 2016, 12:18:17
Ich finde die Idee ganz super.
Ich habe das relativ oft, dass ich ganze Geräte temporär rausnehmen muss.
Nach einer RasPi-Neuinstallation passiert mir das häufig, dass ich einzelne Geräte erst einmal rauslassen muss und diese dann sukzessive einfügen muss (Stichwort: fehlende Pakete blockieren fhem.pl-Start).

Ich habe aber keine Lust jedesmal die fhem.cfg zu bearbeiten und würde gerne ein ganzes Device einfügen. Bis dato habe ich noch nicht herausgefunden wie das geht. Per Telnet ist unglücklich, da ich nicht immer Telnet verfügbar habe.

Ein "importdevice" wäre demnach echt ein super Feature. Auch wenn es Profis anders machen würden. :)
Titel: Antw:Code-Schnipsel leichter übernehmen
Beitrag von: Loredo am 22 August 2016, 15:32:10
Zitat von: Loredo am 22 August 2016, 01:42:52
Eine schicke Verlinkung in der Deviceansicht in FHEMWEB, die ein Popup mit dem Ergebnis öffnet, fehlt noch.


Einen dafür passenden Patch für FHEMWEB habe ich gerade hier (https://forum.fhem.de/index.php/topic,56949.0.html) bereitgestellt.
Titel: Antw:Code-Schnipsel leichter übernehmen
Beitrag von: micomat am 28 August 2016, 17:59:14
cool :) als ich den Wunsch seinerzeit vorgetragen habe würde ich nur mit Unverständnis belohnt
Titel: Antw:Code-Schnipsel leichter übernehmen
Beitrag von: Loredo am 28 August 2016, 19:06:08
wie du im anderen Thread siehst ist das hier kaum anders


Gruß
Julian
Titel: Antw:Code-Schnipsel leichter übernehmen
Beitrag von: micomat am 29 August 2016, 14:26:20
so wird FHEM die Massen begeistern. mit Telnet...  :o
jetzt kommt wieder "nicht die Zielgruppe bla..."

Danke für den Patch. werde ich mal tesen :)
Titel: Antw:Code-Schnipsel leichter übernehmen
Beitrag von: marvin78 am 29 August 2016, 15:26:19
FHEM will und wollte nie "die Massen begeistern". Und wie man im anderen Thread nachlesen kann, ist das ganze noch nicht richtig durchdacht.
Titel: Antw:Code-Schnipsel leichter übernehmen
Beitrag von: micomat am 29 August 2016, 16:55:24
wir machen es uns mit fhem leichter zB mehrere Lampen auf einmal zu schalten. wieso also nicht den Weg dorthin auch vereinfachen? das es umständlich auch geht ist kein Argument es nicht zu verbessern
Titel: Antw:Code-Schnipsel leichter übernehmen
Beitrag von: micomat am 31 August 2016, 17:21:03
Mal mein Senf zur Diskussion im Development Bereich in dem ich leider nicht senfen kann:

Wer heute noch sagt: "das geht ja per telnet", der lebt IMHO irgendwo zwischen 1970 und 1990. Heute ist telnet einfach nur alt, ueberholt und ueberfluessig. Es ist weder sicher noch ist es bei einer Standard Windows Installation noch enthalten. In Zeiten von "assume compromise" noch auf unverschluesselte Administrationstools zu setzen halte ich fuer bedenklich, wenn nicht gar fuer gefaehrlich.

Markus
Titel: Antw:Code-Schnipsel leichter übernehmen
Beitrag von: rudolfkoenig am 31 August 2016, 17:44:52
Die Argumente ignorieren fuer mich zu viele Wenns und Abers:
- wenn ich telnet an das lokale FHEM mache, dann ist die nicht vorhandene Verschluesselung egal.
- wenn ich telnet in meinem lokalen Netz durchfuehre, und das abgehoert werden kann, dann ist entweder mein HA Server oder mein Client gehackt. In beiden Faellen hilft eine "sicherere" Verbindung zwischen Client und HA Server nicht.
- aber ich verbinde mich doch nicht von aussen per telnet direkt mit meinem FHEM Server: dazu nutze ich SSH oder VPN.
- aber die FHEM telnet Schnittstelle beherrscht auch SSL.
- aber FHEM ist eigentlich gar nicht fuer Windows User gebaut worden

Heisst nicht, dass ich die Code-Schnipsel Uebernahme fuer Endanwender nicht erleichtern will.
Ich habe nur was gegen allgemeine Behauptungen, die nicht oder nur in speziellen Faellen zutreffen.
Titel: Antw:Code-Schnipsel leichter übernehmen
Beitrag von: micomat am 31 August 2016, 18:44:48
Hallo Rudolf,
danke, ich antworte natuerlich gerne auf Deine Antwort.

Zitat von: rudolfkoenig am 31 August 2016, 17:44:52
- wenn ich telnet an das lokale FHEM mache, dann ist die nicht vorhandene Verschluesselung egal.
Stimme ich Dir zu. Aber auch nur in dem Fall, dass Src und Dst das gleiche System sind.
Zitat von: rudolfkoenig am 31 August 2016, 17:44:52
- wenn ich telnet in meinem lokalen Netz durchfuehre, und das abgehoert werden kann, dann ist entweder mein HA Server oder mein Client gehackt. In beiden Faellen hilft eine "sicherere" Verbindung zwischen Client und HA Server nicht.
Hier gebe ich Dir nur teilweise recht. Wir kommunizieren ja nicht nur ueber LAN sondern auch via WLAN. Wenn hier eine der zahllosen Sicherheitsluecken diverser Home-Router genutzt wird, um diese zu kompromittieren, dann hilft hier eine verschluesselte Verbindung sehr wohl. Ich koennte mir auch gut vorstellen, dass fhem nicht nur im privaten Umfeld genutzt wird, also evtl auch in Netzwerken, in denen sich Administratoren evtl gar nicht im Klaren darueber sind, welche Systeme mit Schadsoftware infiziert sind und den Netzwerkverkehr mitschneiden. Und das ist sicherlich auch keine Seltenheit. Hier gilt dann nur noch Security-by-Design. Ist es verschluesselt, interessiert mich nicht mehr wer den Traffich lesen kann. Dto bei Smartphones/Tablets.
Zitat von: rudolfkoenig am 31 August 2016, 17:44:52
- aber ich verbinde mich doch nicht von aussen per telnet direkt mit meinem FHEM Server: dazu nutze ich SSH oder VPN.
Das sollte auch in Gottes Namen nicht anders sein! Aber auch hier wieder: Verwendet der "normalsterbliche" Anwender ein nicht sicheres VPN (hier sind wir wieder beim Thema, wer pflegt schon seine Router-SW?), dann ist der VPN Tunnel nur eine Dekoration. Wird dann telnet verwendet: fail!
Zitat von: rudolfkoenig am 31 August 2016, 17:44:52
- aber die FHEM telnet Schnittstelle beherrscht auch SSL.
Korrekt, aber ich vermute das das nur ein verschwindend geringer Prozenzsatz einsetzt. Bei der TLS verschluesselten Variante von FHEMWEB mag es da schon besser aussehen. Daher wuerde ich diese auch in jedem Fall dem telnet Dienst vorziehen.
Zitat von: rudolfkoenig am 31 August 2016, 17:44:52
- aber FHEM ist eigentlich gar nicht fuer Windows User gebaut worden
Naja, meinst Du Homematic ward fuer die Verwendung mit FHEM gebaut? Dieses Argument will ich so nicht gelten lassen  8) Schon gar nicht bei Sicherheitsfeatures und -fragen.

Gruß
Markus
Titel: Antw:Code-Schnipsel leichter übernehmen
Beitrag von: Per am 02 Januar 2018, 10:23:22
Zitat von: FunkOdyssey am 22 August 2016, 12:18:17
Nach einer RasPi-Neuinstallation passiert mir das häufig, dass ich einzelne Geräte erst einmal rauslassen muss und diese dann sukzessive einfügen muss (Stichwort: fehlende Pakete blockieren fhem.pl-Start).

Ich habe aber keine Lust jedesmal die fhem.cfg zu bearbeiten und würde gerne ein ganzes Device einfügen. Bis dato habe ich noch nicht herausgefunden wie das geht. Per Telnet ist unglücklich, da ich nicht immer Telnet verfügbar habe.
Ähnliches löse ich mit:
include xxx.cfg
Beim Speichern der geänderten Konfiguration muss ich dann aber aufpassen, je nachdem, ob es drin bleiben soll oder, wie im o.a. Fall, draußen bleiben.
Titel: Antw:Code-Schnipsel leichter übernehmen
Beitrag von: abc2006 am 02 Januar 2018, 10:44:09
Als Beispiel möchte ich mal die Definition von einem neuen KNX-Device nennen, wie sie bei mir gerade wieder ansteht.

8 Eingänge, 8 Ausgänge.
Schema :
<KNX-Device>.<Input|Output><Nummer>_<Aktor|Status|Counter|wasweissich>_<Funktion|Gerät>
ergibt dann 8 Zeilen a la
define KNX10.O01_Aktor_Leuchte_Kueche KNX 1/1/0:DPT1
define KNX10.O02_Aktor_Leuchte_Wohnen KNX 1/1/1:DPT1
...
define KNX10.I01_Taster_Tuere_Flur KNX 1/1/9:DPT1
...


Das erstelle ich mir meist in Excel, mit den passenden attr, event-on-*, room und sonstigen Attributen dazu.
Entweder füge ich es dann direkt in die Config ein, oder ich trenne es mit ";" und poste es als Blocksatz in die Eingabezeile.

Abgesehen davon fehlt mir bei längeren Befehlen aber auch oft sowohl die Syntax-Erkennung als auch die Übersicht (hin- und herscrollen in der Eingabeleiste). Dafür fände ich ein Textfeld gut, in dem man die Befehle übersichtlich (und komfortabel!) bearbeiten und dann absenden kann.

Grüße,
Stephan
Titel: Antw:Code-Schnipsel leichter übernehmen
Beitrag von: KernSani am 02 Januar 2018, 11:02:39
Ich bin etwas irritiert, dass dieser Uralt-Thread hier hochpoppt... Es gibt seit langer Zeit die Möglichkeit über ,,raw definition" (unten bei jedem device) ganze Codingblöcke einzugeben. https://wiki.fhem.de/wiki/Import_von_Code_Snippets
Titel: Antw:Code-Schnipsel leichter übernehmen
Beitrag von: betateilchen am 02 Januar 2018, 20:27:04
Zitat von: abc2006 am 02 Januar 2018, 10:44:09
Abgesehen davon fehlt mir bei längeren Befehlen aber auch oft sowohl die Syntax-Erkennung als auch die Übersicht (hin- und herscrollen in der Eingabeleiste). Dafür fände ich ein Textfeld gut, in dem man die Befehle übersichtlich (und komfortabel!) bearbeiten und dann absenden kann.

Das kannst Du alles mit codemirror völlig problemlos tun, der schon vor langem in FHEM integriert wurde.
Titel: Antw:Code-Schnipsel leichter übernehmen
Beitrag von: abc2006 am 03 Januar 2018, 07:15:37
Das freut mich zu hören, allerdings fehlt mir das Wissen, wie ich Codemirror bei Bedarf in der Eingabezeile aktiviere... oder meinst du jetzt auch raw Definition?
Titel: Antw:Code-Schnipsel leichter übernehmen
Beitrag von: KernSani am 03 Januar 2018, 08:22:12
Codemittor geht in allen ,,großen" Eingabefeldern, also raw definition, DEF, diverse Attribute etc...