Domoticz - wykresy ...
 
Powiadomienia
Wyczyść wszystko

Domoticz Domoticz - wykresy w jednostkach "kg"

170 Wpisów
3 Użytkownicy
3 Reactions
6,608 Wyświetleń
(@steel_rat)
Wpisów: 603
Ekspert
 

Obsługa tego czujnika w nowych wersjach ESPEasy jest tu ESP_Easy_mega_20221224_collection_A_ESP8266_4M1M.bin

 
Dodane : 23/02/2023 9:00 pm
 zibi
(@zibi)
Wpisów: 159
Pomocny
Autor tematu
 

ok wtedy nie było w najnowszych,

mogę wgrać tą wersję na której próbowałeś i spróbować może zadziała

 
Dodane : 23/02/2023 9:03 pm
(@steel_rat)
Wpisów: 603
Ekspert
 

Tylko też poczekaj bo u mnie było opóźnienie. Ale działo potem ok. A i jeszcze jedno trzeba by dopracować to wysłanie wartości na serial. Bo teraz możemy zapychać przez przypadek port bo za szybko się wykonuje polecenie serial.

jak wysyłam od siebie to "TaskValueSet,2,1,21.2" polecenie to dostaję takie coś.

>TaskValueSet,2,1,21.2

OK

można np co ileś tam pętli dopiero wysyłać wartość do ESP.

if (loops > 1000){
  String waga = String(scale.get_units(), 3);
  mySerial.print("TaskValueSet,3,1," + waga); //podstawiłem ręcznie 1111111
  loops = 0;
}
loops++;
 
Dodane : 23/02/2023 9:07 pm
 zibi
(@zibi)
Wpisów: 159
Pomocny
Autor tematu
 

ok niech cokolwiek zadziała to potem będzie się dostrajać

Ty próbowałeś na tej wersji którą mi podałeś?

ESP_Easy_mega_20221224_collection_A_ESP8266_4M1M.bin

 

 
Dodane : 23/02/2023 9:12 pm
(@steel_rat)
Wpisów: 603
Ekspert
 

Tak. teraz. Tylko ja łaczę sobie dwa ESP przez port Serial i sobie wysyłam z jednego na drugi polecenia. Popatrz co wyżej jeszcze napisałem.

 
Dodane : 23/02/2023 9:16 pm
(@steel_rat)
Wpisów: 603
Ekspert
 

Dodane przez: @steel_rat

Tylko też poczekaj bo u mnie było opóźnienie. Ale działo potem ok. A i jeszcze jedno trzeba by dopracować to wysłanie wartości na serial. Bo teraz możemy zapychać przez przypadek port bo za szybko się wykonuje polecenie serial.

jak wysyłam od siebie to "TaskValueSet,2,1,21.2" polecenie to dostaję takie coś.

>TaskValueSet,2,1,21.2

OK

można np co ileś tam pętli dopiero wysyłać wartość do ESP.

na początku zdefiniuj

 

#define txPin 6 //zdefiniowanie innych pinów TX na arduino wysyłanie danych
int loops = 0;

potem zmień na

if (loops > 1000){
  String waga = String(scale.get_units(), 3);
  mySerial.print("TaskValueSet,3,1," + waga); //podstawiłem ręcznie 1111111
  loops = 0;
}
loops++;

 

 
Dodane : 23/02/2023 9:17 pm
 zibi
(@zibi)
Wpisów: 159
Pomocny
Autor tematu
 

dokładnie tak, nie ma potrzeby wysyłać każdego odczytu tylko np co 1 -2 sekundy czy coś koło tego, domoticz i tak rejestruje dane na wykresie co 5 minut

 
Dodane : 23/02/2023 9:19 pm
 zibi
(@zibi)
Wpisów: 159
Pomocny
Autor tematu
 

dobra, biorę się za zmianę softu i dalsze próby na razie wielkie dzięki na pewno się odezwę znowu, ale to już nie dziś 🙂 

 
Dodane : 23/02/2023 9:22 pm
 zibi
(@zibi)
Wpisów: 159
Pomocny
Autor tematu
 

wgrałem nowy soft ESPEASY do modułu vemos D1 mini (Build: ESP_Easy_mega_20221224_normal_ESP8266_4M1M Dec 24 2022)

wydaje się że poustawiałem wszystko tak jak mi pisałeś i niestety efekt jest taki sam, wartość wagi nie jest przekazywana do modułu ESP

