Умный дом по радиоканалу

Обсуждение статей, технологий домашней автоматизации, программных и аппаратных решений
MSapogov
Сообщения: 312
Зарегистрирован: 13 май 2015, 08:44
Откуда: г. Томск

Re: Умный дом по радиоканалу

Сообщение MSapogov » 04 янв 2016, 21:15

А WiFi модуль ESP8266 в качестве беспроводного интерфейса будете добавлять?

comparator
Сообщения: 516
Зарегистрирован: 20 окт 2012, 12:40
Откуда: Мюнхен

Re: Умный дом по радиоканалу

Сообщение comparator » 04 янв 2016, 22:44

wanvo писал(а):Я вот только не понял этой фразы: Внимание !! Версия для AVR'ов не совместима по ногам с предыдущими прошивками.
Раньше нумерация была привязана к "железным" портам, теперь же нумерация свободная, и в данном случае идет привязка к пину на разьёме.
То есть ранее: стандартная нода, стартовал с Ip16/Av0/Pp0, как они между собой связаны и с чем пересекаются, можно было понять только глядя в документацию.
Теперь же: Av2 например, это аналоговый вход номер 2, Ip2/Op2/In2 и т.д. это IO привязанные на тот-же второй пин.
Особенно это спасает с ARM'ами, ранее было: нулевая линия - Ip17/Av9, теперь-же Ip0/Av0. У AVR'a на той же линии будет Av0.

Исключение из этого правила: UART'ы, как их привязать к конкретным пинам и при этом сохранить возможность конфигурации, здесь мое воображение спасовало.
wanvo писал(а):И еще такой нескромный вопрос: Почему эклипс? Кеил вам не нравится? Или дело в открытости эклипса?
У Keil'а есть одна единственная проблема, слишком уж он зараза дорогой.
Так как в проекте работают не только STM32F0. А в 32к со всеми плюшками я уже не умещаюсь.
wanvo писал(а):Я как-то давно ставил эклипс для STM32 помниться там много тонкостей с его настройкой.
Хотелось-бы на будущее ссылку на мануал по установке эклипса или архив с уже настроенной оболочкой.
Собственно мануалов по по настройке то великое множество, и получить откомпилированный файл можно очень быстро.
Проблемы возникают как только потребовалось запустить отладку, либо как программатор используется что то отличное от JLink. И здесь готовых решений уже нет.
Папочка со всем нужным и проектом занимает сейчас чуть больше гигабайта, архив я думаю будет мегабайт 300, при этом никаких гарантий, что это будет работать на другой машине.
wanvo писал(а):P.S. Кстати для STM32 их родной HAL мне очень понравился :)
Могу дать HAL для STM'a на откуп ;)
Сейчас я повыкидывал все SPL'ы и работаю напрямую с железом. Но пока как-то работает только STM32F0.
MSapogov писал(а):А WiFi модуль ESP8266 в качестве беспроводного интерфейса будете добавлять?
Нет, к сожалению работает крайне не стабильно, может 15 минут как-то работать, потом час просто ни на что не отвечать.
Было куплено почти 2 десятка, разные конфигурации, ведут себя все одинаково паршиво. Потери пакетов просто чудовищные. При этом устройства с CC1101 в тех-же условиях работают нормально, потребляя в 10 раз меньше.

comparator
Сообщения: 516
Зарегистрирован: 20 окт 2012, 12:40
Откуда: Мюнхен

Re: Умный дом по радиоканалу

Сообщение comparator » 02 фев 2016, 20:29

Решил похвастаться:
https://youtu.be/vcAwkcx14YQ

PLC в устройстве, плавно зажигающаяся - тухнущая линейка без помощи сервера.

comparator
Сообщения: 516
Зарегистрирован: 20 окт 2012, 12:40
Откуда: Мюнхен

Re: Умный дом по радиоканалу

Сообщение comparator » 08 фев 2016, 00:18

Выложена свежая develop версия прошивки.

Версии на ATMega'х особо не изменились, несколько косметических изменений и исправленых некритичных багов.

Основная работа произведена с веткой на ARM'ах.
Полный набор функций реализован на STM32F0, а это цифровые входы/выходы, до 16 аналоговых входов, много 16'и битных ШИМ'ов, I2C, UART'ы.

