KC868-A6

User avatar
malarz
Posts: 179
Joined: Wed Jan 27, 2021 4:04 pm

Post

Wpadło mi do ręki takie coś, podoba mi się, ale mam kilka pytań.

(prostsze)
Jak podłączyć przyciski (łączniki) do wejść cyfrowych?
- wydaje mi się, że należy je zwierać do masy (złącze tuż obok; w tej samej "kostce"), ale nie jestem pewien

(trudniejsze)
Jak użyć w supla device:
1. wejścia i wyjścia cyfrowe (są na expanderach PCF8574P)?
2. RTC (jest to podobno DS1307)?

Czy jest to w ogóle do zrobienia w supla-device od ręki, czy trzeba by sobie jakieś rzeczy (biblioteki) dopiero zaimplementować?
Próbuję przerobić pomysły na działające projekty w ArduinoIDE.
Sebek74
Posts: 126
Joined: Wed Dec 23, 2020 1:23 pm

Post

https://www.kincony.com/kc868-a6-hardwa ... tails.html

sekcja Digital Inputs - zwarcie do masy, sterowanie po 3.3V

Wejścia i wyjścia cyfrowe są na expanderach PCF8574P. Obsługiwane w GUI Generic. Problem z roletami opisywałem - nierozwiązane.
RTC nie jest imho obsługiwany w Supla.
Napisz jak ogarniesz coś przez LORA.
Sebek-74
11xSRW-02m, SRW-01, 4xROW-04m, 5xROW-02, ROW-01, Sonoff Mini
SmartBob ESP32 + LAN8720: sterowanie nawodnieniem: pompa + 7 obwodów + 2xDS18B20
Kincony KC868-A6: integracje Satel Integra, NVR, rekuperator + 3xDS18B20
User avatar
Duch__
Posts: 2060
Joined: Wed Aug 24, 2016 7:26 pm
Location: Opole

Post

RTC jest obsługiwane na DS1307 w supli, ale nie wiem czy w GUI.
User avatar
malarz
Posts: 179
Joined: Wed Jan 27, 2021 4:04 pm

Post

Sebek74 wrote: Thu Feb 13, 2025 2:20 pm https://www.kincony.com/kc868-a6-hardwa ... tails.html

sekcja Digital Inputs - zwarcie do masy, sterowanie po 3.3V

Wejścia i wyjścia cyfrowe są na expanderach PCF8574P. Obsługiwane w GUI Generic. Problem z roletami opisywałem - nierozwiązane.
RTC nie jest imho obsługiwany w Supla.
Napisz jak ogarniesz coś przez LORA.
LoRa mnie nie interesuje i nawet nie mam modułu. GG w tym wypadku też mniej, bo potrzebuję własną sekwencję włączania przekaźników. Dlatego interesuje mnie obsługa w supla-device i szukam jakiegoś przykładu aby nie rozgryzać od kamienia łupanego. Zegarek może w przyszłości się przyda, więc fajnie by było móc go użyć.
Próbuję przerobić pomysły na działające projekty w ArduinoIDE.
User avatar
malarz
Posts: 179
Joined: Wed Jan 27, 2021 4:04 pm

Post

Duch__ wrote: Thu Feb 13, 2025 4:08 pm RTC jest obsługiwane na DS1307 w supli, ale nie wiem czy w GUI.
Znalazłem w Changelogu:
22.10.05 (N/A)
Add: (Arduino ESPx, Arduino Mega) DS1307 external RTC support (thanks @lukfud)

Dlatego szukam jakiegoś przykładu. Nie zamierzam używać GG tylko własny soft pod supla-device.
Próbuję przerobić pomysły na działające projekty w ArduinoIDE.
User avatar
klew
Posts: 10704
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

User avatar
malarz
Posts: 179
Joined: Wed Jan 27, 2021 4:04 pm

Post

W końcu chyba coś znalazłem na forum o ekspanderach w supla-dev:
viewtopic.php?t=12586

