NodeMCU v3 - zliczanie włączeń przekaźnika

bigthomas
Posts: 235
Joined: Mon Aug 12, 2019 3:35 pm

Post

Witam,
Czy jest możliwe zliczanie ilości włączeń przekaźnika i prezentacja tych danych w supli?
Od razu mówię że przekaźnik uruchamia mi się losowo w zależności od warunków (temperatury) na kilka sekund.
W tym czasie zasila inne urządzenie. Chciałbym mieć informacje ile razy zostało to urządzenie uruchomione.
User avatar
klew
Posts: 13907
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

Czy przekaźnik jest sterowany przez Suplę?
Jeśli tak, to relatywnie prosto można zaimplementować licznik impulsów podpięty pod włączanie przekaźnika. Tylko wtedy ten licznik będzie dostępny jako osobny kanał w aplikacji
Najlepsze suple dla Twojego domu :mrgreen:
krycha88
Posts: 5575
Joined: Fri Nov 16, 2018 7:25 am
Been thanked: 5 times

Post

klew wrote: Fri Nov 22, 2019 8:51 am Czy przekaźnik jest sterowany przez Suplę?
Jeśli tak, to relatywnie prosto można zaimplementować licznik impulsów podpięty pod włączanie przekaźnika. Tylko wtedy ten licznik będzie dostępny jako osobny kanał w aplikacji
a ten kanał zlicza przyrostowi wartości po stronie clouda czy zapisuje te wartości w eepromie a później je wysyła do clouda??
https://gui-generic-builder.supla.io/
User avatar
klew
Posts: 13907
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

krycha88 wrote: Fri Nov 22, 2019 10:31 am a ten kanał zlicza przyrostowi wartości po stronie clouda czy zapisuje te wartości w eepromie a później je wysyła do clouda??
Licznik zapisuje w EEPROM. Dane są wysyłane cyklicznie do Cloud, ale licznik i tak musi je lokalnie pamiętać.
Najlepsze suple dla Twojego domu :mrgreen:
alvaroboven
Posts: 12
Joined: Wed Nov 06, 2019 8:33 am

Post

klew wrote: Fri Nov 22, 2019 8:51 am Czy przekaźnik jest sterowany przez Suplę?
Jeśli tak, to relatywnie prosto można zaimplementować licznik impulsów podpięty pod włączanie przekaźnika. Tylko wtedy ten licznik będzie dostępny jako osobny kanał w aplikacji


Jak to jest realizowane? Mam „esp8266” podłączony do mega arduino, gdzie mam resztę programowania. Następnie muszę wiedzieć, czy przekaźnik jest aktywowany, czy nie, aby wysłać swój status do arduino.
User avatar
klew
Posts: 13907
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

alvaroboven wrote: Sat Nov 23, 2019 5:49 pm
klew wrote: Fri Nov 22, 2019 8:51 am Czy przekaźnik jest sterowany przez Suplę?
Jeśli tak, to relatywnie prosto można zaimplementować licznik impulsów podpięty pod włączanie przekaźnika. Tylko wtedy ten licznik będzie dostępny jako osobny kanał w aplikacji


Jak to jest realizowane? Mam „esp8266” podłączony do mega arduino, gdzie mam resztę programowania. Następnie muszę wiedzieć, czy przekaźnik jest aktywowany, czy nie, aby wysłać swój status do arduino.
Trzeba stworzyć licznik impulsów, który będzie zliczał ilość przełączeń przekaźnika. Przekaźnikiem sterujesz z tej samej aplikacji, więc wystarczy w tym samym miejscu gdzie jest przełączanie dodać zwiększenie countera w liczniku.
W aktualnym kodzie najprościej byłoby wpiąć się w metody "supla digital write" (można ustawić callback metodą setDigitalWriteFuncImpl - na forum jest kilka przykładów użycia tej metody do różnych zastosowań). Wtedy możesz tam wstawić metodę zwiększającą licznik np. przy zmianie wartości kanału przekaźnika na HIGH.
Najlepsze suple dla Twojego domu :mrgreen:
bigthomas
Posts: 235
Joined: Mon Aug 12, 2019 3:35 pm

