Was leistet mein FHEM denn so?

Begonnen von hankyzoolander, 12 Oktober 2020, 17:27:56

Vorheriges Thema - Nächstes Thema

hankyzoolander

Hallo,
nach all den Jahren des Smarthome Bastelns, hab ich mich gefragt was mein FHEM so alles leisten und verwalten muss.
Klar hat man genau im Kopf welche Geräte man hat, und wie alles miteinander so verknüpft ist.

Aber, man sieht es nicht!

So dachte ich mir, ich erstelle mir mal mit dem Programm Xmind eine MindMap von meinem kompletten FHEM.

Was soll ich sagen, es ist schon irre was da alles so zusammen kommt.
Anbei ein Bild der MindMap.

Falls jemand das für sich nachbauen möchte, das programm Xmind ist kostenlos und nach ein paar Minuten auch sehr leicht bedienbar.
Ich habe die Version 2020 verwendet.
betateilchen  <--- my personal hero

P.A.Trick

Nett - hast du das per Hand gemacht?
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

hankyzoolander

betateilchen  <--- my personal hero

P.A.Trick

Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

moskito

Respekt :)
Das Thema Dokumentation füllt hier ja auch den ein oder anderen Thread, da könntest du durchaus mal deinen Lösungsansatz verteilen.
FHEM auf Intel NUC/Proxmox & Debian 12 + HM-CFG-USB + zigbee2mqtt + Zwave + Enocean

thorsten_automatic

Eine wirklich tolle Idee und macht eingerahmt auch was her.^^ Hut ab!
Wohltun beginnt im Haus.

Heimwerker

Wow, wirklich eine tolle Idee mit der Mindmap! Fleißpunkte gibts dazu  ;D

Heimwerker

Wann hast du denn angefangen dein Smarthome einzurichten?

amenomade

#8
Hab mal angefangen ;) Nicht jedes DOIF/notify/at ist abgebildet.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

P.A.Trick

Zitat von: amenomade am 21 Dezember 2020, 20:31:33
Hab mal angefangen ;) Nicht jedes DOIF/notify/at ist abgebildet.

Schick, aber das muss doch irgendwie auch automatisch gehen, oder? Ich habe echt kein Bock das manuell zu machen :-/
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

Wernieman

Vorallem da sich di9e Installation weiterentwickelt und man dann vergisst, seine Doku Weiterzupflegen ...
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Prof. Dr. Peter Henning

#11
Klar geht das automatisch - allerdings bisher nur in der Theorie.

Das Dateiformat von XMind kann man problemlos in ein Verzeichnis umwandeln:
https://www.online-convert.com/de/datei-format/xmind

Die entsprechenden XML-Dateien können problemlos mit XSLT modifiziert werden.

Das bisher fehlende Stück ist ein kleines Programm, das aus einer Konfigurationsdatei (meinetwegen exportiert aus einer configdb) eine XML-Datei macht. Also etwa aus jedem


define XYZ notify <regexp> <Befehl mit Devicenamen>


ein

<notify ID="XYZ" regexp="...">
  <cmd>...</cmd>
  <linkedto> ... Devicenamen ... </linkedto>
(Hier alle Attribute des notify>
</notify>


Wenn man einen solchen Konverter hat (nicht schwierig, aber dafür fehlt mir die Zeit), ist der Rest einfach. Solche Autodokumentationssysteme habe ich schon mehrfach gebaut.

Da ich seit mehr als 20 Jahren XML und XSLT lehre, stelle ich gerne meine Fähigkeiten (und, vielleicht wichtiger, auch die meiner Studenten) zur Verfügung.

LG

pah

Edit: Das Wetter ist heute zu mies für den Golfplatz, also hat mich die Idee noch ein paar Minuten weiter beschäftigt. Man würde natürlich nicht mit der Konfigurationsdatei arbeiten. Sondern einfach mit einer kleinen Perl-Routine im laufenden FHEM, die durch alle Devices des %defs-Hashes läuft und daraus XML macht. Mal sehen, wie sich das Wetter entwickelt...


enno

Zitat von: Prof. Dr. Peter Henning am 22 Dezember 2020, 10:02:16
Klar geht das automatisch - allerdings bisher nur in der Theorie.
ah, jetzt wird es auch für faule Menschen wie mich interessant :) Da lese ich doch mal mit.
Einfacher FHEM Anwender auf Intel®NUC

Christoph Morrison

Zitat von: Prof. Dr. Peter Henning am 22 Dezember 2020, 10:02:16

<notify ID="XYZ" regexp="...">
  <cmd>...</cmd>
  <linkedto> ... Devicenamen ... </linkedto>
(Hier alle Attribute des notify>
</notify>


Und dann schreibt noch jemand ein Schema/DTD und einen Prozessor zurück in FHEM-Config dazu und wir können Konfiguration schreiben, die wir vor dem Start validieren könnten ;-)

Damit wären wir dann auf dem Stand von etwa ... 2000?

amenomade

Zitat von: P.A.Trick am 22 Dezember 2020, 08:39:17
Schick, aber das muss doch irgendwie auch automatisch gehen, oder? Ich habe echt kein Bock das manuell zu machen :-/
Ja das hatte ich mir schon gedacht.

Anscheinend sind jetzt mit der neuen Version die Daten als .json (innerhalb einer nicht komprimierten Zip-Datei) gespeichert:
[
   {
      "id":"2a6a731a919ae5d90ec7fb223e",
      "class":"sheet",
      "title":"Carte 1",
      "rootTopic":{
         "id":"b9aa22deba98b3b20c7ac8aca2",
         "class":"topic",
         "title":"##FHEM##\nRaspi3B\n(mit Charly Modul)",
         "structureClass":"org.xmind.ui.map.unbalanced",
         "children":{
            "attached":[
               {
                  "title":"[ Anwesenheit ]",
                  "id":"dc7d9665-ba31-4b8c-b784-c7b562d75a81",
                  "children":{
                     "attached":[
                        {
                           "title":"structure",
                           "id":"1801a7d0-4c5d-45ef-be8e-cf6ea42e3d0a",
                           "style":{
                              "id":"8ac091e6-0e70-43e0-b825-364de917046d",
                              "properties":{
                                 "fo:font-family":"'Montserrat','NeverMind','Microsoft YaHei','PingFang SC','Microsoft JhengHei','sans-serif','Montserrat','NeverMind','Microsoft YaHei','PingFang SC','Microsoft JhengHei',sans-serif",
                                 "fo:font-style":"normal",
                                 "fo:font-size":"14pt",
                                 "fo:font-weight":"500",
                                 "fo:color":"#111111",
                                 "fo:text-align":"left",
                                 "fo:text-decoration":"none",
                                 "fo:text-transform":"manual",
                                 "shape-class":"org.xmind.topicShape.hexagon",
                                 "shape-corner":"3pt",
                                 "line-corner":"8pt",
                                 "line-color":"#30D8C4",
                                 "line-class":"org.xmind.branchConnection.bight",
                                 "line-width":"3pt",
                                 "border-line-color":"#30D8C4",
                                 "border-line-width":"3pt",
                                 "svg:fill":"#8EDE99"
                              }
                           },
                           "children":{
                              "attached":[
                                 {
                                    "title":"strPresence",
                                    "id":"1b92b764-226d-447f-8d9a-70a16e8ddc01",
                                    "children":{
                                       "attached":[
                                          {
                                             "title":"PRESENCE",
                                             "id":"3f115342-88ec-47e1-84e6-a1825fe7a9c5",
                                             "style":{
                                                "id":"36a86f65-550a-4a88-9402-002148025f5c",
                                                "properties":{
                                                   "fo:font-family":"'Montserrat','NeverMind','Microsoft YaHei','PingFang SC','Microsoft JhengHei',sans-serif",
                                                   "fo:font-style":"normal",
                                                   "fo:font-size":"14pt",
                                                   "fo:font-weight":"500",
                                                   "fo:color":"#111111",
                                                   "fo:text-align":"left",
                                                   "fo:text-decoration":"none",
                                                   "fo:text-transform":"manual",
                                                   "shape-class":"org.xmind.topicShape.hexagon",
                                                   "shape-corner":"3pt",
                                                   "line-corner":"8pt",
                                                   "line-color":"#30D8C4",
                                                   "line-class":"org.xmind.branchConnection.bight",
                                                   "line-width":"3pt",
                                                   "border-line-color":"#30D8C4",
                                                   "border-line-width":"3pt",
                                                   "svg:fill":"#8EDE99"
                                                }
                                             },
                                             "children":{
                                                "attached":[
                                                   {
                                                      "title":"xxx_zu_Hause",
                                                      "id":"73773734-7b1e-47ce-85e4-2a5f1d365372"
                                                   },
                                                   {
                                                      "title":"yyy_zu_Hause",
                                                      "id":"98c18e0f-36d1-4578-9431-c4fe2b7c1baa"
                                                   },
                                                   {
                                                      "title":"zzz_zu_Hause",
                                                      "id":"b2e6c145-006b-4a35-98e4-07f07746b5f4"
                                                   }
                                                ],
                                                "summary":[
                                                   {
                                                      "title":"DOIF",
                                                      "id":"cc4b3142-8e16-46e3-ae17-ce8c10f851ea",
                                                      "style":{
                                                         "id":"587d9b7e-3c2b-4789-afbc-f803419241aa",
                                                         "properties":{
                                                            "fo:font-family":"'Montserrat','NeverMind','Microsoft YaHei','PingFang SC','Microsoft JhengHei','sans-serif','Montserrat','NeverMind','Microsoft YaHei','PingFang SC','Microsoft JhengHei',sans-serif",
                                                            "fo:font-style":"normal",
                                                            "fo:font-size":"14pt",
                                                            "fo:font-weight":"500",
                                                            "fo:color":"#FFFFFF",
                                                            "fo:text-align":"left",
                                                            "fo:text-decoration":"none",
                                                            "fo:text-transform":"manual",
                                                            "shape-class":"org.xmind.topicShape.ellipticrectangle",
                                                            "shape-corner":"3pt",
                                                            "line-corner":"8pt",
                                                            "line-color":"#30D8C4",
                                                            "line-class":"org.xmind.branchConnection.bight",
                                                            "line-width":"3pt",
                                                            "border-line-color":"#30D8C4",
                                                            "border-line-width":"3pt",
                                                            "svg:fill":"#50C3F7"
                                                         }
                                                      },
                                                      "children":{
                                                         "attached":[
                                                            {
                                                               "title":"di_presence_Kinder",
                                                               "id":"3768b2d2-fd68-4beb-8737-d2e11aea6f0a"
                                                            }
                                                         ]
                                                      }
                                                   }
                                                ]
                                             },
                                             "position":{
                                                "x":343.57989174979076,
                                                "y":-209.37857142857152
                                             },
                                             "summaries":[
                                                {
                                                   "id":"aa34590d-046f-4bb3-885a-bcd7f7250d82",
                                                   "range":"(1,2)",
                                                   "topicId":"cc4b3142-8e16-46e3-ae17-ce8c10f851ea"
                                                }
                                             ]
                                          }
                                       ]
                                    }
                                 }
                              ]
                           }
                        },
                        {
                           "title":"dummy",
                           "id":"52b8edae-58dd-486f-a301-e2e1f298af72",
                           "style":{
                              "id":"d6225117-3806-42bb-9c08-432f3578f4a0",
                              "properties":{
                                 "fo:font-family":"'Montserrat','NeverMind','Microsoft YaHei','PingFang SC','Microsoft JhengHei','sans-serif','Montserrat','NeverMind','Microsoft YaHei','PingFang SC','Microsoft JhengHei','sans-serif','Montserrat','NeverMind','Microsoft YaHei','PingFang SC','Microsoft JhengHei',sans-serif",
                                 "fo:font-style":"normal",
                                 "fo:font-size":"14pt",
                                 "fo:font-weight":"500",
                                 "fo:color":"#111111",
                                 "fo:text-align":"left",
                                 "fo:text-decoration":"none",
                                 "fo:text-transform":"manual",
                                 "shape-class":"org.xmind.topicShape.hexagon",
                                 "shape-corner":"3pt",
                                 "line-corner":"8pt",
                                 "line-color":"#30D8C4",
                                 "line-class":"org.xmind.branchConnection.bight",
                                 "line-width":"3pt",
                                 "border-line-color":"#30D8C4",
                                 "border-line-width":"3pt",
                                 "svg:fill":"#8EDE99"
                              }
                           },
                           "children":{
                              "attached":[
                                 {
                                    "title":"asc_presence",
                                    "id":"c1eaa53c-54fb-41d1-a553-196a2bd0e262"
                                 },
                                 {
                                    "title":"du_presence",
                                    "id":"bb703db3-ded1-4c44-b808-2215efb79cb8",
                                    "children":{
                                       "attached":[
                                          {
                                             "title":"DOIF",
                                             "id":"c4c101aa-05f1-4ddf-b5ae-8d494c9df171",
                                             "style":{
                                                "id":"251c2e1a-21e1-4cdb-8517-f0fb9525cf7a",
                                                "properties":{
                                                   "fo:font-family":"'Montserrat','NeverMind','Microsoft YaHei','PingFang SC','Microsoft JhengHei',sans-serif",
                                                   "fo:font-style":"normal",
                                                   "fo:font-size":"14pt",
                                                   "fo:font-weight":"500",
                                                   "fo:color":"#FFFFFF",
                                                   "fo:text-align":"left",
                                                   "fo:text-decoration":"none",
                                                   "fo:text-transform":"manual",
                                                   "shape-class":"org.xmind.topicShape.ellipticrectangle",
                                                   "shape-corner":"3pt",
                                                   "line-corner":"8pt",
                                                   "line-color":"#30D8C4",
                                                   "line-class":"org.xmind.branchConnection.bight",
                                                   "line-width":"3pt",
                                                   "border-line-color":"#30D8C4",
                                                   "border-line-width":"3pt",
                                                   "svg:fill":"#50C3F7"
                                                }
                                             },
                                             "children":{
                                                "attached":[
                                                   {
                                                      "title":"di_Rolladen_abwesend",
                                                      "id":"162ec2cc-2cae-4754-96b9-840c0c9244fd"
                                                   }
                                                ]
                                             }
                                          }
                                       ]
                                    }
                                 }
                              ]
                           }
                        },
                        {
                           "title":"PRESENCE",
                           "id":"a1326173-d8e2-4588-b433-8ae62ec72bc5",
                           "style":{
                              "id":"4c441a8c-ab9c-479a-8793-6e4402a7c2f0",
                              "properties":{
                                 "fo:font-family":"'Montserrat','NeverMind','Microsoft YaHei','PingFang SC','Microsoft JhengHei','sans-serif','Montserrat','NeverMind','Microsoft YaHei','PingFang SC','Microsoft JhengHei','sans-serif','Montserrat','NeverMind','Microsoft YaHei','PingFang SC','Microsoft JhengHei','sans-serif','Montserrat','NeverMind','Microsoft YaHei','PingFang SC','Microsoft JhengHei',sans-serif",
                                 "fo:font-style":"normal",
                                 "fo:font-size":"14pt",
                                 "fo:font-weight":"500",
                                 "fo:color":"#111111",
                                 "fo:text-align":"left",
                                 "fo:text-decoration":"none",
                                 "fo:text-transform":"manual",
                                 "shape-class":"org.xmind.topicShape.hexagon",
                                 "shape-corner":"3pt",
                                 "line-corner":"8pt",
                                 "line-color":"#30D8C4",
                                 "line-class":"org.xmind.branchConnection.bight",
                                 "line-width":"3pt",
                                 "border-line-color":"#30D8C4",
                                 "border-line-width":"3pt",
                                 "svg:fill":"#8EDE99"
                              }
                           },
                           "children":{
                              "attached":[
                                 {
                                    "title":"Residents",
                                    "id":"784b759b-ccbc-4d2e-9e1e-1e320af2638a",
                                    "children":{
                                       "attached":[
                                          {
                                             "title":"ROOMMATE",
                                             "id":"3d1f17d5-f95a-4cf1-9d9e-1edfe97153cd",
                                             "style":{
                                                "id":"791a40f6-9d20-4fdd-95e4-c967a201b036",
                                                "properties":{
                                                   "fo:font-family":"'Montserrat','NeverMind','Microsoft YaHei','PingFang SC','Microsoft JhengHei','sans-serif','Montserrat','NeverMind','Microsoft YaHei','PingFang SC','Microsoft JhengHei','sans-serif','Montserrat','NeverMind','Microsoft YaHei','PingFang SC','Microsoft JhengHei','sans-serif','Montserrat','NeverMind','Microsoft YaHei','PingFang SC','Microsoft JhengHei','sans-serif','Montserrat','NeverMind','Microsoft YaHei','PingFang SC','Microsoft JhengHei',sans-serif",
                                                   "fo:font-style":"normal",
                                                   "fo:font-size":"14pt",
                                                   "fo:font-weight":"500",
                                                   "fo:color":"#111111",
                                                   "fo:text-align":"left",
                                                   "fo:text-decoration":"none",
                                                   "fo:text-transform":"manual",
                                                   "shape-class":"org.xmind.topicShape.hexagon",
                                                   "shape-corner":"3pt",
                                                   "line-corner":"8pt",
                                                   "line-color":"#30D8C4",
                                                   "line-class":"org.xmind.branchConnection.bight",
                                                   "line-width":"3pt",
                                                   "border-line-color":"#30D8C4",
                                                   "border-line-width":"3pt",
                                                   "svg:fill":"#8EDE99"
                                                }
                                             },
                                             "children":{
                                                "attached":[
                                                   {
                                                      "title":"xxx",
                                                      "id":"477dbaea-ca00-4cd1-b380-ed22e4026a57"
                                                   },
                                                   {
                                                      "title":"yyy",
                                                      "id":"75ebf57b-8688-46e0-9d67-388f148638a4"
                                                   },
                                                   {
                                                      "title":"zzz",
                                                      "id":"5f22f84b-1583-4b50-9b18-102c786af6f6"
                                                   }
                                                ]
                                             }
                                          }
                                       ]
                                    }
                                 }
                              ]
                           }
                        }
                     ]
                  }
               },
               {
                  "title":"[ Rollladen ]",
                  "id":"0ce0141b-79cd-4f8e-9aea-f08b5e557000",
                  "children":{
                     "attached":[
                        {
                           "title":"AutoShuttersControl",
                           "id":"acc707b6-edf8-48da-9851-462d3f331a7a",
                           "style":{
                              "id":"baf590e3-afcf-4d20-b8db-008618866b50",
                              "properties":{
                                 "fo:font-family":"'Montserrat','NeverMind','Microsoft YaHei','PingFang SC','Microsoft JhengHei','sans-serif','Montserrat','NeverMind','Microsoft YaHei','PingFang SC','Microsoft JhengHei','sans-serif','Montserrat','NeverMind','Microsoft YaHei','PingFang SC','Microsoft JhengHei','sans-serif','Montserrat','NeverMind','Microsoft YaHei','PingFang SC','Microsoft JhengHei',sans-serif",
                                 "fo:font-style":"normal",
                                 "fo:font-size":"14pt",
                                 "fo:font-weight":"500",
                                 "fo:color":"#111111",
                                 "fo:text-align":"left",
                                 "fo:text-decoration":"none",
                                 "fo:text-transform":"manual",
                                 "shape-class":"org.xmind.topicShape.hexagon",
                                 "shape-corner":"3pt",
                                 "line-corner":"8pt",
                                 "line-color":"#30D8C4",
                                 "line-class":"org.xmind.branchConnection.bight",
                                 "line-width":"3pt",
                                 "border-line-color":"#30D8C4",
                                 "border-line-width":"3pt",
                                 "svg:fill":"#8EDE99"
                              }
                           },
                           "children":{
                              "attached":[
                                 {
                                    "title":"asc",
                                    "id":"440ca369-f752-4009-a32d-850df730a24d"
                                 }
                              ]
                           }
                        },
                        {
                           "title":"CUL_HM",
...
 

Aber das sollte auch noch mit XML gehen.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Prof. Dr. Peter Henning

@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

Christoph Morrison

Zitat von: Prof. Dr. Peter Henning 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.

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 ;-)




Prof. Dr. Peter Henning

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

Prof. Dr. Peter Henning

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

Prof. Dr. Peter Henning

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

Beta-User

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-elitedesk@Debian 12, 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

Christoph Morrison

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.

Prof. Dr. Peter Henning

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


rudolfkoenig

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.

Pax87

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

Maista

#25
Zitat von: rudolfkoenig 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.

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 3
schade 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 10
zeigt 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

rudolfkoenig

ZitatIn der Hilfe zum weblink fehlt ein <br> bei [...]
Danke, habs korrigiert.

ZitatGibt 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.

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

ZitatBei 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.

ZitatKö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"

Maista

Hallo Rudi,

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

ZitatEndlich 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