image
image
image
image

 

 u mnie to nieco inaczej wygląda (nie ma miejsca na wpisanie IDX, ale to może dlatego że na razie nie konfigurowałem ścieżki do domoticza)

połączenie arduino z ESP mam tylko jedna linią arduino TX-->ESP RX - bo tylko wysyłam dane więc komunikacja dwukierunkowa chyba nie jest potrzebna

 

a jeszcze mam takie głupie pytanie, bo jak mi podałeś żeby dodać te wpisy do skryptu dotyczące wysyłania danych do ESP (#include <SoftwareSerial.h> //biblioteka do wysyłaniawartości wagi na esp, zmiana pinów RX i TX arduino) to ja żadnej biblioteki w związku z tym nie dogrywałem, niby poszło bez tego i skrypt się nie burzył, miałem dograć czy ona już jest z automatu ?

zweryfikowałem wpisy do skryptu, teraz to wygląda tak:

#include "HX711.h"
#include <SoftwareSerial.h> //biblioteka do wysyłaniawartości wagi na esp, zmiana pinów RX i TX arduino

#define calibration_factor -21053.00 //This value is obtained using the SparkFun_HX711_Calibration sketch
//-20941.00 to moja wartośc kalibracji czujników uzyskana w innym skrypcie
#include <LiquidCrystal_I2C.h> //biblioteka obsługująca typ wyświetlacza
LiquidCrystal_I2C lcd(0x27,20,4); //adres i typ wyświetlacza

#define DOUT 4 //przypisanie pinu dla danych z układu HX711
#define CLK 5 //przypisanie pinu dla danych z układu HX711
#define rxPin 3 //zdefiniowanie innych pinów RX na arduino odbieranie danych
#define txPin 6 //zdefiniowanie innych pinów TX na arduino wysyłanie danych
int loops = 0;

SoftwareSerial mySerial = SoftwareSerial(rxPin, txPin);

HX711 scale;

void setup() {
Serial.begin(9600);
mySerial.begin(9600);

//dodane funkcje wysyłania danych na wyświetlacz
lcd.init(); // inicjalizacja wyświetlacza
lcd.backlight(); //aktywacja podświetlenia wyświetlacza
lcd.setCursor(1,0);
lcd.print("-- projekt nr.3_1 --");
lcd.setCursor(0,1);
lcd.print("-- waga --");

delay(5000);
lcd.clear();

Serial.println("HX711 scale demo");

scale.begin(DOUT, CLK);
scale.set_scale(calibration_factor); //This value is obtained by using the SparkFun_HX711_Calibration sketch
//Ta wartość jest uzyskiwana za pomocą szkicu SparkFun_HX711_Calibration
//scale.tare(); //Assuming there is no weight on the scale at start up, reset the scale to 0
//Zakładając, że podczas uruchamiania waga nie jest obciążona, zresetuj wagę do 0 - zablokowałem tą funkcję żeby waga się nie resetowała po zaniku zasilania
scale.set_offset(-78906);
//Serial.println("Readings:");
Serial.println("aktualna waga:");
}

void loop() {
//Serial.print("Reading: ");
Serial.print("aktualna waga: ");
Serial.print(scale.get_units(), 3); //scale.get_units() returns a float
//ustawienie ile ma być pokazywanych miejsc po przecinku
Serial.print(" kg"); //You can change this to kg but you'll need to refactor the calibration_factor
//zmieniłem z lbs na kg
Serial.println();//funkcja przejścia do następnego wiersza - działa jak ENTER


mySerial.print(scale.get_units(), 3);// wysyłanie do ESP

//if (mySerial.available()){ //komunikacja z ESP

if (loops > 1000){
String waga = String(scale.get_units(), 3);
mySerial.print("TaskValueSet,3,1," +waga);
loops = 0;
}
loops++;

lcd.setCursor(0,0);
lcd.print("-- waga  --");
lcd.setCursor(1,2);
lcd.print("nr.1 = ");
lcd.setCursor(11,2);
lcd.print(scale.get_units(), 3); //scale.get_units() returns a float
//scale.get_units() zwraca liczbę zmiennoprzecinkową z ustawieniem ile ma być pokazywanych miejsc po przecinku
lcd.print("kg "); //You can change this to kg but you'll need to refactor the calibration_factor
//zmieniłem z lbs na kg
//lcd.println();
//zablokowałem tą "funkcję lcd.println();" bo mi wyświetlała poziome kreski na wyświetlaczu


}
 
Dodane : 25/02/2023 11:35 am
(@steel_rat)
Wpisów: 603
Ekspert
 

W TaskValueSet pierwszy parametr określa miejsce kontrolki, tutaj dummy devices, w tabeli. Teraz zmień 3 na 1. Jak zmienisz jej pozycję to też musisz zmodyfikować polecenie.

 
Dodane : 25/02/2023 11:44 am
 zibi
(@zibi)
Wpisów: 159
Pomocny
Autor tematu
 

toto:

if (loops > 1000){
String waga = String(scale.get_units(), 3);
mySerial.print("TaskValueSet,1,1," +waga);
loops = 0;
}
loops++;
 
Dodane : 25/02/2023 11:49 am
 zibi
(@zibi)
Wpisów: 159
Pomocny
Autor tematu
 

bez zmian, nadal zera w ESP

 
Dodane : 25/02/2023 11:52 am
(@steel_rat)
Wpisów: 603
Ekspert
 

To zostaje teraz do sprawdzenia połączenie andruino z ESP. Oraz jakie wartości przesyłamy do niego. Zauważ raz że wysyłasz no 1000 pętlę oraz zauważyłem, że by ESP odbierało przez serial trzeba mu dać chwilę na ustabilizowanie pracy. Może spróbuj całe es podłączyć TX jak i RX.

 
Dodane : 25/02/2023 11:56 am
 zibi
(@zibi)
Wpisów: 159
Pomocny
Autor tematu
 

co chwilę odświeżam odczyt z ESP i nic

ok spróbuję

 
Dodane : 25/02/2023 11:57 am
(@steel_rat)
Wpisów: 603
Ekspert
 

Zobacz czy parametr waga ma jakąś wartość. Pokaż jaka. Najlepiej ustaw Serial.print(waga).

 

 
Dodane : 25/02/2023 12:09 pm
(@steel_rat)
Wpisów: 603
Ekspert
 

Tu się dubluje. I wysyłasz cały czas do ESP wartości jakieś.

mySerial.print(scale.get_units(), 3);// wysyłanie do ESP

//if (mySerial.available()){ //komunikacja z ESP

if (loops > 1000){
String waga = String(scale.get_units(), 3);
mySerial.print("TaskValueSet,3,1," +waga);
loops = 0;
}
loops++;
 
Dodane : 25/02/2023 12:12 pm
 zibi
(@zibi)
Wpisów: 159
Pomocny
Autor tematu
 

a jak to mam zrobić bo nie bardzo mi wychodzi

 

tak to ma być ?

//mySerial.print(scale.get_units(), 3);// wysyłanie do ESP

//if (mySerial.available()){ //komunikacja z ESP

if (loops > 1000){
String waga = String(scale.get_units(), 3);
mySerial.print("TaskValueSet,1,1," +waga);//pierwsza liczba oznacza nr wiersza w ESP na którym mamy odczyt
loops = 0;
}
loops++;
 
Dodane : 25/02/2023 12:16 pm
 zibi
(@zibi)
Wpisów: 159
Pomocny
Autor tematu
 

dalej bez zmian

 
Dodane : 25/02/2023 12:22 pm
 zibi
(@zibi)
Wpisów: 159
Pomocny
Autor tematu
 

dopisałem takie coś, nie wiem czy dobrze, ale zamysł był taki żeby tą wartość co jakiś czas wysyłał na serial monitor niby tak samo jak do ESP i na serial monitorze leci tylko aktualna waga a ta wartość sie tam nie pojawia - nie wiem czy o to Ci chodziło

image

 

//if (mySerial.available()){ //komunikacja z ESP

if (loops > 1000){
String waga = String(scale.get_units(), 3);
mySerial.print("TaskValueSet,1,1," +waga);//pierwsza liczba oznacza nr wiersza w ESP na którym mamy odczyt
loops = 0;
Serial.print("waga");
Serial.print(waga);
Serial.print("waga");
}
loops++;
 
Dodane : 25/02/2023 12:32 pm
(@steel_rat)
Wpisów: 603
Ekspert
 

To pewnie tu jest winny. Musi tu być wartość.

Zmień ten 1000 na coś mniejszego np 100. Ta liczbę ustawiasz według potrzeb.

 
Dodane : 25/02/2023 12:44 pm
Strona 3 / 9
Udostępnij: