SensorAndSwitch Haus-Automation auf Webserver-Basis

Hallo,
bzgl. meines letzten Posts (#204):
...Hast Du einmal die komplette Version als ZIP für mich?
Die gibt es im SmartHome Web links unter Menüpunkt Download. :)

Nachtrag: Beim server2go musst du auch noch einiges abändern, aber bei dem ist das curl mit drin. Habs bei mir getestet und läuft.
 
Zuletzt bearbeitet:
Hallo,
Den Punkt im Menü habe ich übersehen :oops: ... Mit Server2Go werde ich mal neu testen. Kann aber ein paar Tage dauern.
 
@SF1975: Kein Problem. Ist sozusagen ein Sicherheitslink, wenn gar nix geht. :)
 
@HarryHase: Schau dir nochmal Post #217 an, da habe ich noch weitergebastelt. Die Umsetzung rückt jedenfalls näher. :)

Nachtrag:
Ich habe mit der Version 5.00 begonnen...
Das alte smarthomeauto.conf-Format wurde um 5 Felder erweitert, die voran gestellt werden.

Struktur:
Code:
0 SCHID        144
1 K,+,-        K
2 delay        0
3 countdown    0
4 zu SCHID     145
5	0      1          0
6	1      X          W
7	2      1200       <
8	3      7          5
9	4      01012015   Dose1
10	5      Dose2      Dose2
11	6
12	7
13	8
0-4 neu
5-10 früher 0-5 alte Schaltstruktur
11-13 früher 6-8 interne Felder

Realisiert:
SCHID wird für einen Schaltvorgang automatisch beim Anlegen erzeugt.
Maximale Anzahl SCHID Schaltvorgänge ist über 32000 Stück. (Max. Anzahl verketteter Bedingungen liegt dann ebenfalls bei 32000. Genug Variationsmöglichkeiten, hoffe ich mal.)

next ToDo:
Verkettung realisieren in smarthomeauto.php
Delay-Feld für Verzögerung realisieren.

Info; Komme erst irgendwann nächste Woche wieder zum Weiterbasteln an SmartHome Automation. Hoffe mal, bis dahin zeigen sich keine Fehler in SmartHome V4.04, die schnell repariert werden müssen. :)
 
Zuletzt bearbeitet:
@ale:

Würde es euch Benutzern der SmartHome Automation sehr viel Arbeit machen, die smarthomeauto.conf entweder von Hand auf den später neuen 5.00 Standard abzuändern oder die bestehenden Schaltbedingungen neu erfassen zu müssen?

Ich frage deshalb, weil eine automatische Konvertierung beim Vorfinden von Konfigurationsdaten alter Versionen bis 4.xx nicht ganz unproblematisch wäre und ich so ggf. noch Felder neu anlegen könnte, ohne mich um spätere Konvertierungen kümmern zu müssen. Eigentlich mache ich solche "Inkompatibilitäten" nur sehr ungern, aber hier ist einfach der "Evolutionssprung" von Version 4 auf 5 doch etwas größer.
 
@HarryHase: Schau dir nochmal Post #217 an, da habe ich noch weitergebastelt. Die Umsetzung rückt jedenfalls näher. :)

soweit ich das verstehe sieht das gut aus ..

Ich komme auch erst wieder nächste Woche dazu weitere Anwendungen zu definieren .. gut Ding braucht Weile ..
 
@alle:

Würde es euch Benutzern der SmartHome Automation sehr viel Arbeit machen, die smarthomeauto.conf entweder von Hand auf den später neuen 5.00 Standard abzuändern oder die bestehenden Schaltbedingungen neu erfassen zu müssen?

NEIN, dann ist es halt so ...
 
@HarryHase:

Nochmal so als letzte Meldung für heute: Es sieht bis jetzt sehr gut aus und wirklich realisierbar. Wenn das mal läuft, dann kann man richtig viel damit anstellen, da ich als Pseude-Schaltbedingung unbedingt noch "Starte das PHP-Script [name].php" einbauen will. Dann können noch andere Dinge als nur Steckdosen damit gesteuert werden. ;)
 
