Projekt: Raum(-luft)sensor (Temp, Hum, Co2, VOC, LUX)

Begonnen von herrmannj, 21 Januar 2019, 00:24:44

Vorheriges Thema - Nächstes Thema

herrmannj

Foto von oben, wobei im Gehäuse natürlich Änderungen drin sind wegen der Front...

juergs

#61
Hallo Jörg,

eine statische Anzeige erscheint schon, der iAQ konnte auch ausgelesen werden.
Allerdings fehlt noch der DHT22 und der MZ-19...

*WM: AutoConnect
*WM: Connecting as wifi client...
*WM: Custom STA IP/GW/Subnet
*WM: (IP unset)
*WM: Using last saved values, should be faster
*WM: Connection result:
*WM: 3
*WM: IP Address:
*WM: 192.168.xxx.yyy
*WM: freeing allocated params!

Danach kommen nur println.....
Die IP ist im Adressraum vorhanden. Im Log und Eventmonitor kommt nichts an ...
Die Anzeige im OLED-Display bleibt statisch.
Dann füge ich noch ein DHT22 hinzu ... und der MZ-19 fehlt noch...
DHT zeigt 24.9°C und  1.0 % rH an ...

Gehe mal davon aus, dass fhem den Sensor abfragt ?
Kann ich manuell mit einer URL eine Abfrage initiieren?

.. vertagt...


herrmannj

Das kann ja nun alles sein.

Der Sensor muss ins Netzt genommen werden, dafür macht er ein eigenes Netz auf. Das sieht bei Dir ok aus.

Im wireshark sieht man auch das es Kommunikation gibt, mcast Adresse und port sind ok. Allerdings sind 2bytes als payload viel zu wenig, ich kann nur vermuten das da bei den Anpassungen am sketch was schiefgegangen ist. Evtl müsstest Du dort einige Serial.println einbauen um auf dem seriellen Monitor zu sehen was los ist.

Ich würde vielleicht anfangen einen in die loop zu setzen um zu sehen ob die durchläuft.

Das senden der msg ist recht geradlinig:
#349 wird getIaqReadings aufgerufen, das liegt ab#206
Die DEBUG_PRINT ausgaben funktionieren nicht (vmtl wird das in eienr der libs überschrieben). Da solltest Du also DEBUG_PRINT gegen serial.print austauschen (Ausgabe i2c error etc)
# 222 wäre das update fürs display
# 223 würden die eco2 und tvoc Werte in einen Puffer geschrieben.

Die Loop schaut dann ob was im Puffer steht, sendet das und löscht den.

Stell ausserdem mal das slink device auf verbose 5. Beim Start sollte dann im log stehen "SLink Service received from ...." mit der IP von fhem (nicht 127.0.0.1) - das ist eine Art selbst test - SLink schickt siuch selber eien msg.

#193 im Slink ist jetzt auskommentiert, den könntest Du nochmal reinnehmen. Dann siehst Du Nachrichten die reinkommen aber ein falsches Format haben (weil Du ja 2bytes payload hattest)

Steht denn überhaupt was im log ? Sowas sollte beim Start des Sensors drinstehen
sensor DA8333 (192.168.178.30) start, reason External System

vg
Joerg


herrmannj

#63
Dass da 125 steht bedeutet nicht das der IAQ ausgelesen wurde. Das Display startet immer mit 125 ...

Nachtrag:)
Nein, der Sensor wird nicht abgefragt sondern sendet selbst periodisch (aktuell: co2, voc, temp 10sec, bri 1sec)

vg
Joerg

Starsurfer

Ich habe mir gerade mal die ganzen Bibliotheken in der Arduino IDE installiert und die Dateien runtergeladen.
Bekomme aber bei der Überprüfung folgende Fehlermeldung:

fatal error: BearSSLHelpers.h: No such file or directory

#include <BearSSLHelpers.h>


Bin mir ziemlich sicher, das ich alle Libarys installiert habe.
FHEM Server: Fujitsu Esprimo q920 + LaCrosseGateway + HM-MOD-RPI-PCB WLAN + ConBee
HomeMatic HM-CC-RT-DN - Sonoff Tasmota
LaCrosse TX29DTH - Innr SP120 - Osram Smart+ Plug
Arduino Mega - MQTT - Pluggit 300
https://www.diy-robot-lawn-mower.com

herrmannj

die wurde bei mir automatisch installiert. Esp8266Wifi hat die installiert. Benötigt man aber nicht. Wir machen nix mit ssl

Ich versuche später mal die libs sauber aufzulisten, sollte aber mit ein wenig probieren auch so funktionieren


Starsurfer

Ok :-)
Normalerweise sollte doch aber
#include <ESP8266WiFi.h>
reichen?
FHEM Server: Fujitsu Esprimo q920 + LaCrosseGateway + HM-MOD-RPI-PCB WLAN + ConBee
HomeMatic HM-CC-RT-DN - Sonoff Tasmota
LaCrosse TX29DTH - Innr SP120 - Osram Smart+ Plug
Arduino Mega - MQTT - Pluggit 300
https://www.diy-robot-lawn-mower.com

juergs

#67
Zitatfatal error: BearSSLHelpers.h: No such file or directory

Das kommt, wenn man die Lib nicht richtig installiert. (Hatte ich auch).
Es geht nur, wenn man die  Esp8266Wifi gemäß den Angaben in github richtig installiert.
In preferences.txt https://arduino-esp8266.readthedocs.io/en/latest/installing.html#boards-manager die die Vorgabe-Url einträgt und dann im LibraryManager die Lib ESP8266Wifi installiert.
Dann passen die Libs und Tools. nur die Libs ins Lib-Verzeichnis kopieren erzeugt obige Fehlermeldung.

Grüße,
Jürgen

Starsurfer

Jep danke, hat funktioniert, kompiliert jetzt ohne Fehlermeldung bis auf:

DHT_sensor_library/DHT.h:27:0: warning: "DEBUG_PRINT" redefined [enabled by default]

   #define DEBUG_PRINT(...) {}


Sollte sich aber ja erledigt haben, wenn der DHT nicht verwendet wird.
FHEM Server: Fujitsu Esprimo q920 + LaCrosseGateway + HM-MOD-RPI-PCB WLAN + ConBee
HomeMatic HM-CC-RT-DN - Sonoff Tasmota
LaCrosse TX29DTH - Innr SP120 - Osram Smart+ Plug
Arduino Mega - MQTT - Pluggit 300
https://www.diy-robot-lawn-mower.com

juergs


herrmannj

Hallo Jürgen,

ich weiß nicht ob das eine Frage ist.

Ja, das ist die Multicastadresse, port ist 2085

So können sich die Sensoren und auch mehrere FHEM im gleichen Netzwerk finden ohne das etwas konfiguriert werden muss. Das Protokoll ist Text, ich verwende das auch für andere Sensoren.

vg
Joerg

juergs

#71
Hallo Jörg,
nein, war eher eine Feststellung, da mir die IP-Adresse zuerst unbekannt, bzw. suspekt vor kam.
Es ist nicht jeder intensiv auf UDP (SLPv2)  unterwegs  ;)

Hatte gestern keine Zeit mehr, besser zu testen.

ZitatAllerdings sind 2bytes als payload viel zu wenig...

Kann es sein, dass die Auskommentierung rein gehört?

void prepareMessage(char* payload ) {
  //sprintf(message, "T:IAQC;FW:1.0;ID:%06X;IP:%s;R:%ld;%s", ESP.getChipId(), WiFi.localIP().toString().c_str(), WiFi.RSSI(), payload);
  Serial.println(message);
};


Das würde auch die leeren println erklären ...

Ok, aber FHEM bekommt immer noch nichts mit, trotz verbose 5 ...

Mia culpa, hatte die Dateien noch nicht auf die Gruppe "dialout" gesetzt.
8,0K -rw-r--r--  1 fhem dialout 4,4K Jan 24 15:29 10_SLinkIAQ.pm
8,0K -rw-r--r--  1 fhem dialout 5,3K Jan 24 15:29 10_SLinkS0.pm
8,0K -rw-r--r--  1 fhem dialout 4,3K Jan 24 15:29 10_SLinkTH.pm


Ein Ping auf die IP des ESP geht, aber empfangen  wird leider noch nichts.

Serial-Output:
MH-Z19 msg:T:IAQC;FW:1.0;ID:FAF074;IP:192.168.xxx.yyy;R:-55;F:BR;B:110;
T:IAQC;FW:1.0;ID:FAF074;IP:192.168.xxx.yyy;R:-55;F:TH_A;T:24.4;H:1.0;
Temp Hum msg:T:IAQC;FW:1.0;ID:FAF074;IP:192.168.xxx.yyy;R:-55;F:TH_A;T:24.4;H:1.0;
T:IAQC;FW:1.0;ID:FAF074;IP:192.168.xxx.yyy;R:-55;F:BR;B:108;



