Bin neu hier und hab gleich mal eine Frage.
Ich möchte im ersten Ausbauschritt 30 Werte von meinem Arduino Mega 2560 mit Ethernet Shield2 an meinen Raspberry Pi 3 mir FHEM senden.
Mit dem Arduino hab ich schon Grundkenntnisse mit FHEM bin ich noch absoluter Anfänger.
Ich suche noch eine einfache Möglichkeit wie ich die Werte sende und Empfange.
Habe leider keine Anleitung oder Beispiele gesehen wie es geht.
FIRMATA oder ähnliches möchte ich nicht nehmen weil auf dem Arduino auch noch Steuerungsaufgaben laufen sollen.
FHEM soll erst mal nur für die Visualisierung und Trendaufzeichnung sein.
Ich weiß das mir hier niemand die Fertige Lösung geben kann aber wäre froh über ein Beispiel oder eine Anleitung wie die Kommunikation funktioniert.
Vielen Dank im Voraus
Markus
Hallo,
hast Du die Möglichkeit, deinen Arduino über Netzwerk HTTP senden zu lassen ? z.B.
HTTP://IP:8083/fhem?cmd=setreading%20DEINDEVICE%20state%20DEINWERT
dann kannst Du DEINDEVICE als Dummy anlegen und mit DEINWERT als Inhalt befeuern... Dann also 30 Devices anlegen und regelmäßig einschreiben lassen...
Wäre so eine Idee, wenn man Firmata nicht nehmen will...
Grüße
Christian
schau dir mal das KeyValueProtokoll an.
gruss
andre
Zitat von: cs-online am 14 März 2016, 12:28:44
Hallo,
hast Du die Möglichkeit, deinen Arduino über Netzwerk HTTP senden zu lassen ? z.B.
HTTP://IP:8083/fhem?cmd=setreading%20DEINDEVICE%20state%20DEINWERT
dann kannst Du DEINDEVICE als Dummy anlegen und mit DEINWERT als Inhalt befeuern... Dann also 30 Devices anlegen und regelmäßig einschreiben lassen...
Wäre so eine Idee, wenn man Firmata nicht nehmen will...
Grüße
Christian
Also inzwischen kann ich die Daten an FHEM senden. Habe aber glaub noch ein Fehler im Datenaufbau.
Zitat
BUF
HTTP://192.168.2.40:8083/fhem?cmd=setreading%20AHM_T01%20state%20DEINWERT HTTP://192.168.2.40:8083/fhem?cmd=setreading%20AHM_T01%20state%20DEINWERT HTTP://192.168.2.40:8083/fhem?cmd=setreading%20AHM_T01%20state%20DEINWERT
FD
5
NAME
WEB_192.168.2.41_1025
NR
80
PEER
192.168.2.41
PORT
1025
SNAME
WEB
SSL
STATE
Connected
TEMPORARY
1
TYPE
FHEMWEB
Sende wohl doch zu viel an FHEM.
Hier noch das aktuelle Arduino Programm
#include <Ethernet2.h>
#include <SPI.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 2, 41 };
byte server[] = { 192, 168, 2, 40 }; // Google
EthernetClient client;
void setup()
{
Ethernet.begin(mac, ip);
Serial.begin(9600);
delay(1000);
Serial.println("connecting...");
if (client.connect(server, 8083)) {
Serial.println("connected");
//client.println("GET /search?q=arduino HTTP/1.0");
//client.println();
//client.println("HTTP://IP:8083/fhem?cmd=setreading%20AHM_T01%20state%20DEINWERT");
} else {
Serial.println("connection failed");
}
}
void loop()
{
if (client.available()) {
Serial.println("==servver ist da");
char c = client.read();
Serial.print(c);
}
if (!client.connected()) {
Serial.println();
Serial.println("disconnecting.");
client.stop();
for(;;)
;
}
client.println("HTTP://192.168.2.40:8083/fhem?cmd=setreading%20AHM_T01%20state%20DEINWERT");
Serial.println("HTTP://192.168.2.40:8083/fhem?cmd=setreading%20AHM_T01%20state%20DEINWERT");
Serial.println("====weitere Runde");
delay(10000);
}
Markus
wenn du wirklich den HTTP weg gehst solltest du &XHR=1 nicht vergessen sonst sendet fhem jedes mal eine web seite als antwort.
ansonsten schau dir noch mal das vorgeschlagene KeyValueProtocol an. damit ist die arduino und die fhem seite besser getrennt und du bekommst auch keine probleme wenn du z.b. die devices auf fhem seite umbenennst. das ganze funktioniert auch transparent seriell oder übers netz.
gruss
andre
Habe ich das mit dem KeyValueProtocol richtig verstanden? (Hab wohl noch einen Fehler drin)
Übertragung per Netzwerk
"OK VALUES TEST 01=22"
und in FHEM
define TEST KeyValueProtocol <Type> 01
über <Type> habe ich noch nichts gefunden.
Sollten erstmal nur Temperatur, Luftfeuchte und Prozentwerte übertragen werden.
MFG
Markus
was dein sketch senden muss ist:OK VALUES <type> <id> <key1>=<value1>,<key2>=<value2>,...
<type> ist der device typ deines sensors. kannst du dir ausdenken
<id> ist eine eindeutige sensor id um mehrere sensoren zu unterscheiden
in fhem legst du ein JeeLink device an. entweder als serielles device oder als netzwerk device. die KeyValueProtokoll devices für die einzelnen sensoren werden automatisch angelegt wenn du autocreate aktiv hast. fhem baut die verbindung auf und wartet auf die werte.
beispiele für die arduino seite findest du im lacrosse gateway und im davis sketch.
gruss
andre