Arduino FHEM Library

Begonnen von kingmathers, 04 Dezember 2018, 20:10:04

Vorheriges Thema - Nächstes Thema

Esjay

Nummer 1
copy&paste Fehler

Nummer 2
Funktioniert, jedoch wird hier ha result überschrieben wenn ich das richtig sehe.

Nummer 3
Wirft testtest 45 aus.

Ich denke wir kommen der Sache näher. Nach meinem Verständnis müsste "result" also 1 Zeichen mehr enthalten als "Test"

Grüße

kingmathers

Genau, dann probier mal folgendes:

result = _fhem.LoadFromServer("{MowerControl()}");
result.remove(result.length() - 1,  1);
Raspberry Pi B+, FS20, 1-Wire, HM
FHEM Home Control (App für Windows 10): https://forum.fhem.de/index.php/topic,49891.0.html
FHEM Arduino Library: https://forum.fhem.de/index.php/topic,94093.0.html

Esjay

#17
Zitat von: kingmathers am 17 Oktober 2019, 22:13:38
Genau, dann probier mal folgendes:

result = _fhem.LoadFromServer("{MowerControl()}");
result.remove(result.length() - 1,  1);


Sehr cool,
folgendes wird Ausgegeben.

testtest44Hallo

Würde sagen: Mission complete   :D
Vielen vielen Dank!!

Edit:
Aufgrund der Formatierung im Serial Monitor würde ich auf einen Zeilenumbruch tippen. Das ist mir jetzt gerade erst aufgefallen.

postman

#18
Hallo zusammen,
ich versuche gerade mit der FHEM.h abfragen zum FHEM zu senden.
Mit diesem Code (IP-Adresse und Zugangsdaten natürlich angepasst ;))
#include <FHEM.h>

FHEM fhemclient("http://192.168.1.1:8083/fhem", "user", "Passwort");

void loop(){

fhemclient.LoadFromServer("set licht on");

}


funktioniert nicht einmal das Kompilieren.
Es kommt sofort diese Fehlermeldung:
Arduino: 1.8.6 (Windows XP), Board: "Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)"

In file included from C:\Dokumente und Einstellungen\user\Eigene Dateien\Arduino\Fhemtest\Fhemtest.ino:1:0:

C:\Dokumente und Einstellungen\user\Eigene Dateien\Arduino\libraries\FHEM\src/FHEM.h:11:24: fatal error: HTTPClient.h: No such file or directory

compilation terminated.

exit status 1
Fehler beim Kompilieren für das Board Arduino/Genuino Mega or Mega 2560.



Weiss jemand, woran das liegt.?
Raspberry Pi Version 2 QUAD-CORE CPU und 1 GB RAM, CUL V3 868 MHz,  stapelbarer CC1101 (SCC) 433 MHz, Enocean-Stick,Jeelink-Stick, BSB-Lanadapter

Spruch eines Ausbilders: Theorie ist, wenn man alles weiss und nichts funktioniert; Praxis ist, wenn alles funktioniert und keiner weiss warum...

kingmathers

Hallo,

das hatte ich leider nicht erwähnt aber man benötigt auch den HTTPClient (meine Library greift darauf zu).

Ist bei mir (Arduino/ESP8266) vorinstalliert, Ansonsten z.B. hier erhältlich: https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266HTTPClient

Klappt es damit?
Raspberry Pi B+, FS20, 1-Wire, HM
FHEM Home Control (App für Windows 10): https://forum.fhem.de/index.php/topic,49891.0.html
FHEM Arduino Library: https://forum.fhem.de/index.php/topic,94093.0.html

postman

Hallo kingmathers,
ich habe wohl vergessen beizuschreiben, dass ich nur ein Ethernetshield (LAN) auf dem Arduino habe.
Ich habe versucht, die entsprechende Lib zu installieren. Leider ohne Erfolg.
Ich muss mir wohl erst ein WiFi-Modul besorgen, damit es funktioniert.
Leider läßt sich  https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266HTTPClient
die Lib nicht herunterladen. Unter dem Menüpunkt Bibliothen verwalten läßt sie sich leider auch nicht installieren.

