Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Зеленый дом DasFilisera

Компоненты и расходные материалы

Датчик температуры DHT22
× 1
DS18B20
× 1
Датчик температуры и влажности почвы FS200-SHT25
× 1
4-канальный релейный модуль
× 1
2-канальный релейный модуль
× 1
Ультразвуковой датчик - HC-SR04 (общий)
× 1
Arduino MKR1000
× 1

Приложения и онлайн-сервисы

DasData
Microsoft Visual Studio 2015

Об этом проекте

Выращивайте растения и овощи, лучше понимая условия их окружающей среды. Просто используя MKR1000

Требования к росту растений

Рост растений зависит от нескольких идеальных условий окружающей среды, таких как температура, влажность, свет и другие минеральные вещества или кислород.

Обеспечение растений достаточным количеством воды или поддержание нормальной температуры в теплице может быть непростым процессом, но не если бы вы могли сделать это намного проще.

Обзор оборудования

Температура / влажность

TH1 - Значения внешней температуры будут предоставлены водонепроницаемым датчиком DS18B20 - контактный разъем D1

TH2 - Внутри темп. / гул. можно узнать из DHT22 - вывод D0

TH3 - ФС200 / ШТ25 - будет внедряться в почвенных условиях. Подключения будут для контактов SCL и SDA 12/11

Рычаг воды

W1 - для определения уровня воды будет использоваться ультразвуковой датчик, такой как HC - SR04 Connections на A0 - Echo и Trigger на A1. Основываясь на этом значении, вы можете управлять клапаном с помощью реле R1 - 4 каналов.

Температура воздуха / кислород

A1 - На основании значений температуры / влажности вы можете указать, когда открывать окна с помощью реле R2. В зависимости от климата вы должны настроить его по своему усмотрению.

Реле R1 / R2

Чтобы установить некоторые команды, такие как открытие Windows или запуск любого насоса, вы можете отправлять команды на реле ... R1 подключен к цифровым контактам 7,8,9,10 и R2 5,6

MKR1000 - aRest

Теперь, когда мы соединили все вместе, пришло время получить некоторые данные и использовать библиотеку aRest, которая предоставит веб-интерфейс для устройства MKR1000 со строкой формата json. Используйте библиотеки, файлы .ino, представленные ниже, и соответствующим образом измените подключение к маршрутизатору Wi-Fi.

Данные и интерфейс

Пока у нас есть интерфейс для нашего устройства, мы также можем потреблять эти данные и видеть их в локальной сети.

Мы использовали Visual Studio 2015 и .net для создания приложения для Windows, которое поможет вам визуализировать живые условия в теплице, а также немного ежедневной истории или всех видов журналов, которые вы хотите интегрировать.

Для хранения в облаке мы просто использовали конфигурации теплицы DasData, или вы можете создать свои собственные каналы данных.

Следующим шагом будет изменение DsKey и AKey, предоставленных в Settings.txt из папки приложения. Если все работает, вы уже должны увидеть некоторые данные в Интернете.

Следите за хакерским каналом DasData, чтобы узнать больше о будущих обновлениях

Автоматизация теплиц

Вы должны решить, какие клапаны или двигатели будут создавать больше действия в зависимости от конфигурации и размеров вашей теплицы. Все это можно было контролировать с помощью реле.

Код

  • Filisera_Arduino
  • libraries.zip
  • Filisera - vb.zip
  • Filisera - VS
