FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: chesee am 02 März 2015, 23:41:51

Titel: [gelöst] Messwerte von LAN Sensor empfangen (ARDUINO-->LAN-->FHEM)
Beitrag von: chesee am 02 März 2015, 23:41:51
Das senden von Aufrufen an meinen Arduino via Gethttp habe ich nun erfolgreich getestet.

Nun möchte ich gern den umgekehten Weg gehen.
Ein Arduino soll als Client einen Messwert am FEHM Server ablegen.

Ich denke, ich brauch dazu ein Dummy Device mit einem Reading für den Messwert.
Ich konnte aber nicht finden, wie ich ein Reading anlege und wie ich den Wert übergeben bekomme.

Eine fertige Lösung erwarte ich nicht, sondern nur einen Tipp, wo ich weiter komme.  :-\
Titel: Antw:Messwerte von LAN Sensor empfangen (ARDUINO-->LAN-->FHEM)
Beitrag von: schka17 am 03 März 2015, 00:04:43
Mit  setreading kannst du readings anlegen und updaten


Sent from my iPad using Tapatalk
Titel: Antw:Messwerte von LAN Sensor empfangen (ARDUINO-->LAN-->FHEM)
Beitrag von: Wzut am 03 März 2015, 19:20:27
Zitat von: chesee am 02 März 2015, 23:41:51
Nun möchte ich gern den umgekehten Weg gehen.
Lege dir in FHEM zuerst einen Dummy an der einen Messwert bekommen soll. ( Bsp define MessDummy dummy )

dann schau dir mal von den Arduino Ethernet Beispielen den Sketch WebClient an.
Statt wie dort erwas bei Google zu holen schickst du den GET Request an deinen FHEM Server ( du tust dann so als ob du das Kommando direkt im Webinterface eingegeben hättest , die Syntax im Browser :
http://FHEM_IP:8083/fhem?cmd.MessDummy=set%20MessDummy%20Messwert
die andere Variante wäre mit dem Demo Sketch Telnet Client. Diesen etwas umbauen, d.h. Verbindung zum FHEM Server auf Port 7072 aufbauen und dann einfach mit print.client("set MessDummy Messwert\n");  den Messwert übertragen und Verbindung trennen.
Titel: Antw:Messwerte von LAN Sensor empfangen (ARDUINO-->LAN-->FHEM)
Beitrag von: chesee am 03 März 2015, 21:59:16
Danke für die Hilfe.
Die FHEM Referenz ist in manchen Punkten recht knapp gehalten.

Reading setzen und ändern funktioniert ohne Probleme
setreading MessDummy state off
setreading MessDummy state on

Hier noch eine Frage - Existieren für das Reading noch irgendwelche Konventionen oder kann ich das nennen wie ich will. Sowas wie Variablentypen existieren wohl auch nicht?

Eine Telnet Verbindung auf Port 7072 bekomme ich nicht auf. Da muss ich sicher noch was einrichten.

Das wichtigste für mich ist aber das Setzen des Messwertes über den Webaufruf.
http://192.168.1.4:8083/fhem?cmd.MessDummy=set%20MessDummy%20on bzw off funktioniert
Woher

wenn ich ein weiteres Reading anlege mit setreading MessDummy Messwert 123
dachte ich den Wert damit zu ändern
http://192.168.1.4:8083/fhem?cmd.MessDummy=set%20MessDummy%20Messwert%20456 oder
http://192.168.1.4:8083/fhem?cmd.MessDummy=set%20Messwert%20456
aber leider kommt immer
Unknown command http://192.168.1.4:8083/fhem?cmd.MessDummy=set%20MessDummy%20Messwert%20456, try help.

wie adressiere ich denn das richtige reading, wenn ich mehrere angelegt habe?
Titel: Antw:Messwerte von LAN Sensor empfangen (ARDUINO-->LAN-->FHEM)
Beitrag von: der-Lolo am 03 März 2015, 22:20:51
Dazu brauchst du setreading nicht set, set schreibt den state des Dummys.
also
Zitathttp://192.168.1.4:8083/fhem?cmd.MessDummy=setreading%20MessDummy%20Messwert%20456
sollte funktionieren.
Titel: Antw:Messwerte von LAN Sensor empfangen (ARDUINO-->LAN-->FHEM)
Beitrag von: chesee am 03 März 2015, 22:28:51
danke - funktioniert
Titel: Antw:[gelöst] Messwerte von LAN Sensor empfangen (ARDUINO-->LAN-->FHEM)
Beitrag von: Crawler am 18 März 2015, 12:18:23
Kannst mir vielleicht deinen Sketch zeigen? bin gerade an der gleichen Geschichte dran scheitere aber  :'(
// Demo using DHCP and DNS to perform a web client request.
// 2011-06-08 <jc@wippler.nl> http://opensource.org/licenses/mit-license.php

#include <EtherCard.h>

// ethernet interface mac address, must be unique on the LAN
static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 };

int strom = 2;
int watt = 1;
char *wattAsString;
   
byte Ethernet::buffer[700];
static uint32_t timer;

const char server[] PROGMEM = "192.168.178.1:8083";

// called when the client request is complete
static void my_callback (byte status, word off, word len) {
  Serial.println(">>>");
  Ethernet::buffer[off+300] = 0;
  Serial.print((const char*) Ethernet::buffer + off);
  Serial.println("...");
}

void setup () {
  pinMode(strom, INPUT);
  pinMode(gas, INPUT);
  Serial.begin(57600);
  Serial.println(F("\n[webClient]"));

  if (ether.begin(sizeof Ethernet::buffer, mymac) == 0)
    Serial.println(F("Failed to access Ethernet controller"));
  if (!ether.dhcpSetup())
    Serial.println(F("DHCP failed"));

  ether.printIp("IP:  ", ether.myip);
  ether.printIp("GW:  ", ether.gwip); 
  ether.printIp("DNS: ", ether.dnsip); 

  if (!ether.dnsLookup(server))
    Serial.println("DNS failed");
   
  ether.printIp("SRV: ", ether.hisip);
}

void loop () {
  ether.packetLoop(ether.packetReceive());
    if (millis() > timer) {
    timer = millis() + 5000;
    Serial.println(); 
    Serial.println("<<< REQ ");
    Serial.print("watt=");
    Serial.println(watt);
    itoa(watt, wattAsString, 10);
    Serial.print("wattAsString=");
    Serial.println(wattAsString);
    ether.browseUrl(PSTR("/fhem?cmd.watt=set%20watt%20"), wattAsString, server, my_callback);
    }
  if (digitalRead(strom) == HIGH) {
    watt = watt + 1;
  }
}

Das Problem ist es wird kein Wert in fhem geändert und über den Seriellen Monitor bekomme ich nach dem ersten Aufruf von browseURL einen negativen 5 stelligen Wert in der Variable watt und eine Endlosschleife.
Titel: Antw:[gelöst] Messwerte von LAN Sensor empfangen (ARDUINO-->LAN-->FHEM)
Beitrag von: Totte10 am 26 April 2015, 17:16:38
Hallo,

könnte jemand für mich seinen funktionieren Code einmal posten.
Ich bin auch sehr an der Lösung interessiert.

beste Grüße

Thorsten