Storage - czyli przechowywanie danych w urządzeniach

User avatar
klew
Posts: 8763
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

Jedyna opcja odczytu logów jest po USB. Przy podłączeniu do 230 V można sobie spalić urządzenie, programator i komputer.
To czy można się bezpiecznie podłączyć zależy od tego jak jest cała elektronika zrobiona.
Ja się tutaj nie podejmuję doradzania w tej kwestii, bo elektronika nie jest moją mocną stroną. Zdarzyło mi się zwarcie zrobić i spalić porty USB, mimo tego że miałem instrukcje jak to podłączać
Widzimy się na Supla Offline Party vol. 2 :!:
Adamo28
Posts: 159
Joined: Sun Nov 08, 2020 2:54 pm

Post

Byłem w podobnej sytuacji i zrobiłem tak, adapter do starego telefonu samsunga usb-c z OTG, w telefonie aplikacja terminal. Nie musisz latać z laptopem w ciężko dostępne miejsca żeby zobaczyć co tam w logach jak coś nie działa (a można dorobić ustawianie parametrów sieci, konta, resetu poprzez terminal 8-) jak coś zdalnie nie pyknie) tylko przy napięciu 230V/400V sprawdził bym kontrolką czy na metalowych częściach telefonu nie ma fazy albo robił to w rękawiczkach izolacyjnych. Wszystko zależy czy na pewno masz separację galwaniczną pomiędzy czynnymi elementami a komunikacją, z tego co pamiętam PZEM004 ma separację ale musisz sprawdzić dokładnie twoją wersję no i pytanie o zasilanie 5V na esp czy jest w pełni odseparowane bo np w takich sonoffach nie ma separacji i nie nadają się on do dokładania ficzerów, a przetwornice 230/5 są różne i trzeba się dokładnie przyglądać czy z separacją czy bez jak się kupuje od majfrendów ;)
iM@rek
Posts: 263
Joined: Thu Feb 09, 2023 1:25 pm

Post

Prośba do kolegów, którzy ten temat przerobili:
Proszę o podanie modelu pamięci, który działa z
bibliotekami z gui generic.
Tam są biblioteki Adafruit, więc pewnie do modułów
tego producenta mam się ograniczyć.
Chcę podłączyć min. licznik impulsów, który na okrągło
liczy obroty anemometru.
Aktualnie od początku roku naliczył już prawie 8 mln. impulsów i dalej się kręci...
Jeśli były jakieś dodatkowe problemy, proszę
o ewentualne uwagi.
Znalazłem taki schemat podłączenia:

https://learn.adafruit.com/adafruit-i2c ... g-and-test

Czy ktoś już z tego skorzystał?
Albo z czegoś innego i może polecić?
User avatar
klew
Posts: 8763
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

iM@rek wrote: Sun Mar 10, 2024 7:17 pm Proszę o podanie modelu pamięci, który działa z
bibliotekami z gui generic.
Proponuję pytać o takie rzeczy w dziale Gui Generic: viewforum.php?f=88
Nie wiem na ile krycha88 przegląda i się wczytuje w inne działy.
Widzimy się na Supla Offline Party vol. 2 :!:
zzrr
Posts: 429
Joined: Wed Oct 26, 2022 7:35 pm

Post

klew wrote: Tue Dec 19, 2023 3:37 pm Jedyna opcja odczytu logów jest po USB. Przy podłączeniu do 230 V można sobie spalić urządzenie, programator i komputer.
To czy można się bezpiecznie podłączyć zależy od tego jak jest cała elektronika zrobiona.
Ja się tutaj nie podejmuję doradzania w tej kwestii, bo elektronika nie jest moją mocną stroną. Zdarzyło mi się zwarcie zrobić i spalić porty USB, mimo tego że miałem instrukcje jak to podłączać
Tak trochę nie w temacie ale akurat przeczytałem i coś mi się przypomniało...
Miałem taki przypadek kilka lat temu. Była godzina ok. 20.00 31.12. chyba to był rok 2018. Podłączaliśmy z kolegą przed imprezką sylwestrową domową sprzęt żeby potańczyć, żeby migały światełka itp. W momencie podłączania do listwy lasera pierdyknęło... później się okazało że wina była listwy, a po włączeniu bezpiecznika oszacowaliśmy straty... spaliło mojego nowego laptopa, nowe kino domowe kolegi które miało robić muzykę i telewizor. Jak wcześniej wszyscy goście nam kibicowali tak widziałem ich miny już po wszystkim których nie zapomnę chyba do końca życia... Niestety gitary ani akordeonu tez nie było :lol:
Tak więc z 230V żartów nie ma 8-)
krycha88
Posts: 5243
Joined: Fri Nov 16, 2018 7:25 am