Post

klew wrote: Fri Nov 22, 2019 8:51 am Czy przekaźnik jest sterowany przez Suplę?
Jeśli tak, to relatywnie prosto można zaimplementować licznik impulsów podpięty pod włączanie przekaźnika. Tylko wtedy ten licznik będzie dostępny jako osobny kanał w aplikacji
Tak jest sterowany przez Suple, było by nawet lepiej gdyby był to osobny kanał.
Możesz podrzucić kawałek kodu w jaki sposób to zrealizować ...?
User avatar
klew
Posts: 13907
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

bigthomas wrote: Mon Nov 25, 2019 9:46 am
Tak jest sterowany przez Suple, było by nawet lepiej gdyby był to osobny kanał.
Możesz podrzucić kawałek kodu w jaki sposób to zrealizować ...?
Tu jest przykład. Działa z moją wersją biblioteki z tej lokalizacji: https://github.com/klew/arduino/tree/develop

Przykład na Arduino IDE dla ESP8266. Przeróbka na Arduino Mega to zmiana kilku linijek.
Zrobiłem to jeszcze prościej - popiąłem licznik bezpośrednio pod pin sterujący przekaźnikiem. Ważne aby "addImpulseCounter" było wywołane przed "addRelay", bo inaczej impulse counter nadpisze ustawienia pinu. Zlicza przejścia z low do high.

Code: Select all

/*
Copyright (C) AC SOFTWARE SP. Z O.O.

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
*/

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

// ESP8266 based board:
#include <supla/network/esp_wifi.h>
Supla::ESPWifi wifiInterface("ssid", "password");


void setup() {

  Serial.begin(115200);
 
  // Replace the falowing GUID
  char GUID[SUPLA_GUID_SIZE] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
  // with GUID that you can retrieve from https://www.supla.org/arduino/get-guid

  SuplaDevice.addImpulseCounter(D4, 0, true, false, 50);
  SuplaDevice.addRelay(D4, false);           // 44 - Pin number where the relay is connected      

  /*
   * SuplaDevice Initialization.
   * Server address, LocationID and LocationPassword are available at https://cloud.supla.org 
   * If you do not have an account, you can create it at https://cloud.supla.org/account/create
   * SUPLA and SUPLA CLOUD are free of charge
   * 
   */

  SuplaDevice.begin(GUID,              // Global Unique Identifier 
                    "svrX.supla.org",  // SUPLA server address
                    0,                 // Location ID 
                    "");               // Location Password
    
}

void loop() {
  SuplaDevice.iterate();
}
Screenshot_20191125-162416.png
Screenshot_20191125-162428.png
Screenshot_20191125-162516.png
You do not have the required permissions to view the files attached to this post.
Najlepsze suple dla Twojego domu :mrgreen:
bigthomas
Posts: 235
Joined: Mon Aug 12, 2019 3:35 pm

Post

Niestety z Twoją biblioteką mam błędy przy kompilacji (na poprzedniej bibliotece działało).

Niestety z Twoją biblioteką mam błędy przy kompilacji (na poprzedniej bibliotece działało).

Code: Select all

Arduino:1.8.8 (Windows 7), Płytka:"NodeMCU 1.0 (ESP-12E Module), 80 MHz, 115200, 4M (3M SPIFFS)"

UWAGA: biblioteka SuplaDevice działa na architekturze(/architekturach) (avr) i może nie być kompatybilna z obecną płytką która działa na architekturze(/architekturach) (esp8266).
C:\Arduino\Projekty\projekt12\projekt12.ino: In function 'void setup()':

projekt12:220:27: error: invalid conversion from 'uint8_t* {aka unsigned char*}' to 'const char*' [-fpermissive]

                     "xxxx");               // Hasło lokalizacji

                           ^

In file included from C:\Arduino\Projekty\projekt12\projekt12.ino:5:0:

