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ć?
@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.
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.
@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.
Dziękuję za wyodrębnienie tematu.
Monitor Com`a, scr z Domoticza i kod poniżej.
< // 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"); >
@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.
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ąć?
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