# SDK/Tools > Symcon Dokumentation · Deutsch · erzeugt am 2026-09-26 > Index: https://www.symcon.de/de/llms.txt Quelle: https://www.symcon.de/de/service/dokumentation/entwicklerbereich/sdk-tools/ Das SDK dient dazu eigene Module zu entwickeln und diese über das "Module Control" einbinden zu können. Die so entwickelten Module können anderen Nutzern zur Verfügung gestellt werden. ### SDK __Ab Version 3.0__ [SDK für Excel](sdk-tools.md) [SDK für Skins](sdk-tools.md) __Ab Version 4.0__ [SDK für PHP](sdk-tools/sdk-php.md) ### Tools [Guid Generator](sdk-tools.md) [Module Generator](sdk-tools.md) [Module Validator](sdk-tools.md) [Network-Configuration-Tool](sdk-tools.md) [Recoverytool](sdk-tools.md) [Visual Studio Code](sdk-tools.md) [KI-Agenten (llms.txt)](sdk-tools.md) ## KI-Agenten Quelle: https://www.symcon.de/de/service/dokumentation/entwicklerbereich/sdk-tools/ki-agenten/ Die komplette Dokumentation steht zusätzlich als Markdown zur Verfügung, das für KI-Agenten und Large Language Models (LLMs) optimiert ist, z.B. für Claude, ChatGPT, Cursor oder GitHub Copilot. Die Dateien werden bei jeder Aktualisierung der Webseite automatisch neu erzeugt und sind somit immer auf dem Stand dieser Dokumentation. Im Gegensatz zur HTML-Seite oder dem PDF enthalten die Dateien nur den Inhalt ohne Layout. Dadurch benötigen sie deutlich weniger Tokens und können von KI-Agenten schneller verarbeitet werden. ### Aufbau Die Dateien folgen dem [llms.txt](https://llmstxt.org) Standard: | Datei | Beschreibung | | --------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [llms.txt](https://www.symcon.de/de/llms.txt) | Index aller Dateien mit Kurzbeschreibung und ungefährer Größe in Tokens. Der Einstiegspunkt für KI-Agenten. | | [llms/function-index.md](https://www.symcon.de/de/llms/function-index.md) | Alle Funktionen (Befehlsreferenz und Modulfunktionen) mit Signatur und Kurzbeschreibung, jeweils mit einem Link auf die Datei mit Parametern und Beispielen. | | llms/modules/*.md | Eine Datei pro Modul, z.B. [enocean.md](https://www.symcon.de/de/llms/modules/enocean.md) oder [knx.md](https://www.symcon.de/de/llms/modules/knx.md), inklusive der Modulfunktionen. | | llms/functions/*.md | Die Befehlsreferenz, eine Datei pro Gruppe, z.B. [management-variables.md](https://www.symcon.de/de/llms/functions/management-variables.md). | | [llms-full.txt](https://www.symcon.de/de/llms-full.txt) | Die komplette Dokumentation in einer Datei, z.B. zum Hochladen in eine Wissensdatenbank. | Die Dateinamen sind in allen Sprachen identisch. Die englische Version steht unter /en/llms.txt zur Verfügung. ### Verwendung Die meisten KI-Agenten können die Dateien direkt abrufen. Es genügt, dem Agenten die Adresse des Index mitzuteilen, z.B. in der Datei CLAUDE.md oder AGENTS.md des eigenen Modul-Projekts: ```php Die Symcon Dokumentation für KI-Agenten ist unter https://www.symcon.de/de/llms.txt verfügbar. Für PHP-Funktionen zuerst https://www.symcon.de/de/llms/function-index.md laden. ``` Alternativ kann die Datei llms-full.txt als Wissensdatenbank in einem Projekt (z.B. Claude Projects oder NotebookLM) hochgeladen werden. ### Dateien - Einstieg - [Funktionsindex](../function-index.md) - [Erste Schritte](../getting-started.md) - [Systemvoraussetzungen](../getting-started/system-requirements.md) - [Migrationen](../getting-started/migrationen.md) - [Vorgehensweisen](../how-to.md) - [Grundlagen](../concepts.md) - [Automationen](../concepts/automations.md) - Komponenten - [Komponenten – Übersicht](../components/index.md) - [Fernzugriff](../components/remote-access.md) - [Tray](../components/tray.md) - [Dienst](../components/service.md) - [Verwaltungskonsole](../components/management-console.md) - [Kachel Visualisierung](../components/tile-visualization.md) - [WebFront Visualisierung](../components/webfront-visualization.md) - [Objekt-Darstellung](../components/object-presentation.md) - [Icons](../components/icons.md) - Befehlsreferenz - [Befehlsreferenz – Übersicht](../functions/index.md) - [Ablaufsteuerung](../functions/process-control.md) - [Ereignisverwaltung](../functions/management-events.md) - [Instanzenverwaltung](../functions/management-instances.md) - [Kategorieverwaltung](../functions/management-categories.md) - [Linkverwaltung](../functions/management-links.md) - [Medienverwaltung](../functions/management-media.md) - [Modulverwaltung](../functions/management-modules.md) - [Objektverwaltung](../functions/management-objects.md) - [Programminformationen](../functions/program-information.md) - [Skriptverwaltung](../functions/management-scripts.md) - [Variablenverwaltung](../functions/management-variables.md) - [Variablenzugriff](../functions/access-variables.md) - Entwicklerbereich - [Entwicklerbereich – Übersicht](index.md) - [Datenaustausch](data-exchange.md) - [Download (Archiv)](download-archive.md) - [Kompatibilitätsfunktionen](compatibility-functions.md) - [Limitationen](limitations.md) - [Mirroring](mirroring.md) - [SDK/Tools](sdk-tools.md) - [SDK (PHP)](sdk-tools/sdk-php.md) - [Konfigurationsformulare](sdk-tools/sdk-php/configuration-forms.md) - [Module](sdk-tools/sdk-php/module.md) - [Spezialschalter](special-switches.md) - Modulreferenz - [Modulreferenz – Übersicht](../modules/index.md) - Modulreferenz: Geräte - [1-Wire](../modules/1-wire.md) - [ABL](../modules/abl.md) - [Alfen](../modules/alfen.md) - [ALLNET](../modules/allnet.md) - [BACnet](../modules/bacnet.md) - [Catan](../modules/catan.md) - [digitalSTROM](../modules/digitalstrom.md) - [DMX / ArtNet](../modules/dmx-artnet.md) - [EgiGeoZone](../modules/egigeozone.md) - [ekey](../modules/ekey.md) - [ekey bionyx](../modules/ekeybionyx.md) - [EnOcean](../modules/enocean.md) - [FHZ1X00PC](../modules/fhz1x00pc.md) - [FS10 Wetter](../modules/fs10-weather.md) - [GARDENA smart system](../modules/gardena-smart-system.md) - [Geofency](../modules/geofency.md) - [Heating Control](../modules/heating-control.md) - [Home Connect](../modules/home-connect.md) - [HomeMatic](../modules/homematic.md) - [Image Grabber](../modules/image-grabber.md) - [IPS-868](../modules/ips-868.md) - [IR Trans](../modules/irtrans.md) - [KEBA](../modules/keba.md) - [KNX](../modules/knx.md) - [LCN](../modules/lcn.md) - [LJQuick](../modules/ljquick.md) - [Matter](../modules/matter.md) - [M-Bus](../modules/mbus.md) - [Mennekes](../modules/mennekes.md) - [Modbus RTU/TCP](../modules/modbus-rtu-tcp.md) - [Möhlenhoff Alpha 2](../modules/moehlenhoff-alpha-2.md) - [MQTT](../modules/mqtt.md) - [NEA Smart](../modules/nea-smart.md) - [OCPP](../modules/ocpp.md) - [OPC UA](../modules/opc-ua.md) - [SageGlass (BACnet)](../modules/sageglass-bacnet.md) - [Shutter Control](../modules/shutter-control.md) - [Siemens OZW](../modules/siemens-ozw.md) - [SNMP](../modules/snmp.md) - [Snom](../modules/snom.md) - [SPS: Siemens, Vipa, Logo](../modules/sps-siemens-vipa-logo.md) - [SPS: Wago, Beckhoff, ABB](../modules/sps-wago-beckhoff-abb.md) - [Sync Remote](../modules/sync-remote.md) - [Technische Alternative](../modules/technische-alternative.md) - [Türsprechanlagen](../modules/door-intercom.md) - [Voice over IP](../modules/voip.md) - [Weishaupt](../modules/weishaupt.md) - [WinLIRC](../modules/winlirc.md) - [Wireless M-Bus](../modules/wireless-m-bus.md) - [WMRS200](../modules/wmrs200.md) - [W&T](../modules/wut.md) - [XBee](../modules/xbee.md) - [xComfort](../modules/xcomfort.md) - [Z-Wave](../modules/z-wave.md) - [Zevvy](../modules/zevvy.md) - Modulreferenz: Logiken - [Aktivliste](../modules/active-list.md) - [Anwesenheits-Simulation](../modules/presence-simulation.md) - [Bild-Archiv](../modules/image-archive.md) - [Countdown](../modules/countdown.md) - [CSV ZIP Export](../modules/csv-zip-export.md) - [Dummy Modul](../modules/dummy-module.md) - [Eieruhr](../modules/egg-timer.md) - [Gruppensteuerung](../modules/group-control.md) - [JSON Decoder](../modules/json-decoder.md) - [JSON Exporter](../modules/json-exporter.md) - [Logik Gatter](../modules/logic-gate.md) - [Rechenmodule](../modules/computation-module.md) - [RGBMultiplexer](../modules/rgbmultiplexer.md) - [Schleppzeiger](../modules/dragpointer.md) - [Spielesammlung](../modules/game-collection.md) - [Szenensteuerung](../modules/scene-control.md) - [Taupunkt berechnen](../modules/dew-point-temperature-calculation.md) - [Treppenhauslichtsteuerung](../modules/staircase-light-controls.md) - [Umbennener](../modules/renamer.md) - [Unwetterzentrale](../modules/rain-central.md) - [VariablenVergleich](../modules/variable-comparison.md) - [Virtuelle Geräte](../modules/virtuelle-devices.md) - [Zufällige Beleuchtung](../modules/random-lighting.md) - Modulreferenz: Energie - [Arbeitszahl](../modules/work-efficiency.md) - [Betriebsstundenzähler](../modules/operating-hours-counter.md) - [Energie Dashboard](../modules/energy-dashboard.md) - [Energie Manager](../modules/energy-manager.md) - [Energieverteilung](../modules/energy-distribution.md) - [Energiezähler](../modules/energy-counter.md) - [Stromabrechnungsmodul](../modules/power-billing-module.md) - [Strompreis](../modules/power-price.md) - [Verbrauch in Kategorie](../modules/consumption-per-category.md) - [Verbrauch in Zeitspanne](../modules/consumption-within-timespan.md) - [Verbrauchsverhalten](../modules/consumption-behaviour.md) - [VirtuelleMessstelle](../modules/calculated-counter.md) - [Virtueller Zähler](../modules/virtual-counter.md) - [Zählerstand (Tag)](../modules/reading-day.md) - [Zählerüberlauf](../modules/meter-overflow.md) - Modulreferenz: Visualisierungen - [Kachel Visualisierung](../modules/tile-visualization.md) - [WebFront Visualisierung](../modules/webfront-visualization.md) - Modulreferenz: Sprachassistenten - [Amazon Alexa](../modules/amazon-alexa.md) - [Google Assistant](../modules/google-assistant.md) - Modulreferenz: Benachrichtigungen - [Alarmierung](../modules/alerting.md) - [Benachrichtigung](../modules/notification.md) - [Durchsage](../modules/announcement.md) - [Dynamische E-Mail](../modules/dynamic-mail.md) - [FertigMelder](../modules/done-notifier.md) - [IMAP](../modules/imap.md) - [MediaPlayer](../modules/mediaplayer.md) - [POP3](../modules/pop3.md) - [Popup Modul](../modules/popup-module.md) - [SMS](../modules/sms.md) - [SMTP](../modules/smtp.md) - [Spotify](../modules/spotify.md) - [Störungsmanager](../modules/fault-manager.md) - [SymconReport](../modules/symconreport.md) - [Telefonansage](../modules/phone-announcement.md) - [Telefonkette](../modules/phone-chain.md) - [TelegramBot](../modules/telegrambot.md) - [Text to Speech](../modules/text-to-speech.md) - [TTSAWSPolly](../modules/ttsawspolly.md) - [VerbrauchsAlarm](../modules/consumption-alert.md) - [Wasser-Alarm](../modules/water-alert.md) - [Watchdog](../modules/watchdog.md) - Modulreferenz: Kern Instanzen - [Archive Control](../modules/archive-control.md) - [Berechtigungssteuerung](../modules/permission-control.md) - [Calendar Control](../modules/calendar-control.md) - [Connect Control](../modules/connect-control.md) - [Cutter](../modules/cutter.md) - [DNS-SD Control](../modules/dns-sd-control.md) - [Event Control](../modules/event-control.md) - [Location Control](../modules/location-control.md) - [Module Control](../modules/module-control.md) - [Notification Control](../modules/notification-control.md) - [Presence Control](../modules/presence-control.md) - [RegisterVariable](../modules/registervariable.md) - [Skin Control](../modules/skin-control.md) - [SSDP Control](../modules/ssdp-control.md) - [System Informationen](../modules/system-information.md) - [Tailscale VPN](../modules/tailscale-vpn.md) - [TextParser](../modules/textparser.md) - [Translation Control](../modules/translation-control.md) - [Util Control](../modules/util-control.md) - [WebHook Control](../modules/webhook-control.md) - [WebServer](../modules/webserver.md) - Modulreferenz: I/O Instanzen - [Client Socket](../modules/clientsocket.md) - [HID](../modules/hid.md) - [HTTP Client](../modules/httpclient.md) - [Multicast Socket](../modules/multicastsocket.md) - [Serial Port](../modules/serialport.md) - [Server Sent Event Client](../modules/serversenteventclient.md) - [Server Socket](../modules/serversocket.md) - [UDP Socket](../modules/udpsocket.md) - [Virtual I/O](../modules/virtualio.md) - [WebSocket Client](../modules/websocketclient.md) - Modulreferenz: Datensicherung - [Backup](../modules/backup.md) - Modulreferenz: Legacy - [RRDTool](../modules/rrdtool.md) - [Shutter Control (legacy)](../modules/shutter-control-legacy.md) - [USBMapper](../modules/usbmapper.md) - [Web Graph](../modules/web-graph.md) - [Wunderground Weather](../modules/wunderground-weather.md) ## SDK (Excel) Quelle: https://www.symcon.de/de/service/dokumentation/entwicklerbereich/sdk-tools/sdk-excel/ _Benötigt Symcon >= 3.0_ ### Beschreibung Ab IP-Symcon 3.0 unterstützt IP-Symcon die JSON-RPC Schnittstelle und somit kann die Datenbank einfach in Microsoft Excel eingelesen werden. ### Voraussetzungen IP-Symcon 3.0 oder höher Microsoft Excel oder Vergleichbares mit Visual Basic for Applications Unterstützung "Visual Basic for Applications" Kenntnisse (optional) [Download der vorbereiteten Excel-Datei](https://www.symcon.de/assets/files/service/SDK-Excel.zip) ### Einrichten in Microsoft Excel Die heruntergeladene Datei muss entpackt und in Excel geöffnet werden. #### Erstmaliges Öffnen der Datei Bei dem ersten Öffnen der Datei erscheinen zwei Warnungen, welche durchgeklickt und erlaubt werden müssen. Erste Warnung: ![Geschützte Ansicht](https://www.symcon.de/media/pages/service/dokumentation/entwicklerbereich/sdk-tools/sdk-excel/95f2d6733b-1790424938/sdkexcel-redwarning.png) Wenn auf den Schriftzug der Meldung geklickt wird, muss "Trotzdem bearbeiten" angewählt werden. Dies ist eine Standard Sicherheitsmaßnahme, da die Datei Skripte enthält. Im Anschluss erscheint entweder ein Popup oder eine gelbe Sicherheitswarnung, welche beide vor den enthaltenen Makros warnen. Diese müssen für die Funktionalität aktiviert werden. Somit Entweder im Popup "Makros aktivieren" oder in der gelben Meldung "Inhalt aktivieren" anklicken. ![Sicherheitswarnung](https://www.symcon.de/media/pages/service/dokumentation/entwicklerbereich/sdk-tools/sdk-excel/410e9585dc-1790424938/sdkexcel-yellowwarning.png) #### Zugriff konfigurieren In dem Reiter "Konfiguration" kann die Verbindung zur IPS-Datenbank getestet werden. Es ist drauf zu achten, dass der [Fernzugriff](../components/remote-access.md) aktiviert ist. ![Konfiguration](https://www.symcon.de/media/pages/service/dokumentation/entwicklerbereich/sdk-tools/sdk-excel/38f21efe41-1790424938/sdkexcel-config.png) In der Konfigurationstabelle können Server, Benutzername, Fernzugriff-Kennwort angegeben werden. Bei Server können vollständige URLs oder IP-Adressen angegeben werden. Bei IP-Adressen ist darauf zu achten, dass diese in dem Format "http://192.168.1.1:3777" angegeben wird. Das Fernzugriff-Kennwort und der Benutzername ist nur nötig, wenn nicht lokal (127.0.0.1) auf die Daten zugegriffen werden soll. Über "Test Connection" wird die Verbindung aufgebaut und die InstanzID des Archivs wird ausgelesen. #### Rohdaten auslesen Im Reiter "Rohdaten" können die Rohdaten einer Varaible ausgelesen werden. Diese werden dann Zeilenweise mit Datum und Wert ausgegeben. ![Rohdaten](https://www.symcon.de/media/pages/service/dokumentation/entwicklerbereich/sdk-tools/sdk-excel/9704aaf56b-1790424938/sdkexcel-rawdata.png) Eingetragen werden muss die VariablenID. Start- und Endzeit können 0 sein und setzten damit keine Grenzen. Limit setzt die maximale Anzahl an Datensätze, die ausgelesen werden sollen. Systembedingt gibt es allerdings ein Limit von 10000 Datensätzen. Über "Fetch Data" werden die Daten eingelesen und in die Tabelle eingetragen. Der aktuellste Datensatz erscheint zuerst. #### Aggregation auslesen Der dritte Reiter beinhaltet die "Aggregation". Auch werden wieder die VariablenID, Start-/Endzeit und das Limit benötigt. Zusätzlich kann die Aggregation gewählt werden. Mit den Werten 0-6 kann zwischen minutengenauer bis zu jährlicher Aggregation gewählt werden. ![Aggregation](https://www.symcon.de/media/pages/service/dokumentation/entwicklerbereich/sdk-tools/sdk-excel/d4e3d492fe-1790424938/sdkexcel-aggregated.png) Über "Fetch Data" werden die Daten eingelesen und in die Tabelle eingetragen. Es wird ein Average, sowie Minima und Maxima innerhalb eine Aggregation ausgegeben. ### Visual Basic for Applications und die Konfiguration Um die Skripte und Makros, welche das Auslesen ermöglichen, zu verwalten oder ändern, sollten die Entwicklertools in der Schnellleiste aktiviert werden. Dies kann einfach via "Rechtsklick->Datei->Menüband anpassen" ausgewählt werden. Dort muss nur das Menü "Entwicklertools" aktiviert werden. ![Entwicklertools](https://www.symcon.de/media/pages/service/dokumentation/entwicklerbereich/sdk-tools/sdk-excel/98e6e038c6-1790424938/sdkexcel-optiontoolbar.png) Einmal aktiviert findet man unter diesem Menüpunkt den Button "Visual Basic" mit dem man in den Entwicklerbereich kommt. Dies sieht wiefolgt aus: ![Visual Basic](https://www.symcon.de/media/pages/service/dokumentation/entwicklerbereich/sdk-tools/sdk-excel/76b72503f4-1790424938/sdkexcel-visualbasic.png) Hier können die benötigten Skripte angepasst werden und genutzt werden um die Daten aus IP-Symcon weiterzuverarbeiten. Auch befindet sich in diesen Skripten die Logik zum Verbindungsaufbau zu IP-Symcon, sowie die dafür benötigte JSON-RPC Schnittstelle. ## SDK (Skins) (veraltet) Quelle: https://www.symcon.de/de/service/dokumentation/entwicklerbereich/sdk-tools/sdk-skins/ _Benötigt Symcon >= 3.0_ > **Achtung:** Skins sind nur für das WebFront verfügbar. Seit Version 7.0 gibt es die [Kachel Visualisierung](../components/tile-visualization.md), deren [Design](../components/tile-visualization.md) direkt in der Visualisierung für Web und Apps gleichermaßen verändert werden kann. ### Beschreibung Ab der Version 3.0 können eigene Skins erstellt werden. Das Erstellen und Austauschen von Icons ist schnell verwirklicht, sollen allerdings ganze Änderungen am Style verwirklicht werden, sind zusätzlich CSS Kenntnisse nötig. > **Hinweis:** Dies funktioniert nur für das WebFront. Sollte ein Skin oder Anpassung der mobilen Apps gewünscht sein, kann dies über das Enterprise Programm verwirklicht werden. > Weitere Informationen können unter [Produkte für Unternehmen](https://www.symcon.de/de/produkt/unternehmen/) gefunden und über Direktkontakt ein [individuelles Branding](https://www.symcon.de/de/kontakt/#Individuelles%20Branding) angefragt werden ### Voraussetzungen IP-Symcon 3.0 oder höher CSS Kenntnisse (sofern mehr als die Icons verändert werden sollen) [Beispiel Skin](https://codeload.github.com/symcon/SkinTemplate/zip/refs/heads/master) herunterladen um Grundstruktur zu haben (empfohlen) ### Ordnerstruktur ![Struktur des Skin Ordners](https://www.symcon.de/media/pages/service/dokumentation/entwicklerbereich/sdk-tools/sdk-skins/fbc9a6cc3f-1790424938/sdkskins-struktur.png) ```php Skinname | - icons (optional) | | | - Aircraft.png | | | - Bird.png | - img (optional) | | | - Background.png | - font (optional) | | | - WebFont.ttf | - skin.json (wird generiert) | - webfront.css (benötigt, wenn auch leer) | - icons.css (wird generiert) | - README.md (optional) ``` ### Icons-Ordner Icons beinhaltet alle Icons. Sollten gleichnamige Standard-Icons vorhanden sein, werden die Custom-Icons bevorzugt. * Enthält alle Icons im PNG Format und Größe 32x32. * Namen der Icons dürfen nur aus Buchstabe, Zahlen, Minus (-) und Unterstrich (_) bestehen. Leerzeichen, Umlaute und Sonderzeichen sind nicht erlaubt. * Die Icons müssen alle mit Großbuchstaben beginnen (z.B. Arrow.png, Right.png) * Bei Wortverkettungen ist es empfohlen, dass diese auch mit einem großen Buchstaben geschrieben werden (z.B. ArrowRight.png). Dies dient der besseren Lesbarkeit und der Konsistenz zu den IP-Symcon Icons. * Wenn ein Icon den selben Namen hat wie eines der IP-Symcon Icons, dann wird im WebFront das Custom-Icon bevorzugt. Die Groß-/Kleinschreibung ist zu beachten. (Diese Funktion ist eine elegante Art ein fremdes WebFront ohne viel Aufwand mit einem Skin auszurüsten.) ### Image-Ordner Img beinhaltet zusätzliche Grafiken für z.B. mögliche Hintergründe. * Enthält weitere Bilder für z.B. spezielle Hintergründe ### Font-Ordner Beinhaltet benötigte Fonts für den Skin. * Enthält weitere WebFonts * Die CSS-Elemente der WebFont sollen in der webfront.css hinzugefügt werden ### Einzeldateien Dateien welche im Hauptordner liegen. #### skin.json * Meta-Datei, die automatisch vom Skin-Builder erstellt wird. Die Felder Author, Version, URL, GIT und Compatible dürfen nach dem Erstellen verändert werden. URL sollte dabei die Adresse zum Skin-Thema im Forum sein. GIT sollte die Adresse zum GitHub-Repository sein, damit das Skin-Control entsprechend Updates herunterladen kann. Das Icons Array wird automatisch erstellt und dient dem WebFront Editor als Hilfsmittel, um die Custom-Icons auswählbar zu machen. Compatible muss den Wert 1 besitzen. Dieser wird strikt überprüft, um bei Änderungen am WebFront, die den Skins inkompatibel machen, diesen deaktivieren zu können. #### webfront.css * CSS-Datei, die Änderungen am WebFront CSS-Style enthält. Muss vorhanden sein. Kann auch leer sein. * CSS-Änderungen müssen den o.g. Regeln entsprechen. #### icons.css * CSS-Datei, die die Links auf die benutzerdefinierten Icons enthält. * Wird automatisch vom Skin-Builder generiert und sollte nicht verändert werden. #### README.md Readme welche von GitHub automatisch im Browser in der Repository Übersicht angezeigt wird. Kann zur Dokumentation genutzt werden. ### Skin Builder * Der Skin-Manager wird mit http//host:port/skins/ aufgerufen. (Beispiel: http://localhost:3777/skins/) * Sobald ein Skin ausgewählt wurde, werden die aktuell in der CSS-/Meta-Datei vorhandenen Icons angezeigt. * Wenn neue Icons hinzugefügt/entfernt wurden, muss ein "Build Skin!" ausgeführt werden, damit die icons.css/skin.json entsprechend neu generiert werden. Bei Änderungen an Icons selbst oder der webfront.css ist keine Aktion erforderlich. Evtl. muss der Browsercache gelöscht werden, damit Änderungen sichtbar werden. > **Hinweis:** Bis Version 4.4 war der Skin-Manager unter http//host:port/user/skins/ zu finden. (Beispiel: http://localhost:3777/user/skins/) ### Skins bereitstellen * Skins können bei GitHub hochgeladen werden. * Der GitHub Repository-Name sollte dem Namen des Skins entsprechen. * Im Repository sollten sich nur die notwendigen Dateien befinden wie icons.css, skin.json, webfront.css und optionale Ordner wie icons, font oder img. Eine README.md und eine LICENSE Datei werden zusätzlich empfohlen. Die Dateien dürfen nicht in einem zusätzlicher Unterordner verschachtelt sein, da ansonsten der Installer nicht korrekt arbeitet. * Bei der Veröffentlichung muss die Größe (Anzahl in kB/mB), die der Skin zusätzlich beim Laden braucht, angegeben werden. (Diese wird nach dem Build-Prozess angezeigt) ### Skins installieren Dies funktioniert via [Skin-Control](../modules/skin-control.md) und ist dort beschrieben. ### Skins auswählen Im [WebFront](../components/webfront-visualization.md) Konfigurator gibt es ein Feld "Skin" unter dem Reiter [Darstellung](../components/webfront-visualization.md), in dem der Skin ausgewählt werden kann. ## Tools Quelle: https://www.symcon.de/de/service/dokumentation/entwicklerbereich/sdk-tools/tools/ ### Network-Configuration-Tool Mit dem Network-Configuration-Tool können alle IPS-Gateways im Netzwerk gefunden werden. Eine Anleitung zur Nutzung kann [HIER](https://www.symcon.de/assets/files/service/NetworkConfigurationTool.pdf) gefunden werden. [Zum Download](https://support.symcon.de/lan-gct) ### Recoverytool Das Recoverytool kann ein Image auf die SymBox schreiben. Eine Anleitung zur Nutzung kann [HIER](https://www.symcon.de/assets/files/product/symbox.pdf) unter dem Punkt "5.2. Wiederherstellung mithilfe des Recovery-Tools" gefunden werden. [Zum Download](https://www.symcon.de/de/downloads/#symbox) ### Modul Entwicklung Folgende Tools sind hilfreich bei der Entwicklung von Modulen für den [Module Store](../components/management-console.md) und helfen um diese erfolgreich [einzureichen](sdk-tools/sdk-php.md). ### GUID Generator Der [GUID Generator](sdk-tools.md) generiert eine GUID im richtigen Format für das Modul. ### Modul Generator Der [Modul Generator](sdk-tools.md) ist ein Wizard welcher bei dem anlegen der Grundstruktur für ein Modul hilft und alle grundlegenden Einrichtungen für ein funktionierenden Datenfluss einrichtet. ### Modul Validator Der [Modul Validator](sdk-tools.md) prüft die entwickelten Dateien auf eine korrekte Syntax und ob alle benötigten Informationen enthalten sind. ### Externe IDEs Externe IDEs können Funktionsdeklarationen einfügen und anzeigen. #### Visual Studio Code Eine Anleitung zur Generierung und Nutzung in Visual Studio Code kann [HIER](sdk-tools.md) gefunden werden. ## GUID Generator Quelle: https://www.symcon.de/de/service/dokumentation/entwicklerbereich/sdk-tools/tools/guid-generator/ _Interaktives Werkzeug, nur auf der Webseite verfügbar: https://www.symcon.de/de/service/dokumentation/entwicklerbereich/sdk-tools/tools/guid-generator/_ ## Modul Generator Quelle: https://www.symcon.de/de/service/dokumentation/entwicklerbereich/sdk-tools/tools/module-generator/ > **Hinweis:** Zur Verwendung in Visual Studio Code wird die Verwendung der Erweiterung Symcon Modul Helfer von pitti empfohlen anstatt dieses Tool zu verwenden. Mehr Informationen dazu sind [hier](https://community.symcon.de/t/symcon-modul-helfer-eine-vs-code-extension-fuer-modul-entwickler-ehem-forminator/141324) zu finden. _Interaktives Werkzeug, nur auf der Webseite verfügbar: https://www.symcon.de/de/service/dokumentation/entwicklerbereich/sdk-tools/tools/module-generator/_ ## Modul Validator Quelle: https://www.symcon.de/de/service/dokumentation/entwicklerbereich/sdk-tools/tools/module-validator/ ## Visual Studio Code Quelle: https://www.symcon.de/de/service/dokumentation/entwicklerbereich/sdk-tools/tools/visual-studio-code/ Für VisualStudioCode gibt es einige nützliche Extensions für die Modulentwicklung. ### Extension für IP-Symcon installieren In dieser Extension ist eine Funktionsliste erstellt worden, um diese im Quellcode anzuzeigen. #### Marketplace Diesen [Link zum Marketplace](https://marketplace.visualstudio.com/items?itemName=symcongmbh.vscode-symcon-stubs) aufrufen und auf "Install" klicken. #### Extensionbrowser in VSC * "Extensions" aufrufen * Nach "Symcon" suchen * Die "Extension for IP-Symcon" auswählen und durch klick auf "Install" installieren * Im Extensionsbereich sollte nun unter "Installed" -> "Extension for IP-Symcon" erscheinen ![Konfiguration von PhpStorm](https://www.symcon.de/media/pages/service/dokumentation/entwicklerbereich/sdk-tools/tools/visual-studio-code/86c401e09e-1790424938/tools-vsc-extension.png) ### PHP herunterladen Für die Extensions "CS Fixer" und "PHPUnit" wird PHP gebraucht. Hier ist ein [Link zum Download](https://www.php.net/downloads.php) von PHP. PHP 8 oder höher wird empfohlen. * Mit einem Klick auf das Zahnrad (Manage) "Settings" aufrufen. * Hier unter dem Punkt "Extensions" den Punkt "PHP" auswählen. * Dort gibt es den Punkt "PHP > Validate: Executable Path" bei dem die "settings.json" aufgerufen werden kann. * Hinter "php.validate.executablePath" wird nun der Pfad zur php.exe angegeben. Die "\" müssen mit einem zweiten "\" maskiert werden. ```php "php.validate.executablePath": "Path\\To\\php.exe" ``` ### CS Fixer installieren Benötigt werden: * Die PHAR-Datei, welche unter [diesem Link](https://github.com/PHP-CS-Fixer/PHP-CS-Fixer) heruntergeladen werden kann. Die Version 3 wird mit PHP 8 Unterstützt. * Ein .style-Ordner. Empfohlen wird dieses [Repository](https://github.com/symcon/StylePHP) als Submodul im eigenen Repository einzubinden * Die Extension um cs-fixer in Visual Studio Code zu nutzen, welche im [Marketplace](https://marketplace.visualstudio.com/items?itemName=junstyle.php-cs-fixer) heruntergeladen oder nachfolgend direkt in Visual Studio Code eingebunden werden kann #### Extensionbrowser in VSC * "Extensions" aufrufen * Nach "php cs fixer" suchen * Den "php cs fixer" von junstyle auswählen und durch klick auf "Install" installieren * Im Extensionsbereich sollte nun unter "Installed" -> "php cs fixer" erscheinen #### CS Fixer konfigurieren * Mit einem Klick auf das Zahnrad (Manage) "Settings" aufrufen * Unter dem Punkt "Extensions" den Punkt "PHP CS Fixer" auswählen * Den Punkt "Allow Risky" setzt man auf true * Unter dem Punkt "PHP-cs-fixer: Executable Path" wird der Pfad zur "php-cs-fixer.phar" angegeben. Alternativ können diese Einstellungen in die "settings.json" eingeben werden. ```php "php-cs-fixer.executablePath": "Path\\To\\php-cs-fixer-v3.phar", "php-cs-fixer.allowRisky": true ``` #### CS Fixer nutzen Wenn alles korrekt eingebunden und eingerichtet ist, kann man die Extention nutzen. Entweder in dem man in der zu formatierenden Datei rechtsklickt und Format Document auswählt oder den Shortcut "Shift+Alt+F" drückt. Soll das ganze Projekt den Stil übernehmen kann über die Comando-Zeile der folgende Befehl eingegeben werden. ```php php "Path\\To\\php-cs-fixer-v3.phar" fix --config=.style/.php_cs -v --allow-risky=yes ``` ### PHP Unit installieren Benötigt werden: * Die PHAR-Datei von PHPUnit, welche unter [diesem Link](https://phpunit.de/getting-started/phpunit-9.html) heruntergeladen werden kann * Ein Test, welcher ausgeführt werden soll * Die Extension um PHPUnit in Visual Studio zu nutzen, welche im [Marketplace](https://marketplace.visualstudio.com/items?itemName=recca0120.vscode-phpunit) heruntergeladen oder nachfolgend direkt in Visual Studio Code eingebunden werden kann #### Extensionbrowser in VSC * "Extensions" aufrufen * Nach "PHPUnit" suchen * Den "PHPUnit Test Explorer" auswählen und durch klick auf "Install" installieren * Im Extensionsbereich sollte nun unter "Installed" -> "PHPUnit Test Explorer" und "Test Explorer UI" erscheinen #### PHP Unit konfigurieren * Mit einem Klick auf das Zahnrad (Manage) "Settings" aufrufen * Unter dem Punkt "Extensions" den Punkt "PHPUnit configuration" auswählen * Bei dem Punkt "Phpunit: Files" wird "{test,tests}/**/*Test.php" eingegeben * Unter dem Punkt "Phpunit: PHP" wird der Pfad zur PHP.exe eingegeben. * Bei dem Punkt "Phpunit: Phpunit" wird der Pfad zur Phpunit Phar Datei angegeben * Desweiteren sollte unter "Phpunit: Args" ["--configuration", "tests/phpunit.xml"] eingegeben werden. Alternativ können diese Einstellungen in die "settings.json" eingeben werden. ```php "phpunit.phpunit": "Path\\To\\phpunit-9.5.10.phar", "phpunit.args": [ "--configuration", "tests/phpunit.xml" ], "phpunit.php": "Path\\To\\php.exe", "phpunit.files": "{test,tests}/**/*Test.php", ``` Jetzt kann PHPUnit genutzt werden. Es können allerdings noch Fehler auftauchen. So kann der folgende Fehler auftauchen: ```php "PHPUnit requires the "mbstring" extension." ``` * Zum Ordner in dem die "php.exe" liegt navigieren * Die Datei "php.ini" suchen in diesem Ordner suchen. Sollte diese nicht vorhanden sein nach "php.ini-development" suchen und diese umbennenen * Die Datei "php.ini" in einem beliebigen Text-Editor öffnen * Im Abschnitt "Dynamic Extensions" nach "mbstring" suchen * Vor "extension=mbstring" das Semikolon entfernen * Datei speichern * Visual Studio Code schließen und wieder öffnen Nun kann es zu einem weiteren Fehler kommen: ```php PHP Warning: PHP Startup: Unable to load dynamic library 'mbstring' (tried: C:\php\ext\mbstring (Das angegebene Modul wurde nicht gefunden.), ) C:\php\ext\php_mbstring.dll (Das angegebene Modul wurde nicht gefunden.) in Unknown on line 0 ``` * Zum Ordner in dem die "php.exe" liegt navigieren * Die Datei "php.ini" suchen in diesem Ordner suchen. Sollte diese nicht vorhanden sein nach "php.ini-development" suchen und diese umbennenen * Die Datei "php.ini" in einem beliebigen Text-Editor öffnen * Im Abschnitt "Paths and Directories" nach "extension_dir" suchen * Vor "extension_dir = "ext"", welches unter "On windows:" steht, das Semikolon entfernen * Datei speichern * Visual Studio Code schließen und wieder öffnen #### PHPUnit nutzen Nun sollte über der Funktion mit dem Test zwei Schaltflächen angezeigt werden. Mit einem Klick auf Run wird der Test gestartet. ![PhpUnit](https://www.symcon.de/media/pages/service/dokumentation/entwicklerbereich/sdk-tools/tools/visual-studio-code/11ac28fda9-1790424938/tools-vsc-phpUnit.png)