Forum: Haus & Smart Home Hausbus über PHP Webfähig machen


von Elkokiller (Gast)


Lesenswert?

Hallo zusammen,

ist es möglich den Hausbus, der über die serielle Schnittstelle am PC 
angeschlossen ist, über eine Weboberfläche z.B. über PHP anzusteuern 
bzw. auszuwerten?

Kennt jemand einen Link über den man weitere Info's z.B. zu 
Steuerfefehlen bekommt?

Tobias

von Zapp (Gast)


Lesenswert?

PHP is wahrscheinlich die falsche Wahl. Dies, da PHP eine 
serverapplikation ist. Da muesse man ja einen PHP server auf dem PC 
haben. Der wuerde nichts bringen. Viel besser waere eine Umsetzung von 
TCP/IP nach Seriell, dann muesste der Hausbus nur noch Seiten per 
Seriell zur Verfuegung stellen. Diese Funktionalitaer gibt's schon.

Z

von Elkokiller (Gast)


Lesenswert?

hast du ein Beispiel oder Link dazu?

von Jörg (Gast)


Lesenswert?

So die falsche Wahl ist das nicht, kommt drauf an was man will. Tobias 
beschrieb einen PC, an den seriell Hardware angeschlossen ist.
Mit z.B. Apache und PHP können darauf Webseiten als Vorlage abgelegt 
sein, bzw. on-the-fly generiert werden, die mit über RS232 abgefragten 
Information vervollständigt sind. Umgekehrt können Requests Kommandos am 
RS232 erzeugen, um damit was zu steuern.

PHP hat meines Wissens nur sehr rudimentären Support für RS232, und den 
auch nur unter Linux, ist nicht portabel.
Vielleicht wäre Perl eine ALternative?

Ich grüble auch gerade über sowas, wie ich eine Web-Visualisierung am 
besten umsetze, die mit einer über RS232 angeschlossenen Steuerung 
redet.

von Roland Praml (Gast)


Lesenswert?

Du brauchst eine Art Proxy.
Ich hab z.B. bei meiner experimentellen Steuerung ein kleines C-Programm 
welches die serielle Kommunikation übernimmt. Über einen TCP/IP-Port 
kann ich auf den Proxy über PHP zugrifen und Befehle absenden

von Elkokiller (Gast)


Lesenswert?

Hallo,

ich habe mittlerweile unter dem Link
http://www.mikrocontroller.net/articles/Ports_benutzen_(PHP)
eine kleine Beschreibung gefunden.

Leider erhalte ich beim beschriebenen Code
1
<?php
2
3
$fd = dio_open('/dev/ttyS0', O_RDWR | O_NOCTTY | O_NONBLOCK);
4
5
dio_fcntl($fd, F_SETFL, O_SYNC);
6
7
dio_tcsetattr($fd, array(
8
  'baud' => 9600,
9
  'bits' => 8,
10
  'stop'  => 1,
11
  'parity' => 0
12
)); 
13
14
while (1) {
15
16
  $data = dio_read($fd, 256);
17
18
  if ($data) {
19
      echo $data;
20
  }
21
} 
22
23
?>
einen Fehler in Zeile 3.

Da ich noch ziemlich wenig Ahnung von PHP habe kann ich damit nichts 
anfangen.
Kann mir da jemand helfen?

von Christian I. (alloc)


Lesenswert?

Läuft der Server unter Windows? Falls ja kann das nicht gehen, da 
/dev/ttyS0 ein Linux-Device-Name ist. Außerdem hat glaub jmd vorher 
angemerkt, dass der Zugriff auf serielle Schnittstellen unter Windoof 
mit PHP nicht funzt.

Gruß,
Chris

von karleido (Gast)


Lesenswert?

Hallo,

