Neues Modul: ESPEasy [war: ESPEasy ohne MQTT]

Begonnen von dev0, 18 Juli 2016, 11:53:28

Vorheriges Thema - Nächstes Thema

PeMue

RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

dev0


dev0

Zitat von: Mick59 am 15 August 2016, 18:42:25
Allerdings bin ich am Switch input verzweifelt es wurde einfach nichts übertragen.  Es muß wohl ein Fehler im Plugin C_009 sein.
Der Fix wurde in ESPEasy R122 aufgenommen.

Mick59


oli82

#79
Bin nun auch endlich dazu gekommen meinen SonOff mit ESPEasy und dem Fhem Modul einzubinden.
Nun meine Frage zum Modul.
Kann ich auch direkt im Fhem Device auf die Werte der Sensoren zurück greifen?
Habe einen DHT11 angebunden und die gemessenen Werte würde ich gerne direkt in dem Device als Reading haben.
Danke für die Hilfe

dev0


oli82

Schlimm, wenn man die Frage falsch formuliert...
Nächster Versuch: Wie? ;)
Danke!

dev0

Schlimm, wenn man auf die konkrete Fragestellung antwortet...
- Für die aktuelle Version ist es hier beschrieben: https://forum.fhem.de/index.php/topic,55728.msg481087.html#msg481087 und in der Command ref.
- Für die alte Version (die ich bald entfernen werde) muß du den Namen des ESP so wählen, dass er dem FHEM Device entspricht, dass die Daten erhalten soll. Der Plugin Port muss ein FHEMWEB Port sein. Debuggen kannst Du die alte Version mit:

attr <FHEMWEB> verbose 5

oli82

Danke für den Link und die Infos.
Schlimm war an deiner Antwort ja nichts. Hast ja genau das gemacht, wonach ich gefragt habe ;)

SusisStrolch

Hätte da mal ein Problemchen...
Ich habe an meinem Sensor-Board 5x DS18B20 angebunden (alle am GPIO13).
Im ESPEasy-GUI (R120) habe ich die Sensoren konfiguriert:

Task Device Name IDX Port Value
1 DS18B20 DS18B20_00001D 1 28-f4-16-dd-06-00-00-1d 1.25
2 DS18B20 DS18B20_0000E4 2 28-22-0f-dd-06-00-00-e4 0.88
3 DS18B20 DS18B20_0000DA 3 28-e6-ac-dd-06-00-00-da 1.19
4 DS18B20 DS18B20_00009F 4 28-b3-62-dd-06-00-00-9f 0.81
5 DS18B20 DS18B20_0000C2 5 28-cf-25-dd-06-00-00-c2 0.75

(hängen grad zum Kalibrieren im Eisbad...)
Send Data ist bei allen Sensoren aktiviert.
Die unterschiedlichen IDs sowie Temperaturen sind im ESPEasy GUI sichtbar - so weit, so gut.

Mein Bridge-Device ist ebenfalls aufgesetzt. Autocreate ist aktiviert.
Ein Device wurde angelegt:
fhem> list ESPEasy_ESP_Proto_4MB
Internals:
   CFGFN     
   DEF        192.168.254.122 80 ESPbridge ESP_Proto_4MB
   ESPbridge_MSGCNT 109
   ESPbridge_TIME 2016-08-19 11:10:17
   HOST       192.168.254.122
   IDENT      ESP_Proto_4MB
   IODev      ESPbridge
   LASTInputDev ESPbridge
   MSGCNT     109
   NAME       ESPEasy_ESP_Proto_4MB
   NR         180
   PORT       80
   STATE      opened
   SUBTYPE    device
   TYPE       ESPEasy
   VERSION    0.2.5
   Helper:
     Dblog:
       Temperature:
         Logdb:
           TIME       1471597817.62393
           VALUE      0.75
       Presence:
         Logdb:
           TIME       1471597809.62333
           VALUE      present
       State:
         Logdb:
           TIME       1471596593.61714
           VALUE      opened
   Readings:
     2016-08-19 11:10:17   Temperature     0.75
     2016-08-19 11:10:09   presence        present
     2016-08-19 10:49:53   state           opened
   Helper:
     urlcmd     /control?cmd=
Attributes:
   IODev      ESPbridge
   room       ESPEasy

Allerdings erhalte ich lediglich ein Reading "Temperature", ohne Rückschluss darauf, welcher Sensor nun gelesen wurde:

2016.08.19 11:16:22 4: Connection accepted from ESPbridge_192.168.254.122_27247
2016.08.19 11:16:22 5: ESPEasy ESPbridge: accepted tcp connect <= 192.168.254.122:27247
2016.08.19 11:16:22 5: ESPEasy ESPbridge: received raw message:
GET /fhem?cmd=setreading%20ESP_Proto_4MB%20Temperature%200.81 HTTP/1.1
Host: 192.168.254.20
Connection: close


