Skip to content

08 Custom Components

63chris edited this page Feb 9, 2025 · 17 revisions

Die verfügbaren Custom components findet man im Verzeichnis /homehub/custom/components/

Gemeinsame Parameter

Parameter Inhalt Hinweise
"component" "name" Name der Komponente, case-sensitiv
"name" "beliebig" Wählbarer Text
"icon" "name_des-icons" Frei wählbar, siehe /homehub/icon/ oder IPdesWebservers/homehub/icon/index.php

Abfallkalender

Vorschau der Müllabfuhrtermine aus einer ics-Datei. Wenn die Termine veraltet sind (Vorjahr), wird ein Warnhinweis ausgegeben.

grafik

Die .ics-Datei des lokalen Versorgers unter den Namen "abfallkalender.ics" im Verzeichnis /homehub/custom/components abglegen. Zum testen kann auch die schon vorhandene Beispiel-.ics genutzt werden.

Einbinden in der custom.json

 {
 "component":"abfallkalender",
 "name":"Abfallkalender",
 "icon":"message_garbage_collection.png",
 "tage":"10",
 "color": "#00CC33"
 }
Parameter Inhalt Hinweise
"tage" "Zahl" Anzahl Tage für Vorschau

Hinweis: Sollten nach upload der eigenen ics-Datei noch Einträge aus der vorinstallierten abfallkalender.ics erscheinen, mal die Datei abfallkalender.cache im Verzeichnis /VerzeichnisDesWebservers/homehub/cache löschen und Cache löschen (strg+F5).

Hinweis 2 zum Jahreswechsel: lädt man schon vor dem 1.1. eine neue .ics Datei hoch, wird ab dem 1.1. der unten gezeigte Hinweis angezeigt - auch wenn die Termine alle im neuen jahr liegen. Einfach das Dateidatum auf das neue Jahr bringen (z.B. öffnen, kleine Änderung, abspeichern). Dann verschwindet der wieder.

grafik


Audio

Einfach Abspielfunktion für Webradio-Streams im mp3-Format. Das abspielen stoppt, wenn man auf eine andere Seite wechselt

grafik

Für verschiedene Sender hier zwei beispielhafte Such-Seiten https://rrradio.de/radiosender/ http://fmstream.org/index.php?c=FT

Einbinden in der custom.json

 {
 "component":"Audio",
 "name":"Radio",
 "icon": "it_radio.png",
 "file":"https://wdr-1live-live.icecastssl.wdr.de/wdr/1live/live/mp3/128/stream.mp3"
 }
Parameter Inhalt Hinweise
"file" "URL" URL zur mp3-Stream Datei

diagramm

Eine einfache Diagramm-Funktion für Homehub, die ohne Datenbank auskommt Alternativ kann man Charts aus externen Programmen/Quellen auch über Iframe einbinden

ab dem 5.2.25 gibt es eine verbesserte/erweiterte Version. Siehe Hinweise zur Umstellung von der vorherigen Version weiter unten

Benötigt wird/werden immer:

  • die ise-id(s) des/der anzuzeigenden Werte(s) oder Variablen
  • ein cronjob auf dem Webserver zum Aufruf der "diagramm_collect.php" (Pfade ggfls anpassen)

*/5 * * * * curl --silent http://localhost/homehub/diagramm_collect.php >/dev/null 2>&1

oder falls der WebServer-Port nicht 80 ist

*/5 * * * * curl --silent http://localhost[:port]/homehub/diagramm_collect.php >/dev/null 2>&1

Bei der Synology kann man eine Aufgabe erstellen. (täglich wiederholen, Start 0:00, jede Minute, Ende 23:59) Skript ausführen (IP/Pfad ggf. anpassen.):

curl http://IPdesWebServers/homehub/diagramm_collect.php

gegebenenfalls noch den WebServer-Port an die IP anhängen

Einbinden in der custom.json

