SUPLA Air Conditioner

Wiesiek
Posts: 75
Joined: Wed Aug 12, 2020 4:51 am
Location: Bochnia

Post

slawek wrote: Sat Jul 03, 2021 11:36 am Taką samą rurą, w każdym pomieszczeniu masz nawiew i wyciąg.
O faktycznie, teraz widzę. Ok.
j707
Posts: 5
Joined: Sun Feb 07, 2021 5:44 am

Post

Witam wszystkich, czy była by możliwość dodania termometru do pomiaru temperatury w pomieszczeniu?
jaros12
Posts: 37
Joined: Sat Feb 22, 2020 12:03 pm
Location: Warszawa

Post

j707 wrote: Sun Oct 10, 2021 7:33 am Witam wszystkich, czy była by możliwość dodania termometru do pomiaru temperatury w pomieszczeniu?
Dopisz sobie kanał do obsługi Ds'a - new Supla::Sensor:: ...... i w #include.... bibliotekę ds18b20. Bawiłem się kilka miesięcy temu więc dokładnie nie pamiętam chyba tyle wystarczyło. W każdym razie działał, dla mnie służyło to przede wszystkim jako potwierdzenie że klima się załączyła.
Pozdrawiam
j707
Posts: 5
Joined: Sun Feb 07, 2021 5:44 am

Post

Dzięki za podpowiedź. Ale z tego co widzę to problem mam z biblioteką SuplaDevice.
Last edited by j707 on Sun Oct 10, 2021 3:51 pm, edited 2 times in total.
j707
Posts: 5
Joined: Sun Feb 07, 2021 5:44 am

Post

Z tą biblioteką program mi się kompiluje. Natomiast przykład z tej biblioteki DallasTemperature wywala błąd:

In file included from C:\Users\j707\AppData\Local\Temp\arduino_modified_sketch_811602\DallasTemperature.ino:18:0:
C:\Users\j707\OneDrive\Pulpit\arduino-1.8.16-windows\szkic\libraries\SuplaDevice\src/SuplaDevice.h:69:1: warning: 'typedef' was ignored in this declaration [enabled by default]
};
^
C:\Users\j707\OneDrive\Pulpit\arduino-1.8.16-windows\szkic\libraries\SuplaDevice\src/SuplaDevice.h:75:1: warning: 'typedef' was ignored in this declaration [enabled by default]
};
^
C:\Users\j707\OneDrive\Pulpit\arduino-1.8.16-windows\szkic\libraries\SuplaDevice\src/SuplaDevice.h:81:1: warning: 'typedef' was ignored in this declaration [enabled by default]
};
^
C:\Users\j707\OneDrive\Pulpit\arduino-1.8.16-windows\szkic\libraries\SuplaDevice\src/SuplaDevice.h:112:1: warning: 'typedef' was ignored in this declaration [enabled by default]
};
^
In file included from C:\Users\j707\AppData\Local\Temp\arduino_modified_sketch_811602\DallasTemperature.ino:30:0:
C:\Users\j707\OneDrive\Pulpit\arduino-1.8.16-windows\szkic\libraries\SuplaDevice\src/supla/network/ethernet_shield.h: In member function 'virtual void Supla::EthernetShield::setup()':
C:\Users\j707\OneDrive\Pulpit\arduino-1.8.16-windows\szkic\libraries\SuplaDevice\src/supla/network/ethernet_shield.h:94:14: error: void value not ignored as it ought to be
result = Ethernet.begin(mac, 10000, 4000);
^
C:\Users\j707\OneDrive\Pulpit\arduino-1.8.16-windows\szkic\libraries\SuplaDevice\src/supla/network/ethernet_shield.h: In member function 'virtual void Supla::EthernetShield::fillStateData(TDSC_ChannelState&)':
C:\Users\j707\OneDrive\Pulpit\arduino-1.8.16-windows\szkic\libraries\SuplaDevice\src/supla/network/ethernet_shield.h:119:14: error: 'class EthernetClass' has no member named 'MACAddress'
Ethernet.MACAddress(channelState.MAC);
^
exit status 1
Błąd kompilacji dla płytki Generic ESP8266 Module.


Jak zmienię bibliotekę SuplaDevice na inną to DallasTemperature kompiluje się bez problemu ale za to jest problem z kompilacją SuplaAirConditioner .

Może ktoś ma biblioteki na których kompiluje się SuplaAirConditioner i DallasTemperature .
You do not have the required permissions to view the files attached to this post.
User avatar
klew
Posts: 9692
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

