• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Arduino, OpenHab, MQTT
#1
Cześć, potrzebuję pomocy więc postanowiłem napisać.

Mam kilka przekaźników podłączonych do łączników chwilowych. mają za zadanie włączać i wyłączać światło oraz załączać prąd w gniazdkach. do tego dojdzie kilka czujek ruchu oraz temperatury. wszystko będzie działać na OpenHAB'ie oraz brokerze MQTT

mój problem jest taki:
Światło ma być załączane poleceniem z OpenHaba lub przyciskiem w ścianie.
Nie wiem jak to zaimplementować w arduino głównie część gdzie arduino odczytuje, który łącznik został wciśnięty. czy switch statement załatwi sprawe?
 
Odpowiedź
#2
Cześć.

Nie do końca bo masz zależność pomiędzy 2 informacjami wejściowymi a 1 wyjściem . Musisz mieś status wyjścia powiązany z danym stanem logicznym wejść bo inaczej będzie w przypadku rozbieżnych informacji wyjście się zapętlało i przełączało w nieskończoność .

np.

Kod:
byte x = 0;
byte y = 0;
byte xy = 0;

sertup{

xy = x+y;

}

loop{

x = przycisk ;
y = openhab;

if ( xy != x+y ){
if ( swiatlo == LOW ){swiatlo = HIGH ; xy = x+y;}
else if ( swiatlo == HIGH ){swiatlo = LOW ; xy = x+y;}
}


ta linijka  "xy = x+y;" po wykonaniu zadania ustawi stan taki jak ma na portach więc nie będzie przełączała aż do ponownej zmiany stanu wejść
Ważne aby robić co się lubi albo lubić co się robi .
Arduino UNO, TINY, PRO MINI
Pomoc nagradzamy punktami reputacji Wink
 
Odpowiedź
#3
https://raw.githubusercontent.com/michal...uinohy.ino mam narazie coś takiego napewno gdzieś jest błąd...
 
Odpowiedź
#4
Generalnie to stworzyłeś molocha Wink oj chwilę zanim doszedłem co i jak

tu masz błąd :

pinMode(38, OUTPUT);
pinMode(29, INPUT);
digitalWrite(38, LOW);

tu masz taki mały programik pokazujący jak można odczytać piny aktywne i jak je zainicjować 2 linijkami a nie 100 tką Wink Pobaw się tym kodem , niestety na razie nie mam sieciówki więc za bardzo nie pomogę jak nie mam na czym kodu sprawdzić .

Kod:
int x;

int pino[]={2,3,4,5,6,7,8,9,10,11};

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

for ( int x = 0 ; x < 9 ; x++)pinMode( pino[x] , OUTPUT);

}

void loop() {

x = random(0,9);

digitalWrite( pino[x] , HIGH);

for ( int x = 0; x < 9; x++){

if ( digitalRead(pino[x]) == true ){
Serial.print((pino[x]), DEC);
Serial.print(" - on ");}
if ( digitalRead(pino[x]) == false ){
Serial.print((pino[x]), DEC);
Serial.print(" - off ");}
}

delay(250);

Serial.println(" ");
digitalWrite( pino[x] , LOW);

}
Ważne aby robić co się lubi albo lubić co się robi .
Arduino UNO, TINY, PRO MINI
Pomoc nagradzamy punktami reputacji Wink
 
Odpowiedź
#5
(18-10-2015, 16:24)thepowerofra napisał(a): Mam kilka przekaźników podłączonych do łączników chwilowych. mają za zadanie włączać i wyłączać światło oraz załączać prąd w gniazdkach. do tego dojdzie kilka czujek ruchu oraz temperatury. wszystko będzie działać na OpenHAB'ie oraz brokerze MQTT

Hej.
Czy udało Ci się stworzyć program spełniający Twoje oczekiwania? Ja od tygodnia próbuję stworzyć program, który by sterował przekaźnikami i działał z Openhabem poprzez MQTT ale niestety bez rezultatów. Niestety jestem początkującym userem i głównie bazuje na przeróbkach udostępnionych programów...
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości