Deszczomierz nowa biblioteka

QLQ
Posts: 2512
Joined: Sun Sep 03, 2017 9:13 am

Post

krycha88 wrote: Mon Mar 29, 2021 6:19 pm zacznij od dodania jednego czujnika później dodaj kolejny itd. wtedy napisz który fragment kodu powoduje problem.
jak dodam to co podał klew.
Czysty kod z BH na kanale ktrego jeszcze nie ma , BME, Wiatr jest ok. Dodajemy do kodu to :

Code: Select all

#include <supla/sensor/rain.h>

const byte interruptPin = 12;
const int interval = 500;
volatile unsigned long tiptime = millis();
double rainrate;
unsigned long curtime;

void count() {
  unsigned long curtime = millis();
  
  if ((curtime - tiptime) < interval) {
    return;
  }

  unsigned long tipcount = curtime - tiptime;
  tiptime = curtime;
  rainrate = 914400.0 / tipcount;
}

class MyRain : public Supla::Sensor::Rain {
  public:

    double getValue() {
      return rainrate*100.0;
    }
};

void setup() {   // 
 
  Serial.begin(9600); 
 // Set up our digital pin as an interrupt
  pinMode(interruptPin, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(interruptPin), count, FALLING);

  new MyRain;
}

i się sypie

To działa od strzała:

Code: Select all

#include <SPI.h>
#include <SuplaDevice.h>



#include <supla/sensor/Anemometr.h>
#include <supla/sensor/BME280.h>
#include <supla/sensor/GLSBH1750.h>
#include <supla/sensor/rain.h>



#include <supla/network/esp_wifi.h>
Supla::ESPWifi wifi("X", "Y");


//#define WIND_FACTOR 2.400 // km/h
#define WIND_FACTOR 0.6666 // m/s
#define MODE_REAL  0 // The actual wind speed
#define MODE_TIME  1 // The wind speed is averaged at sampleTime or when you ask, whichever is longer 

#define ANEMOMETR_PIN 12


//const byte interruptPin = 13;
//const int interval = 500;
//volatile unsigned long tiptime = millis();
//double rainrate;
//unsigned long curtime;
//
//
//void count() {
//  unsigned long curtime = millis();
//  
//  if ((curtime - tiptime) < interval) {
//    return;
//  }
//
//  unsigned long tipcount = curtime - tiptime;
//  tiptime = curtime;
//  rainrate = 914400.0 / tipcount;
//}
//
//
//class MyRain : public Supla::Sensor::Rain {
//  public:
//
//    double getValue() {
//      return rainrate*100.0;
//    }
//};

void setup() {

  Serial.begin(9600); 
 // Set up our digital pin as an interrupt
//  pinMode(interruptPin, INPUT_PULLUP);
//  attachInterrupt(digitalPinToInterrupt(interruptPin), count, FALLING);
////
//  new MyRain;

  // Replace the falowing GUID with value that you can retrieve from https://www.supla.org/arduino/get-guid
  char GUID[SUPLA_GUID_SIZE] = {0x90, 0x7B, 0xD8, 0x9B, 0x7F, 0x9A, 0x71, 0x2E, 0xF5, 0x95, 0x36, 0xC6, 0xAE, 0x4D, 0x1A, 0x8D};

  // Replace the following AUTHKEY with value that you can retrieve from: https://www.supla.org/arduino/get-authkey
  char AUTHKEY[SUPLA_AUTHKEY_SIZE] = {0xF0, 0xB5, 0xBC, 0xC7, 0x96, 0xA4, 0x00, 0x14, 0x93, 0x5E, 0xDD, 0x53, 0x08, 0x4A, 0xF6, 0x03};


  new Supla::Sensor::Anemometr(ANEMOMETR_PIN, WIND_FACTOR, MODE_TIME );
 // new Supla::Sensor::Rain(RAIN_PIN_PIN, RAIN_FACTOR, MODE_TIME );
  new Supla::Sensor::BME280(0x76, 100);
  new Supla::Sensor::GLSBH1750();



  /*
     SuplaDevice Initialization.
  */
  SuplaDevice.setName("Test R@F");
  SuplaDevice.begin(GUID,              // Global Unique Identifier
                    "svr5.supla.org",  // SUPLA server address
                    "[email protected]",   // Email address used to login to Supla Cloud
                    AUTHKEY);          // Authorization key

}
//
void loop() {
  SuplaDevice.iterate();
}
jak coś nie działa to włącz zasilanie.....
User avatar
klew
Posts: 13911
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 135 times
Been thanked: 137 times