Na jaką płytkę chcesz to kompilować?
Kiedy będzie Supla Offline Party / SOP#2025 ?
jaros12
Posts: 37
Joined: Sat Feb 22, 2020 12:03 pm
Location: Warszawa

Post

1. biblioteka SUPLA DEVICE tylko ta którą jakiś czas temu linkowałem
2. biblioteka czujnika DS18B20, jeśli dodawałeś jakiś DALLAS czy coś to możliwe że nie zadziała, ja robiłem tak jak poniżej, przy okazji (nieudanej niestety) próby dodania czujników otwarcia czy przekaźników...
3. jeśli masz dobre biblioteki to tak jak napisał @klew sprawdź czy dobra płytka

Code: Select all

#include <supla/sensor/DS18B20.h>
.......
.......
void addControls() {
.......
.......
new Supla::Sensor::DS18B20(nr pinu); 
jakoś tak, nie mam teraz arduino żeby sprawdzić czy się kompiluje
j707
Posts: 5
Joined: Sun Feb 07, 2021 5:44 am

Post

Witam, dziękuję za zainteresowanie i pomoc. :)

Płytka na której się kompiluje: NodeMCU 1.0 (ESP -12E Module)
Biblioteka SuplaDevice jest na 4 stronie.

Kod z termometrem może komuś się przyda:

Code: Select all


#include <SuplaDevice.h>
#include <supla/network/esp_wifi.h>
#include <supla/events.h>
#include <supla/actions.h>

#include <supla/sensor/DS18B20.h> //=================

#include "thermometer_ex.h"
#include "powerswitch.h"
#include <EEPROM.h>
#include "a_globals.h"
#include "eeprom_funcs.h"
#include "wifi_config.h"
#include "common.h"

#include <IRac.h>

const uint16_t kIrLed = D5;
IRac ac(kIrLed);

struct state {
  uint8_t temperature = 22, fan = 0, operation = 0;
  bool powerStatus;
};
state acState;
void addControls() {
  /* Channel 0*/
  new Supla::Control::PowerSwitch(true); /* włącznik on-off */
  /* Channel 1*/
  new Supla::Control::PowerSwitch(); /* grzenie/chłodzenie */
  /* Channel 2*/
  new Supla::Control::PowerSwitch(); /* wentylator auto/min */
  /* Channel 4*/
  new Supla::Control::PowerSwitch(); /* temp -/+ */
  /* Channel 5*/
  new Supla::Sensor::ThermometerEx(); /* temperatura nastawiona */

  /* Channel 6 - Thermometer DS18B20 */ 
  // 4 DS18B20 thermometers at pin 23. DS address can be omitted when there is only one device at a pin
  DeviceAddress ds1addr = {0x28, 0xFF, 0xC8, 0xAB, 0x6E, 0x18, 0x01, 0xFC}; //adres należy odczytać z DS18B20
  new Supla::Sensor::DS18B20(23, ds1addr);
}

class MyDigitalRead : public Supla::Io {
  public:
    int customDigitalRead(int channelNumber, uint8_t pin) {

      switch (channelNumber) {
        case 0: /* power_status */
          {
            return acState.powerStatus;
          } break;
        case 1: /* mode */
          {
            return acState.operation;

          } break;
        case 2: /* fan */
          {
            return acState.fan;

          } break;
        case 4: /* wartosc temperatury */
          {
            return acState.temperature;
          } break;
      };

    }

    void customDigitalWrite(int channelNumber, uint8_t pin, uint8_t val) {


      bool send = true;
      switch (channelNumber) {
        case 0: /* power_status */
          {
            Serial.print("changing power state to: ");
            Serial.println(val);

            if (val == 0)
              ac.next.power = false;
            else if (val == 1)
              ac.next.power = true;

            acState.powerStatus = val;


          } break;
        case 1: /* mode */
          {
            Serial.print("changing operating mode to: ");
            Serial.println(val);
            if (val == 0)
              ac.next.mode =  stdAc::opmode_t::kCool;
            else if (val == 1)
              ac.next.mode =  stdAc::opmode_t::kHeat;

            acState.operation = val;

          } break;
        case 2: /* fan */
          {
            Serial.print("changing fan speed to: ");
            Serial.println(val);

            if (val == 0)
              ac.next.fanspeed = stdAc::fanspeed_t::kLow;
            else if (val == 1)
              ac.next.fanspeed = stdAc::fanspeed_t::kAuto;

            acState.fan = val;

          } break;
        case 3: /* temperature */
          {

            uint8_t temp = acState.temperature;

            if (val == 0)
            {
              if (temp <= 18) return;
              temp--;

            } else if (val == 1)
            {
              if (temp >= 32) return;
              temp++;
            }

            ac.next.degrees = temp;
            acState.temperature = temp;

          } break;
        default: send = false;
      };

      if (send) {
        Serial.println("sending data to device");
        ac.sendAc();
      }
    }

};