2016.08.19 11:16:22 5: ESPEasy ESPbridge: Dumper $header:
$VAR1 = {
          'Host' => '192.168.254.20',
          'Connection' => 'close',
          'GET' => '/fhem?cmd=setreading%20ESP_Proto_4MB%20Temperature%200.81 HTTP/1.1'
        };

2016.08.19 11:16:22 4: ESPEasy ESPbridge: received cmd:setreading device:ESP_Proto_4MB reading:Temperature value:0.81
2016.08.19 11:16:22 5: ESPEasy ESPbridge: autocreate is enabled
2016.08.19 11:16:22 5: ESPbridge dispatch ESP_Proto_4MB:192.168.254.122:1:1:setreading|Temperature|0.81


Wie komme ich an die Temperaturen der Einzelsensoren?
Idealerweise entweder mit der Task-ID aus ESP-Easy oder aber mit dem Name, wie er in ESPEasy definiert ist.
Synology DS1515+, 16GB RAM, 4x 6TB WD-Red
- Docker (FHEM), MariaDB, MariaDB10, Surveillance Station
Gateways: LCG miniCUL433, LCG miniCUL868, AVR-X4000, VU-Solo SE, Kodi
ESP8266: ESPEasy (S0-Counter, Temp/Hum), Sonoff TH, Sonoff 4ch

dev0

Ich vermute, dass Deine Value Names (ESP GUI -> Devices -> Edit -> Optional Settings -> Value Name) für alle 5 DS12B20 gleich lauten (Temperature). Nenn die mal bitte unterschiedlich und schau mal was dann passiert.
z.Z. wird das FHEM Device noch aus dem ESP Namen generiert und die die Werte in einem Reading mit dem Namen des Value Names geschrieben. Das werde ich der nächsten Version ändern. Vermutlich wird es schon reichen, statt des ESP Namen den Device Namen zu verwenden, dann kann man durch steuern ob die Werte in einem oder in mehreren Devices laufen sollen. Innerhalb eines Devices müssen die Value Names dann natürlich unterschiedlich sein.
Den Port kann man nicht dafür nutzen, da er nicht bei allen ESP Devices vorhanden ist.

SusisStrolch

Prima! Das war's.
Ich bin irrtümlich davon ausgegangen, dass der ESPEasy Device Name als Reading verwendet wird.
Synology DS1515+, 16GB RAM, 4x 6TB WD-Red
- Docker (FHEM), MariaDB, MariaDB10, Surveillance Station
Gateways: LCG miniCUL433, LCG miniCUL868, AVR-X4000, VU-Solo SE, Kodi
ESP8266: ESPEasy (S0-Counter, Temp/Hum), Sonoff TH, Sonoff 4ch

amunra

Hallo dev0,
könntest Du Bitte bei Gelegenheit den BME280 in das ESPEasy Plugin (_C009.ino) aufnehmen (siehe Code weiter unten *getestet), dann werden die Werte auch korrekt an FHEM übermittelt. Danke.

          case SENSOR_TYPE_TEMP_HUM_BARO:                      // temp + hum + hum_stat + bar + bar_fore, used for BME280
  // setreading #1
  url += F("setreading%20");
  url += Settings.Name;
  url += F("%20");
  url += ExtraTaskSettings.TaskDeviceValueNames[0];
  url += F("%20");
  url += toString(UserVar[event->BaseVarIndex], ExtraTaskSettings.TaskDeviceValueDecimals[0]);
  // setreading #2
  url += F("%3B");
  url += F("setreading%20");
  url += Settings.Name;
  url += F("%20");
  url += ExtraTaskSettings.TaskDeviceValueNames[1];
  url += F("%20");
  url += toString(UserVar[event->BaseVarIndex + 1], ExtraTaskSettings.TaskDeviceValueDecimals[1]);
  // setreading #3
  url += F("%3B");
  url += "setreading%20";
  url += Settings.Name;
  url += F("%20");
  url += ExtraTaskSettings.TaskDeviceValueNames[2];
  url += F("%20");
  url += toString(UserVar[event->BaseVarIndex + 2], ExtraTaskSettings.TaskDeviceValueDecimals[2]);
  break;

amunra

Mit der neuen "_C009.ino" (Added JSON support) Version wird der Pressure-Wert des BME280's doppelt aufgeführt bzw. zweimal hintereinander- siehe auch Post von Gestern.
Der Grund ist die Zeile:
url += UserVar[event->BaseVarIndex + 2];
im Reading 3.
Wenn man die Zeile entfernt, dann wird der Wert richtig dargestellt.
Dies nur als Hinweis.

dev0

#89
Ich habe keine BME280 zum Testen. Das heisst, es funktionierte vorher auch schon, nur mit dem Fehler, das der Wert doppelt geschrieben wurde?