Mikrocontroller an AVM. Frage zu: Mögliche fritzboxinterne Kommunikation

snowyrain

Neuer User
Mitglied seit
31 Jul 2006
Beiträge
125
Punkte für Reaktionen
0
Punkte
16
Hallo,

ich habe Lust etwas zubasteln. Ich möchte gerne einen Mikrocontroller über ein USB-RS232 an die Fritzbox anschließen. Ich habe das mal skizziert.
attachment.php


Alles ausserhalb der Firtzbox kriege ich in den kriff. Ein C-Programm zuschreiben das LCD, Taster, LED, I2C bedient traue ich mir auch zu. Aber ich möchte das auch über http bedienen können.

Ich möchte eine kleine Seite auf der Fritzbox haben mit der ich die LEDs an/aus schalten kann und die Temperatur anzeigen lassen kann. Dafür müsse das C-Programm irgendwie mit dem httpd kommunizieren können. Gibt es da Beispiele für?

Gruß

Snowyrain
 

Anhänge

  • 345345345.jpg
    345345345.jpg
    17.5 KB · Aufrufe: 372
soweit ich mich entsinne kann httpd auch cgi. und cgi gibs auch mit c bzw c++.
dann gibs tolle libs, die dir die serielle arbeit abnehmen.

ich denke dann hasts geschafft:)
 
Hab was ähnliches vor

Tach auch,

ich habe was ähnliches vor. Daher würden mich Ergebnisse interessieren.

Allerdings will ich meine Fritzbox BACnet fähig machen. (Isch aber noch ein langer weg)

siehe auch bacnet4linux.

Grüßle
 
Hallo,

ich habe mich erstmal in c/c++ mittels CGI-Skrippten beschäftigt. Dann habe ich mir XML angesehen. Ich habe mir gedacht die Konfigurationsdatei sollte in XML sein. Jetzt versuche ich mich gerade mit einem Xml-Parser. Der soll, durch ein CGI angestoßen, aus der XML eine HTML Datei machen. Mit der seriellen Schnittstelle soll ein extra Thread kommunizieren. Die Kommunikation zwischen CGI und dem Extra-Thread soll über TCP laufen.

Aber wie gesagt erstmal mich in libxml2 einarbeiten. In Anhang habe ich mal die Xml-Datei angefügt.

EDIT:
Ich bin gerade einen kleinen Schritt weiter. Ich kann mir jetzt über ein cgi-skript aus der XML-Datei eine HMTL-Datei erzeugen lassen. Das Ergebniss sieht wirklich nicht toll aus, aber es wird etwas angezeigt. In den nächsten Tage werde ich versuchen die POST-Werte (nach der XML Datei) in zusendende Strings um zuwandeln. Die wenigen bisherigen Ergebnisse sind in der Datei versuche.zip angefügt.
EDIT END


Gruß

Snowyrain
 

Anhänge

  • fritz2c.zip
    1,010 Bytes · Aufrufe: 24
  • versuche.zip
    2.6 KB · Aufrufe: 18
Zuletzt bearbeitet:
Hallo,

ich möchte meine Heizung (Luftwärmepumpe Tecalor THZ 303 SOL) über deren RS232-Schnittstelle und einen RS232-USB 2.0-Adapter (Digitus x) mit meiner Fritzbox 7170 verbinden und ein paar Daten auslesen.
Ggf. möchte ich die Daten grafisch ausgeben/anzeigen.

Nun habe ich in Deinem ersten Beitrag oben gelesen, dass Du ein LCD-Display anschließen willst. Hast Du schon eins? Wie hast Du es an Deiner Fritzbox angeschlossen?

Vielen Dank für Dein Feedback!

PS:
Hier habe ich ein paar Links zu relevanten Threads zum Thema.
Eine ähnliche Diskussion hatte ich hier im Forum gestartet.
Interessant ist auch dies hier.
 
Hi snowyrain,

Programme können mit dem httpd der Busybox ganz einfach bedient werden. Hier ein Beispiel, ausgeschnitten aus aktuellem Projekt:
Code:
#!/bin/sh

cat << EOF
Content-Type: text/html


  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
	 "http://www.w3.org/TR/html4/loose.dtd">
  <html>
  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  <meta http-equiv="Content-Language" content="de">
  <meta http-equiv="Expires" content="0">
  <meta http-equiv="Pragma" content="no-cache">
  <title>Test.CGI</title>
  </head>

  <body>
EOF

###############################################

# read POST variables
read -r POST_DATA
POST_DATA=`echo $POST_DATA | sed -e 's/&/ /g'`

# durch parameter laufen:
for var in $POST_DATA; do

	if [ -z "$INPUT1" ]; then
 	  INPUT1=$(echo $var | grep 'cmd=' | sed -e 's/cmd\=//' -e 's/\&.*//g')
	  INPUT1=$(echo "$INPUT1" | sed -e "s/%0D//g" -e "s/%0A/\n/g")
	  INPUT1=$(/bin/busybox httpd -d "$INPUT1")
	fi

	if [ -z "$INPUT2" ]; then
 	  INPUT2=$(echo $var | grep 'test=' | sed -e 's/test\=//' -e 's/\&.*//g')
	  INPUT2=$(echo "$INPUT2" | sed -e "s/%0D//g" -e "s/%0A/\n/g")
	  INPUT2=$(/bin/busybox httpd -d "$INPUT2")
	fi
done

echo "INPUT1: $INPUT1<br>INPUT2: $INPUT2"

if [ ! -z "$INPUT1" ]; then
echo "<pre>"
$INPUT1
echo "</pre>"
fi

###############################################

cat << EOF
    <p>
    <form name='test_post' method='post'>
      POST: <input type='text' name='cmd' value='ls -la'>
	    <input type='text' name='test' value='das ist ein test'>
	    <input type='submit' value='Befehl ausführen'>
    </form>

  </body>
  </html>

EOF

Du könntest hiermit die Ausgaben von Programmen anzeigen lassen. Um das Webinterface mit Konfig-Werten zu füllen, eignen sich Shellskripte in der Form:

Code:
#!/bin/sh
CFG1="Konfig Wert1"
CFG2="Konfig Wert2"
CFG3="Konfig Wert3"

Diese bindest du dann nur noch in das Webinterface ein. Danach stehen die Werte in den Variablen $CFG1 - $CFG3 zur Verfügung:
Code:
. ./config.sh
echo "$CFG1"
echo "$CFG2"
echo "$CFG3"
Das C-Programm könnte eine solche "config.sh" erstellen, bzw. das Webinterface.
 
Zuletzt bearbeitet:
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.