Parameter Inhalt Hinweise
"component" (mandatory) "diagramm"
"name" (optional) "text" Überschriften-Text
"icon" (optional) "Name .png-Datei" siehe /homehub/icon/
"ise_id" (mandatory) "ise-id" eine oder mehrere (durch Komma getrennte) ISE_ID des/der zu sammelnden Datenpunkte(s)
"collect" (optional) "Zahl" Abstand der Speicherung in Minuten, oder feste Uhrzeit(en) im Format HH:MM[,HH:MM[,...], Uhrzeiten durch , getrennt], Standard = Intervall der diagramm_collect.php-Aufrufe
"history" (optional) "Zahl" maximale Anzahl gespeicherter Werte, 1...5000. Standard = 200.
"size" (optional) "Zahl" Höhe des Diagramms 0...3 (30,50,70,90% Fensterhöhe). Standard = 100%.
"precision" (optional) "Zahl" Anzahl Dezimalstellen bei numerischen Werten. Standard = 1.
"only_changed" (optional) "1"/true/"yes" nur speichern, wenn sich der Wert geändert hat. Standard = false.
"aufgeklappt" (optional) "1"/true/"yes": Diagramm wird beim laden aufgeklappt. Standard = false.
"legend" (optional) "text1;text2; … ;text5" Text(e), die in der Legende angezeigt werden, durch ; getrennt

Beispiele

  1. Mehrfach (Aktualisierungsintervall so wie im cron-job definiert, "collect" nicht gesetzt bzw leer)

grafik

"component":"diagramm",
"name":"Leistung L1-L3",
"icon":"time_graph.png",
"ise_id":"19397,19417,19437",
"history":"1000",
"size":"1",
"legend":"L1;L2;L3",
"aufgeklappt":"true"
2. Mehrfach - (Aktualisierungsintervall über festgelegte Uhrzeit(en))

grafik

{
"component":"diagramm",
"name":"Leistung L1-L3 - TimeBased",
"icon":"time_graph.png",
"ise_id":"19397,19417,19437",
"collect":"07:55,08:05,08:15,08:25",
"history":"500",
"size":"1",
"legend":"L1;L2;L3",
"aufgeklappt":"true"
}
  1. Mehrfach - (Aktualisierung über ein definiertes Zeitintervall [min])

grafik

	{
	"component":"diagramm",
	"name":"Schimmelneigung Chart",
	"icon":"time_graph.png",
	"ise_id":"25165,29779,29781",
	"history":"168",
	"collect":"60",
	"legend":"WZ;SZ;B",
	"size":"0",
	"aufgeklappt":"true"
	}

Hinweise

  • Werte werden in einer csv-Datei in /VerzeichnisDesWebservers/homehub/cache abgelegt im Format diagramm_ise-id(s)_collect_history.csv) für Beispiel 1: diagramm_19397-19417-19437_0_1000.csv für Beispiel 2: diagramm_19397-19417-19437_07-55-08-05-08-15-08-25_500.csv

  • Ein Klick auf den Namen in der Homehub UI öffnet einen Speichern-Dialog für die CSV-Datei

  • wenn die Meldung "Cache-Datei existiert nicht" oder das neue Diagramm ohne Daten angezeigt wird, dann mal mit der Frau reden, mit dem Hund um die Ecke gehen oder was anderes schönes machen - dann sollte was drin sein.

  • Umstellung alte -> neue Version bei schon existierenden Diagrammen:

    • die Dateinamen in Cache werden nach dem ersten Durchlauf der diagramm_collect.php automatisch auf das neue Format geändert
    • alte Datenpunke bleiben erhalten
    • ggfls. noch den Parameter "size" setzen - falls etwas kleinere Anzeige gewünscht

Option - Mehrfach (altes Format, obsolet seit 05.02.2025 - mehrfach ise-ids werden nun unterstützt):

Skript um mehrere ise_ids in einer Systemvariable (hier: sv_temperatur_og)zu speichern. Die ise_id dieser Systemvariablen kann dann für die Diagramme verwendet werden.

