Autor Thema: Was leistet mein FHEM denn so?  (Gelesen 4803 mal)

Online Prof. Dr. Peter Henning

  • Developer
  • Hero Member
  • ****
  • Beiträge: 8627
Antw:Was leistet mein FHEM denn so?
« Antwort #15 am: 22 Dezember 2020, 12:53:29 »
@Christoph Morrison: Na, mal langsam. Sagen wir 2005 - das war die große Zeit von XSLT. Da habe ich auf Basis von Apache Cocoon ein ganzes Geoinformationssystem auf XSLT-Basis geschrieben.

Edit: Und das Schema bzw. die DTD macht mein Lieblings-Editor oXygen automatisch.

LG

pah

Offline Christoph Morrison

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1830
Antw:Was leistet mein FHEM denn so?
« Antwort #16 am: 22 Dezember 2020, 13:25:01 »
@Christoph Morrison: Na, mal langsam. Sagen wir 2005 - das war die große Zeit von XSLT. Da habe ich auf Basis von Apache Cocoon ein ganzes Geoinformationssystem auf XSLT-Basis geschrieben.

Ich kontere mit der (letzten) großen Brockhaus Enzyklopädie in 20 Bänden, für die ich die Datenstrukturierung und die Konvertierungsprozesse in die verschiedenen Formate (USB-Stick, Druck, Online) geschrieben habe - auch mit XSLT und ganz vielen fiesen Fallstricken - und einer eigenen Unicode-Repräsentation, denn UTF-8 gab es da zwar schon, aber nur wenig Tools und vor allem gab es eine sehr kaputte alte Datenbasis. RIP BIFAB.

Das war allerdings schon irgendwann Ende 2002.

Und ich erinnere mich, mich etwa 2007 vor Hipster-Webentwicklern ganz schamhaft geoutet zu haben, dass ich noch XML benutze und nicht das neue coole JSON ;-)




Online Prof. Dr. Peter Henning

  • Developer
  • Hero Member
  • ****
  • Beiträge: 8627
Antw:Was leistet mein FHEM denn so?
« Antwort #17 am: 22 Dezember 2020, 14:19:04 »
Für faule Web-Entwickler mag ja JSON schon 2005 eine Alternative gewesen sein. Allerdings gibt es bis heute für JSON kein elegantes Äquivalent zur funktionalen Programmierung mit XSLT auf XML, und 3D-Beschreibungssprachen wie COLLADA oder die 2D-Beschreibungssprache SVG sind immer noch ungeschlagen. Das war das scharfe an diesem GIS, für das ich auch einen netten Preis bekommen habe.

LG

pah

Online Prof. Dr. Peter Henning

  • Developer
  • Hero Member
  • ****
  • Beiträge: 8627
Antw:Was leistet mein FHEM denn so?
« Antwort #18 am: 22 Dezember 2020, 14:57:45 »
Hier mal ein erster Schritt für die Umwandlung einer FHEM-Konfiguration in eine XML-Datei:

sub writeXML(){
  my $out = "<fhem>\n";
  foreach my $device (sort keys %defs) {
    my $type = $defs{$device}{TYPE};
    my $name = $defs{$device}{NAME};
    $out .= "  <$type ID=\"$name\">\n";
    foreach my $att (sort keys %{$attr{$name}} ){
      $out .= "      <$att>".$attr{$name}{$att}."</$att>\n";
    }
    $out .= "  </$type>\n";
  }
  $out .= "</fhem>\n";
  return $out;
}

LG

pah

Online Prof. Dr. Peter Henning

  • Developer
  • Hero Member
  • ****
  • Beiträge: 8627
Antw:Was leistet mein FHEM denn so?
« Antwort #19 am: 22 Dezember 2020, 15:22:12 »
Ich habe noch weiter über die Sache nachgedacht (Wetter ist immer noch mies, Baumärkte zu...).

XMind bietet hier eigentlich keine Vorteile - denn die hierarchische Gliederung stimmt natürlich nicht immer mit den Strukturen inFHEM überein.

yEd wäre m.E. von den Grafikfähigkeiten her sehr viel besser, die Dateien sind auch einfaches XML und somit generierbar.

LG