C:\Arduino\libraries\SuplaDevice/SuplaDevice.h:266:8: error:   initializing argument 2 of 'bool SuplaDeviceClass::begin(char*, const char*, int, const char*, unsigned char)' [-fpermissive]

   bool begin(char GUID[SUPLA_GUID_SIZE],

        ^

projekt12:220:27: error: invalid conversion from 'const char*' to 'int' [-fpermissive]

                     "xxxx");               // Hasło lokalizacji

                           ^

In file included from C:\Arduino\Projekty\projekt12\projekt12.ino:5:0:

C:\Arduino\libraries\SuplaDevice/SuplaDevice.h:266:8: error:   initializing argument 3 of 'bool SuplaDeviceClass::begin(char*, const char*, int, const char*, unsigned char)' [-fpermissive]

   bool begin(char GUID[SUPLA_GUID_SIZE],

        ^

projekt12:220:27: error: invalid conversion from 'int' to 'const char*' [-fpermissive]

                     "xxxx");               // Hasło lokalizacji

                           ^

In file included from C:\Arduino\Projekty\projekt12\projekt12.ino:5:0:

C:\Arduino\libraries\SuplaDevice/SuplaDevice.h:266:8: error:   initializing argument 4 of 'bool SuplaDeviceClass::begin(char*, const char*, int, const char*, unsigned char)' [-fpermissive]

   bool begin(char GUID[SUPLA_GUID_SIZE],

        ^

projekt12:220:27: error: invalid conversion from 'const char*' to 'unsigned char' [-fpermissive]

                     "xxxx");               // Hasło lokalizacji

                           ^

In file included from C:\Arduino\Projekty\projekt12\projekt12.ino:5:0:

C:\Arduino\libraries\SuplaDevice/SuplaDevice.h:266:8: error:   initializing argument 5 of 'bool SuplaDeviceClass::begin(char*, const char*, int, const char*, unsigned char)' [-fpermissive]

   bool begin(char GUID[SUPLA_GUID_SIZE],

        ^

C:\Arduino\Projekty\projekt12\projekt12.ino: In function 'SuplaDeviceCallbacks supla_arduino_get_callbacks()':

projekt12:315:6: error: 'SuplaDeviceCallbacks' has no member named 'tcp_read'

   cb.tcp_read = &supla_arduino_tcp_read;

      ^

projekt12:316:6: error: 'SuplaDeviceCallbacks' has no member named 'tcp_write'

   cb.tcp_write = &supla_arduino_tcp_write;

      ^

projekt12:317:6: error: 'SuplaDeviceCallbacks' has no member named 'eth_setup'

   cb.eth_setup = &supla_arduino_eth_setup;

      ^

projekt12:318:6: error: 'SuplaDeviceCallbacks' has no member named 'svr_connected'

   cb.svr_connected = &supla_arduino_svr_connected;

      ^

projekt12:319:6: error: 'SuplaDeviceCallbacks' has no member named 'svr_connect'

   cb.svr_connect = &supla_arduino_svr_connect;

      ^

projekt12:320:6: error: 'SuplaDeviceCallbacks' has no member named 'svr_disconnect'

   cb.svr_disconnect = &supla_arduino_svr_disconnect;

      ^

exit status 1
invalid conversion from 'uint8_t* {aka unsigned char*}' to 'const char*' [-fpermissive]

Ten raport powinien zawierać więcej informacji jeśli w 
File -> Preferencje zostanie włączona opcja "Pokaż
szczegółowe informacje podczas kompilacji"
User avatar
klew
Posts: 13907
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

bigthomas wrote: Wed Nov 27, 2019 12:39 pm Niestety z Twoją biblioteką mam błędy przy kompilacji (na poprzedniej bibliotece działało).
Po błędach wnioskuję, że wrzuciłeś stary projekt "ino" z nową biblioteką. To nie będzie działać ;)
Musisz przerobić swoją aplikację, aby działała z nową biblioteką. Zobacz sobie przykłady, ale chociażby użyj tego przykładu, który wstawiłem w poprzedniej wiadomości.
Jeśli potrzebujesz pomocy, to wklej tutaj swój kod (albo wyślij go).
Najlepsze suple dla Twojego domu :mrgreen:

Return to “Pomoc”