unter http://www.messpc.de/sensor_php.php ist eine Möglichkeit 
beschrieben.
Ich habe versucht auf einem xampp XP-System eine Kommunikatiom mit 
ATmega8 aufzunehmen (Sensormodul 2 von Scott-Falk Hühn:
http://s-huehn.de/elektronik/tempmess/tempmess-sm2.htm). Dies gelimgt 
mir aber nur, wenn ich vorher eine Verbindung mit der Anzeigensoftware 
hatte. Warum das so ist, weiß ich noch nicht.

Gruß
Karl Albert

von sechszweifuenf (Gast)


Lesenswert?

Was soll das PHP ? Was benoetigt wird, ist eine Zwischenschicht, ein 
Proxy, der gegenueber dem System einen Socket darstellt und hinten auf 
die Serielle Schnittstelle rausgeht. Das ist mit wenigen Zeilen Code 
machbar, vorausgesetzt man verwendet eine Componentensprache wie Delphi.
die naechste Frage ist : Wo sind die Webseiten ? Auf dem Hausbus ? In 
diesem PC ? Falls auf diesem PC, dann muesste eine PC Allikation die 
Serielle Schnittstelle bedienen und gegenueber einem Socket die Seiten 
zur Verfuegung stellen.

von Jürgen (Gast)


Lesenswert?

Bei mir läuft ein RS485-Hausbus seit vielen Monaten ohne Probleme mit 
einer Websteuerung. Die Sache ist ziemlich simpel realisiert:

Hausbus RS485
|
|
RS485-RS232 Koppler (Eigenbau aufgrund des Timings für die Send- und 
Receiveumschaltung)
|
|
PC
bei mir ein ITX-System mit Windows XP-Prof. (ca. 20Watt 
Leistungsaufnahme)
XAMPP mit Perl-Modul (Webserver)
|
|
Netzwerk (Ethernet und WLAN)
|
|
Browser auf Clientsystem (Nokia N770, Home Theater PC, Bürorechner, 
etc..)


Das XAMPP-Paket beinhaltet alle wesentlichen Webserversachen "out of the 
box". Es braucht nichts installiert werden, sondern lediglich ein 
Konfigurationsskript einmalig gestartet werden.

Die Kommunikation mit dem Hausbus erfolgt über wenige universelle 
Perl-Skripte (cgi-Scripte). Diese Skripte werden über URL-Parameter 
direkt mit BUS-Kommandos bedient:
z.B. http://itx/hausbus/rs485_command.pl?device=220&befehl=13&wert1=2&; 
etc  ....
Die Perlskripte stellen also die Verbindung zwischen Webseite und RS232 
her. Da sie universell gestaltet sind, kann die gesamte Intelligenz in 
die Webseite gelegt werden.

Somit kann von beliebigen Webseiten (Normale HTML-Seiten oder zur 
Laufzeit mit PHP generiert spielt keine Rolle) auf das Hausbussystem 
zugegriffen werden. Ich nutze es vornehmlich zur Lichtsteuerung, 
Konfiguration aller Hausbusmodule, Temperatursteuerung und zur 
Datenerfassung. Sonderskripte erlauben eine komplette Inventur des 
Hausbussystems mit Rückmeldung aller Firmwareversionen und 
Betriebszustände innerhalb von wenigen Sekunden.

Grüße --- Jürgen

von sechsdreizwei (Gast)


Lesenswert?

20W ist etwas viel. Ein Beck Singlechip PC macht dasselbe mit weniger 
als einem Watt.

von Jürgen (Gast)


Lesenswert?

@sechsdreizwei

Der PC hat bei mir aber noch einige weitere Funktionen:

- Mediaserver für Musik und Filme (1x 2,5" 60GB HDD + 2x 3,5" 500GB HDD)
- Webserver für die Haustechnik
- Datensicherungsserver

Ich bin einmal gespannt, wie du das mit weniger als 1 Watt hinbekommen 
willst? Ursprünglich hatte ich ein NAS-System umfunktioniert ... das 
hatte ca. 17 Watt, war allerdings nicht sonderlich leistungsstark und 
nicht so flexibel.

Grüße -- Jürgen

von sechsdreizwei (Gast)


Lesenswert?

Aha. Ok. Das wird schwierig. Die Frage ist, soll man immer, ueber die 
Lebensdauer einen Hauses einen PC mitlaufen lassen ? Egal, dieses Thema 
wird in Zukunft noch an Fokus gewinnen.

von Jürgen (Gast)


Lesenswert?

Ich bin der Meinung, dass die gesamte Haustechnik auch autark ohne PC 
auskommen muß! Der PC ist bei mir rein als Benutzerinterface zu sehen, 
also als Ergänzung zu normalen Tastern. Komplexere Funktionen werden bei 
mir über "Makromodule" ausgeführt, welche Bestandteil der normalen 
Haustechnik sind. D.h. dafür ist ebenfalls kein PC notwendig. Einzig die 
Konfiguration der Module erzwingt einen PC ....

Grüße -- Jürgen

von John (Gast)


Lesenswert?

@Jürgen:

"Der PC hat bei mir aber noch einige weitere Funktionen:

- Mediaserver für Musik und Filme (1x 2,5" 60GB HDD + 2x 3,5" 500GB HDD)
- Webserver für die Haustechnik
- Datensicherungsserver
"


Wie willst Du da auf nur 20 Watt kommen?
Stell doch mal bitte Deine Komponenten hier ein, also auch das ITX Board 
und Netzteil. Die ähnlichen Systeme, die ich so kenne, brauchen als 
Minimum 40 Watt. Das würde mich jetzt echt interessieren!

von John (Gast)


Lesenswert?

"(1x 2,5" 60GB HDD + 2x 3,5" 500GB HDD)"


Habe mal auf die Schnelle gesucht und keine Platte gefunden, die unter 5 
Watt in Ruhe braucht. Alte 60er kommen nicht unter 8 Watt, die 500er 
sicherlich auch nicht deutlich. Die 20 Watt sind also schon komplett für 
die Platten weg.
Ich denke, Deine Rechnung geht vorne und hinten nicht auf.

Welche Komponenten verwendest Du?

von Eric B. (erc)


Lesenswert?

John wrote:
> "(1x 2,5" 60GB HDD + 2x 3,5" 500GB HDD)"
>
>
> Habe mal auf die Schnelle gesucht und keine Platte gefunden, die unter 5
> Watt in Ruhe braucht. Alte 60er kommen nicht unter 8 Watt, die 500er
> sicherlich auch nicht deutlich. Die 20 Watt sind also schon komplett für
> die Platten weg.
> Ich denke, Deine Rechnung geht vorne und hinten nicht auf.

Prinzipiell müssen aber nicht alle Platen laufen. Ich nutze auch ein 
ähnliches System und das ganze ist so konfiguriert dass die Platten nach 
15 Minuten in Standby gehen. Aber drotzdem kommt das System selbst unter 
minimal last nur knapp unter 50 Watt. (ITX Jetway Board mit 1.1Ghz, 
2xHDD à 250GB, TV Karte, Gbit Lan, Netzteil ist ein altes 300Watt ding) 
Das ganze will ich demnächst noch mit nem kleinen Webserver auf ENC28J60 
Basis steuern... weil 50Watt sind nicht unbedingt wenig. Somit könnte 
man den Strombedarf auf bis zu weit unter 10 Watt reduzieren, der 
zugriff wird zwar ein wenig komplexer und dauert länger aber das ist 
bares Geld. (aus dem Standby ist das System in knapp 10 Sekunden da)

von Hellboy (Gast)


Lesenswert?

wenn auf pc mit webserver würde ich entweder cgi oder phyton als mittel 
der wahl nehmen ....

von sechsmalzwei (Gast)


Lesenswert?

Wir haben mal ein Win2k und ein Linux auf einem mini ITX gemessen. Der 
Stromverbrauch war beim Win2k und einer 60er 3.5er Platte bei 40W. 
Dasselbe System unter Linux zog nur 8.5W im Leerlauf. Scheint an dieser 
Stelle, dh dem Idle Prozess ging das Linux in den Powersave, waehrend 
das Win2k irgendwas gepollt hat. Daher sollte man sich das System 
genauer anschauen, ev ein WinXP Embedded verwenden, wo man das alles 
konfigurieren kann.

von Jürgen (Gast)


Lesenswert?

Hallo Leute,

die Geschichte mit den 20 Watt kommt hin ... naja 22 Watt ;-)
Die 2,5" Platte läuft permanent, die beiden großen werden nach einer 
gewissen Zeit abgeschaltet und erst bei Zugriff wieder aktiviert 
(ansonsten pro Platte ca. 10 Watt zusätzlich). Wichtig ist auch ein 
vernünftiges Netzteil. Ich hatte es anfangs mit einem normalen 
PC-Netzteil betrieben, was gute 10Watt zusätzlich verheizt! Mit 
optimierten Komponenten kann man hier einiges einsparen. Artikel-Nr.: 
PICOPSU-120 von Reichelt als Spannungsregler in Kombination mit dem 
Schaltnetzteil SNT MW60-12 (ebenfalls Reichelt).