Noch eine Idee:
In den Einstellungen eine Checkbox wo man eine Log ein bzw. ausschalten kann.
In diese Log (txt Datei) werden alle Schaltereignisse gespeichert.
Sinnvoll wenn man nicht zu Hause ist, und im nachhinein wissen will ob ein Gerät geschaltet wurde.
Für die Version 5.00 habe ich die Log-Datei gerade eingebaut. In den Einstellungen von smarthome.php wählbar ist dann "keine Log-Datei" und "Log-Datei führen".
Sieht dann in der smarthomeauto.log so aus:
Code:
23:35 Do 13.11.2014, SCHID:16, FX-Dose, an - Schaltdatensatz: (16,0,0,0,0,1,S,1,1,CZ-LED,FX-Dose)
23:36 Do 13.11.2014, SCHID:15, FX-Dose, aus - Schaltdatensatz: (15,0,0,0,0,0,S,1,0,CZ-LED,FX-Dose)
So, jetzt ist aber wirklich Schluss, nächste Woche gehts weiter. :)
 
Zuletzt bearbeitet:
Moin

Kleine Rückmeldung.
Die smarthome.php läuft auch auf einen busybox httpd mit entsprechender php-cgi.
httpd.conf
Code:
# externals
*.php:/var/media/NEW_LINK/mips/php.sh   # run xxx.php through an interpreter
php.sh
Code:
#! /bin/sh
ENVCMD='env -u USER -u HOME -u GCOV_PREFIX -u OEM -u SSH_TTY -u HWRevision_ATA -u PS1 -u Language_is_default -u HWRevision -u HWRevision_BitFileCount -u ANNEX -u CONFIG_VERSION_MAJOR -u Country_is_default -u LOGNAME -u TERM -u PATH -u SHELL -u enable_ata -u PATH_INFO -u SHELL -u ETC_CONFIG_PATH -u Language -u PWD -u Country -u SSH_CONNECTION -u GCOV_PREFIX_STRIP -u OEM_DEFAULT_INDEX -u HWSubRevision -u CONFIG_WLAN -u CONFIG_FON -u CONFIG_USB -u CONFIG_TIMERCONTR -u CONFIG_BETA -u CONFIG_EWETEL -u CONFIG_USB -u CONFIG_LFS -u CONFIG_PERL -u CONFIG_FON -u CONFIG_LTE -u CONFIG_I -u CONFIG_VPN -u CONFIG_UTF -u CONFIG_AB -u CONFIG_WLAN -u CONFIG_CAPI -u CONFIG_ONLINEHELP -u CONFIG_NFS -u CONFIG_UDEV -u CONFIG_WLAN -u CONFIG_ATA -u CONFIG_JFFS -u CONFIG_T -u CONFIG_STOREUSRCF -u CONFIG_NFS -u CONFIG_USB -u CONFIG_KIDS -u CONFIG_LED -u CONFIG_CODECS -u CONFIG_CAPI -u CONFIG_UBIK -u CONFIG_SQLITE -u CONFIG_NEUERUL -u CONFIG_WLAN -u CONFIG_CHRONY -u CONFIG_FONGUI -u CONFIG_CONFIGD -u CONFIG_DSL -u CONFIG_WLAN -u CONFIG_TAM -u CONFIG_FONQUALITY -u CONFIG_SQLITE -u CONFIG_FTP -u CONFIG_USB -u CONFIG_MULTI -u CONFIG_VDSL -u CONFIG_NCURSES -u CONFIG_PRODUKT -u CONFIG_ENVIRONMEN -u CONFIG_DECT -u CONFIG_DECT -u CONFIG_USB -u CONFIG_AVMIPC -u CONFIG_PROV -u CONFIG_ASSIST -u CONFIG_SWAP -u CONFIG_HOME -u CONFIG_LED -u CONFIG_NTFS -u CONFIG_MANUAL -u CONFIG_SUBVERSION -u CONFIG_VERSION -u CONFIG_DIAGNOSE -u CONFIG_USB -u CONFIG_USB -u CONFIG_CAPI -u CONFIG_SAMBA -u CONFIG_WEBSRV -u CONFIG_USB -u CONFIG_RELEASE -u CONFIG_BLUETOOTH -u CONFIG_DECT -u CONFIG_ROMSIZE -u CONFIG_FIRMWARE -u CONFIG_SERVICEPOR -u CONFIG_PRODUKT -u CONFIG_BUTTON -u CONFIG_ACCESSORY -u CONFIG_VERSION -u CONFIG_MAILD -u CONFIG_XILINX -u CONFIG_TR -u CONFIG_MEDIASRV -u CONFIG_CXX -u CONFIG_WLAN -u CONFIG_BOXLOWRESS -u CONFIG_DOCSIS -u CONFIG_ONLINEHELP -u CONFIG_NQOS -u CONFIG_VPN -u CONFIG_USB -u CONFIG_GDB -u CONFIG_UPNP -u CONFIG_ETH -u CONFIG_USB -u CONFIG_WEBDAV -u CONFIG_CAPI -u CONFIG_MAILER -u CONFIG_TR -u CONFIG_DSL -u CONFIG_WLAN -u CONFIG_CDROM -u CONFIG_WLAN -u CONFIG_WLAN -u CONFIG_ONLINEPB -u CONFIG_USB -u CONFIG_FAXSEND -u CONFIG_WLAN -u CONFIG_PLC -u CONFIG_FHEM -u CONFIG_USB -u CONFIG_WLAN -u CONFIG_DECT -u CONFIG_WLAN -u CONFIG_CAPI -u CONFIG_TELEKOM -u CONFIG_RAMDISK -u CONFIG_NAND -u CONFIG_MTD -u CONFIG_INSTALL -u CONFIG_DECT -u CONFIG_FAXSUPPORT -u CONFIG_WLAN -u CONFIG_HOME -u CONFIG_MULTI -u CONFIG_QOS -u CONFIG_WLAN -u CONFIG_DECT -u CONFIG_SRTP -u CONFIG_IGD -u CONFIG_CONFIGSPAC -u CONFIG_UNIQUE -u CONFIG_WLAN -u CONFIG_DECT -u CONFIG_OEM -u CONFIG_EXT -u CONFIG_FAX -u CONFIG_MEDIASRV -u CONFIG_MYFRITZ -u CONFIG_ATA -u CONFIG_HOMEI -u CONFIG_ERR -u CONFIG_EXT -u CONFIG_BOX -u CONFIG_AUDIO -u CONFIG_BASIS -u CONFIG_SQLITE -u CONFIG_VLYNQ -u CONFIG_DSL -u CONFIG_IPV -u CONFIG_WLAN -u CONFIG_VOIP -u CONFIG_ECO -u CONFIG_INETD -u CONFIG_USB -u CONFIG_LOGD -u CONFIG_WLAN -u CONFIG_USB -u CONFIG_CDROM -u CONFIG_NOTELNETD -u CONFIG_VOL -u CONFIG_WLAN -u CONFIG_REMOTE -u CONFIG_GDB -u CONFIG_HOSTNAME -u CONFIG_UTF -u CONFIG_MEDIACLI -u CONFIG_USB -u CONFIG_LIB -u CONFIG_ECO -u CONFIG_DOCSIS -u CONFIG_USB -u CONFIG_DOCSIS -u CONFIG_AURA -u CONFIG_MAILER -u CONFIG_DECT -u CONFIG_WLAN -u CONFIG_UPDATEFEAT -u CONFIG_DECT -u CONFIG_WLAN -u CONFIG_WEBCM -u CONFIG_SESSIONID -u CONFIG_KIDS -u CONFIG_MTD -u CONFIG_CAPI -u CONFIG_NEWSLETTER -u CONFIG_LABOR -u CONFIG_WLAN -u CONFIG_DECT -u CONFIG_ANNEX -u CONFIG_WEBUSB -u CONFIG_SOCAT -u CONFIG_DSL -u CONFIG_MINI -u CONFIG_PLC -u CONFIG_LINEARTV -u CONFIG_ETH -u CONFIG_VLYNQ -u CONFIG_TAM -u CONFIG_WLAN -u CONFIG_PPA -u CONFIG_WLAN -u CONFIG_GDB -u CONFIG_VLYNQ -u CONFIG_MTD -u CONFIG_CAPI -u CONFIG_FONBOOK -u CONFIG_NAS -u CONFIG_WLAN -u CONFIG_WLAN -u CONFIG_NFS -u CONFIG_MORPHSTICK -u CONFIG_BLUETOOTH -u CONFIG_ATA -u CONFIG_LUA -u CONFIG_TAM -u CONFIG_SPEECH -u CONFIG_LLTD -u CONFIG_SDK -u CONFIG_RAMSIZE -u CONFIG_FON -u CONFIG_LIBZ -u CONFIG_DECT -u CONFIG_DSL -u CONFIG_IPTV -u CONFIG_WLAN_RADIOSENSOR -u CONFIG_FON_HD -u CONFIG_USB_STORAGE_USERS -u CONFIG_TIMERCONTROL -u CONFIG_BETA_RELEASE -u CONFIG_EWETEL_SMARTMETER -u CONFIG_USB_HOST_AVM -u CONFIG_FON_IPPHONE -u CONFIG_I2C -u CONFIG_VPN_CERTSRV -u CONFIG_UTF8_FULL -u CONFIG_AB_COUNT -u CONFIG_WLAN_TXPOWER -u CONFIG_CAPI_NT -u CONFIG_ONLINEHELP_URL -u CONFIG_NFS_CLI -u CONFIG_WLAN_OPENWIFI -u CONFIG_ATA_NOPASSTHROUGH -u CONFIG_JFFS2 -u CONFIG_T38 -u CONFIG_STOREUSRCFG -u CONFIG_USB_TETHERING -u CONFIG_KIDS_CONTENT -u CONFIG_LED_EVENTS -u CONFIG_CODECS_IN_PCMROUTER -u CONFIG_CAPI_XILINX -u CONFIG_UBIK2 -u CONFIG_WLAN_ATH_NM_MAGPIE -u CONFIG_FONGUI2 -u CONFIG_DSL_UR8 -u CONFIG_WLAN_WDS_NO_SLAVE -u CONFIG_TAM_ONRAM -u CONFIG_SQLITE_VIDEO -u CONFIG_MULTI_COUNTRY -u CONFIG_PRODUKT_NAME -u CONFIG_ENVIRONMENT_PATH -u CONFIG_DECT_AUDIOD -u CONFIG_DECT_NO_EMISSION -u CONFIG_USB_HOST_TI -u CONFIG_AVMIPC_REMOTE_IP -u CONFIG_PROV_DEFAULT -u CONFIG_HOME_AUTO -u CONFIG_LED_NO_DSL_LED -u CONFIG_MANUAL_URL -u CONFIG_DIAGNOSE_LEVEL -u CONFIG_USB_STORAGE -u CONFIG_USB_INTERNAL_HUB -u CONFIG_CAPI_POTS -u CONFIG_USB_XHCI -u CONFIG_BLUETOOTH_CTP -u CONFIG_DECT_MONI_EX -u CONFIG_FIRMWARE_URL -u CONFIG_SERVICEPORTAL_URL -u CONFIG_ACCESSORY_URL -u CONFIG_VERSION_MAJOR09 -u CONFIG_TR064 -u CONFIG_MEDIASRV_MOUNT -u CONFIG_WLAN_ATH_NM_COMBO -u CONFIG_BOXLOWRESSOURCES -u CONFIG_DOCSIS_PCD_NO_REBOOT -u Country_is_defaultes -u CONFIG_USB_PRINT_SERV -u CONFIG_ETH_COUNT -u CONFIG_USB_LTE -u CONFIG_TR069 -u CONFIG_DSL_2DP -u CONFIG_WLAN_GUEST -u CONFIG_CDROM_FALLBACK -u CONFIG_WLAN_ATH_NM_OFFLOAD_TGT -u CONFIG_WLAN_ATH_NM_OFFLOAD_HST -u CONFIG_USB_GSM -u CONFIG_WLAN_WEATHER_CAC -u CONFIG_PLC_DETECTION -u CONFIG_USB_GSM_VOICE -u CONFIG_WLAN_WDS -u CONFIG_WLAN_1130TNET -u CONFIG_CAPI_UBIK -u CONFIG_TELEKOM_KOFFER -u CONFIG_MTD_MAILSEND -u CONFIG_INSTALL_TYPE -u CONFIG_DECT_PICTURED -u CONFIG_WLAN_MADWIFI -u CONFIG_HOME_AUTO_NET -u CONFIG_MULTI_LANGUAGE -u CONFIG_QOS_METER -u CONFIG_WLAN_ATH_NM_PCI -u CONFIG_DECT_HOME -u CONFIG_CONFIGSPACE_ONNAND -u CONFIG_UNIQUE_PASSWD -u CONFIG_WLAN_WMM -u CONFIG_DECT_ONOFF -u CONFIG_OEM_DEFAULT -u CONFIG_EXT2 -u CONFIG_FAX2MAIL -u CONFIG_HOMEI2C -u CONFIG_ERR_FEEDBACK -u CONFIG_EXT3 -u CONFIG_BOX_FEEDBACK -u CONFIG_SQLITE_BILDER -u CONFIG_DSL_MULTI_ANNEX -u CONFIG_IPV6 -u CONFIG_WLAN_1350TNET -u CONFIG_VOIP_ENUM -u CONFIG_USB_HOST_INTERNAL -u CONFIG_WLAN_IPTV -u CONFIG_USB_WLAN_AUTH -u CONFIG_VOL_COUNTER -u CONFIG_WLAN_EACS -u CONFIG_REMOTE_HTTPS -u CONFIG_GDB_FULL -u CONFIG_UTF8 -u CONFIG_USB_STORAGE_SPINDOWN -u CONFIG_LIB_MATH -u CONFIG_ECO_SYSSTAT -u CONFIG_DOCSIS_CLI -u CONFIG_USB_HOST -u CONFIG_MAILER2 -u CONFIG_DECT_14488 -u CONFIG_WLAN_TCOM_PRIO -u CONFIG_UPDATEFEATURE_URL -u CONFIG_DECT2 -u CONFIG_WLAN_WDS2 -u CONFIG_WEBCM_INTERPRETER -u CONFIG_MTD_RSS -u CONFIG_CAPI_TE -u CONFIG_NEWSLETTER_URL -u CONFIG_LABOR_DSL -u CONFIG_WLAN_WPS -u CONFIG_DECT_MONI -u CONFIG_DSL_VENDORID -u CONFIG_ETH_GBIT -u CONFIG_VLYNQ0 -u CONFIG_TAM_MODE -u CONFIG_WLAN_GREEN -u CONFIG_WLAN_SAVEMEM -u CONFIG_GDB_SERVER -u CONFIG_VLYNQ1 -u CONFIG_MTD_MAIL -u CONFIG_CAPI_MIPS -u CONFIG_FONBOOK2 -u CONFIG_WLAN_ATH_NM_USB -u CONFIG_WLAN_ATH_NM_OFFLOAD -u CONFIG_NFS_SRV -u CONFIG_ATA_FULL -u CONFIG_SPEECH_FEEDBACK -u CONFIG_DECT_CATIQ20 -u CONFIG_IPTV_4THOME'
CMD='/var/media/NEW_LINK/cgi-bin/php-cgi -c /var/media/NEW_LINK/mips/php.ini ${1}'
$ENVCMD $CMD
#EOF
php.ini
Code:
cgi.force_redirect = 0
cgi.redirect_status_env = no
//disable_functions = curl_exec, curl_multi_exec, define_syslog_variables, disk_free_space, diskfreespace, dl, error_log, escapeshellarg, escapeshellcmd, exec, ftp_connect, ftp_exec, ftp_get, ftp_login, ftp_nb_fput, ftp_put, ftp_raw, ftp_rawlist, ini_alter, ini_get_all, ini_restore, link, mysql_pconnect, openlog, passthru, pfsockopen, php_uname, popen, posix_getpwuid, posix_kill, posix_mkfifo, posix_setpgid, posix_setsid, posix_setuid, posix_uname, proc_close, proc_get_status, proc_nice, proc_open, proc_terminate, set_time_limit, shell_exec, symlink, syslog, system, tmpfile, virtual
disable_functions = phpinfo
Die php-cgi fand ich auf: fritzmod.net