Udało mi się też osuplować KC868 GG. Problemem początkowym był kabelek USB-C, który nie chciał współdziałać z Kincony (z innymi rzeczami jakoś mi działa, więc nie wiem o co chodzi.

Ale ustawić expanderów w GG już mi się nie udało. Ustawienie inputów wiesza całość. @krycha88 Dodatkowo nie można ustawić P2 - brak do wyboru w rozwijanej liście.

Jutro zaczynam próby własnego softu bazując na tym co podałem na początku i co @klew podrzucił.
Próbuję przerobić pomysły na działające projekty w ArduinoIDE.
User avatar
lukfud
Posts: 2314
Joined: Thu Nov 23, 2017 11:33 pm
Location: Warszawa

Post

malarz wrote: Fri Feb 14, 2025 8:42 pm

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.
*/

#ifndef SRC_SUPLA_CONTROL_EXT_PCF8574_H_
#define SRC_SUPLA_CONTROL_EXT_PCF8574_H_

/*
Dependency: https://github.com/RobTillaart/PCF8574
use library manager to install it
*/

#include <Wire.h>
#include <PCF8574.h>
#include <supla/io.h>
#include <supla/log_wrapper.h>

namespace Supla {
namespace Control {
	
class ExtPCF8574 : public Supla::Io {
 public:
  ExtPCF8574(uint8_t address = 0x20, uint8_t value = false)
      : pcf(address), Supla::Io(false) {
    if (!pcf.begin(value)) {
      SUPLA_LOG_DEBUG("Unable to find PCF8574");
    } else {
      SUPLA_LOG_DEBUG("PCF8574 is connected at address: 0x%x", address);
      isConnected = true;
    }
  }

  void customPinMode(int channelNumber, uint8_t pin, uint8_t mode) override {
    if (mode == INPUT_PULLUP) {
      pcf.write(pin, HIGH);
    }
  }

  void customDigitalWrite(int channelNumber, uint8_t pin,
                                                        uint8_t val) override {
    if (isConnected) {
	  pcf.write(pin, val);
    }
  }

  int customDigitalRead(int channelNumber, uint8_t pin) override {
    return isConnected ? pcf.read(pin) : 0;
  }

  unsigned int customPulseIn(int channelNumber, uint8_t pin, uint8_t value,
                                              uint64_t timeoutMicro) override {
    return 0;
  }

  void customAnalogWrite(int channelNumber, uint8_t pin, int val) override {}

  int customAnalogRead(int channelNumber, uint8_t pin) override {
    return 0;
  }

 protected:
  ::PCF8574 pcf;
  bool isConnected = false;
};

};  // namespace Control
};  // namespace Supla

#endif  // SRC_SUPLA_CONTROL_EXT_PCF8574_H_

Code: Select all


#define STATUS_LED_GPIO 2
#define I2C_SCL 5
#define I2C_SDA 4
#define PCF_I2C_ADDR 0x27
#define PCF_BTN_PIN 3
#define PCF_RELAY_PIN 4

#include <SuplaDevice.h>
#include <supla/network/esp_wifi.h>
Supla::ESPWifi wifi;
#include <supla/device/status_led.h>
Supla::Device::StatusLed statusLed(STATUS_LED_GPIO, true);
#include <supla/storage/eeprom.h>
Supla::Eeprom eeprom;
#include <supla/storage/littlefs_config.h>
Supla::LittleFsConfig configSupla(2048);
#include <supla/network/esp_web_server.h>
Supla::EspWebServer suplaServer;

#include <supla/network/html/device_info.h>
#include <supla/network/html/protocol_parameters.h>
#include <supla/network/html/wifi_parameters.h>
#include <supla/device/supla_ca_cert.h>

#include <supla/control/EXT_PCF8574.h>
Supla::Control::ExtPCF8574 *extpcf = nullptr;

#include <supla/control/button.h>
Supla::Control::Button *button = nullptr;

#include <supla/control/relay.h>
Supla::Control::Relay *relay = nullptr;

Supla::Html::DeviceInfo htmlDeviceInfo(&SuplaDevice);
Supla::Html::WifiParameters htmlWifi;
Supla::Html::ProtocolParameters htmlProto;

void setup() {

  Serial.begin(115200);
  Wire.begin(I2C_SDA, I2C_SCL);

  extpcf = new Supla::Control::ExtPCF8574(PCF_I2C_ADDR);
  button = new Supla::Control::Button(extpcf, PCF_BTN_PIN, true, true);
  relay = new Supla::Control::Relay(extpcf, PCF_RELAY_PIN, true, 224);

  button->addAction(Supla::TOGGLE, relay, Supla::ON_CLICK_1);

  SuplaDevice.setSuplaCACert(suplaCACert);
  SuplaDevice.setSupla3rdPartyCACert(supla3rdCACert);
  SuplaDevice.begin();
}

void loop() {
  SuplaDevice.iterate();
}
https://www.facebook.com/groups/supladiy/
Sebek74
Posts: 126
Joined: Wed Dec 23, 2020 1:23 pm

Post

malarz wrote: Fri Feb 14, 2025 8:42 pm Ale ustawić expanderów w GG już mi się nie udało. Ustawienie inputów wiesza całość. @krycha88 Dodatkowo nie można ustawić P2 - brak do wyboru w rozwijanej liście.
Jak chcesz żeby działało z GG to najpierw musisz przelutować stopkę, żeby zmienić adres jednego z ekspanderów na 0x20. Trzeba odciąć stopkę 3 i połączyć z drugą aby zmienić fizycznie adres.
kinkon.jpg
Potem już będziesz mógł dodać oba ekspandery pod I2C. Jak widać zgłasza się jeszcze OLED i RTC.
i2c.jpg
Ustawienia dla przekaźników i przycisków (ja mam akurat krańcówki zamiast przycisków)
przek1.jpg
przek2.jpg
kranc1.jpg
P2 da się wybrać. Wybierz najpierw coś innego, zapisz i zmień na P2 bo się już pojawi.
You do not have the required permissions to view the files attached to this post.
Sebek-74
11xSRW-02m, SRW-01, 4xROW-04m, 5xROW-02, ROW-01, Sonoff Mini
SmartBob ESP32 + LAN8720: sterowanie nawodnieniem: pompa + 7 obwodów + 2xDS18B20
Kincony KC868-A6: integracje Satel Integra, NVR, rekuperator + 3xDS18B20
User avatar
malarz
Posts: 179
Joined: Wed Jan 27, 2021 4:04 pm

Post

lukfud wrote: Sat Feb 15, 2025 7:46 am
malarz wrote: Fri Feb 14, 2025 8:42 pm

Code: Select all

...
#define SRC_SUPLA_CONTROL_EXT_PCF8574_H_
...
Super, dzięki. To jest właśnie to co jest najbardziej potrzebne. Dlaczego tego nie wrzuciłeś do supla-device?

Zmodyfikuj tylko pierwszą linię:

Code: Select all

 Copyright (C) AC SOFTWARE SP. Z O.O.
Mam tylko problem, bo w momencie startu urządzenia wszystkie przełączniki są ustawiane a ON. Jak próbowałem coś zmienić to jedyne co udało mi się uzyskać to wachnięcie na ułamek sekundy na starcie na ON i następnie wyłączenie. Co mogę robić nie tak? Czy może jest to specyfika extendera (ale nie zaobserwowałem jej na firmowym sofcie KCS)

Code: Select all

  auto ext_input = new Supla::Control::ExtPCF8574(PCF_I2C_INPUT);
  auto ext_relay = new Supla::Control::ExtPCF8574(PCF_I2C_RELAY);
  
  auto button1 = new Supla::Control::Button(ext_input, 0, true, true);
  auto relay1 = new Supla::Control::Relay(ext_relay, 0, true, SUPLA_BIT_FUNC_LIGHTSWITCH);
  button1->addAction(Supla::TOGGLE, relay1, Supla::ON_PRESS);

  auto button2 = new Supla::Control::Button(ext_input, 1, true, true);
  auto relay2 = new Supla::Control::Relay(ext_relay, 1, false, SUPLA_BIT_FUNC_LIGHTSWITCH);
  button2->addAction(Supla::TOGGLE, relay2, Supla::ON_PRESS);
1 - po restarcie włączony
2 - po restarcie włączany na ułamek sekundy
Próbuję przerobić pomysły na działające projekty w ArduinoIDE.

Return to “supla-dev”