MyDigitalRead instanceMyDigitalRead;

int C_W_state = HIGH;
int last_C_W_state = HIGH;
unsigned long time_last_C_W_change = 0;
long C_W_delay = 10000;                      // config delay 10 seconds

Supla::ESPWifi wifi("", "");




WiFiManager wifiManager;

void setup() {

  EEPROM.begin(1024);
  Serial.begin(115200);
  ac.next.protocol = decode_type_t::ELECTRA_AC;

  guid_authkey();

  /* brak zapisanego SSID -> włączamy config */
  if (WiFi.SSID() == "") {
    initialConfig = true;
  }

  /* niepoprawna wartość w EEPROM -> włączamy config */
  if (EEPROM.read(300) != 60) {
    initialConfig = true;
  }

  /* odczytywanie z EEPROM parametrów konfigracyjnych SUPLA */

  eeprom_read_string(20, Supla_server, max_cr);
  Serial.print("Supla server: ");
  Serial.println(Supla_server);

  eeprom_read_string(105, Email, max_cr);
  Serial.print("Email: ");
  Serial.println(Email);

  eeprom_read_string(200, Supla_name, max_cr);
  Serial.print("Supla name: ");
  Serial.println(Supla_name);

  wifi_station_set_hostname(Supla_name);
  WiFi.mode(WIFI_STA);
  /* niestety wemos d1 nie ma wystarczająco duże pamięcie do obsługi SSL i WifiManager*/
  wifi.enableSSL(false);

  addControls();

  SuplaDevice.setName(Supla_name);
  SuplaDevice.setStatusFuncImpl( & status_func);
  SuplaDevice.begin(GUID, Supla_server, Email, AUTHKEY);

  ac.next.model = 1;  // Some A/Cs have different models. Try just the first.
  ac.next.mode = stdAc::opmode_t::kCool;  // Run in cool mode initially.
  ac.next.celsius = true;  // Use Celsius for temp units. False = Fahrenheit
  ac.next.degrees = acState.temperature;  // 25 degrees.
  ac.next.fanspeed = stdAc::fanspeed_t::kLow;  // Start the fan at medium.
  ac.next.swingv = stdAc::swingv_t::kOff;  // Don't swing the fan up or down.
  ac.next.swingh = stdAc::swingh_t::kOff;  // Don't swing the fan left or right.
  ac.next.light = false;  // Turn off any LED/Lights/Display that we can.
  ac.next.beep = false;  // Turn off any beep from the A/C if we can.
  ac.next.econo = false;  // Turn off any economy modes if we can.
  ac.next.filter = false;  // Turn off any Ion/Mold/Health filters if we can.
  ac.next.turbo = false;  // Don't use any turbo/powerful/etc modes.
  ac.next.quiet = false;  // Don't use any quiet/silent/etc modes.
  ac.next.sleep = -1;  // Don't set any sleep time or modes.
  ac.next.clean = false;  // Turn off any Cleaning options if we can.
  ac.next.clock = -1;  // Don't set any current time if we can avoid it.
  ac.next.power = false;  // Initially start with the unit off.
}

void loop() {
  // put your main code here, to run repeatedly:
  if (initialConfig == true) {
    initialConfig = false;
    ondemandwifiCallback(false);
  }

  SuplaDevice.iterate();
  yield();
}

jaros12
Posts: 37
Joined: Sat Feb 22, 2020 12:03 pm
Location: Warszawa

Post

Adres ds'a to tylko jeśli ktoś będzie chciał spróbować podłączyć kilka. Dla pojedynczego zbędna komplikacja, jeśli się uszkodzi to trzeba będzie na nowo kompilować.
konradem
Posts: 1
Joined: Tue Feb 27, 2024 8:54 am

Post

Odświeżam temat sterowania klimatyzacją przy pomocy supli za pośrednictwem podczerwieni. Czy komuś udało się to ostatnio uruchomić i mu to działa? Czy można poprosić o podzielenie się wsadem lub naprowadzenie jak można skompilować samodzielnie wsad?

Return to “Projekty użytkowników”