Discussion:
[ethersex-devel] http request mit control6
Tom Weber
2015-05-07 10:43:55 UTC
Permalink
Moin Liste !

hat jemand eine Idee, wie ich mit control6 einen http request machen
kann ? Also so etwas wie "wget <ip>" - ich hatte das schon mal vor
längerer Zeit angefragt, geschafft habe ich es bisher nicht. Ich
benötige diese request zur direkten Steuerung einen Geräts, das auf http
requests reagieren kann. Ich denke mal, der Weg über TCP_SEND ist
richtig, bloß habe ich keine Ahnung, wie ich damit einen vollständigen
http request zusammenbauen kann. Die Antwort wäre immerhin egal, was die
Sache vielleicht etwas einfacher macht.

Codebeispiele wären super !

Vielen Dank,
Tom
j***@justinotherguy.org
2015-05-09 05:39:23 UTC
Permalink
Servus Tom,
hat jemand eine Idee, wie ich mit control6 einen http request machen kann ?
dafür habe ich mal http_log gebaut. Du kannst per make menuconfig die Parameter konfigurieren (Server, Pfad, …) und dann per „ht <string>“ einen String an den Pfad anhängen.
So in etwas sollte es klappen. Probier’s mal aus und gib Bescheid, falls Du nicht weiter kommst.


Gruß, J.
Tom Weber
2015-05-11 05:16:29 UTC
Permalink
Moinmoin,

stimmt - aber das lässt sich ja wieder in die Liste kriegen ;-)

wenn ich den request mit httplog aus control6 absetze, sehe ich in
Wireshark:
GET /pck?\001 HTTP/1.1\n
dabei scheint es ziemlich egal zu sein, welchen String ich da absetze.
So erzeugt ein HTTPLOG("Kuckuck") in Wireshark:
GET /pck?\001 HTTP/1.1\n
aus purer Verzweiflung habe ich jetzt ein HTTPLOG("Kuckuck","test");
abgesetzt, dann kommt:
GET /pck?Kuckuck HTTP/1.1\n

kann es sein, dass irgendwie eine 2.Option nötig ist?

Grüße,
Tom





-------- Weitergeleitete Nachricht --------
Betreff: Re: [ethersex-devel] http request mit control6
Datum: Sun, 10 May 2015 23:06:29 +0200
Von: ***@justinotherguy.org
An: Tom Weber <***@gmx.de>



Moin,

(sehe gerade, dass die Mails nicht mehr auf der ML landen - schade für künftige Sucher…)
Jetzt bin ich doch wieder beim httplog angekommen - bekam es mittlerweile auch aktiviert, der wollte ja DNS haben.
"http://192.168.178.1:8000/pck?c=%3EM000080.PIN001"
ich habe daher
Service: 192.168.178.1
Path "/pck"
#include "protocols/httplog/httplog.h"
....
HTTPLOG("?c=>M000085.PIN001");
bzw. auch mal
HTTPLOG("?c=%3EM000085.PIN001");
in der httplog.c habe ich HTONS(80) durch HTONS(8000) ersetzt, um den port anzupassen
Mache vlt doch noch irgndwo einen Gedankenfehler ?
sieht gut aus (habe das aber nicht mehr im Detail im Kopf und keine Testumgebung) - kannst Du auf dem Web-Server einen tcpdump starten?

Kommen da Anfragen auf Port 8000 an?


Gruß, J.
j***@justinotherguy.org
2015-05-11 07:19:10 UTC
Permalink
Hi Tom,
Post by Tom Weber
GET /pck?\001 HTTP/1.1\n
GET /pck?\001 HTTP/1.1\n
GET /pck?Kuckuck HTTP/1.1\n
kann es sein, dass irgendwie eine 2.Option nötig ist?
das klingt seltsam; ich bin nicht sicher, ob ich httplog via control6 je selbst verwendet habe.
Via watchasync und via ecmd klappt’s auf alle Fälle - mag sein, dass das in control6 ne Macke hat.
Was genau hast Du denn vor?


Gruß, J.
Michael Brakemeier
2015-05-11 07:51:09 UTC
Permalink
Hi,

@Tom: ändere doch bitte mal in Zeile 16 in control6/lang.d/50_httplog.m4
das `httplog_P($1)' in `httplog($1)' und versuche es nochmal. Und poste
doch bitte mal die aus dem control6 generierte C-Quelle.

VG michaelb

P.S.: das ist m4-Code - die unterschiedlichen Hochkommata müssen genau
so ;-)
Post by j***@justinotherguy.org
Hi Tom,
Post by Tom Weber
GET /pck?\001 HTTP/1.1\n
GET /pck?\001 HTTP/1.1\n
GET /pck?Kuckuck HTTP/1.1\n
kann es sein, dass irgendwie eine 2.Option nötig ist?
das klingt seltsam; ich bin nicht sicher, ob ich httplog via control6 je selbst verwendet habe.
Via watchasync und via ecmd klappt’s auf alle Fälle - mag sein, dass das in control6 ne Macke hat.
Was genau hast Du denn vor?
Gruß, J.
_______________________________________________
Ethersex-devel mailing list
http://list.zerties.org/cgi-bin/mailman/listinfo/ethersex-devel
--
Michael Brakemeier
***@brakemeier.de
Tom Weber
2015-05-11 10:57:48 UTC
Permalink
Moin,

@Michael: Jawoll, mit der Änderung lüppt es. Die erzeugte control6.c ist
im Anhang. Ist das ein Bug, der geforkt wird ? Sonst passe ich wohl
einfach alle meine Boards an, wenn das nicht mit einem git pull origin
in die Quere kommt...

@Justin: Ich nutze das, um regelmäßig oder aufgrund eines Eregnisses die
Messwerte am ADC und die PINzustände an meinen Hausbus zu übertagen. Da
habe ich eine http-Schnittstelle, wo ich im Prinzip alles im Haus
steuern kann. Watch-IO wollte einfach nicht, wenn die PINS auf Output
stehen.

P.S. Mich wundert es, dass ich im Netz Beispiele mit HTTPLOG finde:
http://wiki.volkszaehler.org/hardware/channels/sensors/1_wire

da steht dann HTTPLOG("<uuid>.json?value=%s", temp_str);

also doch mehr als 1 Parameter, wenn printf-Formatierungen genutzt werden ?

Jedenfalls super, dass es jetzt funzt !

Grüße,
Tom
Post by Michael Brakemeier
Hi,
@Tom: ändere doch bitte mal in Zeile 16 in control6/lang.d/50_httplog.m4
das `httplog_P($1)' in `httplog($1)' und versuche es nochmal. Und poste
doch bitte mal die aus dem control6 generierte C-Quelle.
VG michaelb
P.S.: das ist m4-Code - die unterschiedlichen Hochkommata müssen genau
so ;-)
Post by j***@justinotherguy.org
Hi Tom,
Post by Tom Weber
GET /pck?\001 HTTP/1.1\n
GET /pck?\001 HTTP/1.1\n
GET /pck?Kuckuck HTTP/1.1\n
kann es sein, dass irgendwie eine 2.Option nötig ist?
das klingt seltsam; ich bin nicht sicher, ob ich httplog via control6 je selbst verwendet habe.
Via watchasync und via ecmd klappt’s auf alle Fälle - mag sein, dass das in control6 ne Macke hat.
Was genau hast Du denn vor?
Gruß, J.
_______________________________________________
Ethersex-devel mailing list
http://list.zerties.org/cgi-bin/mailman/listinfo/ethersex-devel
Michael Brakemeier
2015-05-11 13:31:54 UTC
Permalink
Hi,

wenn du nur einen Parameter für HTTPLOG() nutzt, dann wird nach dem
Umwandeln in C die Funktion httplog_P() mit dem einen übergebenen und
nicht weiter malträtierten Parameter als Argument aufgerufen. Wird mehr
als ein Parameter übergeben, dann wird httplog_P() aber mit dem ersten
Parameter in einem PSTR()-Makro aufgerufen und alle weiteren Parameter
direkt. Ohne PSTR() zeigt der Pointer auf die erste Zeichenkette auf
einem AVR aber irgendwo in das RAM, statt in das Flash, wo die
Zeichenketten für die *_P()-Funktionen erwartet werden.

Teste doch bitte nochmal ein HTTPLOG(PSTR("kuckuck")). Wenn das ohne
Problem funktioniert, dann die Form mit einem Parameter bitte so mit
PSTR() verwenden. Andernfalls bitte ein Issue im Github öffnen. Das ist
entweder ein Bug in der kaum bis gar nicht vorhandenen Doku, oder ein
Bug in dem M4-Code. Schauen wir mal... :-)

VG michaelb.
Post by Tom Weber
Moin,
@Michael: Jawoll, mit der Änderung lüppt es. Die erzeugte control6.c
ist im Anhang. Ist das ein Bug, der geforkt wird ? Sonst passe ich
wohl einfach alle meine Boards an, wenn das nicht mit einem git pull
origin in die Quere kommt...
@Justin: Ich nutze das, um regelmäßig oder aufgrund eines Eregnisses
die Messwerte am ADC und die PINzustände an meinen Hausbus zu
übertagen. Da habe ich eine http-Schnittstelle, wo ich im Prinzip
alles im Haus steuern kann. Watch-IO wollte einfach nicht, wenn die
PINS auf Output stehen.
http://wiki.volkszaehler.org/hardware/channels/sensors/1_wire
da steht dann HTTPLOG("<uuid>.json?value=%s", temp_str);
also doch mehr als 1 Parameter, wenn printf-Formatierungen genutzt werden ?
Jedenfalls super, dass es jetzt funzt !
Grüße,
Tom
Post by Michael Brakemeier
Hi,
@Tom: ändere doch bitte mal in Zeile 16 in control6/lang.d/50_httplog.m4
das `httplog_P($1)' in `httplog($1)' und versuche es nochmal. Und poste
doch bitte mal die aus dem control6 generierte C-Quelle.
VG michaelb
P.S.: das ist m4-Code - die unterschiedlichen Hochkommata müssen genau
so ;-)
Post by j***@justinotherguy.org
Hi Tom,
Post by Tom Weber
GET /pck?\001 HTTP/1.1\n
dabei scheint es ziemlich egal zu sein, welchen String ich da
GET /pck?\001 HTTP/1.1\n
aus purer Verzweiflung habe ich jetzt ein
GET /pck?Kuckuck HTTP/1.1\n
kann es sein, dass irgendwie eine 2.Option nötig ist?
das klingt seltsam; ich bin nicht sicher, ob ich httplog via
control6 je selbst verwendet habe.
Via watchasync und via ecmd klappt’s auf alle Fälle - mag sein, dass
das in control6 ne Macke hat.
Was genau hast Du denn vor?
Gruß, J.
_______________________________________________
Ethersex-devel mailing list
http://list.zerties.org/cgi-bin/mailman/listinfo/ethersex-devel
_______________________________________________
Ethersex-devel mailing list
http://list.zerties.org/cgi-bin/mailman/listinfo/ethersex-devel
--
Michael Brakemeier
***@brakemeier.de
Loading...