Einen Schönheitsfehler hab ich noch entdeckt, merkt nur wer mit reverse_proxy Einstellungen hantiert.
Um smarthome.php richtig zu referenzieren, benötige ich zwei reverse_proxy Eintragungen.
Wenn smarthome.php den HTTP_REFERER beachten würde, wäre das nicht nötig.
Beispiel...
Code:
# reverse proxying
P:/home/:http://deepbase.fritz.box:81/
...dann erreiche ich smarthome.php so: /home/smarthome/smarthome.php
Jetzt rate mal was nach 5 Sekunden passiert.
Richtig, smarthome.php ruft /smarthome/smarthome.php auf.
Damit das jetzt weiterhin funktioniert, braucht es den zweiten reverse_proxy Eintrag...
Code:
# reverse proxying
P:/home/:http://deepbase.fritz.box:81/
P:/smarthome/:http://deepbase.fritz.box:81/smarthome/
 
Zuletzt bearbeitet:
Einen Schönheitsfehler hab ich noch entdeckt, merkt nur wer mit reverse_proxy Einstellungen hantiert.
Um smarthome.php richtig zu referenzieren, benötige ich zwei reverse_proxy Eintragungen.
Wenn smarthome.php den HTTP_REFERER beachten würde, wäre das nicht nötig.
Dass $SERVER["HTTP_REFERER"] nicht beachtet wird, ist beabsichtigt. Dazu ein Link zum PHP.net und ein kurzer Auszug dazu:
'HTTP_REFERER'
Sofern vorhanden, die Adresse der Seite, auf der der Benutzer einen Link auf die aktuell aufgerufene Seite angeklickt hat. Dieser Wert wird vom Browser des Benutzers gesetzt. Nicht alle Programme unterstützen diesen Wert, manche offerieren als Feature sogar die Möglichkeit, den Wert von HTTP_REFERER selbst zu bestimmen. Kurz, Sie können diesem Wert nicht wirklich vertrauen.