pah

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 19688
Antw:Was leistet mein FHEM denn so?
« Antwort #20 am: 22 Dezember 2020, 15:40:33 »
Unabhängig von der Frage des Frontends hier mal ein Versuch, das dahingehend zu erweitern, dass zumindest die aus NOTIFYDEF abzuleitenden Verbindungenen noch nach "linkedto" kommen:
sub writeXML {
  my $out = "<fhem>\n";
  for my $device (sort keys %defs) {
    my $type = $defs{$device}{TYPE};
    my $name = $defs{$device}{NAME};
    $out .= qq(<$type ID="$name">\n);
   
    if (defined $defs{$device}{NOTIFYDEV}) {
      my @andev;
      my @sndev = split /,/, $defs{$device}{NOTIFYDEV};
     
      for (@sndev){
        push @andev, devspec2array($_);
      }
      push my  @cleandev, grep { $_ !~ m{\Aglobal\z}xms } @andev;
      if (@cleandev) {
        $out .= '<linkedto>';
        $out .= join( " ", @cleandev );
        $out .= "</linkedto>\n";
      } 
    }
   
    for my $att (sort keys %{$attr{$name}} ){
      $out .= "      <$att>".$attr{$name}{$att}."</$att>\n";
    }
    $out .= "  </$type>\n";
  }
  $out .= "</fhem>\n";
  return $out;
}
Server: HP-T620@Debian 11, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Offline Christoph Morrison

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1830
Antw:Was leistet mein FHEM denn so?
« Antwort #21 am: 22 Dezember 2020, 20:46:12 »
Ich möchte mal XML::Dumper in den Ring werfen, mit dem man Perl-Datenstrukturen in XML exportieren (und wieder importieren) kann. Darauf könnte man ein Stylesheet anwenden um eine menschenlesbarere Repräsentation von Daten zu bekommen - oder man transformiert $defs erstmal um.

Online Prof. Dr. Peter Henning

  • Developer
  • Hero Member
  • ****
  • Beiträge: 8627
Antw:Was leistet mein FHEM denn so?
« Antwort #22 am: 23 Dezember 2020, 07:34:02 »
Ob nun das eine oder andere, zu beachten ist, dass man mit den {DEF}-Parametern nicht die Wohlgeformheit stört, also müssen z.B. "<" in "&lt;" umgewandelt werden.

Desweiteren sehen die Knoten für XMind (in der XML-Version) so aus:

<topic id="47d7uglkglem5b6dqs70ehta3g" modified-by="phenning"
                                    timestamp="1608704625429">
                                    <title>WZ.6x</title>
                                </topic>

und in der GraphML-Datei für yEd:

<node id="n1">
      <data key="d6">
        <y:ShapeNode>
          <y:Geometry height="65.0" width="299.0" x="634.5" y="609.0"/>
          <y:Fill color="#FFCC00" transparent="false"/>
          <y:BorderStyle color="#000000" type="line" width="1.0"/>
          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="24" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="31.9375" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="282.0625" x="8.46875" xml:space="preserve" y="16.53125">Perl Laufzeitumgebung<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
          <y:Shape type="roundrectangle"/>
        </y:ShapeNode>
      </data>
    </node>

Die Verbindungen in XMind ergeben sich durch die Anordnung in der Baumstruktur - das ist m.E. eben etwas zu unflexibel für FHEM. Den ganzen Attributkram für yEd könnte man in Default-Attribute auslagern.

LG


Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 26047
Antw:Was leistet mein FHEM denn so?
« Antwort #23 am: 23 Januar 2021, 18:42:04 »
Inspiriert durch diesen Thread habe ich weblink mit dem "associatedWith" Mode erweitert, was die bereits vorhandene, in ZWave und MQTT2_DEVICE fuer zigbee verwendbare Topologie-Darstellung mit der "Probably associated with" Beziehung  "kreuzt".

Angehaengt ist die Ausgabe von "defmod aw weblink associatedWith rgr_Residents 3" aus fhem.cfg.demo, wobei rgr_Residents der Ausgangspunkt (ein devspec) ist, und 3 die (optionale) Tiefe der Link-Verfolgung. Die Darstellung schaut am Anfang (noch) chaotischer aus, ich habs manuell sortiert.
Gefällt mir Gefällt mir x 5 Liste anzeigen

Offline Pax87

  • New Member
  • *
  • Beiträge: 6
Antw:Was leistet mein FHEM denn so?
« Antwort #24 am: 29 Januar 2021, 10:45:21 »
Klingt einleuchtend ! Und bietet eine gute Übersicht. Dies zusammen mit dem ersteren Design ergäbe für mich persönlich ein sehr respektables Ergbenis. Danke fürs Teilen. Lg

Offline Maista

  • Sr. Member
  • ****
  • Beiträge: 540
  • Alles nur Hobby!
Antw:Was leistet mein FHEM denn so?
« Antwort #25 am: 07 Januar 2023, 00:32:54 »
Inspiriert durch diesen Thread habe ich weblink mit dem "associatedWith" Mode erweitert, was die bereits vorhandene, in ZWave und MQTT2_DEVICE fuer zigbee verwendbare Topologie-Darstellung mit der "Probably associated with" Beziehung  "kreuzt".

