Czujniki w bibliotece SuplaDevice

Awatar użytkownika
klew
Posty: 1124
Rejestracja: czw cze 27, 2019 12:16 pm

pt maja 22, 2020 10:24 am

lukfud pisze:
pt maja 22, 2020 10:19 am

Wstawiłem jeszcze korektę czasu pomiaru:
Chodzi o te "setMTreg"?

Wygląda ok. Tylko ten setMTreg dla lux <= 10 wywoła się przy lux = nan, bo ustawiamy tam te -275 stopni. Ale przy braku odczytu chyba i tak to nie ma większego znaczenia.
lukfud
Posty: 422
Rejestracja: czw lis 23, 2017 11:33 pm
Lokalizacja: Warszawa

pt maja 22, 2020 10:59 am

klew pisze:
pt maja 22, 2020 10:24 am
lukfud pisze:
pt maja 22, 2020 10:19 am

Wstawiłem jeszcze korektę czasu pomiaru:
Chodzi o te "setMTreg"?

Wygląda ok. Tylko ten setMTreg dla lux <= 10 wywoła się przy lux = nan, bo ustawiamy tam te -275 stopni. Ale przy braku odczytu chyba i tak to nie ma większego znaczenia.
Tak, zauważyłem to i tak, nie ma to znaczenia :)
lukfud
Posty: 422
Rejestracja: czw lis 23, 2017 11:33 pm
Lokalizacja: Warszawa

śr cze 10, 2020 1:24 pm

Podpowiedzcie proszę:
Mogę wartość z wejścia analogowego przekazać przez kanał np. temperatury, wiatru czy deszczu, ale nie udaje mi się przez kanał wilgotności.
Skopiowałem zawartość klasy Rain do myHumidity zmieniając typ i funkcję kanału

Kod: Zaznacz cały

#ifndef _humidity_h
#define _humidity_h
#include "supla/channel.h"
#include "supla/element.h"
#define HUMIDITY_NOT_AVAILABLE -1
namespace Supla {
namespace Sensor {
class myHumidity: public Element {
 public:
  myHumidity() {
    channel.setType(SUPLA_CHANNELTYPE_HUMIDITYSENSOR);
    channel.setDefault(SUPLA_CHANNELFNC_HUMIDITY);
    channel.setNewValue(HUMIDITY_NOT_AVAILABLE);
  }
  virtual double getValue() {
    return HUMIDITY_NOT_AVAILABLE;
  }
  void iterateAlways() {
    if (lastReadTime + 10000 < millis()) {
      lastReadTime = millis();
      channel.setNewValue(getValue());
    }
  }
 protected:
  Channel *getChannel() {
    return &channel;
  }
  Channel channel;
};
};  // namespace Sensor
};  // namespace Supla
#endif
Wartość ustawia się na -1
Awatar użytkownika
klew
Posty: 1124
Rejestracja: czw cze 27, 2019 12:16 pm

śr cze 10, 2020 3:09 pm

lukfud pisze:
śr cze 10, 2020 1:24 pm
Podpowiedzcie proszę:
Musisz zaimplementować metodę getValue - wstaw tam odczyt wartości analogowej
lukfud
Posty: 422
Rejestracja: czw lis 23, 2017 11:33 pm
Lokalizacja: Warszawa

śr cze 10, 2020 5:30 pm

klew pisze:
śr cze 10, 2020 3:09 pm
Musisz zaimplementować metodę getValue - wstaw tam odczyt wartości analogowej
Inaczej..
Do pobierania wartości użyłem jakiejś tam swojej klasy:

Kod: Zaznacz cały

#ifdef ANALOG_SENSOR
int a0_value;
class AnalogSensor : public Supla::Sensor::????? {
  public: AnalogSensor(int pin) : pin(pin) {}
  void onInit() { 
    pinMode(pin, INPUT);
    channel.setNewValue(getValue()); }
  double getValue() { 
    a0_value =  analogRead(pin);
    return a0_value; }
  protected: int pin;
};
#endif
Jeśli dziedziczę po Rain, Thermometer, Wind czy Distance to odczyt pokazuje się prawidłowo, a jak po skopiowanej z Rain klasie myHumidity, odczytu brak. Nie rozumiem, bo kod w/w elementów jest podobny, różnice to typ i funkcja kanału.

No dobrze, odczyt jest ale: 1082951,25 przy 3,2V i 1075839,05 przy stanie nieustalonym. Serial pokazuje dobre wartości z przedziału 0-1024.
dogu18
Posty: 104
Rejestracja: czw paź 11, 2018 8:35 pm

wt wrz 15, 2020 8:58 pm

Witam wiem ze nie na temat ale może tutorial jakiś jak dodać do nowego SuplaDevice swoje sensory.
np BH1750 jak dodać go żebym mógł go używać:)

pozdrawiam
Awatar użytkownika
klew
Posty: 1124
Rejestracja: czw cze 27, 2019 12:16 pm

śr wrz 16, 2020 7:43 am

dogu18 pisze:
wt wrz 15, 2020 8:58 pm
Witam wiem ze nie na temat ale może tutorial jakiś jak dodać do nowego SuplaDevice swoje sensory.
np BH1750 jak dodać go żebym mógł go używać:)

pozdrawiam
Tutaj masz przykład z BH1750: viewtopic.php?p=69579#p69579

Ogólnie obsługa tego typu sensorów pojawi się w bibliotece, jak tylko pojawi się obsługa kanału tego typu po stronie serwera/clouda/apki lub jak pojawi się kanał ogólnego przeznaczenia.
ODPOWIEDZ

Wróć do „Arduino IDE”