Der zurückgelieferte Wert ist unbrauchbar für Scripte, die per Kommandozeile (oder cron) gestartet werden. Im Script festzustellen, ob es von einem Browser oder von der Kommandozeile gestartet wurde, ist problematisch und funktioniert nicht immer sauber. Das habe ich mit verschiedenen Servern erlebt. Die SmartHome-Scripte haben viele interne Funktionen gleich. Gerade die SmartHome Automation läuft aber sowohl auf Kommandozeile, als auch per Browser. Dort $SERVER["HTTP_REFERER"] einzusetzen wäre problematisch.

Du hast ja für dich eine recht brauchbare Lösung gefunden. :)

Von daher werde ich die Variable $SERVER["HTTP_REFERER"] auch in neueren Versionen unberücksichtigt lassen, da dies mehr Probleme mit sich bringt als Nutzen bietet.
 
Ok, dann sehn wir das mal als Info Sicherheitsfeature
und den zweiten reverse_proxy Eintrag als Workaround dazu.
...gebont. :mrgreen:
 
@ koyaanisqatsi: Okay :)

Aber generell, wenn du da eine perfekte Lösung wüsstest? Die SmartHome-Scripte sind ja einseh- und änderbar. Immer her damit. ;)


-
@alle: Noch was zum Thema SmartHome Automation: Es gibt weiterhin dann smarthomeauto.php mit smarthomeautoui.php für einfache Schaltvorgänge für den, der es nicht so kompliziert braucht und zusätzlich smarthomeautopro.php mit smarthomeautoproui.php für die verketteten Schaltvorgänge (sozusagen die Profivariante auch mit eigener conf-Datei). Das nur am Rande. (Hm, eigentlich wollte ich ja erst nächste Woche weitermachen, aber einmal hier reingeschaut und... :) )
 
