mikrocontroller.net

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


Autor: Elkokiller (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Zapp (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Elkokiller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hast du ein Beispiel oder Link dazu?

Autor: Jörg (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Roland Praml (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Elkokiller (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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
<?php

$fd = dio_open('/dev/ttyS0', O_RDWR | O_NOCTTY | O_NONBLOCK);

dio_fcntl($fd, F_SETFL, O_SYNC);

dio_tcsetattr($fd, array(
  'baud' => 9600,
  'bits' => 8,
  'stop'  => 1,
  'parity' => 0
)); 

while (1) {

  $data = dio_read($fd, 256);

  if ($data) {
      echo $data;
  }
} 

?> 
einen Fehler in Zeile 3.

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

Autor: Christian Illy (alloc)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: karleido (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: sechszweifuenf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Jürgen (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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&bef...; 
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

Autor: sechsdreizwei (Gast)
Datum:

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

Autor: Jürgen (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: sechsdreizwei (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Jürgen (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: John (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: John (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Eric B. (erc)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: Hellboy (Gast)
Datum:

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

Autor: sechsmalzwei (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Jürgen (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: sechsmalzwei (Gast)
Datum:

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

Autor: der mechatroniker (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Jorge (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Gast (Gast)
Datum:

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

Autor: brauns (Gast)
Datum:

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

Schöne Weihnachten

Autor: Zimmermann (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Stephan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Zimmermann:

Wenn man keine Ahnung hat...

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

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: David Madl (md2k7)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Zimmermann (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Mayday (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: JAD (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.