• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Поясните чайнику))

DVC

New member
Поясните чайнику)). Недавно в теме не могу ни как доработать проект по градусникам по дому и так же управление электро котлом. Начал для начала мастерить проект под блютуз к VIRTUINO. Но по этой теме очень мало инфы больше информации по работе через WI FI по mudbas ( но я пока в это не вникал). Сейчас по коду ни как немогу привязать датчики температуры к индикаторам на VIRTUINO. И так и так код правил ну ни как не привязывается. На данный момент возник главный вопрос может я зря мучаюсь с блютуз и нужно переходить сразу на вайфай? До меня пока еще не дошло при потере связи с блютуз информация по зависимости датчиков к регуляторам остается или нет. После выхода из virtuino такая же инфа остается на регуляторах.? Или все же сразу нужно все изучать и делать по вайфай через сервер? Или это не так? Зарание спасибо. Для примера код который не могу понять куда и как для блютуз.

Это по датчикам может где есть ошибки?
int update_interval=100; // time interval in ms for updating panel indicators
unsigned long last_time=0; // time of last update
char data_in; // data received from serial link
String text; // String for text elements
int dial_value; // Dial Gauge Value

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

OneWire oneWire(8);
DallasTemperature ds(&oneWire);

DeviceAddress T = {0x28, 0x31, 0xFD, 0x96, 0xF0, 0x01, 0x3C, 0x32};
DeviceAddress D = {0x28, 0x35, 0xA9, 0x96, 0xF0, 0x1, 0x3C, 0x64};
DeviceAddress F = {0x28, 0x3B, 0x9A, 0x96, 0xF0, 0x1, 0x3C, 0xBD};

void setup() {

Serial.begin(9600); //Change baud rate as required!


Это по Привязке к индикаторам не понятно что куда))? Четыре дня мучаюсь с разными вариантами, все подставлял все менял может кто талкнет на путь истинный
/* Example: Bluetooth (HC-05 or (HC-06) + Arduino UNO - Virtual Pins V
* Created by Ilias Lamprou
* Modified: Sep/9/2019
*/

#include <SoftwareSerial.h>
SoftwareSerial espSerial = SoftwareSerial(2,3); // arduino RX pin=2 arduino TX pin=3 connect the arduino RX pin to esp8266 module TX pin - connect the arduino TX pin to esp8266 module RX pin

//-------------VirtuinoCM Library and settings --------------
#include "VirtuinoCM.h"
VirtuinoCM virtuino;
#define V_memory_count 32 // the size of V memory. You can change it to a number <=255)
float V[V_memory_count]; // This array is synchronized with Virtuino V memory. You can change the type to int, long etc.

boolean debug = true; // set this variable to false on the finale code to decrease the request time.

float V1_lastValue=0;
int counterDemo=0;
//============================================================== setup
//==============================================================
void setup() {
if (debug) {
Serial.begin(9600);
while (!Serial) continue;
}
espSerial.begin(9600);
espSerial.setTimeout(50);

virtuino.begin(onReceived,onRequested,256); //Start Virtuino. Set the buffer to 256. With this buffer Virtuino can control about 28 pins (1 command = 9bytes) The T(text) commands with 20 characters need 20+6 bytes
//virtuino.key="1234"; //This is the Virtuino password. Only requests the start with this key are accepted from the library

pinMode(4, OUTPUT); // On Virtuino panel add a button to control this pin
pinMode(6, OUTPUT);
pinMode(13, OUTPUT); // On Virtuino panel add a button to control this pin
pinMode(7, INPUT); // On Virtuino panel add a led to get the state of this pin
}

//============================================================== loop
//==============================================================
void loop() {
virtuinoRun(); // Necessary function to communicate with Virtuino. Client handler

// enter your code below. Avoid to use delays on this loop. Instead of the default delay function use the vDelay that is located on the bottom of this code
// You don't need to add code to read or write to the pins. Just enter the pinMode of each Pin you want to use on void setup




//--- Example1: How to read the value of V1 pin from Virtuino. On Virtuino add a slider. Select the pin V1
if (V[1]!=V1_lastValue) { // The V1 has changed
Serial.println("V1="+String(V[1])); // print the value of V1
V1_lastValue=V[1]; // store the V1 to the variable V1_lastValue so as to know if it has changed
}

//---Example2: How to read the value of V2 pin from Virtuino. On Virtuino add a slider. Select the pin V1. Set the range to (0,2)
if (V[2]==0) analogWrite(6,0);
else if (V[2]==1) analogWrite(6,128);
else if (V[2]==2) analogWrite(6,255);


//---Example3: How to write a sensor value to the virtual pin V4
int sensorValue= random(100); // This is the value that you want to send to virtuino. Replace with your sensor value
V[4] = sensorValue; // copy the sensor value to the pin V4. That's all! On Virtuino panel add a value display to get this value

//---Example4 How to write a counter value to the virtual pin V5
V[5] = counterDemo; // copy the sensor value to the pin V5. That's all! On Virtuino panel add a value display to get this value
counterDemo++;
if (counterDemo==100) counterDemo=0; // restart the counter


vDelay(1000); // This is an example of the recommended delay function. Remove this if you don't need
}









//============================================================== onCommandReceived
//==============================================================
/* This function is called every time Virtuino app sends a request to server to change a Pin value
* The 'variableType' can be a character like V, T, O V=Virtual pin T=Text Pin O=PWM Pin
* The 'variableIndex' is the pin number index of Virtuino app
* The 'valueAsText' is the value that has sent from the app */
void onReceived(char variableType, uint8_t variableIndex, String valueAsText){
if (variableType=='V'){
float value = valueAsText.toFloat(); // convert the value to float. The valueAsText have to be numerical
if (variableIndex<V_memory_count) V[variableIndex]=value; // copy the received value to arduino V memory array
}
}

//==============================================================
/* This function is called every time Virtuino app requests to read a pin value*/
String onRequested(char variableType, uint8_t variableIndex){
if (variableType=='V') {
if (variableIndex<V_memory_count) return String(V[variableIndex]); // return the value of the arduino V memory array
}
return "";
}

//============================================================== virtuinoRun
void virtuinoRun(){
while (espSerial.available()) {
char tempChar=espSerial.read();
if (tempChar==CM_START_CHAR) { // a new command is starting...
virtuino.readBuffer=CM_START_CHAR; // copy the new command to the virtuino readBuffer
virtuino.readBuffer+=espSerial.readStringUntil(CM_END_CHAR);
virtuino.readBuffer+=CM_END_CHAR;
if (debug) Serial.println("\nCommand= "+virtuino.readBuffer);
String* response= virtuino.getResponse(); // get the text that has to be sent to Virtuino as reply. The library will check the inptuBuffer and it will create the response text
if (debug) Serial.println("Response : "+*response);
espSerial.print(*response);
break;
}
}
}


//============================================================== vDelay
void vDelay(int delayInMillis){long t=millis()+delayInMillis;while (millis()<t) virtuinoRun();}
 
Сверху Снизу