!Eltern - Leo - Tom - Bad
dom.GetObject("sv_temperatur_og").State(dom.GetObject(32651).Value()#";"#dom.GetObject(34912).Value()#";"#dom.GetObject(32763).Value()#";"#dom.GetObject(32394).Value());

custom.json

{
	"component":"diagramm",
	"name":"Temperatur OG",
	"icon":"time_graph.svg",
	"ise_id":"54519",
	"history":"100",
	"collect":"10",
	"aufgeklappt":"1",
	"legend":"Eltern;Leo;Tom;Bad"
},

2025-01-19 08_25_31-Window-1


ExtLink

Komponente, um externe URLs auf einer neuen Seite aufzurufen

Beispiel 1 Um in der Navigationsleiste ggf. die ein oder andere Schaltfläche sparen zu können, kann man ExtLink als Element einbinden und darüber z.B. eine Kategorie über die index.php anzuzeigen (hier die Liste der Systemvariablen)

Einbinden in der custom.json

 {
 "component": "ExtLink",  
 "name": "Systemvariablen",
 "icon": "control_clear.png",
 "url": "/index.php/Systemvariablen",
 "color": "#CC0000"
 }

oder

 {
    "component": "ExtLink",  
    "name": "Systemvariablen",
    "icon": "control_clear.png",
    "url": "/?seite=Systemvariablen",
    "color": "#CC0000"
 }

oder falls der Standard-Port des Webservers nicht 80 ist

 {
    "component": "ExtLink",  
    "name": "Systemvariablen",
    "icon": "control_clear.png",
    "url": "/homehub/?seite=Systemvariablen",
    "color": "#CC0000"
 }

grafik

Parameter Inhalt Hinweise
"url" "url" URL zur externen Seite oder einer Kategorie in der index.php

Beispiel 2 - Einbinden einer externen Seite

Einbinden in der custom.json

 {
 "component": "ExtLink",  
 "name": "HM-Forum HH4",
 "icon": "control_clear.png",
 "url": "https://homematic-forum.de/forum/viewtopic.php?f=41&t=79208"
 }

Hinweis: der Link wird im gleichen Fenster geöffnet


Fritzbox und Fritzbox2

Listenansicht der ein-/ausgehenden Anrufe aus einer Fritzbox. Es existieren 2 Versionen.

grafik

Vorbereitung:

  • Fritzbox Benutzer anlegen
  • PHP iconv muss installiert sein.

Option 1: "Fritzbox" : ursprüngliche Version von slice Einrichtung siehe https://homematic-forum.de/forum/viewtopic.php?f=41&t=76034&start=10#p741718

Option 2: "Fritzbox2" : erweiterte Version https://homematic-forum.de/forum/viewtopic.php?p=796580#p795518

Einbinden in der custom.json

 {
 "component":"Fritzbox2",
 "name":"Fritzbox-Anruferliste",
 "icon":"it_telephone.png",
 "fritz_url":"192.x.x.x",
 "fritz_pwd":"daskennwortdesusers",
 "fritz_user":"deruser",
 "anzahl":"20",
 "ausgehend":"#2E2EFE",
 "verpasst":"#FF0040",
 "eingehend":"#01DF01",
 "blockiert":"#BDBDBD",
 "ab":"#fc4103"
 }
Parameter Inhalt Hinweise
"fritz_url" "url_zur_Fritz"  
"fritz_pw" "pw_des_users" Passwort des Fritz-Benutzers
"fritz_user" "name_des_users" Name des Fritzbox-Users
"anzahl" "Zahl" Anzahl der anzuzeigenden, letzten Einträge aus der Fritte
"ausgehend", "verpasst", "eingehend", "blockiert", "ab" "HEX-code" HEX-Code der jeweiligen Farbe in der Liste
‍"aufgeklappt":"1" "0|1" Liste aufgeklappt anzeigen nein | ja

Iframe

Einbinden einer URL, welche dann in einem Iframe innerhalb von Homehub angezeigt wird. Gut geeignet, um z.B. Charts aus Grafana, ioBroker echarts, oder andere externe Seiten einzubinden. Bedingt geeignet, um z.B. Radio-Seiten einzubinden.

grafik

Hinweise:

Einbinden in der custom.json

 {
 "component": "Iframe",
 "name": "Gartensensor Chart",
 "icon": "time_graph.png",
 "aufgeklappt": "0",
 "url": "http://192.168.178.66:8082/adapter/echarts/chart/index.html?preset=echarts.0.Garten%20Sensor",
 "height":"450px"
 }
Parameter Inhalt Hinweise
"url" "url" URL zur externen Seite
‍‍"aufgeklappt" "0 | 1" Liste aufgeklappt anzeigen nein | ja, Standard =1
"height" "0-630px" Höhe des Frames in Pixel, Breite unverändert

Hinweis: Falls dieser Iframe in einer Unterkategorie eingebunden ist (z.B. Hauptkategorie Erdgeschoss, Unterkategorie Wohnzimmer) dann funktioniert % nicht wie gewünscht. Dort dann Pixel (px) verwenden.


Meteoblue

Funktionales Wetter-Widget, eingebunden über ein Iframe.

Zulässigkeit der Nutzung unter Berücksichtigung der Freigaben von Meteoblue bitte selbst prüfen.

grafik

Den eigenen Ort kann man wie folgt herausfinden:

  • meteoblue.com aufrufen und eigenen Ort wählen.
  • In der Adressleiste des Browsers erscheint der Ort https://www.meteoblue.com/de/wetter/woc ... nd_2897216 Den hinteren Abschnitt (also z.B. h%c3%bcrth_deutschland_2897216) als location in der custom.json hinterlegen.

Einbinden in der custom.json

 {
 "component": "Meteoblue",
 "name": "Wettervorhersage",
 "icon": "weather_wind.png",
 "color": "#595959",
 "location": "h%c3%bcrth_deutschland_2897216"
 }
Parameter Inhalt Hinweise
"location" "string_aus_url" Siehe oben
"height" "0-100%" oder "0-630px" Höhe des Frames in % oder Pixel, Breite unverändert

Multiview

Anzeige von maximal 5 Werten/Inhalten für verschiedene CCU-Geräte oder Variablen in einer kombinierten Zeile

grafik

Wenn "ise_component" und "ise_datapoint" mit angegeben werden, werden die Formatierungen aus den Dateien im Verzeichnis /homehub/components übernommen.

Bei Geräten, die binäre Werte annehmen wie Tür-/Fensterkontakte oder Schalter werden jetzt die Icons angezeigt. Siehe Beispiel unten

Für CCU Variablen entspricht der zu übergebene Typ dem Variablentyp in der CCU wie folgt

  • CCU-Typ Zeichenkette '20': // Text
  • CCU-Typ Werteliste '16': // Value List <--- nur die Zahl, nicht der Text werden angezeigt!
  • CCU-Typ Zahl '4': // Number
  • CCU-Typ Logikwert '2': // Yes/No

in der xmlapi/sysvarlist.cgi findet man diesen Wert auch unter Typ.

grafik

Einbinden in der custom.json

 {
	"component":"MultiView",
	"name":"Test Multiview CUxD-Schalter |HmIP-Aktor | TFK | Var | CUxD Thermostat",
	"icon":"green_dot.png",
	"ise_id":"19830,23079,11282,19059,13677",
	"ise_unit":",,,,",
	"pre_ise_text":"CuxD Schalter 11 ,HmIP-Aktor,T&uumlr,Anwesenheit BT,CUxD Thermostat",
	"ise_component":"CUX2801,HmIP-PSM-2,HM-Sec-SCo,SysVar,CUX9002",
	"ise_datapoint":"STATE,STATE,STATE,2,TEMPERATURE",
	"color":"#EECBAD",
	"url":"/homehub/?seite=Wohnzimmer"
  }
Parameter Inhalt Hinweise
"ise_id" "ise-id" Der CCU Systemvariablen
"ise_unit" "Text" Optionale Angabe einer Einheit für die Werte
"ise_component" "name der componente" Optional, case sensitiv. Idealerweise der Dateiname der Komponente in /homehub/components (ohne das .php)
"ise_datapoint "name des CCU datenpunktes" Optional, case sensitiv. Kann z.B. aus der XML-API Liste statelist.cgi entnommen werden
"url" "url" Optional, Sprung auf eine andere Seite
"ise_datavaluelist" ? ?

Bemerkung: in der HmIP-HEATING.php ist der CCU-Datenpunkt SET_POINT_TEMPERATURE als SET_TEMPERATURE definiert. Somit muß hier auch SET_TEMPERATURE als ise_datapoint angegeben werden und nicht der originalname wie sonst. Für CUX9002 TEMPERATURE anstatt ACTUAL_TEMPERATURE eintragen.


sysvarpin

Änderungssperre für Variablen über 4-stellige PIN

grafik

Beispiel 1: CCU Variable Typ Zahl

Einbinden in der custom.json

 {
 "component":"sysvarpin",
 "icon":"secur_burglary.png",
 "display_name":"sysvarpin DC 0815",
 "code":"0815",
 "ise_id":"3000"
 }
Parameter Inhalt Hinweise
"display_name" "Text" Anzeigetext, beliebig
"code" "0000" 4-stellige PIN
"ise_id "ise-id" Der CCU Variablen, "http://[IP-der-CCU]/addons/xmlapi/sysvarlist.cgi"
"pinvalue" "value1,value2, …. ,value_n" Wertebezeichnungen aus der CCU-Variable, case sensitiv

Beispiel 2: CCU Variable Typ Logik- oder Werteliste

Einbinden in der custom.json

 {
 "component":"sysvarpin",
 "icon":"secur_burglary.png",
 "display_name":"sysvarpin Werteliste_truefalse 4711",
 "code":"4711",
 "ise_id":"2512",
 "pinvalue":"reduziert,normal,aus"
 }
  • Bei einer Werteliste von mit den Werten A B C D, kann man mit "pinvalue":"A,B,C" die drei Werte schützen. "pinvalue":"A" würde nur bei A eine Pin-Abfrage erzeugen.
  • Bei wahr/falsch (true/false) ist dies identisch:"pinvalue":"true,false" schütze jede Änderung. "pinvalue":"true" lediglich das aktivieren der Variable.

Hinweise:


Tagesschau

Anzeige von Tagesschau in 100 Sekunden im Iframe

grafik

Einbinden in der custom.json

 {
 "component":"Tagesschau",
 "name":"OK - Tagesschau in 100 Sekunden",
 "icon": "it_radio.png"
 }

Tankerkönig

Aktuelle Spritpreise. Je Tankstelle eine Zeile

grafik

Einbinden in der custom.json

 {
 "component": "Tankerkoenig",
 "name": "Aral",
 "icon": "scene_gas_station.png",
 "api_key": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",	
 "station_id": "51e3908d-b5ee-4cf6-89b1-2cbc4b6c2710",
 "fuel_types": ["diesel", "e10", "e5"]
 }
Parameter Inhalt Hinweise
"api_key" "api-Key" Eigener API-Key, https://creativecommons.tankerkoenig.de/
"station_id" "ID" ID der Tankstelle https://creativecommons.tankerkoenig.de/TankstellenFinder/index.html
"fuel_types" ["diesel", "e10", "e5"] Name der Sorten, ACHTUNG eckige Klammern [ ]

weatherunderground

Anzeige für Weatherunderground. Erfordert eigenen API-Key sowie eigene Wetterstation (pws).

Ungetestet

Einbinden in der custom.json

 {
 "component": "WeatherUnderground",
 "name": "Wetter",
 "icon": "weather_sunrise.png",
 "api_key": "123456789123456789123456789aaaaa",
 "station": "pws:IBRHL82"
 }

Sonnenstand

Anzeige der in der CCU berechneten Systemvariablen von Azimuth und Elevation der Sonne. Die Datei Sonnenstand.php ist nicht Bestandteil der standard Homehub-ZIP Datei und muss erst erstellt werden.

grafik

  1. Falls nicht schon vorhanden, erstellen von zwei CCU Systemvariablen

grafik

  1. Erstellen eines CCU-Programms mit zeitgesteuertem, wiederkehrendem Trigger (z.B. alle 5min)

grafik

Skript

 !  Azimut und Elevation aus Systemvariablen holen
 !  Name Azimut Systemvariable  : SV_Sonne_Azimut    / Typ: Zahl / Wert: -360 bis 360  / Horizontalwinkel
 !  Name Altitude Systemvariable: SV_Sonne_Elevation / Typ: Zahl / Wert: -180 bis 180  / Höhenwinkel 
 
 !  Auslesen der neuen Werte in die o.g. Systemvariablen
 dom.GetObject("SV_Sonne_Azimut").State(system.SunAzimuth().Round(1));
 dom.GetObject("SV_Sonne_Elevation").State(system.SunAltitude().Round(1));

Hinweis: ich habe hier auf eine Nachkommastelle gerundet .Round(1), das kann ja geändert werden.

  1. Erstellen einer Datei Sonnenstand.php im Verzeichnis /VerzeichnisDesWebservers/homehub/custom/components sowie die zwei data-id’s in zeile 7+8 durch die eigenen ise-id’s ersetzen

Inhalt

 <?php
 
 function Sonnenstand($component) {
     return '<div class="hh">'
         . '<div class="pull-left"><img src="icon/' . $component["icon"] . '" class="icon">' . $component["name"] . '</div>'
         . '<div class="pull-right">'
         . '<span class="info">Sonne Azimut:<span class="info" data-id="16598" data-component="SysVar" data-datapoint="4" data-unit="&deg"></span></span>'
         . '<span class="info">Sonne Elevation:<span class="info" data-id="16599" data-component="SysVar" data-datapoint="4" data-unit="&deg"></span></span>'
         . '</div>'
         . '<div class="clearfix"></div>'
     . '</div>';
 }

Einbinden in der custom.json

 {
 "component": "Sonnenstand",
 "name": "OK - Sonne",
 "icon": "weather_sun.png"
 }

Eine hilfreiche Seite mit Solar-, Geo- und Photovoltiakdaten https://www.sonnenverlauf.de/#/50.9383,6.9586,9/2024.01.29/08:45/1/3


Sonnenstand2

Seit April '24 gibt es eine modifierte Version Sonnenstand2, welche Bestandteil des Standard ZIP Packages ist. Vorbereitungen auf der CCU Seite wie unter "Sonnenstand beschrieben ist identisch.

Der Unterschied dazu ist, dass die ise_ids jetzt als Parameter in der custom.json übergeben werden. Das editieren der php-Datei entfällt somit

Parameter Inhalt Hinweise
"ise_id_azimut" "ise_id"  
"ise_id_elevation" "ise_id_elevation"  
	{
   	"component": "Sonnenstand2",
        "name": "Sonnenstand neu",
    	"icon": "weather_sun.png",
	"color": "#CC0000",
	"ise_id_azimut":"23760",
	"ise_id_elevation":"23761"
    	}

Mondphase

Anzeige der in der CCU berechneten Systemvariablen für Mondphase, -stand, -tag, sowie nächstem Vollmond. Die Datei Mondphase.php ist nicht Bestandteil der standard Homehub-ZIP Datei und muss erst erstellt werden.

grafik

Falls nicht schon vorhanden, erstellen von vier CCU Systemvariablen

grafik grafik

Erstellen eines CCU-Programms mit zeitgesteuertem Trigger 1x pro Tag (z.B. um 0:15)

grafik

Skript aus HM-Forum

 !Testversion V2.1
 !Script zur Mondphasenberechnung von Dako V1.1
 !Erweiterung Mondphase zu- oder abnehmend von hanan V2.0
 !Erweiterung Mondtag für Sera LED Moonlight Kit V2.1
 !---------------------------------------------------
 !Hinweise:
 !Die Berechnung erfolgt mit dem durchschnittlichen synodischen Mondmonat, weshalb keine
 !Stundengenaue Berechnung erfolgen kann
 !---------------------------------------------------
 !Systemvariablen:
 !naechster_Vollmond (Zeichenkette): naechster Vollmond
 !Mondstand (Zeichenkette): Mondphase in % (Neumond = 0%)
 !Mondphase (Zeichenkette): Mondphase in Textform
 !Mondtag (Zeichenkette): Mond-Kalender in Textform
 !---------------------------------------------------
 !Variablen definieren
 real a_1 = 1.0*(system.Date("%F %X").ToTime().ToInteger()); !aktueller UNIX-Timestamp (1374688453)
 real a_2 = 1106652740.0;!referenz vollmond
 real a_3 = 2551443.0;!synodischer mondmonat
 real a_4 = 1105362167.0;!referenz neumond
 
 !Aktuelle Mondphase
 real x2 = ((a_1-a_4)/a_3);
 integer x3 = x2.ToInteger();
 real x4 = (x2-x3)*200;
 integer x5 = x4.ToInteger();
 
 string z3 = "Fehler!";
 string z4 = "Fehler!";
 
 if(x5 <=200){real x6 = x5-200;}
 if(x5 <=100){real x6 = x5;}
 
 if(x5 <= 205){z3 = "Neumond";}
 if(x5 <= 195){z3 = "abnehmender Halbmond";}
 if(x5 <= 150){z3 = "abnehmender Vollmond";}
 if(x5 <= 105){z3 = "Vollmond";}
 if(x5 <= 95){z3 = "zunehmender Halbmond";}
 if(x5 <= 50){z3 = "zunehmender Neumond";}
 if(x5 <= 5){z3 = "Neumond";}
 
 if(x5 <= 198) {z4 = "Tag 14";}
 if(x5 <= 191) {z4 = "Tag 13";}
 if(x5 <= 184) {z4 = "Tag 12";}
 if(x5 <= 177) {z4 = "Tag 11";}
 if(x5 <= 170) {z4 = "Tag 10";}
 if(x5 <= 163) {z4 = "Tag 9";}
 if(x5 <= 156) {z4 = "Tag 8";}
 if(x5 <= 149) {z4 = "Tag 7";}
 if(x5 <= 142) {z4 = "Tag 6";}
 if(x5 <= 135) {z4 = "Tag 5";}
 if(x5 <= 128) {z4 = "Tag 4";}
 if(x5 <= 121) {z4 = "Tag 3";}
 if(x5 <= 114) {z4 = "Tag 2";}
 if(x5 <= 107) {z4 = "Tag 1";}
 if(x5 <= 100) {z4 = "Tag 29";}
 if(x5 <= 93) {z4 = "Tag 28";}
 if(x5 <= 86) {z4 = "Tag 27";}
 if(x5 <= 79) {z4 = "Tag 26";}
 if(x5 <= 72) {z4 = "Tag 25";}
 if(x5 <= 65) {z4 = "Tag 24";}
 if(x5 <= 58) {z4 = "Tag 23";}
 if(x5 <= 51) {z4 = "Tag 22";}
 if(x5 <= 46) {z4 = "Tag 21";}
 if(x5 <= 39) {z4 = "Tag 20";}
 if(x5 <= 32) {z4 = "Tag 18";}
 if(x5 <= 25) {z4 = "Tag 18";}
 if(x5 <= 18) {z4 = "Tag 17";}
 if(x5 <= 11) {z4 = "Tag 16";}
 if(x5 <= 4) {z4 = "Tag 15";}   
 
 dom.GetObject("Mondstand").State(x6.ToString(0)#" %");!Ausgabe als Prozentzahl
 dom.GetObject("Mondphase").State(z3);!Ausgabe als Text
 dom.GetObject("Mondtag").State(z4);!Ausgabe als Text
 
 !Naechster Vollmond am:
 while(a_2 <= a_1){a_2 = a_2 + a_3;}
 real x1 =  a_2.ToTime();
 string y1 = x1.Format("%d.%m.%Y");
 dom.GetObject("naechster_Vollmond").State(y1);

Erstellen einer Datei Mondphase.php im Verzeichnis /VerzeichnisDesWebservers/homehub/custom/components sowie die vier data-id’s in zeile 7-10 durch die eigenen ise-id’s ersetzen.

Inhalt

 <?php
 
 function Mondphase($component) {
     return '<div class="hh">'
         . '<div class="pull-left"><img src="icon/' . $component["icon"] . '" class="icon">' . $component["name"] . '</div>'
         . '<div class="pull-right">'
         . '<span class="info"><span class="info" data-id="23742" data-component="SysVar" data-datapoint="" data-unit=""></span>'
         . '<span class="info">Mondstand:<span class="info" data-id="23741" data-component="SysVar" data-datapoint="" data-unit=""></span>'
         . '<span class="info">Mondtag:<span class="info" data-id="23743" data-component="SysVar" data-datapoint=""></span>'
         . '<span class="info">Vollmond am:<span class="info" data-id="23740" data-component="SysVar" data-datapoint="" data-unit=""></span>'
         . '</div>'
         . '<div class="clearfix"></div>'
     . '</div>';
 }

Einbinden in der custom.json

 {
 "component": "Mondphase",
 "name": "OK - Mond",
 "icon": "weather_moon_phases_7_half.png"
 }

Mondphase2

Seit April '24 gibt es eine modifierte Version Mondphase2, welche Bestandteil des Standard ZIP Packages ist. Vorbereitungen auf der CCU Seite wie unter "Mondphased beschrieben ist identisch.

Der Unterschied dazu ist, dass die ise_ids jetzt als Parameter in der custom.json übergeben werden. Das editieren der php-Datei entfällt somit

Parameter Inhalt Hinweise
"ise_id_mondphase" "ise_id"  
"ise_id_mondstand" "ise_id"  
"ise_id_mondtag" "ise_id"  
"ise_id_naechstervollmond" "ise_id"  
	{
   	        "component": "Mondphase2",
        "name": "Mond letzte Version",
    	"icon": "weather_moon_phases_7_half.png",
	"ise_id_mondphase":"23742",
	"ise_id_mondstand":"23741",
	"ise_id_mondtag":"23743",
	"ise_id_naechstervollmond":"23740",
	"color": "#CC0000"
    	}

Sonnenaufuntergang

Homehub bring von Hause aus schon Sonnenauf- und untergangszeiten mit und zeigt diese ober rechts neben der Uhr. Für diejenigen, welche aus - wie auch immer gearteten Gründen - diese aber als Zeile in der View haben möchten, können wie u.a. vorgehen.

Die Datei Sonnenaufuntergang.php ist nicht Bestandteil der standard Homehub-ZIP Datei und muss erst erstellt werden.

grafik

Falls nicht schon vorhanden, erstellen von zwei CCU Systemvariablen

grafik

Erstellen eines CCU-Programms mit zeitgesteuertem Trigger 1x pro Tag (z.B. um 0:15) (ich habe das zusammen mit der Mondphase in einem Programm)

Skript

 object sysvarSA = (dom.GetObject(ID_SYSTEM_VARIABLES)).Get("Sonnenaufgang");
 object sysvarSU = (dom.GetObject(ID_SYSTEM_VARIABLES)).Get("Sonnenuntergang");
 if ( (sysvarSA) && (sysvarSU) && (sysvarSA.ValueSubType() == istChar8859)  && (sysvarSU.ValueSubType() == istChar8859) ){
 sysvarSA.State(system.SunriseTime("%H:%M"));
 sysvarSU.State(system.SunsetTime("%H:%M"));}

Erstellen einer Datei Sonnenaufuntergang.php im Verzeichnis /VerzeichnisDesWebservers/homehub/custom/components sowie die zwei data-id’s in zeile 7+8 sind durch die eigenen ise-id’s ersetzen

 <?php
 
 function Sonnenaufuntergang($component) {
 return '<div class="hh">'
         . '<div class="pull-left"><img src="icon/' . $component["icon"] . '" class="icon">' . $component["name"] . '</div>'
         . '<div class="pull-right">'
         . '<span class="info">Sonnenaufgang:<span class="info" data-id="23841" data-component="SysVar" data-datapoint="" data-unit=""></span></span>'
         . '<span class="info">Sonnenuntergang:<span class="info" data-id="23842" data-component="SysVar" data-datapoint="" data-unit=""></span></ span>'
         . '</div>'
         . '<div class="clearfix"></div>'
     . '</div>';
 }

Einbinden in der custom.json

 {
 "component": "Sonnenaufuntergang",
 "name": "OK - Sonne A/U",
 "icon": "weather_sunrise.png"
 }

Sonnenaufuntergang2

Seit April '24 gibt es eine modifierte Version Sonnenaufuntergang2, welche Bestandteil des Standard ZIP Packages ist. Vorbereitungen auf der CCU Seite wie unter "Sonnenaufuntergang beschrieben ist identisch.

Der Unterschied dazu ist, dass die ise_ids jetzt als Parameter in der custom.json übergeben werden. Das editieren der php-Datei entfällt somit

Parameter Inhalt Hinweise
"ise_id_sonnenaufgang" "ise_id"  
"ise_id_sonnenuntergang" "ise_id"  
	{
        "component": "Sonnenaufuntergang2",
    	"name": "Sonne A/U neu",
        "icon": "weather_sunrise.png",
	"color": "#CC0000",
	"ise_id_sonnenaufgang":"23841",
	"ise_id_sonnenuntergang":"23842"
    	}

Webcam

Ungetestet, WIP

Einbinden in der custom.json

Parameter Inhalt Hinweise
name angezeigter Name  
url URL zum Bild  
Icon Icon  
autorefresh 0, 1 1 = aktualisiert selbstständig, 0 = statisch
aufgeklappt 0, 1 0 zugeklappt, 1 aufgeklappt - standard =1