Filisera_Arduino C / C ++
DASFilisera использует библиотеку aREST для платы Arduino / Genuino MKR1000.
 / * DASFilisera использует библиотеку aREST для платы Arduino / Genuino MKR1000. aREST - Написано в 2016 году Марко Шварцем под лицензией GPL. * /// Импортируйте необходимые библиотеки # include  #include  #include  #include "DHT.h" #include  #include  #include  #include  // ********************** *** // ** Senzori Temperatura ** // ************************* # определить DHTPIN 0 // Внутренняя влажность / температура / тепло index # define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321 # define ONE_WIRE_BUS 1OneWire oneWire (ONE_WIRE_BUS); датчики температуры Dallas (&oneWire); float umidSol =0; // Влажность почвыfloat umidAer =0; // Влажность воздуха float tempIn =0; // Температура надувания tempOut =0; // Температура на выходе tempSol =0; // Объем контейнера плавающий umidexIn =0; // По ощущениям темп // VOLUM #define echoPin A0 // Echo pin A0 # define trigPin A1 // Триггерный вывод A1long duration; // продолжительность для вычисления расстояния int HR_dist =0; // Расчетное расстояние int minimumRange =5; // Мин. Диапазон сонараint maximumRange =200; // Макс. Дальность действия сонараunsigned long pulseduration =0; int nivelCm, nivelRamasCm; int nivelProc, nivelVol; int empty =100; int full =100; int sqrLevel, sqrInvertLevel; // Statusint status =WL_IDLE_STATUS; // Создание экземпляра aRESTaREST rest =aREST (); // Параметры WiFi char ssid [] ="WIFI_AP"; char password [] ="WIFI_PASSW"; // Порт для прослушивания входящих TCP-соединений # define LISTEN_PORT 80 // Создание экземпляра сервераWiFiServer server (LISTEN_PORT); // INITIALIZARE SENZORI DHT dht (DHTPIN, DHTTYPE); // RELEE RELEEEint aVentil, aLateral; int inReleu1Ventil =6; int inReleu2Ventil =6; int inReleu2Ventil =6; int inReleu2Ventil =6; int inReleu2Ventil =6; int inReleu2Ventil; int inReleu4Ventil =9; int inReleu1Lateral =10; int inReleu2Lateral =11; // Объявить функции, которые будут доступны APIint ledControl (команда String); void setup (void) {// Запустить Serial Serial.begin (115200); // Инициализируем переменные и предоставляем их REST API // rest.variable ("temperature", &temperature); // rest.variable ("влажность", &влажность); // Предоставляемая функция rest.function ("led", ledControl); // Дать имя и ID устройству rest.set_id ("1"); rest.set_name ("mkr1000"); // Подключаемся к WiFi while (status! =WL_CONNECTED) {Serial.print ("Попытка подключиться к SSID:"); Serial.println (ssid); status =WiFi.begin (ssid, пароль); // Ждем 10 секунд подключения:delay (10000); } Serial.println («WiFi подключен»); // Запускаем сервер server.begin (); Serial.println («Сервер запущен»); // Распечатать IP-адрес IPAddress ip =WiFi.localIP (); Serial.print ("IP-адрес:"); Serial.println (ip); // НАСТРОЙКА DHT - ВНУТРИ DHT dht (DHTPIN, DHTTYPE); // sensor.begin (); // Датчик температуры внешней среды DS-16B20 pinMode (trigPin, OUTPUT); pinMode (echoPin, ВХОД); // Инициализировать переменные и предоставить их REST API rest.variable ("Vol_container", &sqrLevel); rest.variable ("Umiditate_sol", &umidSol); rest.variable ("Umiditate_aer", &umidAer); rest.variable ("Temp_in", &tempIn); rest.variable ("Temp_out", &tempOut); rest.variable ("Temp_sol", &tempSol); // rest.variable ("Umidex_in", &umidexIn); // сенсоры.requestTemperatures (); // Температурный выход} void loop () {getmyDistance (); // getSoilVals (); getInsideVals (); // getOutSideVals (); // Обработка вызовов REST WiFiClient client =server.available (); если (! клиент) {возврат; } пока (! client.available ()) {задержка (1); } rest.handle (клиент);} void getmyDistance () {digitalWrite (trigPin, LOW); delayMicroseconds (2); digitalWrite (trigPin, HIGH); delayMicroseconds (10); digitalWrite (trigPin, LOW); duration =pulseIn (echoPin, HIGH); // вычислить расстояние HR_dist =duration / 58.2; // sqrLevel =empty - HR_dist; если (HR_dist> =maximumRange || HR_dist <=minimumRange) {sqrLevel =0; } еще {sqrLevel =empty - HR_dist; Serial.println (HR_dist); } задержка (100); } void getDistance () {digitalWrite (trigPin, LOW); delayMicroseconds (10); // теперь отправляем импульс 10uS для активации Ping digitalWrite (trigPin, HIGH); delayMicroseconds (10); digitalWrite (trigPin, LOW); // наконец, измеряем длину входящего импульса pulseduration =pulseIn (echoPin, HIGH); // делим длину импульса на halfpulseduration =pulseduration / 2; // конвертируем в сантиметры. nivelRamasCm =int ( pulseduration / 29); nivelCm =empty - nivelRamasCm; nivelVol =map (nivelRamasCm, full, empty, 100, 0); // Типаэстэ нивелул в сантиметрах if (nivelCm> =-5 &&nivelCm <=135) {double a =nivelCm / 100 * nivelVol; int sqrLevel =240 - nivelCm; int sqrInvertLevel =120 + nivelRamasCm; if (nivelCm> 65 &&nivelCm <=85) {} if (nivelCm> 85 &&nivelCm <=100) {}}} long microsecondsToCentimeters (длинные микросекунды) {// Скорость звука составляет 340 м / с или 29 микросекунд в сантиметр // Пинг проходит вперед и назад, поэтому расстояние составляет половину пройденного расстояния return microseconds / 29/2;} void getInsideVals () {float h =dht.readHumidity (); // Считываем температуру в градусах Цельсия (по умолчанию) float t =dht.readTemperature (); // Считываем температуру по Фаренгейту (isFahrenheit =true) // с плавающей запятой f =dht.readTemperature (true); umidAer =h; tempIn =t; // Проверяем, нет ли сбоев при чтении, и выходим раньше (чтобы повторить попытку). if (isnan (h) || isnan (t)) {Serial.println («Не удалось прочитать с датчика DHT!»); возвращение; } // Вычислить индекс тепла в градусах Фаренгейта (по умолчанию) // float hif =dht.computeHeatIndex (f, h); // Вычислить индекс тепла в градусах Цельсия (isFahreheit =false) // float hic =dht.computeHeatIndex (t, h, false); // umidexIn =hic; } void getOutSideVals () {tempOut =sizes.getTempCByIndex (0); Serial.println ("Температура на выходе:"); Serial.print (tempOut); } void getSoilVals () {umidSol =SHT2x.GetHumidity (); tempSol =SHT2x.GetTemperature (); Serial.println («Влажность почвы (% относительной влажности):»); Серийный принт (umidSol); Serial.print («Температура почвы (C):»); Serial.print (tempSol); } // сенсоры.requestTemperatures (); // Temperatura Out // Пользовательская функция, доступная через APIint ledControl (String command) {// Получить состояние из команды int state =command.toInt (); digitalWrite (6, состояние); возврат 1;} 