Gruß Uwe
Raspberry Pi Version 2 QUAD-CORE CPU und 1 GB RAM, CUL V3 868 MHz,  stapelbarer CC1101 (SCC) 433 MHz, Enocean-Stick,Jeelink-Stick, BSB-Lanadapter

Spruch eines Ausbilders: Theorie ist, wenn man alles weiss und nichts funktioniert; Praxis ist, wenn alles funktioniert und keiner weiss warum...

RappaSan

https://github.com/esp8266/Arduino
Dort kann man sich alles komplett herunterladen... :)

postman

Hallo zusammen,
Es funktioniert nicht; anscheinend geht das nur mit verbautem WiFi ESP8266 Modul.
Ich bekomme das zwar, wie im Github beschrieben installiert.
Aber ohne Wifi läuft das Kompelieren weiterhin auf Fehler.  :-[
Gruß
Raspberry Pi Version 2 QUAD-CORE CPU und 1 GB RAM, CUL V3 868 MHz,  stapelbarer CC1101 (SCC) 433 MHz, Enocean-Stick,Jeelink-Stick, BSB-Lanadapter

Spruch eines Ausbilders: Theorie ist, wenn man alles weiss und nichts funktioniert; Praxis ist, wenn alles funktioniert und keiner weiss warum...

hauwech

Hallo zusammen,
ich experimentiere seit ein paar Tagen mit einem NodeMCU Amica, der hat einen ESP8266 drauf. Mein Ziel ist, Arduino-Komponenten (Displays, Sensoren, Taster ...) mit fhem zu verbinden. Deine Arduino-Bibliothek scheint die geeignete Brücke zu sein. Allerdings beschränken sich meine Arduino Kenntnisse noch auf Beispiele-probieren-und-freuen-wenns-geht.
Ich habe nun Deine Lib in der Arduino.cc IDE installiert. Den ESP8266HTTPClient habe ich auch nach ..\libraries kopiert.
Mir ist nicht klar, wo und wie die WLAN Verbindung initiiert werden sollte und wo meine WLAN Zugangsdaten konfiguriert werden müssten.
Ich habe daher jetzt in meinem fhem-sketch die WLAN Connection drumherum gebaut (mit <ESP8266WiFi.h>), die WLAN-Verbindung funktioniert.

Ausgabe Serial Monitor:

4:21:44.026 -> Connecting to meinWLAN
14:21:44.607 -> .......
14:21:48.402 -> WiFi connected
14:21:48.402 -> IP address:
14:21:48.402 -> 192.x.x.x
14:21:48.402 -> sending data to server



#include <FHEM.h>;
#include <ESP8266WiFi.h>

#ifndef STASSID
#define STASSID "meinWLAN"
#define STAPSK  "meinPW"
#endif

const char* ssid     = STASSID;
const char* password = STAPSK;
const char* host = "192.x.x.x";
const uint16_t port = x;

FHEM _fhem("https://192.x.x.x:x/fhem", "fhemuser", "fhemPW"); //if you use Basic Auth

void setup()
{
  Serial.begin(115200);
  Serial.println("fhem Test Start");
  Serial.print("Connecting to ");
  Serial.println(ssid);
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());

  WiFiClient client;
  if (!client.connect(host, port))
  {
    Serial.println("connection failed");
    delay(5000);
    return;
  }

  Serial.println("sending data to server");
  if (client.connected())
  {
    _fhem.LoadFromServer("set BS_SW_02 on");
  }
}

void loop()
{
  String res = _fhem.LoadFromServer("{Test}");
  Serial.println(res);
  delay(5000);
}


Meine fhem-WEB-Instanz steht auf "basic auth", aber ich habe das Attribut HTTPS=1 gesetzt, und die Arduino-fhem-Instanz entsprechend mit "(https://..., "user", "passwort")" initialisiert. Eine Test-sub mit einem return-Wert habe ich auch angelegt.
sub Test
{
  my $response = Value("BS_SW_02");
  $response = "Schalter Status: " . $response;
  return $response;
}