Grüße -- Jürgen

von sechsmalzwei (Gast)


Lesenswert?

Nun koennt man sich ueberlegen, die Festplatte durch ein Flash zu 
ersetzten, da ja nichts geschrieben werden muss ...

von der mechatroniker (Gast)


Lesenswert?

Ich habe schon ein paarmal mit dem Gedanken gespielt, auf einer 
Selbstbauschaltung einen Web*client* laufen zu lassen, der mit dem 
Internet verbunden ist und regelmäßig die aktuellen Daten in eine 
Applikation spielt, die bei einem Webhosting-Anbieter läuft. Quasi 
automatisiert in ein Formular auf der Homepage einträgt.

Zum Umsetzen bin ich bisher nicht gekommen.

Meiner Ansicht nach hätte der Ansatz aber folgende Vorteile:
* Kaum Speicherplatz in der Hardware nötig (außer RAM für den 
TCP/IP-Stack und die Abwicklung des HTTP-Krams)
* Kein 24/7 mitlaufender PC, Internetanbindung der Hardware 
beispielsweise über einen eh vorhandenen DSL-Router möglich.
* Flexibilität bei der Gestaltung (grafisch, Bedienung...) der Seiten
* Daten lassen sich, ggf. paßwortgeschützt, weltweit von jedem 
internetfähigen Rechner anschauen. Beim eigenen Server macht einem da 
mal die Routerkonfiguration nen Strich durch die Rechnung, wenn man mit 
der ganzen Konstruktion mal in ein Uninetz oder sonstwohin umzieht und 
auf den Router keinen Einfluß hat.