Post

iM@rek wrote: Sun Mar 10, 2024 7:17 pm Prośba do kolegów, którzy ten temat przerobili:
Proszę o podanie modelu pamięci, który działa z
bibliotekami z gui generic.
Tam są biblioteki Adafruit, więc pewnie do modułów
tego producenta mam się ograniczyć.
Chcę podłączyć min. licznik impulsów, który na okrągło
liczy obroty anemometru.
Aktualnie od początku roku naliczył już prawie 8 mln. impulsów i dalej się kręci...
Jeśli były jakieś dodatkowe problemy, proszę
o ewentualne uwagi.
Znalazłem taki schemat podłączenia:

https://learn.adafruit.com/adafruit-i2c ... g-and-test

Czy ktoś już z tego skorzystał?
Albo z czegoś innego i może polecić?
Niestety ale w GG nigdy nie dodałem wsparcia dla FRAM.
https://gui-generic-builder.supla.io/
iM@rek
Posts: 263
Joined: Thu Feb 09, 2023 1:25 pm

Post

krycha88 wrote: Sun Mar 10, 2024 8:49 pm
iM@rek wrote: Sun Mar 10, 2024 7:17 pm Prośba do kolegów, którzy ten temat przerobili:
Proszę o podanie modelu pamięci, który działa z
bibliotekami z gui generic.
Tam są biblioteki Adafruit, więc pewnie do modułów
tego producenta mam się ograniczyć.
Chcę podłączyć min. licznik impulsów, który na okrągło
liczy obroty anemometru.
Aktualnie od początku roku naliczył już prawie 8 mln. impulsów i dalej się kręci...
Jeśli były jakieś dodatkowe problemy, proszę
o ewentualne uwagi.
Znalazłem taki schemat podłączenia:

https://learn.adafruit.com/adafruit-i2c ... g-and-test

Czy ktoś już z tego skorzystał?
Albo z czegoś innego i może polecić?
Niestety ale w GG nigdy nie dodałem wsparcia dla FRAM.
Nieprecyzyjnie zapytałem.
W przykładach dołączanych do kolejnych wydań Suplidevice, np. "Impulse counter", jest możliwość przełączenia na FRAM.
Mam zrobione i lekko zmodyfikowane oprogramowanie za pomocą GG @Krychy88.
Chciałbym do niego dołączyć możliwość zapisywania danych do FRAM (na podstawie przykładów)
I pytam, czy ktoś z kolegów już to zrobił, na jakich kościach i pytam o ewentualne uwagi/ opisy tego doświadczenia.
User avatar
klew
Posts: 8763
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

iM@rek wrote: Mon Mar 11, 2024 8:24 am Nieprecyzyjnie zapytałem.
W przykładach dołączanych do kolejnych wydań Suplidevice, np. "Impulse counter", jest możliwość przełączenia na FRAM.
Mam zrobione i lekko zmodyfikowane oprogramowanie za pomocą GG @Krychy88.
Chciałbym do niego dołączyć możliwość zapisywania danych do FRAM (na podstawie przykładów)
I pytam, czy ktoś z kolegów już to zrobił, na jakich kościach i pytam o ewentualne uwagi/ opisy tego doświadczenia.
Jeśli po prostu podmienisz klasę Storage na FRAM i sam będziesz to kompilować, to to będzie działać z GG.

Lukfud używał innych kości z pamięcią.
Ale ogólnie FRAM daje radę i ilość cykli zapisu jest tam ogromna.
Widzimy się na Supla Offline Party vol. 2 :!:
User avatar
lukfud
Posts: 2117
Joined: Thu Nov 23, 2017 11:33 pm
Location: Warszawa

Post