Post

klew wrote: Mon Mar 29, 2021 6:20 pm Zmień na
void ICACHE_RAM_ATTR count () {
Wklejam jeszcze raz gdyby umknęło
Najlepsze suple dla Twojego domu :mrgreen:
QLQ
Posts: 2512
Joined: Sun Sep 03, 2017 9:13 am

Post

klew wrote: Mon Mar 29, 2021 6:49 pm
klew wrote: Mon Mar 29, 2021 6:20 pm Zmień na
void ICACHE_RAM_ATTR count () {
Wklejam jeszcze raz gdyby umknęło
umykło
ale gdfzie??
zamiast count () ?

ja wiem chłopaki , że Wam to tak lekko jak mi sprawdzić czujnik hall'a na oscyloskopie, czy po odgłosie pracy dźwignika jak wchodzę do firmy ,że tam już łożyska do wymiany... i wiem że zawracam Wam głowę ...


ale z tym void ICACHE_RAM_ATTR count () zamiast viod count się zgłosił i zalogował bez RESTARTU , zaraz stestujemy czy działa zliczanie ...
Last edited by QLQ on Mon Mar 29, 2021 7:09 pm, edited 1 time in total.
jak coś nie działa to włącz zasilanie.....
User avatar
klew
Posts: 13911
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 135 times
Been thanked: 137 times

Post

QLQ wrote: Mon Mar 29, 2021 6:57 pm
klew wrote: Mon Mar 29, 2021 6:49 pm
klew wrote: Mon Mar 29, 2021 6:20 pm Zmień na
void ICACHE_RAM_ATTR count () {
Wklejam jeszcze raz gdyby umknęło
ale gdfzie?? ja wiem chłopaki , że Wam to tak lekko jak mi sprawdzić czujnik hall'a na oscyloskopie, czy po odgłosie pracy dźwignika jak wchodzę do firmy ,że tam już łożyska do wymiany... i wiem że zawracam Wam głowę ...
Metoda "count" jest metodą wyzwalaną w przerwaniu, więc musi mieć dodane ICACHE_RAM_ATTR.
Linijkę:

Code: Select all

void count() {
zmień na:

Code: Select all

void ICACHE_RAM_ATTR count() {
W logach miałeś:
H)ԅ⸮⸮⸮-⸮ISR not in IRAM!
"ISR" to ogólnia nazwa funkcji obsłujących przerwania na ESP.
IRAM to "intruction RAM" - metody wykonywane na przerwaniu trzeba oznaczyć taką flagą, aby program trzymał te metody stale w pamięci RAM pozwalającej na ich natychmiastowe wykonanie.
Najlepsze suple dla Twojego domu :mrgreen:
QLQ
Posts: 2512
Joined: Sun Sep 03, 2017 9:13 am

Post

klew wrote: Mon Mar 29, 2021 7:04 pm
QLQ wrote: Mon Mar 29, 2021 6:57 pm
klew wrote: Mon Mar 29, 2021 6:49 pm

Wklejam jeszcze raz gdyby umknęło
ale gdfzie?? ja wiem chłopaki , że Wam to tak lekko jak mi sprawdzić czujnik hall'a na oscyloskopie, czy po odgłosie pracy dźwignika jak wchodzę do firmy ,że tam już łożyska do wymiany... i wiem że zawracam Wam głowę ...
Metoda "count" jest metodą wyzwalaną w przerwaniu, więc musi mieć dodane ICACHE_RAM_ATTR.
Linijkę:

Code: Select all

void count() {
zmień na:

Code: Select all

void ICACHE_RAM_ATTR count() {
W logach miałeś:
H)ԅ⸮⸮⸮-⸮ISR not in IRAM!
"ISR" to ogólnia nazwa funkcji obsłujących przerwania na ESP.
IRAM to "intruction RAM" - metody wykonywane na przerwaniu trzeba oznaczyć taką flagą, aby program trzymał te metody stale w pamięci RAM pozwalającej na ich natychmiastowe wykonanie.
już zajarzyłem i j/w po edycji. zaraz sprawdzę czy działa jak powinno
jak coś nie działa to włącz zasilanie.....
QLQ
Posts: 2512
Joined: Sun Sep 03, 2017 9:13 am

Post

Screenshot_20210329-211426_SUPLA .jpg
WORKING PANIE WORKING :) :) :) PO tej zmianie count na ICACHE_RAM_ATTR count

jeeeeeeeeeeeeeeeee

a Ty @klew nie chcesz anemometru i deszczomierza tak w ramach rekompensaty ... bo mam razem jeszcze z wieżyczką radiacyjną gdzie mogę wrzucić BME280
You do not have the required permissions to view the files attached to this post.
jak coś nie działa to włącz zasilanie.....
User avatar
klew
Posts: 13911
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 135 times
Been thanked: 137 times

Post

QLQ wrote: Mon Mar 29, 2021 7:13 pm Screenshot_20210329-211426_SUPLA .jpgWORKING PANIE WORKING :) :) :) PO tej zmianie count na ICACHE_RAM_ATTR count