Da fällt mir spontan ein...
Wenn das META Tag (Element) für den Refresh anstatt die URL= nur die Zeit bekommt,
HTML:
<meta http-equiv="refresh" content="5" />
dann ruft sich das PHP auch selber auf.
Jetzt kommt es noch darauf an, wie wichtig der QUERYSTRING ist.
 
finde ich gut, das es die einfache Version weiter gibt!
hab nämlich etwas gebastelt und mir für meine Edimax Steckdose folgende Zeilen bei Zeile 752 eingefügt.
Code:
// Variablen für Edimax	
	$ediuser="admin";
	$edipassword="1234";
	$ediip="192.168.178.27:10000";
	$Pfad="/var/media/ftp/Generic-Flash-Disk-01/apache-1341/htdocs";
	
	$edian=$Pfad.'/curl -d @'.$Pfad.'/on.xml http://'.$ediuser.':'.$edipassword.'@'.$ediip.'/smartplug.cgi';
	$ediaus=$Pfad.'/curl -d @'.$Pfad.'/off.xml http://'.$ediuser.':'.$edipassword.'@'.$ediip.'/smartplug.cgi';
	$edipowerstate=$Pfad.'/curl -d @'.$Pfad.'/powerstate.xml http://'.$ediuser.':'.$edipassword.'@'.$ediip.'/smartplug.cgi';

	// Schaltbefehle für Edimax
	if ($Zeit==$Schaltzeit and $SI[0]=="1" and $SI[5]=="Edimax") {
		$output=shell_exec($edian);
		$dateihandle = fopen("Protokoll.txt","a+");
		fwrite($dateihandle, "am ".date(d)."-".date(m)."-".date(y)." um ".date(H).":".date(i)." eingeschaltet, Grund: ".$SI[1].",".$SI[2]." 
		");
}			
	if ($Zeit==$Schaltzeit and $SI[0]=="0" and $SI[5]=="Edimax" ) {
		$output=shell_exec($ediaus);
		$dateihandle = fopen("Protokoll.txt","a+");
		fwrite($dateihandle, "am ".date(d)."-".date(m)."-".date(y)." um ".date(H).":".date(i)." ausgeschaltet, Grund: ".$SI[1].",".$SI[2]."
		");
}

funktioniert mit Zeitschalter, Sonnenauf-, und Untergang einwandfrei.
Muss nur in der Config Datei die Einträge von Hand machen, oder einen Eintrag für eine Dect200 erstellen und den Namen nachher ändern.
Gleichzeitig wird beim schalten noch eine Protokoll Datei geschrieben.

war für mich einfacher die smarthomeauto.php etwas zu ändern, als die ganze Zeitbearbeitung neu zu erfinden, da ich kaum Ahnung von PHP habe.
 
@ws65: Im neuen SmartHome Automation Pro kannst du statt Schalten ein PHP-Script aufrufen, was dem Code da oben dann gleichkommt und wesentlich eleganter und einfacher ist. Erkläre ich, wenn ichs mal fertig habe. :)
Log-Datei ist für 5.00 ebenfalls eingebaut.

@koyaanisqatsi: Das wäre nur die halbe Miete. Es gibt im Script Aufrufe, die $_GET benutzen müssen. Allein um in die Einstellungen zu gelangen.
Code:
								<div id="kopfeinstellungen">
									<a href=[COLOR="#FF0000"]"'.$_SERVER['PHP_SELF'].'?info=einstellungen"[/COLOR]>
										<img src="'.PIC.'einstellungen.png" border="0">
									</a>
								</div>'
 
Zuletzt bearbeitet:
Kurze Frage. Ich habe das Programm auch bei mir im Einsatz. Aktuell noch die Version 3.92.3951.
Habe soeben versucht, die neue 4.04.5001 zu installieren. Es klappt aber weder mit dem Updateskript, noch manuell (wie bisher).
Habe es mit neuer blanker Installation versucht, und auch als Update.

Ich sehe nach dem Aufruf der smarthome.php nur einen weissen Bildschirm, genau wie auch beim Aufruf der smarthomeupdate.php.

Die alte Version funktioniert direkt.

Werden ab der Version 4 noch weitere Dinge vorausgesetzt? Bzw. was alles?

Habe jetzt erstmal wieder die alte Version aktiviert. Die funktioniert.
 
@dtrieb; So wie ein Pseudo-Schaltsteckdosen-Script für Funktion Schalten ein Pseudo-Sensor-Script für Bedingungseingabe... klingt interessant. Dann kann man statt Geräten auch Scripte für Bedingungen und zum Schalten verwenden. Versuche ich zu realisieren. Input ist allerdings komplizierter als Output. Aber erstmal muss ich mich der Verknüpfung und dem Delay widmen.

Und eigentlich bin ich jetzt gar nicht da und on und so. Aber schau ich mir nächste Woche genau an. :)
 
@fred_feuerstein:
Hm, haben die Scripte und die Verzeichnisse genügend Rechte? Wurde vom Script das Unterverzeichnis conf angelegt? Hat das genug Rechte?

Nachtrag: Das Verzeichnis conf/ wird normalerweise von den Scripten angelegt. In dieses werden die Konfigurationsdateien geschoben oder erzeugt.

Voraussetzung für SmartHome ist inzwischen die Schreibleserechte für Dateien und Verzeichnisse. Das ist im Apache einstellbar. Außerdem benötigt es in PHP uneingeschränkte fopen, unzip und curl Nutzung. Darunter auch die Erlaubnis, Dateien anzulegen, zu lesen, zu schreiben, zu löschen und zu verschieben. Ich denke, es ist eine reine Einstellungssache deines Webservers. Die Version 4.00 ist durch den Ein-Button-Klick-Update um einiges einfacher aber auch anspruchsvoller geworden, was die Serverumgebung angeht. Aber es ist kein unlösbares Problem. :)

Probiere mal die Datei im Anahang und poste, was sie meldet.
 

Anhänge

  • phptest.zip
    415 Bytes · Aufrufe: 2
Zuletzt bearbeitet:

Zurzeit aktive Besucher

Statistik des Forums

Themen
246,056
Beiträge
2,245,210
Mitglieder
373,480
Neuestes Mitglied
Skyscraperfan
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.