Teile des Telegramms:
^ÿúþ4úðtEXmVPÀ¨²5ïÿÿú%%D¤hT:IAQC;FW:1.0;ID:FAF074;IP:192.168.xxx.yyy;R:-56;F:BR;B:93;
^ÿúþ4úðtEXnVOÀ¨²5ïÿÿú%%DiT:IAQC;FW:1.0;ID:FAF074;IP:192.168.xxx.yyy;R:-56;F:BR;B:89;


ZitatStell ausserdem mal das slink device auf verbose 5. Beim Start sollte dann im log stehen "SLink Service received from ...." mit der IP von fhem (nicht 127.0.0.1) - das ist eine Art selbst test - SLink schickt sich selbst eine msg.
#193 im Slink ist jetzt auskommentiert, den könntest Du nochmal reinnehmen. Dann siehst Du Nachrichten die reinkommen aber ein falsches Format haben (weil Du ja 2bytes payload hattest)
Steht denn überhaupt was im log ? Sowas sollte beim Start des Sensors drinstehen
sensor DA8333 (192.168.178.30) start, reason External System

Nein ... :'(

Das list:
Internals:
   CFGFN     
   DEF        192.168.xxx.yyy
   NAME       slink
   NOTIFYDEV  global
   NR         145
   NTFY_ORDER 50-slink
   STATE      ???
   TYPE       SLink
   helper:
     mcaddr     ���5
Attributes:
   verbose    5


/edit: iAQ zeigt verschiedene VOC - Werte an 126...127.

Grüße,
Jürgen

herrmannj

Hallo Jürgen,

das ist so richtig. Serial.println kann man zum debuggen reinnehmen.
void prepareMessage(char* payload ) {
  sprintf(message, "T:IAQC;FW:1.0;ID:%06X;IP:%s;R:%ld;%s", ESP.getChipId(), WiFi.localIP().toString().c_str(), WiFi.RSSI(), payload);
  Serial.println(message);
};

Die Nachrichten sind, soweit ich das sehe, richtig. Dies ist eine komplette Nachrichtig für Helligkeit 108:
T:IAQC;FW:1.0;ID:FAF074;IP:192.168.xxx.yyy;R:-55;F:BR;B:108;
Hast Du das Slink device sicher mit der IP des fhem servers (nicht sensor etc) erstellt ? Also wenn dein fhem Server zb 192.168.178.30 hat dann würde eine definition so lauten:
define slink slink 192.168.178.30

Die Zeile 177in SLink.pm lautet aktuell so:
Log3 ($shash->{PARENT}, 5 , sprintf("SLink Service received from %s:%s packet %s", $herstraddr, $port, $msg));
Magst Du die einmal ändern auf

Log3 ($shash->{PARENT}, 0 , sprintf("SLink Service received from %s:%s packet %s", $herstraddr, $port, $msg));

und dann fhem komplett neu starten ?

Im log erwarte ich dann auf alle Fälle die Eigenmeldung: "T:SLink;FW:1.0;ID:$uniqueID;IP:0;R:0;F:SERVICE;START:Startup;\n"

Irgendwelche besonderheiten bei Deinem fhem ? OS, Docker etc ?

vg
Joerg



juergs

#73
Hallo Jörg,

ah! Zwei Dinge:
ZitatHast Du das Slink device sicher mit der IP des fhem servers (nicht sensor etc) erstellt ? Also wenn dein fhem Server zb 192.168.178.30 hat dann würde eine definition so lauten:
Code: [Auswählen]
define slink slink 192.168.178.30
Nein, dachte die des Sensors !

Achtung:
Zitatsprintf(message, "T:IAQC;FW:1.0;ID:%06X;IP:%s;R:%ld;%s", ESP.getChipId(), WiFi.localIP().toString().c_str(), WiFi.RSSI(), payload);
ist bei Dir im Github-Code auskommentiert !!!!

ZitatIrgendwelche besonderheiten bei Deinem fhem ? OS, Docker etc ?
Nein Raspi3B+, Standard Installation.

Komischerweise kommt nicht die Start-Meldung des SLink-Devices im Logfile, trotz verbose 5.

Dann auf ein Neues ...  ;)
Danke!

Jürgen



herrmannj

#74
Zitatist bei Dir im Github-Code auskommentiert !!!!
grmpf... Danke! Korrigiert
ZitatNein, dachte die des Sensors !
Das würde das ausbleiben der Eigenmeldung erklären

Alles andere sah bei Dir gut aus. Du hast auch den Aufbau der Meldungen gesehen, so kann man ganz einfach auch andere Funktionen (oder ganz andere Sensor typen) erstellen.