libraries.zip C / C ++
Библиотеки, используемые в Filisera
 Без предварительного просмотра (только загрузка). 
Filisera - vb.zip VBScript
.net Проект Visual Studio
 Без предварительного просмотра (только загрузка). 
Filisera - VS VBScript
.net файл, который будет читать данные из arduino и показывать интерфейс
 Imports System.GlobalizationImports System.IOImports System.NetImports System.ThreadingImports System.Windows.Forms.DataVisualization.ChartingImports Newtonsoft.JsonPublic Class Form1 Private _deviceIP As String ="" ' УСТРОЙСТВО IP Private intVolumContainer, intUmidSol, intUmidSera, intTempAfara, intTempSera, intTempSol, intUmidex As String 'VARIABILES Private strR1, strR2 As String' RELAYS Public Count As CountDown 'Private As String ="COUNTDOWN TICK RESIT_ String ="" 'USER KEY DASDATA Private _DSKey As String =""' DATASET KEY DASDATA Private _myDas As New dasData.das Private Sub Form1_Load (sender As Object, e As EventArgs) Обрабатывает MyBase.Load Count =New CountDown (50, 0 ) '5 СЕКУНД ОБНОВЛЕНИЕ AddHandler Count.Tick, AddressOf Count_Tick AddHandler Count.TimesOut, AddressOf Times_up Попробуйте' ПРОЧИТАТЬ НАСТРОЙКИ ИЗ .txt ФАЙЛА Тусклый путь As String =Directory.GetCurrentDirectory ( ) Dim FILE_NAME As String =path &"\ Settings.txt" Dim myText As String ="" 'Если System.IO.File.Exists (FILE_NAME) =True, затем Dim objReader как новый System.IO.StreamReader (FILE_NAME, System. Text.Encoding.Default) Do While objReader.Peek () <> -1 myText &=objReader.ReadLine () Loop Dim _settingItems () As String =myText.Split ("") _deviceIP =_settingItems (0) 'IP-ul DEVICE _AKey =_settingItems (1) .Replace ("akey:", "") _DSKey =_settingItems (2) .Replace ("dskey:", "") cbxEnabled.Text ="Device:" &_deviceIP txtInfo.Text =" IP-устройство:"&_deviceIP &vbNewLine &" AKey:"&_AKey &vbNewLine &" DSKey:"&_DSKey &vbNewLine strR1 =_settingItems (3) .Replace (" relay1:"," ") txtInfo.Text + =" Relay1 :"&strR1 &vbNewLine strR2 =_settingItems (4) .Replace (" relay2:"," ") txtInfo.Text + =" Relay2:"&strR2 &vbNewLine 'txtInfo.Text =" Настройки:"&myText objReader.Dispose () objReader.Close () End If Catch ex As Exception lblDevice.Text =ex.Message.ToString End Попробуйте cmdCheckDevice () 'ЛОКАЛЬНЫЕ НАСТРОЙКИ Thread.CurrentThread.CurrentCulture =New CultureInfo ("en-US") 'Thread.CurrentThread.CurrentUICulture =New CultureInfo ("ro-RO") cmdStartFilisera () End Sub Private Sub Count_Tick (ByVal sender As System.Object, ByVal e As System.EventArgs) cmdGetSensorValues ​​() cmdTriggers () Если CDate (dtFrom.Text) .ToString ("dd.MM.yyyy") =Date.Now (). ToString ("dd.MM.yyyy") Тогда cmdStartFilisera () Если End Sub Private Sub Times_up (ByVal sender As System.Object, ByVal e As System.EventArgs) 'Count.Reset ()' Count.Pause () End Sub Private Sub cmdStartFilisera () Try dtFrom.MaxDate =DateTime.Now _dasResult =_myDas.getDas (_DSKey, "json", 0, 100) cmdFillData () Catch ex As Exception lblDevice.Text + =ex.Message.ToString End Try End Sub Private Sub cbxEnabled_CheckedChanged (sender As Object, e As EventArgs) Обрабатывает cbxEd. CheckedChanged cmdCheckDevice () End Sub Private Sub cmdCheckDevice () Try If cbxDemo.Checked =False Then lblDevice.Text =("Включить устройство!") LblEvenimente.Text =Date.Now.ToString ("dd.MM .yyyy HH:mm:ss ") Если cbxEnabled.Checked =True, тогда Dim pingsender As New Net.NetworkInformation.Ping Если не pingsender.Send (_deviceIP) .Status =Net.NetworkInformation.IPStatus.Success Then lblDevice.Text =(" Устройство недоступно в локальной сети! ") CbxEnabled.Checked =False btnTemperatura.Enabled =False btnVolumContainer.Enabled =False Count.Reset () Count.Pause () MessageBox.Show (" Устройство в "&_deviceIP &" не найдено! ") Else lblDevice.Text =(" Устройство подключено! ") BtnTemperatura.Enabled =True btnVolumContainer.Enabled =True cmdGetSensorValues ​​() Timer1.Enabled =True cmdAddData () Count.Start () End If Else End If Else b True btnVolumContainer.Enabled =True cmdGetSensorValues ​​() Timer1.Enabled =True cmdAddData () Count.Start () End If Catch ex As Exception End Try End Sub Private Sub btnVolumContainer_Click (sender As Object, e As EventArgs) Handles btn ://192.168.0.102/digital/7/1 'ЗАКРЫТЬ ВОДУ ОТ КНОПКИ Dim _ItemsR1 () As String =s trR1.Split (",") Если btnVolumContainer.Text.Contains ("Open") Тогда cmdRelay (_ItemsR1 (0), 1) cmdRelay (_ItemsR1 (1), 1) cmdRelay (_ItemsR1 (2), 0) cmdRelay (_ItemsRelay (_Items (3), 0) btnVolumContainer.Text ="Закрыть воду" Остальное cmdRelay (_ItemsR1 (0), 0) cmdRelay (_ItemsR1 (1), 0) cmdRelay (_ItemsR1 (2), 1) cmdRelay (_ItemsR1 (3), ) btnVolumContainer.Text ="Open water" End If 'Dim _url As String =_deviceIP &"digital / 7/1" End Sub Private Sub btnTemperatura_Click (sender As Object, e As EventArgs) Обрабатывает btnTemperatura.Click' ЗАКРЫТЬ ОКНО С КНОПКИ _ItemsR2 () As String =strR2.Split (",") Если btnTemperatura.Text.Contains ("Open") Тогда cmdRelay (_ItemsR2 (0), 1) cmdRelay (_ItemsR2 (1), 1) btnTemperatura.Text ="Close window "Else cmdRelay (_ItemsR2 (0), 0) cmdRelay (_ItemsR2 (1), 0) btnTemperatura.Text =" Open window "End If End Sub Private Sub Sub Timer1_Tick (sender As Object, e As EventArgs) Handles Timer1.Tick cmdAddData () End Sub Private Sub btnTestCloud_Click (sender As Object, e As EventArgs) Обрабатывает btnTestCloud. Щелкните Попробовать cmdStartFilisera () Catch ex As Exception MessageBox.Show («Потеряно соединение с DasData!») End Try End Sub Private Function cmdRelay (ByVal _DPin As String, ByVal _cmd As Int16) Try Dim _urlCommand As String =_deviceIP &"/ digital / "&_DPin &" / "&_cmd Dim client As New WebClient () client.Headers.Add (" user-agent "," Arduino / 4.0 (совместимый; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;) ") Dim data As Stream =client.OpenRead (_urlCommand) Dim reader As New StreamReader (data) Dim s As String =reader.ReadToEnd () 'txtInfo.Text + =(s) data. Close () reader.Close () Catch ex As Exception End Try End Function Private Sub dtFrom_ValueChanged (sender As Object, e As EventArgs) Обрабатывает dtFrom.ValueChanged Попробуйте 'ПОЛУЧИТЬ ЗНАЧЕНИЯ НА ОСНОВЕ ВЫБОРА ДАТЫ _dasResult =_myDas.getDas (_DSKey, " ", CDate (dtFrom.Text) .ToString (" dd.MM.yyyy "), CDate (dtFrom.Text) .ToString (" dd.MM.yyyy ")) cmdFillData () Catch ex As Exception MessageBox.Show (ex .Message.ToString) End Try End Sub Private Sub cmdGetSensorValues ​​() Try '' ПОЛУЧИТЬ СЕНСОРНЫЕ ЗНАЧЕНИЯ С УСТРОЙСТВА Если cbxDemo.Checked =False, Затем Dim client As New WebClient () client.Headers.Add ("user-agent", "Arduino /4.0 (совместимый; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;) ") Тусклые данные как Stream =client.OpenRead (" http:// "&_deviceIP &" /index.html ") Dim reader As Новый StreamReader (данные) Dim s As String =reader.ReadToEnd () s =s.Replace ("" "", "") .Replace ("}", "") .Replace ("{", "") .Replace ("", "") .Replace ("variables:", "") Dim sItems () As String =s.Split (",") intVolumContainer =cmdGetVal (sItems (0)) intUmidSol =cmdGetVal (sItems (1)) intUmidSera =cmdGetVal (sItems (2)) intTempSera =cmdGetVal (sItems 4)) intTempSol =cmdGetVal (sItems (5)) data.Close () reader.Close () Иначе intVolumContainer =_rnd (60) intUmidSol =_rnd (80) intUmidSera =_rnd (20) intTempSera =_rnd (45) intTempA (57) intTempSol =_rnd (66) Конец Если ggVolum.Value =intVolumContainer rgVolum.Value =intVolumContainer ggUmidSol.Value =intUmidSol ggUmidSera.Value =intUmidSera ggTempSera.Value =intTempSera ggTempOut.Value =intTempAfara ggTempSol.Value =intTempSol улов ех как исключение '{"variables" {"Volum_container":0, "Umiditate_sol":0.00, "Umiditate_aer":36.60, "Temp_in":26.50, "Temp_out":0.00, "Temp_sol":0.00, "Umidex_in":26.37}, " id ":" 1 "," name ":" FiliSera "," hardware ":" arduino "," connected ":true} Конец Попытки E nd Sub Private Function cmdGetVal (ByVal _sItem As String) Попробуйте 'SPLIT STRING AND GET VALUES BACK Dim _s () As String =_sItem.Split (":") Return _s (1) Catch ex As Exception End Try End Function Private Sub cmdAddData () Попробуйте 'ОТПРАВИТЬ ДАННЫЕ В ОБЛАЧНОЕ ХРАНИЛИЩЕ ДАННЫХ Dim _strFiliseraDataSend As String =intVolumContainer &"|" &intUmidSol &"|" &intUmidSera &"|" &intTempAfara &"|" &intTempSera &"|" &intTempSera &"|" &intTemp | "&intUmidex &" | "&Dim _dasResult As String =_myDas.sendDas (_strFiliseraDataSend, _DSKey, _AKey) Catch ex As Exception cmdLogMe (" ERROR ... "&ex.Message.ToString ()," error ") Конец попытки End Sub Private Sub cmdFillData () Попробуйте 'ЗАПОЛНИТЬ ИНТЕРФЕЙС БУДЕТ ВСЕ ВИДЫ ДАННЫХ Dim dataSet As DataSet =JsonConvert.DeserializeObject (Of DataSet) (_ dasResult) Dim dataTable As DataTable =dataSet.Tables (0)' GRIDVIEW DataGridView1.DetataSource. Таблицы (0) DataGridView1.AutoGenerateColumns =True 'ДИАГРАММЫ ChartTemp.DataSource =dataTable ChartTemp.Series.Clear () chartUmid.DataSource =dataTable ch artUmid.Series.Clear () chartVolum.DataSource =dataTable chartVolum.Series.Clear () Dim i As Integer =0 Dim j As Integer =0 Dim k As Integer =0 Для каждой таблицы в dataSet.Tables For Each row In table. Строки для каждого столбца в таблице. Столбцы Dim colName As String =col.ColumnName.ToString Если colName <> "id" И colName <> "AIDate", тогда попробуйте Dim serieName As String =RTrim (colName) 'VOLUME If colName.Contains ( "Nivel") Затем chartVolum.Series.Add (serieName) chartVolum.Series (serieName) .LabelFormat ="N1" chartVolum.Series (i) .ChartType =SeriesChartType.Line chartVolum.Series (i) .BorderWidth =2 chartVolum.Series (i) .Color =Color.Aqua chartVolum.Series (i) .BorderDashStyle =ChartDashStyle.Solid chartVolum.Series (serieName) .YValueMembers =RTrim (colName) chartVolum.Series (serieName) .XValueMember ="AIDate" i End If 'HUMIDITY If colName.Contains ("Umid") Then chartUmid.Series.Add (serieName) chartUmid.Series (serieName) .LabelFormat ="N1" chartUmid.Series (j) .ChartType =SeriesChartType.Line chartU mid.Series (j) .BorderWidth =2 chartUmid.Series (j) .BorderDashStyle =ChartDashStyle.Solid chartUmid.Series (serieName) .YValueMembers =RTrim (colName) chartUmid.Series (serieName) .XValueMember =+ ="AIDate" 1 End If 'TEMP If colName.Contains ("Temp") Then ChartTemp.Series.Add (serieName) ChartTemp.Series (serieName) .LabelFormat ="N1" ChartTemp.Series (k) .ChartType =SeriesChartType.Line ChartTemp.Series (k) .BorderWidth =2 ChartTemp.Series (k) .BorderDashStyle =ChartDashStyle.Solid ChartTemp.Series (serieName) .YValueMembers =RTrim (colName) ChartTemp.Series (serieName) .XValueMember ="AIDate" Catch ex As Exception End Try End If Next Exit For Next Next 'ЗАПОЛНИТЬ ДИАГРАММЫ ChartTemp.DataBind () ChartTemp.Visible =True chartUmid.DataBind () chartUmid.Visible =True chartVolum.DataBind () chartVolum.Visible =True Catch ex As Исключение cmdLogMe ("ERROR ..." &ex.Message.ToString (), "error") End Try End Sub Private Sub cmdTriggers () 'SET TRIGGERS AND STORE LOG Select Case intVolumContain er Case> 80 cmdLogMe («ВЫСОКИЙ ВЫСОКИЙ - объем контейнера - остановка воды», «0») Case> 70 'cmdLogMe («HIGH - объем контейнера - вода начнется», «1») Case <20' cmdLogMe («LOW - Низкий объем контейнера - вода прекратится »,« 1 ») Case <10 cmdLogMe (« LOW LOW - объем контейнера высокий высокий высокий - начальная вода »,« 0 ») End Select Select Case intTempSera Case> 38 cmdLogMe (« HIGH HIGH » - Температура в теплице - открытые окна »,« 0 ») Case> 30 'cmdLogMe (« ВЫСОКАЯ - Температура в теплице - подготовьте окна »,« 1 ») Case <10' cmdLogMe (« LOW - Температура в теплице - подготовить окна »,« 1 ») Case <10 cmdLogMe (« LOW LOW - объем контейнера высокий высокий высокий - начальная вода »,« 0 ») End Select End Sub Public Function _rnd (ByVal n As Integer) As Integer 'инициализировать случайное число генератор Dim r как новый случайный (System.DateTime.Now.Millisecond) Return r.Next (1, n) End Function Private Sub cmdLogMe (message As String, _type As String) Try Dim _strLog As String ="adeewdf4-4aa34-14ass24 -8436-aea1 "'LOG DASDATA DS KEY lstEv enimente.Items.Add ((System.DateTime.Now &"" &message) + Constants.vbNewLine) 'СОХРАНИТЬ ЖУРНАЛЫ ДАННЫХ ДАННЫХ _myDas.sendDas (message &"|" &_type, _strLog, _AKey) Catch ex As Exception cmdLogMe ( «ERROR ...» &ex.Message.ToString (), «error») End Try End SubEnd Class 
Исходные файлы - Filisera
https://github.com/dasdata/DasFilisera

Схема

PDF-файл с подключениями - датчики и реле

Производственный процесс

  1. Регистратор температуры Raspberry Pi
  2. Измерение температуры с помощью однопроводного датчика DS18B20 и Raspberry Pi
  3. Библиотека Python датчика температуры TMP006 с использованием Raspberry pi,
  4. Датчик температуры Python и Raspberry Pi
  5. 1-проводный датчик температуры DS1820 на Raspberry Pi (напрямую через GPIO)
  6. Цифровой датчик термометра Raspberry Pi 1-Wire (DS18B20)
  7. Датчик температуры и освещенности Raspberry Pi
  8. Датчик температуры Raspberry Pi
  9. Датчик температуры подшипника | детектор
  10. Лабораторный датчик расхода и температуры