Es kommt aber keine Kommunikation mit fhem zustande.
Bin ich überhaupt auf dem richtigen Weg? Wo könnte es klemmen?

Gruß Roland
Fhem auf Intel NUC11TNKi5+M2 NVMe+32GB RAM mit Ubuntu 22.04 LTS

kingmathers

Hallo Roland,

die Library unterstützt leider HTTPS nicht. HTTPS erfordet ja das einlesen des root Zertifikats um das vom Server bereitgestellt Zertifikat zu authentizieren, das konnte ich leider mit dem ESP8266HTTPClient nicht realisieren.

Ich habe es bei mir so gelöst, dass mein Arduino immer die gleiche IP von der Fritzbox erhält und in FHEM eine WEB-Instanz ohne HTTPS nur für diese IP und den entsprechenden Port offen ist. Ist zwar nicht optimal, aber das war der einzige Weg, den ich gefunden habe.

Hoffe das hilft.

Grüße,
Philipp
Raspberry Pi B+, FS20, 1-Wire, HM
FHEM Home Control (App für Windows 10): https://forum.fhem.de/index.php/topic,49891.0.html
FHEM Arduino Library: https://forum.fhem.de/index.php/topic,94093.0.html

hauwech

Hallo Philipp,
danke, das hilft. Ich werde heute abend mal eine extra Webinstanz in fhem anlegen, dann kann ich weiter experimentieren.

Gruß Roland
Fhem auf Intel NUC11TNKi5+M2 NVMe+32GB RAM mit Ubuntu 22.04 LTS

Persuasiv

Hallo Philipp,

mit welchem Command kann ich das Reading "odo" des devices "213" abfragen? Auf der Konsole kann ich mir den Wert mit

list S213 odo

anzeigen lassen. Bei nachfolgendem Minimalbeispiel übernimmt er das Reading aber nicht.

#include "ESP8266WiFi.h"
#include <FHEM.h>
FHEM fhemclient("http://192.168.2.107:8083/fhem");

void setup(void)
  {
    Serial.begin(9600);
  }


void loop(void)
  {
    String result = fhemclient.LoadFromServer("{list S213 odo}");
    Serial.println(result);
    delay(5000);
  }


Besten Dank

MaxHolstein

Hallo zusammen,

Ich habe leider keinen Erfolg die Library auf einem Arduino MKR WiFi 1010 zum laufen zu bringen. Habe einige Libraries (HTTPclient, WiFiClientSecure) nachinstalliert, komme aber nicht weiter, es werden weitere fehlende Libraries gelistet.

Hat jemand diese Variante schon getestet? Oder könnte es sein, dass die Library mit dem MKR board überhaupt nicht läuft?

Schon mal vielen Dank für Feedback!
Vaillant VCI ohne Controller, RPI 3B+, eBus-Platine 1.6,
FHEM on MacOS, CUL_MAX, Max!-Thermostate

Persuasiv

Ich habe es inzwischen geschafft. Die Lösung steht im ersten Post. Man muss sich nur eigene Funktionen schreiben.

@MaxHolstein

Mit dem ESP8266 funktioniert es. Dein Board habe ich nicht getestet.

bigcheese

Hi,

versuche mich ebenfalls gerade an dem Touchdisplay mit der Anbindung an FHEM...
leider bekomme ich folgende Fehlermeldung ... hat sich hier was im Hintergrund getan und wurde erneuert?
C:\Users\user\Documents\Arduino\libraries\FHEM\src\FHEM.cpp: In member function 'void FHEM::PrepareClient(String)':
C:\Users\user\Documents\Arduino\libraries\FHEM\src\FHEM.cpp:83:14: error: call to 'HTTPClient::begin' declared with attribute error: obsolete API, use ::begin(WiFiClient, url)
   83 |  client.begin(URL);
      |  ~~~~~~~~~~~~^~~~~
exit status 1


grüsse,
Bigcheese