И самое вкусное, встроенная виртуальная машинка. Есть компиляторы для Java Script'а или своего ассемблера.
Теперь логику, которая ранее требовала обязательного вмешательства сервера, можно сделать на самом устройстве.
Пример был в предыдущем сообщении, 8 ШИМ каналов + 1 дискретный, плавное включение/выключение по внешнему событию.

У STM32F1, пока отсутствует поддержка I2C, но это как руки дойдут и ноги дотянуться. В остальном функционал идентичен.

Неожиданным оказалась возможность запустить виртуалку на меге 328'ой урезав часть кучи. На устройствах с одним PHY'аем работает нормально.
На гейтах, в стресс тесте уже слетает в переполнение кучи, поэтому было решено пока оставить как есть.

wanvo
Сообщения: 164
Зарегистрирован: 30 сен 2013, 09:45
Откуда: Russia, Rostov-on-Don

Re: Умный дом по радиоканалу

Сообщение wanvo » 10 фев 2016, 21:26

Круто!

Очень радует, что появилась возможность кодировать алгоритм работы не только с помощью лограм но и си-подобным языком.
Однозначно нужно будет сделать версию STM и поиграться с ней.

Респектище!

x13dev
Сообщения: 396
Зарегистрирован: 22 окт 2012, 11:40
Откуда: Бавария

Re: Умный дом по радиоканалу

Сообщение x13dev » 23 фев 2016, 19:38

Для затравки - Драйвер BME280 на EmbeddedPLC:

Код: Выделить всё

