Arduino Mega 2560 +...
 
Powiadomienia
Wyczyść wszystko

Arduino Mega 2560 + Domoticz na Windowsie. Problem z dodaniem czujników temperatury

8 Wpisów
2 Użytkownicy
0 Reactions
1,431 Wyświetleń
(@pawel1)
Wpisów: 18
Praktykant
Autor tematu
 

Witam.

Potrzebuję pomocy, 

Arduino Mega 2560 + Domoticz na Windowsie.

Problem z dodaniem czujników temperatury do Domoticza, na monitorze COM widać czujniki i ich odczyty, w Domoticzu niestety nie wykrywalne.

Domoticz testowany z przekaźnikami - działają poprawnie, są widoczne i można nimi sterować. 

Probówałem dodać poprzez 1-wire jak i Dummy, niestety nie są wykrywalne. 

Czy w samym domoticzu, trzeba coś jeszcze zdefiniować? 

 

 
Dodane : 15/02/2022 6:49 am
isom
 isom
(@isom)
Wpisów: 5170
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

@pawel1 trochę niespójne zeznania , i trudno coś wywnioskować . Żeby czujniki działały po 1 wire to taka magistrala musi być wspierana przez maszynę na której działa domoticz. Mysensors czyli arduino powinno te czujniki obsłużyć i wykryć automatycznie , jeśli są poprawne adresy i bramka jest widoczna w domoticz . Czy te przekaźniki to działają z arduino czy sobie dummy zrobiłeś ? Za dużo niejasności.

Pod Windowsem najlepiej postawić virtualbox z linuxem i wtedy mniej problemów.

 
Dodane : 15/02/2022 9:33 am
(@pawel1)
Wpisów: 18
Praktykant
Autor tematu
 

Dziękuję za odpowiedź.

To może po kolei:

1. W Arduino stworzony kod pod DS18B20, czujniki są wykrywane, temperatury wskazywane. (widać to w monitorze COM), wpięte dwa czujniki w jedno DI. (2)

2. Jednocześnie dołączone 4przekaźniki pod inne piny (3-6) zdefiniowane jako LIGHT

3. Bramka widoczna w Domoticzu

4. Domoticz postawiony na Windowsie, przekaźniki od razu zostały wykryte i stamtąd sterowane, czujniki temperatury niestety nie.

 

 

 
Dodane : 15/02/2022 12:03 pm
isom
 isom
(@isom)
Wpisów: 5170
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

@pawel1 a możesz wstawić tu swój kod ? najlepiej użyć <> na pasku i pomiędzy wkleić zawartość. Jeśli to kopia z kodu który wstawiłem wcześniej to nie powinno być problemu.

 
Dodane : 15/02/2022 12:23 pm
(@pawel1)
Wpisów: 18
Praktykant
Autor tematu
 

Dziękuję za wyodrębnienie tematu.