klew wrote: Mon Mar 11, 2024 8:35 am
iM@rek wrote: Mon Mar 11, 2024 8:24 am Nieprecyzyjnie zapytałem.
W przykładach dołączanych do kolejnych wydań Suplidevice, np. "Impulse counter", jest możliwość przełączenia na FRAM.
Mam zrobione i lekko zmodyfikowane oprogramowanie za pomocą GG @Krychy88.
Chciałbym do niego dołączyć możliwość zapisywania danych do FRAM (na podstawie przykładów)
I pytam, czy ktoś z kolegów już to zrobił, na jakich kościach i pytam o ewentualne uwagi/ opisy tego doświadczenia.
Jeśli po prostu podmienisz klasę Storage na FRAM i sam będziesz to kompilować, to to będzie działać z GG.
Lukfud używał innych kości z pamięcią.
Ale ogólnie FRAM daje radę i ilość cykli zapisu jest tam ogromna.
Korzystam z framu na i2c: https://jlcpcb.com/partdetail/Fujitsu-M ... E1/C189804

Code: Select all

#include <supla/storage/fram_i2c.h>
Supla::FramI2c fram(0x50, FRAM_OFFSET);

Code: Select all

/*
 * This extension depends on Adafruit FRAM I2C library
 * Please install it from librarary manager in Arduino
 */

#ifndef SRC_SUPLA_STORAGE_FRAM_I2C_H_
#define SRC_SUPLA_STORAGE_FRAM_I2C_H_

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

#include "Adafruit_FRAM_I2C.h"
#include "storage.h"

#define SUPLA_FRAM_WRITING_PERIOD 10 * 1000ul

namespace Supla {

class FramI2c : public Storage {
 public:
  FramI2c(uint8_t _address = 0x50, unsigned int storageStartingOffset = 0)
      : Storage(storageStartingOffset), _address(_address) {
    setStateSavePeriod(SUPLA_FRAM_WRITING_PERIOD);
  }

  bool init() {
    if (!isInitialized) {
      if (!fram.begin(_address)) {
        SUPLA_LOG_DEBUG("Unable to find I2C FRAM");
        return false;
      } else {
        SUPLA_LOG_DEBUG("I2C FRAM is connected at address: 0x%x", _address);
		isInitialized = true;
	    return Storage::init();
      }
    } else {
      return true;
    }
  }

  void commit() {}
  
  void xWrite(uint16_t addr, uint8_t value) {
    fram.write(addr, value);
	if (_logs) {
	  SUPLA_LOG_DEBUG("xWrote %d at address 0x%d", value, addr);
    }
  }

  int xRead(uint16_t addr) {
    uint8_t value = fram.read(addr);
	return value;
  }

  void setDebug(bool value) {
    _logs = value;
	SUPLA_LOG_DEBUG("Fram [save log] is %s", value ? "enabled" : "disabled");
  }

 protected:
  int readStorage(unsigned int offset,
                  unsigned char *buf,
                  int size,
                  bool logs) {
    if (logs) {
      Serial.print(F("xReadStorage: "));
      Serial.print(size);
      Serial.print(F("; Read: ["));
    }
    for (int i = 0; i < size; i++) {
      buf[i] = fram.read(offset + i);
      if (logs) {
        Serial.print(static_cast<unsigned char *>(buf)[i], HEX);
        Serial.print(F(" "));
      }
    }
    if (logs) {
      Serial.println(F("]"));
    }
    return size;
  }

  int writeStorage(unsigned int offset, const unsigned char *buf, int size) {
    fram.write(offset, const_cast<uint8_t *>(buf), size);
    Serial.print(F("xWrote "));
    Serial.print(size);
    Serial.print(F(" bytes to storage at "));
    Serial.println(offset);
    return size;
  }

  Adafruit_FRAM_I2C fram;
  bool isInitialized = false;
  bool _logs = false;
  uint8_t _address;
};

};  // namespace Supla

#endif  // SRC_SUPLA_STORAGE_FRAM_I2C_H_

https://www.facebook.com/groups/supladiy/
iM@rek
Posts: 263
Joined: Thu Feb 09, 2023 1:25 pm

Post

lukfud wrote: Mon Mar 11, 2024 8:49 am Korzystam z framu na i2c: https://jlcpcb.com/partdetail/Fujitsu-M ... E1/C189804
Dziękuję za rady i pomoc.
Pamięci zamówione, już lecą/ jadą/ płyną...

Return to “Arduino IDE”