class BME280{
  constructor(){
    this.st=new UInt8(0);
    this.T=new Int16();
    this.H=new UInt16();
    this.P=new Int32();
    this.present=false;
    
    this.dig_T1=new UInt16();
    this.dig_T2=new Int16();
    this.dig_T3=new Int16();
    this.dig_P1=new UInt16();
    this.dig_P2=new Int16();
    this.dig_P3=new Int16();
    this.dig_P4=new Int16();
    this.dig_P5=new Int16();
    this.dig_P6=new Int16();
    this.dig_P7=new Int16();
    this.dig_P8=new Int16();
    this.dig_P9=new Int16();
    this.dig_H1=new UInt8();
    this.dig_H2=new Int16();
    this.dig_H3=new UInt8();
    this.dig_H4=new Int16();
    this.dig_H5=new Int16();
    this.dig_H6=new Int8();
  
    this.to=0;
  }
  Read(){
    let var0=this.st, var1, var2;
    if(var0==8){
      if((var1=getSeconds())>=this.to){
        this.to=var1+15;
        this.st=2;      
      }        
    } else if(var0<5 && (var1=TwiStatus())==0){
      if(var0==0){
        TwiControl(0x1A010376);
        TwiPutByte(0x88);
        this.st=5;
      } else if(var0==1){
        this.st=6;
        TwiControl(0x07010376);
        TwiPutByte(0xE1);
      } else if(this.st==2){
        this.st=3;
        TwiControl(0x00040176);		// Pressure oversampling x1, Temperature oversampling x1, Humidity oversampling x1
        TwiPutByte(0xF2);
        TwiPutByte(0x01);
        TwiPutByte(0x00);
        TwiPutByte(0x24);
      } else if(this.st==3){
        this.st=4;
        TwiControl(0x00020176);		  // forced mode
        TwiPutByte(0xF4);
        TwiPutByte(0x25);
      } else{
        this.st=7;
        TwiControl(0x08010376);
        TwiPutByte(0xF7);
      }
    } else if( (var1=TwiStatus() & 0xFFFF)==0x1076 ){
      if(var0==5){
        this.dig_T1=TwiGetByte()<<8 | TwiGetByte();
        this.dig_T2=TwiGetByte()<<8 | TwiGetByte();
        this.dig_T3=TwiGetByte()<<8 | TwiGetByte();
        this.dig_P1=TwiGetByte()<<8 | TwiGetByte();
        this.dig_P2=TwiGetByte()<<8 | TwiGetByte();
        this.dig_P3=TwiGetByte()<<8 | TwiGetByte();
        this.dig_P4=TwiGetByte()<<8 | TwiGetByte();
        this.dig_P5=TwiGetByte()<<8 | TwiGetByte();
        this.dig_P6=TwiGetByte()<<8 | TwiGetByte();
        this.dig_P7=TwiGetByte()<<8 | TwiGetByte();
        this.dig_P8=TwiGetByte()<<8 | TwiGetByte();
        this.dig_P9=TwiGetByte()<<8 | TwiGetByte();
        var1=TwiGetByte();
        this.dig_H1=TwiGetByte();
        this.st=1;
      } else if(var0==6){
        this.st=2;
        this.dig_H2=TwiGetByte()<<8 | TwiGetByte();
        this.dig_H3=TwiGetByte();
        var1=TwiGetByte();
        var2=TwiGetByte();
        this.dig_H4=(var1 << 4) | var2 & 0x0F;
        this.dig_H5=(var2 >> 4) | (TwiGetByte()<<4);
        this.dig_H6=TwiGetByte();
      } else if(this.st==7){
	    let ADC1, ADC2, T_Fine;
        ADC1=TwiGetByte()<<12;
        ADC1|=TwiGetByte()<<4;
        ADC1|=TwiGetByte()>>4;
        ADC2=TwiGetByte()<<12;
        ADC2|=TwiGetByte()<<4;
        ADC2|=TwiGetByte()>>4;

    	var1 = (((ADC2>>3) - (this.dig_T1<<1)) * (this.dig_T2) ) >> 11;
    	var2 = (((((ADC2>>4) - (this.dig_T1)) * ((ADC2>>4) - (this.dig_T1))) >> 12) * (this.dig_T3)) >> 14;
    	T_Fine = var1 + var2;
    	this.T=(T_Fine * 5 + 128) >> 8;  // temperature in DegC, resolution is 0.01 DegC

    	var1 = (T_Fine>>1)-64000;
	    var2 = (((var1>>2) * (var1>>2)) >> 11 ) * this.dig_P6;
    	var2 = var2 + ((var1*this.dig_P5)<<1);
    	var2 = (var2>>2)+(this.dig_P4<<16);
    	var1 = (((this.dig_P3 * (((var1>>2) * (var1>>2)) >> 13 )) >> 3) + ((this.dig_P2 * var1)>>1))>>18;
    	var1 =((32768+var1)*this.dig_P1)>>15;
    	if(var1 != 0){
      	  let var3 = (1048576-ADC1-(var2>>12))*3125;
          var3 = (var3/var1)*2;
          var1 = (this.dig_P9 * (((var3>>3) * (var3>>3))>>13))>>12;
          var2 = ((var3>>2) * this.dig_P8)>>13;
          this.P = (var3 + ((var1 + var2 + this.dig_P7) >> 4)); // pressure in Pa
        }

        ADC2=TwiGetByte()<<8;
        ADC2|=TwiGetByte();
    	var1=T_Fine - 76800;
    	var1 = (((((ADC2 << 14) - (this.dig_H4 << 20) - (this.dig_H5 * var1)) + 16384) >> 15) 
    	  * (((((((var1 * this.dig_H6) >> 10) * (((var1 * this.dig_H3) >> 11) + 32768)) >> 10) + 2097152) * this.dig_H2 + 8192) >> 14));
    	var1 = (var1 - (((((var1 >> 15) * (var1 >> 15)) >> 7) * this.dig_H1) >> 4))>>13;
    	this.H = (var1 < 0 ? 0 : ((var1 > 51200) ? 51200 : var1));  // humidity in %RH = this.H/512.0

        this.st=8;
        this.present=true;
      }
    } else if((var1 & 0xFF)==0x76 && (var1 & 0xFF00)!=0){
      this.st=0;
      this.present=false;
    }
  }  
}

var bme=new BME280();
bme.Read();
Used ROM: 999 bytes, RAM: 48 bytes
Последний раз редактировалось x13dev 24 фев 2016, 18:29, всего редактировалось 1 раз.

wanvo
Сообщения: 164
Зарегистрирован: 30 сен 2013, 09:45
Откуда: Russia, Rostov-on-Don

Re: Умный дом по радиоканалу

Сообщение wanvo » 24 фев 2016, 01:02

x13dev
Ну вообще отпад объектно-ориентированный язык пользователю на откуп, для написания своих алгоритмов!
И даже драйверов, которых нет в комплекте поставки :)
А где можно узнать правила кодинга на нем или может это какой-то стандартый(урезанный) язык?

x13dev
Сообщения: 396
Зарегистрирован: 22 окт 2012, 11:40
Откуда: Бавария

Re: Умный дом по радиоканалу

Сообщение x13dev » 24 фев 2016, 11:15

wanvo писал(а):x13dev
Ну вообще отпад объектно-ориентированный язык пользователю на откуп, для написания своих алгоритмов!
И даже драйверов, которых нет в комплекте поставки :)
А где можно узнать правила кодинга на нем или может это какой-то стандартый(урезанный) язык?
JavaScript, ES6. Но можно и в ES5 стиле писать.
Поддерживается только Int32 тип данных, статическое распределение памяти.
Всё остальное - следствия этих ограничений.

wanvo
Сообщения: 164
Зарегистрирован: 30 сен 2013, 09:45
Откуда: Russia, Rostov-on-Don

Re: Умный дом по радиоканалу

Сообщение wanvo » 25 фев 2016, 09:54

Синтаксис на С++ очень похож.Я не знаю этого языка, но ради такого дела буду осваивать. Мне реально не хватало таких штук пока были только лограмы.

alexsis_76

Re: Умный дом по радиоканалу

Сообщение alexsis_76 » 26 фев 2016, 11:16

Для затравки - Драйвер BME280 на EmbeddedPLC
У вас интерпретируется напрямую или сначала делается байт код?

x13dev
Сообщения: 396
Зарегистрирован: 22 окт 2012, 11:40
Откуда: Бавария

Re: Умный дом по радиоканалу

Сообщение x13dev » 26 фев 2016, 11:27

alexsis_76 писал(а):У вас интерпретируется напрямую или сначала делается байт код?
JavaScript => AST => ByteCode =(MQTT-sn)=> Устройство с виртуальной машиной

Сейчас занимаемся оптимизацией ВМ. Одна команда выполняется от 2 до 8 uS.
Для примера - самый длинный цикл для BME280(st==7) выполняется за 2 mS.

alexsis_76

Re: Умный дом по радиоканалу

Сообщение alexsis_76 » 26 фев 2016, 11:34

JavaScript => AST => ByteCode =(MQTT-sn)=> Устройство с виртуальной машиной
те байт код формируется один раз и где то хранится, или
это JavaScript => AST => ByteCode =(MQTT-sn) происходит каждый раз заново
Для примера - самый длинный цикл для BME280(st==7) выполняется за 2 mS
.т е вся "программа" для BME280
а вот это что такое
this.st=6; и т д
это занимает 999 байт? не много,

x13dev
Сообщения: 396
Зарегистрирован: 22 окт 2012, 11:40
Откуда: Бавария

Re: Умный дом по радиоканалу

Сообщение x13dev » 26 фев 2016, 17:17

alexsis_76 писал(а):те байт код формируется один раз и где то хранится, или это JavaScript => AST => ByteCode =(MQTT-sn) происходит каждый раз заново
Компилируется при нажатии кнопки Run и хранится в базе.
Если нода где-то нагуляет другую программу, то при подключении она перепишется из базы.
alexsis_76 писал(а):а вот это что такое

Код: Выделить всё

var bme=new BME280(); //Выделение памяти под структуру и запуск конструктора.
bme.Read(); //Вызов фукции, где this=указатель на bme

this.st=6;  //Присваивание полю st переданной структуры значения.

AvaloncheG
Сообщения: 54
Зарегистрирован: 27 фев 2015, 01:06

Re: Умный дом по радиоканалу

Сообщение AvaloncheG » 04 мар 2016, 02:16

Доброго времене суток!
Вопросы краткие но глупые :)
1. Вот эти два модуля (SI4432 и CC1101) будут работать с UNO без доп костылей?
2. UNO R3 через строеннй USB-UART будет работать в роли гейта?
Спасибо.

comparator
Сообщения: 516
Зарегистрирован: 20 окт 2012, 12:40
Откуда: Мюнхен

Re: Умный дом по радиоканалу

Сообщение comparator » 04 мар 2016, 16:01

AvaloncheG писал(а):1. Вот эти два модуля будут работать с UNO без доп костылей?
SI4432
Этот не будет, под него нет драйвера.
AvaloncheG писал(а): и CC1101
Этот будет. Такие - же у меня работают.
Адаптер втыкается в тот-же разьём что и ENC28J60.
CC11adaptL.jpg
CC11adaptL.jpg (31.81 КБ) 6640 просмотров
AvaloncheG писал(а):2. UNO R3 через строеннй USB-UART будет работать в роли гейта?
Спасибо.
С платами у которых в качестве моста используется CH340G/FT232 работают без проблем.
Если же в качестве моста USB - UART стоит ATmega16U2(оригинальная схема), то лучше использовать внешний адаптер USB-UART TTL. Данный мост при малейшей нагрузке начинает глотать байты и подвисать.

Если будет время в выходные, конфигурацию сделаю, будет A1SC10.

P.S. не забываем про уровни, CC1101 работает от 3.3В. Arduino от 5В.

comparator
Сообщения: 516
Зарегистрирован: 20 окт 2012, 12:40
Откуда: Мюнхен

Re: Умный дом по радиоканалу

Сообщение comparator » 06 мар 2016, 14:04

Небольшое обновление прошивки, версия "Develop"
Добавлена конфигурация A1SC10 - Arduino Uno/Nano + UART + CC1101
Небольшие изменения в EXT_AIN.

Обновлены проекты для атмел студии.

ВНИМАНИЕ, со старыми версиями не собираются.
Если не хотите обновлять студию, тогда противоядие: в файлах A1xxxx.cproj и A4xxxx.cproj найти строку 1.0.98 и заменить на 1.0.90(или 1.0.91). Само собой, тогда не собирается в новой студии.

Обновление до новой студии нормально не работает. Удалите сперва старую студию, это касается и драйверов. Потом установите новую.
Иначе после обновления студии компиляция упорно падает с ошибкой 1, и перестают определяться родные атмеловские отладчики/программаторы.

AvaloncheG
Сообщения: 54
Зарегистрирован: 27 фев 2015, 01:06

Re: Умный дом по радиоканалу

Сообщение AvaloncheG » 05 апр 2016, 18:32

Научите пользоваться github-ом :)
Как там найти последние версии CC и X13Engine для Win.
И как собирать прошивки, ветку X13.devices-develop я скачал, но немогу понять какие файлы надо чтобы скомпилировать необходимые мне прошивки (сейчас Arduino Uno - гейт, Arduino Uno+ENC28J60 - нода, Arduino Nano+CC1101 - нода).
Один и тот же гейт можно испольовать в связке с LAN-нодами и беспроводными?
Спасибо.

x13dev
Сообщения: 396
Зарегистрирован: 22 окт 2012, 11:40
Откуда: Бавария

Re: Умный дом по радиоканалу

Сообщение x13dev » 06 апр 2016, 10:40

AvaloncheG писал(а):Научите пользоваться github-ом :)
Как там найти последние версии CC и X13Engine для Win.
Бинарники лежат здесь
http://x13home.github.io/download.html
AvaloncheG писал(а): И как собирать прошивки, ветку X13.devices-develop я скачал
Открыть в Atmel Studio проект (A1xxxx.atsln) выбрать нужную конфигурацию и скомпилировать
AvaloncheG писал(а): , но немогу понять какие файлы надо чтобы скомпилировать необходимые мне прошивки (сейчас Arduino Uno - гейт, Arduino Uno+ENC28J60 - нода, Arduino Nano+CC1101 - нода).
Смотрите в README.
Если кратко:
первые две буквы в конфигурации - используемый микроконтроллер
третья - первый интерфейс
четвёртая - второй интерфейс
дальше версия
AvaloncheG писал(а): Один и тот же гейт можно испольовать в связке с LAN-нодами и беспроводными?
Гейтом для LANнод является компьютер.
Для RF нод нужен гейт, где первый интерфейс LAN или Serial, а второй RF

AvaloncheG
Сообщения: 54
Зарегистрирован: 27 фев 2015, 01:06

Re: Умный дом по радиоканалу

Сообщение AvaloncheG » 07 апр 2016, 22:25

Подскажите как подружиться с MajorDoMo :)
Никакие свойства в МД не обновляются, в логах пишет что к МД законектился. Что я делаю не так?
mqtt2.JPG
mqtt2.JPG (20.94 КБ) 6136 просмотров
mqtt1.JPG
mqtt1.JPG (14.71 КБ) 6136 просмотров
mqtt3.JPG
mqtt3.JPG (15.05 КБ) 6136 просмотров
Спасибо.

x13dev
Сообщения: 396
Зарегистрирован: 22 окт 2012, 11:40
Откуда: Бавария

Re: Умный дом по радиоканалу

Сообщение x13dev » 08 апр 2016, 10:18

AvaloncheG писал(а):Подскажите как подружиться с MajorDoMo :)
Никакие свойства в МД не обновляются, в логах пишет что к МД законектился. Что я делаю не так?
В SubscriptionPath стоит /var/now/#
А пытаетесь использовать потом /dev/#

Ответить