Monitor Com`a, scr z Domoticza i kod poniżej.

 

image
image
<

// Enable debug prints to serial monitor
#define MY_DEBUG

// Enable and select radio type attached
//#define MY_RADIO_RF24
//#define MY_RADIO_NRF5_ESB
//#define MY_RADIO_RFM69
//#define MY_RADIO_RFM95

// Set LOW transmit power level as default, if you have an amplified NRF-module and
// power your radio separately with a good regulator you can turn up PA level.
#define MY_RF24_PA_LEVEL RF24_PA_LOW

// Enable serial gateway
#define MY_GATEWAY_SERIAL

// Define a lower baud rate for Arduinos running on 8 MHz (Arduino Pro Mini 3.3V & SenseBender)
#if F_CPU == 8000000L
#define MY_BAUD_RATE 115200
#endif

// Enable inclusion mode
#define MY_INCLUSION_MODE_FEATURE
// Enable Inclusion mode button on gateway
//#define MY_INCLUSION_BUTTON_FEATURE

// Inverses behavior of inclusion button (if using external pullup)
//#define MY_INCLUSION_BUTTON_EXTERNAL_PULLUP

// Set inclusion mode duration (in seconds)
#define MY_INCLUSION_MODE_DURATION 60
// Digital pin used for inclusion mode button
//#define MY_INCLUSION_MODE_BUTTON_PIN 3

// Set blinking period
#define MY_DEFAULT_LED_BLINK_PERIOD 300

// Inverses the behavior of leds
//#define MY_WITH_LEDS_BLINKING_INVERSE

// Flash leds on rx/tx/err
// Uncomment to override default HW configurations
//#define MY_DEFAULT_ERR_LED_PIN 4 // Error led pin
//#define MY_DEFAULT_RX_LED_PIN 6 // Receive led pin
//#define MY_DEFAULT_TX_LED_PIN 5 // the PCB, on board LED

#include <MySensors.h>
#include <OneWire.h>
#include <DallasTemperature.h>




#define RELAY_PIN 10 // Arduino Digital I/O pin number for first relay (second on pin+1 etc)
#define NUMBER_OF_RELAYS 4 // Total number of attached relays
#define RELAY_ON 1 // GPIO value to write to turn on attached relay
#define RELAY_OFF 0 // GPIO value to write to turn off attached relay




#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress outsideThermometer = { 0x28, 0x90, 0x5, 0x56, 0xB5, 0x1, 0x3C, 0xFC };
DeviceAddress insideThermometer = { 0x28, 0xEA, 0x8A, 0x56, 0xB5, 0x1, 0x3C, 0xF };







void before()
{
for (int sensor=1, pin=RELAY_PIN; sensor<=NUMBER_OF_RELAYS; sensor++, pin++) {
// Then set relay pins in output mode
pinMode(pin, OUTPUT);
// Set relay to last known state (using eeprom storage)
digitalWrite(pin, loadState(sensor)?RELAY_OFF:RELAY_ON);
}
}

void setup()
{
// start serial port
Serial.begin(115200);
// Start up the library
sensors.begin();
sensors.setResolution(outsideThermometer, 12);
sensors.setResolution(insideThermometer, 12);
}

void printTemperature(DeviceAddress deviceAddress)
{
float tempC = sensors.getTempC(deviceAddress);
if (tempC == -127.00) {
Serial.print("Error getting temperature");
} else {
Serial.print("C: ");
Serial.print(tempC);
}
}

void presentation()
{
// Send the sketch version information to the gateway and Controller
sendSketchInfo("Relay", "1.0");

for (int sensor=1, pin=RELAY_PIN; sensor<=NUMBER_OF_RELAYS; sensor++, pin++) {
// Register all sensors to gw (they will be created as child devices)
present(sensor, S_LIGHT);

}
}

void receive(const MyMessage &message)
{
// We only expect one type of message from controller. But we better check anyway.
if (message.getType()==V_STATUS) {
// Change relay state
digitalWrite(message.getSensor()-1+RELAY_PIN, message.getBool()?RELAY_OFF:RELAY_ON);
// Store state in eeprom
saveState(message.getSensor(), message.getBool());
// Write some debug info
Serial.print("Incoming change for sensor:");
Serial.print(message.getSensor());
Serial.print(", New status: ");
Serial.println(message.getBool());
}
}
void loop(void)
{
delay(2000);
//Serial.print("Getting temperatures...\n\r");
sensors.requestTemperatures();

Serial.print("Temperature czujnika 1: ");
printTemperature(outsideThermometer);
Serial.print("\n\r");

Serial.print("Temperatura czujnika 2: ");
printTemperature(insideThermometer);
Serial.print("\n\r");
>
 
Dodane : 15/02/2022 3:16 pm
isom
 isom
(@isom)
Wpisów: 5170
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

@pawel1 u Ciebie wszystko działa zgodnie z kodem , temperatury wysyłasz tylko do serial monitora , więc nie mają prawa pojawić  się w domoticz.

Na pewno brak 

MyMessage msg(0,V_TEMP);

potem w prezentacji 

present(sensor, S_TEMP);  

Nie ustawiłeś częstotliwości odczytów i o ile w serial monitorze nie robi to zbytniej różnicy to już w domoticz odczyty co sekundę przy większej ilości czujników to nic dobrego.

 
Dodane : 15/02/2022 5:04 pm
(@pawel1)
Wpisów: 18
Praktykant
Autor tematu
 

Dziękuję na nakierowanie mnie, poszperałem, poczytałem i udało się.

Lecz wiadomo, apetyt rośnie w miarę jedzenia,

1. Po uruchomieniu Domoticza nic nie było, dopiero po jakiejś minucie wszystko się dodało - czy to tak działa? - czy ta komenda poniżej odpowiada za to?

#define MY_INCLUSION_MODE_DURATION 60?

2. Dlaczego sprzęt się nazywa "Z", czy można to zmienić, czy wpływa to na coś?

3. typy termometrów są jak w scn, a fizycznie są DS18, czy to jest różnica?

4. Przesyłam logi z domoticza, są tam błędy, czy są one istotne, czy ew. w jakiś prosty sposób naprawić?

5. Czy można jednocześnie korzystać z monitora COM i demoticza (jeśli GW jest przez COM)? 

6. Posiadam Arduino MEGA 2560 + ESP8266 wbudowane,  próbowałem znaleźć skrypt jak uruchomić ESP8266 na płytce, lecz mi się nie udało, czy mogę uzyskać pomoc od czego zacząć?

 

image
image
 
Dodane : 15/02/2022 10:39 pm
isom
 isom
(@isom)
Wpisów: 5170
Szef wszystkich szefów Moderator Zasłużony dla Forum, Donator 2K19, Donator 2K20
 

@pawel1

AD 1 https://www.mysensors.org/build/advanced_gateway   I pamiętaj , że bramka najpierw musi się zameldować do kontrolera - domoticz , dopiero potem może zgłaszać swoje węzły i podłączone do nich czujniki, więc jakiś  czas jest wymagany żeby wyeliminować ewentualne błędy. To oczywiście w niczym nie przeszkadza, bo dalsza praca wszystkich urządzeń jest już online bez opóźnień.

AD 2 Tak nazwałeś Sprzęt w Domoticz przy dodawaniu. W oknie nazwa wstawiłeś "Z" zamiast przyjaznej nazwy i tak masz. Oczywiście można to zmienić.

AD 3 Domoticz rozróżnia kilka typów czujników temp , ale nie mylić z modelami. Jeśli dodajesz samą temperaturę to tak ją widzi domoticz i nie ważne czy to DS18B20 czy NTC 10k , jak dodasz np  czujnik zespolony DHT 22 temp/hum , wtedy typ będzie inny.

AD 4 Błędy w logach odnoszą się do brakujących modułów - pakietów potrzebnych do działania skryptów LUA . Zapewne wynika to z błędów przy instalacji samego domoticz. Do nauki- zabawy nie przeszkadza , docelowo nie polecam tego tak zostawiać.

AD 5 Nie wiem co za kombajn, ale przypuszczam że to ESP8266 umożliwia komunikację po wifi samego arduino z kontrolerem czyli taka bramka wifi zamiast USB . https://www.mysensors.org/build/esp8266_gateway

 

 
Dodane : 16/02/2022 8:05 am
Udostępnij: