Go Down

Topic: Senden von Temperatur und Luftfeuchtigkeit mit Zigbee (Read 1 time) previous topic - next topic

adruinoboy

Die nutzt du ja erstmal nur um die Variablen zu füllen.
Danach werden die Inhalte der Variablen miteinander verglichen.

Kannst du mir da ein praktisches Beispiel zeigen?
Muss ich das händisch machen, oder erledigt das die for-Funktion für mich.
Ich weiß noch nicht, was du meinst.

HotSystems

Kannst du mir da ein praktisches Beispiel zeigen?
Hatte ich noch hinzugefügt.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

adruinoboy

Code: [Select]
   for (int i = 0; i < 5; i++)
    {
      sensorTemp[i] = dht.readTemperature();
      sensorHumi[i] = dht.readHumidity();
      delay(xx);
    }

Danke für das Beispiel. Ist sensorTemp ein Array? Oder ist das in meinem Fall das t bzw. f. Die sind bei mir floats.

adruinoboy

#78
Oct 13, 2020, 11:26 pm Last Edit: Oct 13, 2020, 11:26 pm by adruinoboy
Vielleicht habe ich was falsch gemacht, aber meine serielle Ausgabe der ersten 30 sek. sieht so aus:

Code: [Select]

0.00
0.00
19.90
70.80
0.00
0.00
20.00
71.20
0.00
0.00
20.00
71.10


Genau das, was ich nicht wollte. "t" und "f" sind beide 0,00.

HotSystems

Da hast du sicher etwas falsch übernommen.

Wie sieht denn der komplette Sketch jetzt aus ?
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

Peter-CAD-HST

Moin adruinoboy
Baue einen zweitem Datenempfänger auf. So kannst du über das Ausschlußverfahren feststellen welches Objekt nicht richtig arbeitet.
Gruß Peter
und gesund bleiben
KISS Q&D - keep calm and carry on - mind the gap - beware of sharks! -

adruinoboy

Mein gesamte Sketch des Empfängers sieht jetzt so aus:

Code: [Select]

#include <CmdMessenger.h> // Bibliothek zur Funk Verbindung
#include <Streaming.h>    // Bibliothek zur Funk Verbindung
#include <SoftwareSerial.h>
#include "DHT.h"               // DHT Bibliothek laden

#define DHTPIN 2        // DHT22 wird am Pin2 ausgelesen
#define DHTTYPE DHT22   // Es handelt sich um den DHT22 Sensor

DHT dht(DHTPIN, DHTTYPE);           // Der Sensor wird ab jetzt mit "dht" angesprochen

enum Comand {
              Temperatur   = 1,
              Feuchtigkeit = 2
            };

float t;
float f;
float ti;
float fi;
unsigned long BT_timestore;  // Variable Speicher für Systemzeit
int sensorTemp[5];
int sensorHumi[5];

// Für die Funkverbindung
SoftwareSerial HC12(10, 11);
CmdMessenger cmdMessenger {HC12};

void setup()
{
  Serial.begin(9600);
  HC12.begin(9600);
 
  cmdMessenger.attach(Temperatur, [](){
                                         t = cmdMessenger.readFloatArg();
                                      });
                                     
  cmdMessenger.attach(Feuchtigkeit, [](){
                                          f = cmdMessenger.readFloatArg();
                                        });
}

void loop()
{
  /* Nachtwächterfunktion */
  if (millis() - BT_timestore > 10000)   //Wenn 60 Sek. seit dem letzten Loopdurchlauf vergangen sind, dann auslesen und senden
  {
    for (int i = 0; i < 5; i++)
    {
      sensorTemp[i] = dht.readTemperature();
      sensorHumi[i] = dht.readHumidity();
      delay(50);
    }

  Serial.println(t);
  Serial.println(f);
     
  // Auslesen der Innenmesswerte
  ti = dht.readTemperature(); // Temperatur außen wird gemessen und gespeichert
  fi = dht.readHumidity(); // Luftfeuchte außen wird gemessen und gespeichert

  Serial.println(ti);
  Serial.println(fi);

  // Löschen der Messwerte
  t = 0;
  f = 0;
  ti = 0;
  fi = 0;
   
  // Speichern der Systemzeit in BT_timestore für die nächste Loop
  BT_timestore = millis();
 }
}

HotSystems

Dann kann es ja nicht funktionieren.

Du musst dir die Werte im Array auch anzeigen lassen, nicht nur deine "t" und "f" Werte.
Die solltest du jetzt mal ausklammern.

Mach mal z.B. dies:

Code: [Select]

//Serial.println(t);
//Serial.println(f);

Serial.println(sensorTemp[0]);
Serial.println(sensorTemp[1]);
Serial.println(sensorTemp[2]);
Serial.println(sensorTemp[3]);
Serial.println(sensorTemp[4]);

Serial.println(sensorHumi[0]);
Serial.println(sensorHumi[1]);
Serial.println(sensorHumi[2]);
Serial.println(sensorHumi[3]);
Serial.println(sensorHumi[4]);


Dann kannst du sehen ob da große Unterschiede sind.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

adruinoboy