Nachteile:
* Latenzzeit wird etwas größer (muß nicht so tragisch sein)
* Bedieneingriffe auf diesem Wege werden aufwendiger zu realisieren und 
wenn dann nicht so schön zu bedienen.

Was meint ihr, sollte man die Idee weiterverfolgen?

von Jorge (Gast)


Lesenswert?

Für PHP braucht man keinen Server wie Apache. Also PHP kann selbst als 
Server fungieren (s.o.). Ich habe in Setuproutinen oft PHP 
mitinstalliert und nachher wieder gelöscht. Mit 50kByte in der 
Grundversion mit TCP kommt man hin. Es gibt nix knapperes falls man ein 
Sript braucht, höchstens vielleicht JavaScript das kann aber noch 
weniger.

Die Idee ist in meinen Augen gut.

von Gast (Gast)


Lesenswert?

Noch ein Hinweis auf einfaches System:
http://bascom-forum.de/index.php/topic,965.0.html

von brauns (Gast)


Lesenswert?

Hallo,
sehr interessantes Thema.
Gibt es schon einen lauffähigen Quellcode, denn man sich anschauen kann 
?

Schöne Weihnachten

von Zimmermann (Gast)


Lesenswert?

PHP, CGI, JScript usw. taugen nicht.
Tomcat mit Java Server Pages is cooler, weil der Browser nicht ständig
auf Statusänderungen oder Fortschrittsanzeigen pollen muss, um aktuelle
Daten anzuzeigen.

Java ist im Gegensatz zu Vorgenannten Multi-Threading-fähig ist. Das 
macht die Implementierung seehr angenehm.

von Stephan (Gast)


Lesenswert?

@Zimmermann:

Wenn man keine Ahnung hat...

Selten so einen Blödsinn gelesen, wie Du geschrieben hast.

von Chris (Gast)


Lesenswert?

Hi,

warum so kompliziert?

Ich hab' vor längerer Zeit mal den I²C an meinem PC (war am Parport) 
webfähig gemacht. Als "zwischenhändler" diente ein VB-Programm, das mit 
ein paar Tricks Konsolenfähig gemacht wurde (und dort dann die Ausgaben 
gemacht hat). Die Ausgaben wurden dann vom PHP-Script (das Resultat von 
Exec ist ein Array der Ausgaben) ausgewertet.

Funktionierte sehr gut, wobei die Schnittstellenseite mittlerweile nur 
noch mit einer .NET-Sprache machen würde (weil da Konsolenprogramme 
native möglich sind).

Grüße

Chris

von David M. (md2k7)


Lesenswert?

Zimmermann wrote:
> PHP, CGI, JScript usw. taugen nicht.
> Tomcat mit Java Server Pages is cooler, weil der Browser nicht ständig
> auf Statusänderungen oder Fortschrittsanzeigen pollen muss, um aktuelle
> Daten anzuzeigen.

Stephan wrote:
> @Zimmermann:
>
> Wenn man keine Ahnung hat...
>
> Selten so einen Blödsinn gelesen, wie Du geschrieben hast.

Er meinte doch wahrscheinlich ein Applet? Java Server Pages braucht man 
dazu dann aber nicht (unbedingt) - das Applet kann sich doch mit jedem 
x-beliebigen Serverprogramm (auf dem Webserver von dem das Applet kommt) 
verbinden.

von Zimmermann (Gast)


Lesenswert?

@Stephan
mach doch mal ein PHP-Script mit Multithreading du Spezi. Da bin ich 
sehr gespannt - ach nee eigentlich nicht, ich kenn das Ergebnis schon...

>Er meinte doch wahrscheinlich ein Applet?
Neiin - ich meinte tatsächlich das was ich schrieb: serverseitiges Java! 
Die Servlets können direkt ohne Umweg mit dem Hausbus sprechen und die 
gewonnenen Daten zurückliefern.

von Mayday (Gast)


Lesenswert?

>Als "zwischenhändler" diente ein VB-Programm, das mit
>ein paar Tricks Konsolenfähig gemacht wurde
Java seien besser, weil für alle Plattformen verfügbar und frei und 
kostenlso.

von Gast (Gast)


Lesenswert?

@Cris
kannst du dein Projekt mal näher erklären?
Ich bitte euch, hier nicht so agressiv zu schreiben. Bleiben wir hier 
doch sachlich.
Frohes neues Jahr

von JAD (Gast)


Lesenswert?

Hi,
ich habe eine Siemens Logo für Rollläden und Fenster, eine 
Regenwasserpumpe, Heizungspumpen und -fühler, deren Anlagenzustände ich 
alle gerne auf einem Webserver visualisieren würde.
Ich lese mal weiter mit...

Gruß JAD

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.