Re: RCSwitch Ethernet gate
Добавлено: Вс фев 19, 2017 6:26 pm
ЕСПшка питается от usb проблем не должно быть.
Если не считать, что у этих передатчиков обычно питание от 12 должно идти...C_3AXAPOB писал(а):ЕСПшка питается от usb проблем не должно быть.
Код: Выделить всё
#include "RCSwitch1.h" // Не <>, а ""!
#include "RCSwitch2.h"
int ReciverPin315 = 12; // Пины приемников - у кого как
int ReciverPin433 = 5;
RCSwitch1 Remote315 = RCSwitch1();
RCSwitch2 Remote433 = RCSwitch2();
Код: Выделить всё
pinMode(ReciverPin315, FUNCTION_3); // Это ESP-специфика - пины без этого могут работать в режиме COM, i2c и т.п.
Remote315.enableReceive((ReciverPin315)); // В принципе - пин у ЕСП = прерыванию, но можно через digitalPinToInterrupt(ReciverPin315) указать наверняка
pinMode(ReciverPin433, FUNCTION_0);
Remote433.enableReceive((ReciverPin433));
Как-то так. Оно работает.int value = 0;
if (Remote315.available()) {
value = Remote315.getReceivedValue();
if (value == 0) {
Serial.print("Unknown encoding");
} else {
Serial.print("Received 315 MHz ");
Serial.print( Remote315.getReceivedValue() );
Serial.print(" / ");
Serial.print( Remote315.getReceivedBitlength() );
Serial.print("bit ");
Serial.print("Protocol: ");
Serial.println( Remote315.getReceivedProtocol() );
}
Remote315.resetAvailable();
}
if (Remote433.available()) {
value = Remote433.getReceivedValue();
if (value == 0) {
Serial.print("Unknown encoding");
} else {
Serial.print("Received 433 MHz ");
Serial.print( Remote433.getReceivedValue() );
Serial.print(" / ");
Serial.print( Remote433.getReceivedBitlength() );
Serial.print("bit ");
Serial.print("Protocol: ");
Serial.println( Remote433.getReceivedProtocol() );
}
Код: Выделить всё
// Получаем от гейта строку типа: id= 5600515-24bit-P1
$id=$params['rcswitch'];
// Парсим строку
$vals = explode("-", $id);
// Сохраняем значения в переменные для удобства
$RCvalue=$vals[0];
$Format =$vals[1];
$Proocol=$vals[2];
if ($RCvalue)
{
//DebMes("RCvalue: $RCvalue");
//sayReply('Получен код от передатчика '.$RCvalue,2);
}
// Получаем объекты MJD c именем RCSwitch
$objects=getObjectsByClass("RCSwitch");
$obj = $RCvalue;
foreach($objects as $obj)
{
// IdSwitch
$IdSwitch = getGlobal($obj['TITLE'].".IdSwitch");
//@@@ Доделать проверку на протокол и битность
if ($IdSwitch == $vals[0])
{
if (getGlobal($obj['TITLE'].".status"))
{
setGlobal($obj['TITLE'].".status", 0);
}
else
{
setGlobal($obj['TITLE'].".status", 1);
}
DebMes($obj['TITLE'].":IdSwitch ".$IdSwitch."=".$vals[0]);
//sayReply('Получен код от передатчика'.$id,2);
return;
} мучался с тем же самым дня три - в итого в методах на включение и выключение в запросе getURL('http://192.168.2.234/rcremote?cmd=96829081&per=70', 0); надо было всего-то добавить длительность посылки &per=70beavisgood писал(а): НО, если привязать сразу и свойство status и метод switch, то начинаются глюки, EthernetGate зависает, MJD тоже начинает тормозить, т.к. не дожидается ответа.
В отладке выдает ошибку GetURL to http://192.168.0.141/?RCSwitch,5600524,24 (source eval) finished with error: Operation timed out after 45001 milliseconds with 0 bytes received
У меня есть предположение, что происходит "коллизия", т.к. клик по софт переключателю меняет свойство status, и в тоже время клик вызывает метод switch, который тоже меняет status, и система "сходит с ума".
Что делать непонятно.
Спасибо за совет, проверю.shse писал(а):мучался с тем же самым дня три - в итого в методах на включение и выключение в запросе getURL('http://192.168.2.234/rcremote?cmd=96829081&per=70', 0); надо было всего-то добавить длительность посылки &per=70beavisgood писал(а): НО, если привязать сразу и свойство status и метод switch, то начинаются глюки, EthernetGate зависает, MJD тоже начинает тормозить, т.к. не дожидается ответа.
В отладке выдает ошибку GetURL to http://192.168.0.141/?RCSwitch,5600524,24 (source eval) finished with error: Operation timed out after 45001 milliseconds with 0 bytes received
У меня есть предположение, что происходит "коллизия", т.к. клик по софт переключателю меняет свойство status, и в тоже время клик вызывает метод switch, который тоже меняет status, и система "сходит с ума".
Что делать непонятно.
мне помогло.