#83
Oct 14, 2020, 03:30 pm Last Edit: Oct 14, 2020, 03:35 pm by adruinoboy
Hallo HotSystems,

stop, da zeigt er mir doch jetzt die Innentemperatur und Innenfeuchtigkeit an.
Diese Werte machen keine Probleme. Es geht ja um die empfangenen Werte.
Die ich über mein HC-12 Modul erhalte. Die werden mit 433 Mhz gesendet.
Die werden ja hier gar nicht ausgelesen.

Nochmal zum abgleichen, mein Sketch sieht jetzt so aus:

Code: [Select]

#include <CmdMessenger.h> // Bibliothek zur Funk Verbindung
#include <Streaming.h>    // Bibliothek zur Funk Verbindung
#include <SoftwareSerial.h>
#include "DHT.h"               // DHT Bibliothek laden

#define DHTPIN 2        // DHT22 wird am Pin2 ausgelesen
#define DHTTYPE DHT22   // Es handelt sich um den DHT22 Sensor

DHT dht(DHTPIN, DHTTYPE);           // Der Sensor wird ab jetzt mit "dht" angesprochen

enum Comand {
              Temperatur   = 1,
              Feuchtigkeit = 2
            };

float t;
float f;
float ti;
float fi;
unsigned long BT_timestore;  // Variable Speicher für Systemzeit
int sensorTemp[5];
int sensorHumi[5];

// Für die Funkverbindung
SoftwareSerial HC12(10, 11);
CmdMessenger cmdMessenger {HC12};

void setup()
{
  Serial.begin(9600);
  HC12.begin(9600);
 
  cmdMessenger.attach(Temperatur, [](){
                                         t = cmdMessenger.readFloatArg();
                                      });
                                     
  cmdMessenger.attach(Feuchtigkeit, [](){
                                          f = cmdMessenger.readFloatArg();
                                        });
}

void loop()
{
  /* Nachtwächterfunktion */
  if (millis() - BT_timestore > 10000)   //Wenn 60 Sek. seit dem letzten Loopdurchlauf vergangen sind, dann auslesen und senden
  {
    for (int i = 0; i < 5; i++)
    {
      sensorTemp[i] = dht.readTemperature();
      sensorHumi[i] = dht.readHumidity();
      delay(50);
    }

  //Serial.println(t);
  //Serial.println(f);

  Serial.println(sensorTemp[0]);
  Serial.println(sensorTemp[1]);
  Serial.println(sensorTemp[2]);
  Serial.println(sensorTemp[3]);
  Serial.println(sensorTemp[4]);

  Serial.println(sensorHumi[0]);
  Serial.println(sensorHumi[1]);
  Serial.println(sensorHumi[2]);
  Serial.println(sensorHumi[3]);
  Serial.println(sensorHumi[4]);
     
  // Auslesen der Innenmesswerte
  ti = dht.readTemperature(); // Temperatur außen wird gemessen und gespeichert
  fi = dht.readHumidity(); // Luftfeuchte außen wird gemessen und gespeichert

  // Löschen der Messwerte
  t = 0;
  f = 0;
  ti = 0;
  fi = 0;
   
  // Speichern der Systemzeit in BT_timestore für die nächste Loop
  BT_timestore = millis();
 }
}


Mich interessieren das "t" und das "f". Den Sensor auswerten ist kein Problem.

HotSystems

ohhh...sorry, da bin ich falsch abgebogen.

Werde mir das späte nochmal ansehen, bin gerade beschäftigt.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

adruinoboy

#85
Oct 15, 2020, 12:20 am Last Edit: Oct 15, 2020, 12:22 am by adruinoboy
Moin adruinoboy
Baue einen zweitem Datenempfänger auf. So kannst du über das Ausschlußverfahren feststellen welches Objekt nicht richtig arbeitet.
Gruß Peter
Ich habe das gleiche nochmal aufgebaut.
Ausserdem habe ich probiert eine andere Frequenz zu wählen. Es stehen ja 100 Kanäle zur Auswahl. Da habe ich eine deutlich höhere Frequenz ausgewählt. Bisher lief es ohne Störungen.
Aber ich beobachte es noch. Ich bin gespannt ob es wirklich zuverlässig funktioniert, oder nicht.

Trotzdem würde ich gerne noch die Messwerte sammeln und auswerten. Einfach um Störungen herauszufiltern.

adruinoboy

#86
Oct 16, 2020, 04:03 pm Last Edit: Oct 16, 2020, 04:05 pm by adruinoboy
Ich möchte das Thema hiermit abschließen.
Nach dem ich den Kanal mit den AT-Befehlen umgestellt habe, gibt es keine Störungen mehr.
Es werden auch keine Nullen mehr empfangen. Es werden wohl Störungen gewesen sein, da einige Funkgeräte mit dieser Frequenz funktionieren.
 
Ich bedanke mich bei allen, die mir geholfen haben.

Adruinoboy

HotSystems

Super, dass du es selbst hinbekommen hast.
Und danke für deine Rückmeldung.

Wäre noch schön, wenn du deinen aktuellen Sketch hier postest.

Und setze ein "Erledigt" o.ä. vor den Titel deines Eingangspost.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

Go Up