Angehaengt ist die Ausgabe von "defmod aw weblink associatedWith rgr_Residents 3" aus fhem.cfg.demo, wobei rgr_Residents der Ausgangspunkt (ein devspec) ist, und 3 die (optionale) Tiefe der Link-Verfolgung. Die Darstellung schaut am Anfang (noch) chaotischer aus, ich habs manuell sortiert.

Hallo Rudi.

Alter Beitrag, aber heute noch mal genauer durchgelesen nachdem ich etwas Zeit habe.

In der Hilfe zum weblink fehlt ein <br> bei
Zitat
<code>
      define homepage weblink link http://fhem.de<br>
      define webcam_picture weblink image http://w.x.y.z/current.jpg<br>
      define interactive_webcam weblink iframe http://w.x.y.z/webcam.cgi<br>
      define hr weblink htmlCode &lt;hr&gt<br>
      define w_Frlink weblink htmlCode { WeatherAsHtml("w_Frankfurt") }<br>
      define systemCommands weblink cmdList
             pair:Pair:set+cul2+hmPairForSec+60
             restart:Restart:shutdown+restart
             update:UpdateCheck:update+check<br>
      define aw weblink associatedWith rgr_Residents 3
      </code>

In Bezug auf :
define aw weblink associatedWith rgr_Residents 3schade das diese Funktion keine Beachtung in der Hilfe bekommen hat.
Ich wollte schon immer ein Überblick über meine FHEM-Installation haben und hatte vor Monaten etwas mit devspec2array und Graphviz rum probiert.
War jetzt Überrascht als ich das Define von deinem kurzen Satz bei mir probiert habe und das "rgr_Residents" durch den Device-Namen meiner HMCCU ersetzt habe :=)

Ein
defmod aw weblink associatedWith d_ccu 10zeigt einiges auf.

Gibt es den die Möglichkeit das ganze von FHEM aus als zentraler Punkt zu sehen?
Ist das "global" ? Da wird der Platz knapp im Browser-Fenster. In Opera lässt sich das leider nicht nach Rechts scrollen.
Bei Auto-Layout verschiebt sich alles nach Rechts.

Könnte man die Ausgabe exportieren um sie dann mit Graphviz extern anschauen zu können?
Das hier z.B. https://graphviz.org/Gallery/twopi/twopi2.html sieht passend aus.

Danke auf diesem Wege für FHEM.

Gruss Gerd
« Letzte Änderung: 07 Januar 2023, 00:39:32 von Maista »

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 26047
Antw:Was leistet mein FHEM denn so?
« Antwort #26 am: 07 Januar 2023, 10:29:29 »
Zitat
In der Hilfe zum weblink fehlt ein <br> bei [...]
Danke, habs korrigiert.

Zitat
Gibt es den die Möglichkeit das ganze von FHEM aus als zentraler Punkt zu sehen?
Es verwendet die getPawList() (Probably Associated Width), was wiederum neben der Analyse der Definitionszeile auch das associatedWidth Reading auswertet (Komma oder Leerzeichen separierte Liste). Wenn man sich die Muehe macht, diese Readings zu pflegen, dann ist auch eine Gasamtansicht denkbar.

Zitat
Da wird der Platz knapp im Browser-Fenster.
Endlich ein Grund fuer die Anschaffung eines grossen Monitors :)

Zitat
Bei Auto-Layout verschiebt sich alles nach Rechts.
Auto-Layout ist nicht prickelnd, aber man kann waehrend des Layouts, einzelne Elemente anfassen, und dran ziehen, schaut lustig aus.
Es ist eher als Ausgangspunkt fuer die manuelle Anpassung zu verwenden.

Zitat
Könnte man die Ausgabe exportieren um sie dann mit Graphviz extern anschauen zu können?
Ich fuerchte da ist perl dein Freund in Kombination mit getPawList().
Oder eine beliebige Programmiersprache bei der Verwendung von "list -R"

Offline Maista

  • Sr. Member
  • ****
  • Beiträge: 540
  • Alles nur Hobby!
Antw:Was leistet mein FHEM denn so?
« Antwort #27 am: 09 Januar 2023, 13:21:37 »
Hallo Rudi,

danke fürs ändern und die Info.
Muss ich mir anschauen um was es da genauer geht :=)

Zitat
Endlich ein Grund für die Anschaffung eines großen Monitors
Ich hab schon ein 27" und 19" Monitor aber die Ausgabe verschiebt sich ja erst einmal nach Rechts.
Ist halt eine Fleißarbeit wenn man das verschiebt.

Ich hab auch schon Beta-Users Code verwendet um das zu probieren.
Bekomme auch schon DOT-Datei ausgegeben aber noch etwas flach.

Gruß Gerd