jeeeeeeeeeeeeeeeee

a Ty @klew nie chcesz anemometru i deszczomierza tak w ramach rekompensaty ... bo mam razem jeszcze z wieżyczką radiacyjną gdzie mogę wrzucić BME280
Mój BME280 siedzi w furtce i ma się tam dobrze ;)
W furtce anemometru nie zamontuję, ani deszczomierza, ale mając sprzęt mógłbym dodać dla nich wsparcie oficjalnie do biblioteki.
Jak masz zbędne, to możesz na paczkomat przesłać? Jeśli nie znajdę dla nich miejsca, to po dodaniu ich do biblioteki, puścimy je dalej w świat - może komuś się przyda :).
Najlepsze suple dla Twojego domu :mrgreen:
QLQ
Posts: 2512
Joined: Sun Sep 03, 2017 9:13 am

Post

klew wrote: Mon Mar 29, 2021 8:28 pm
QLQ wrote: Mon Mar 29, 2021 7:13 pm Screenshot_20210329-211426_SUPLA .jpgWORKING PANIE WORKING :) :) :) PO tej zmianie count na ICACHE_RAM_ATTR count

jeeeeeeeeeeeeeeeee

a Ty @klew nie chcesz anemometru i deszczomierza tak w ramach rekompensaty ... bo mam razem jeszcze z wieżyczką radiacyjną gdzie mogę wrzucić BME280
Mój BME280 siedzi w furtce i ma się tam dobrze ;)
W furtce anemometru nie zamontuję, ani deszczomierza, ale mając sprzęt mógłbym dodać dla nich wsparcie oficjalnie do biblioteki.
Jak masz zbędne, to możesz na paczkomat przesłać? Jeśli nie znajdę dla nich miejsca, to po dodaniu ich do biblioteki, puścimy je dalej w świat - może komuś się przyda :).
Ok. Nie ma problemu. Przerobie tylko je na hall i wyślę Tobie. Tzn deszczomierz przerobię bo anemometr już jest na hall. Podaj na prv namiary.

Edit: dorzucę bh1750 oraz max44009 czujniki natężenia światła i wemos d1 mini aby było Ci łatwiej sprawdzić działanie biblioteki czujników pod nowy kanał ogólnego przeznaczenia w 2.4. Od ich wskazań można uzależnić żaluzje, markizy...
A i mam czujnik pojemnościowy wilgotności gleby co @elmaya zrobił soft T i H bo sam kanał wilgotność nie działa też tam wrzuce. Zróbcie to bo podlewania ogrodu w sam raz:
https://es-forum.supla.org/viewtopic.php?f=70&t=7522
jak coś nie działa to włącz zasilanie.....

Return to “Pomoc”