Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

DasFilisera Green House

Komponenten und Verbrauchsmaterialien

DHT22-Temperatursensor
× 1
DS18B20
× 1
Bodentemperatur- und Feuchtigkeitssensor FS200-SHT25
× 1
4-Kanal-Relaismodul
× 1
2-Kanal-Relaismodul
× 1
Ultraschallsensor - HC-SR04 (Generic)
× 1
Arduino MKR1000
× 1

Apps und Onlinedienste

DasData
Microsoft Visual Studio 2015

Über dieses Projekt

Bauen Sie Pflanzen und Gemüse an, die sich ihrer Umweltbedingungen bewusster sind. Einfach mit einem MKR1000

Voraussetzungen für das Pflanzenwachstum

Das Pflanzenwachstum hängt von mehreren idealen Umgebungsbedingungen wie Temperatur, Feuchtigkeit, Licht und anderen mineralischen Nährstoffen oder Sauerstoff ab.

Die Pflanzen mit ausreichend Wasser zu versorgen oder die normale Temperatur im Gewächshaus zu halten, kann ein kniffliger Prozess sein, aber nicht, wenn Sie es viel einfacher machen könnten.

Hardwareübersicht

Temperatur / Luftfeuchtigkeit

TH1 - Die Außentemperaturwerte werden von einem wasserdichten DS18B20-Sensor geliefert - D1-Pin-Verbindung

TH2 - Innentemp. / summe. kann aus DHT22 herausgefunden werden - Pin D0

TH3 - FS200/SHT25 - wird bei Bodenbedingungen eingeführt. Anschlüsse für SCL- und SDA-Pins 12/11

Wasserhebel

W1 - Um den Wasserstand zu erhalten, verwenden Sie einen Ultraschallsensor wie HC - SR04 Anschlüsse an A0 - Echo und Trigger an A1. Basierend auf diesem Wert können Sie ein Ventil mit R1 - 4-Kanal-Relais steuern.

Lufttemperatur / Sauerstoff

A1 - Basierend auf Temperatur-/Feuchtigkeitswerten können Sie mit dem R2-Relais befehlen, wann Fenster geöffnet werden sollen. Je nach Klima sollten Sie es nach Belieben abstimmen.

Relais R1 / R2

Um einige Befehle wie das Öffnen von Windows oder das Starten einer Pumpe zu setzen, können Sie Befehle an die Relais senden ... R1 ist mit den digitalen Pins 7,8,9,10 und R2 5,6 verbunden

MKR1000 - aRest

Jetzt, da wir alle Dinge miteinander verbunden haben, ist es an der Zeit, einige Daten zu erhalten und mit einer Rest-Bibliothek Sinn zu machen, die eine Webschnittstelle für das MKR1000-Gerät mit einer Json-Formatzeichenfolge bereitstellt. Verwenden Sie die unten bereitgestellten Bibliotheken und .ino-Dateien und ändern Sie Ihre WLAN-Router-Verbindung entsprechend.

Daten und Schnittstelle

Solange wir eine Schnittstelle zu unserem Gerät haben, können wir diese Daten auch verbrauchen und im lokalen Netzwerk sehen.

Wir haben Visual Studio 2015 und .net verwendet, um eine Windows-Anwendung zu erstellen, die Ihnen hilft, die Live-Bedingungen von Gewächshäusern zu visualisieren, aber auch ein wenig den Tagesverlauf oder alle Arten von Protokollen, die Sie integrieren möchten.

Für die Speicherung in der Cloud haben wir einfach DasData Gewächshauskonfigurationen verwendet oder Sie erstellen Ihre eigenen Datenkanäle.

Der nächste Schritt besteht darin, den DsKey und AKey zu ändern, die in der Settings.txt aus dem Anwendungsordner bereitgestellt werden. Wenn alles funktioniert, sollten Sie bereits einige Daten online sehen.

Folgen Sie dem Hackster-Kanal von DasData für weitere zukünftige Updates

Gewächshausautomatisierung

Sie sollten basierend auf Ihrer Gewächshauskonfiguration und -größe entscheiden, welche Ventile oder Motoren mehr Aktion erzeugen. All dies könnte über Relais gesteuert werden.

Code

  • Filisera_Arduino
  • Bibliotheken.zip
  • Filisera - vb.zip
  • Filisera - VS
Filisera_Arduino C/C++
DASFilisera mit aREST Library für das Arduino/Genuino MKR1000 Board.
/* DASFilisera mit aREST Library für das Arduino/Genuino MKR1000 Board. aREST - Geschrieben im Jahr 2016 von Marco Schwartz unter einer GPL-Lizenz.*/// Erforderliche Bibliotheken importieren#include #include #include #include "DHT.h"#include #include #include #include // ********************** ***// ** Senzori Temperatura **// *************************#define DHTPIN 0 // Innenfeuchtigkeit/temp/wärme index#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321#define ONE_WIRE_BUS 1OneWire oneWire(ONE_WIRE_BUS);DallasTemperatursensoren(&oneWire);float umidSol =0; // Bodenfeuchtefloat umidAer =0; // Luftfeuchtefloat tempIn =0; // Temperaturvorlauf tempOut =0; // Temperaturauslauf tempSol =0; // Behältervolumenfloat umidexIn =0; // Fühlt sich an wie Temp // VOLUM #define echoPin A0 // Echo Pin A0 #define trigPin A1 // Trigger Pin A1long Dauer; // Dauer zum Berechnen von Distanceint HR_dist =0; // Berechneter Abstandint minimumRange=5; //Min. Sonarbereichint maximumRange=200; //Max Sonarreichweiteunsigned long pulseduration=0;int nivelCm, nivelRamasCm;int nivelProc, nivelVol;int empty =100;int full =100;int sqrLevel, sqrInvertLevel; // Statusint status =WL_IDLE_STATUS;// aREST-Instanz erstellenaREST rest =aREST();// WiFi parameterschar ssid[] ="WIFI_AP";char password[] ="WIFI_PASSW";// Der Port zum Abhören eingehender TCP-Verbindungen# define LISTEN_PORT 80// Erstelle eine Instanz des ServerWiFiServer Servers(LISTEN_PORT);//INITIALIZARE SENZORI DHT dht(DHTPIN, DHTTYPE);// RELEE RELEEEint aVentil, aLateral;int inReleu1Ventil =6;int inReleu2Ventil =7;int inReleu3Ventil =8;int inReleu4Ventil =9;int inReleu1Lateral =10;int inReleu2Lateral =11; // Deklarieren Sie die Funktionen, die der API zur Verfügung gestellt werden sollenint ledControl (String-Befehl);void setup (void) { // Serial.begin (115200) starten; // Variablen initieren und der REST API aussetzen // rest.variable("temperature",&temperature);// rest.variable("humidity",&humidity); // Funktion die verfügbar gemacht werden soll rest.function("led",ledControl); // Geben Sie dem Gerät Name und ID rest.set_id("1"); rest.set_name("mkr1000"); // Verbindung zu WiFi herstellen, während (status!=WL_CONNECTED) { Serial.print ( "Versuch, eine Verbindung mit SSID herzustellen:"); Serial.println (ssid); status =WiFi.begin(ssid, Passwort); // 10 Sekunden auf Verbindung warten:delay(10000); } Serial.println ("WiFi verbunden"); // Server starten server.begin(); Serial.println("Server gestartet"); // Ausgabe der IP-Adresse IPAddress ip =WiFi.localIP(); Serial.print ("IP-Adresse:"); Serial.println (ip); // DHT EINRICHTEN - INNERHALB DHT dht (DHTPIN, DHTTYPE); // Sensoren.begin (); // Pornire senzor temperature a exterioara DS-16B20 pinMode (trigPin, OUTPUT); pinMode (echoPin, EINGANG); // Variablen initieren und der REST API ausgeben 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); // sensoren.requestTemperatures (); // Temperatur raus}void loop() { getmyDistance(); // getSoilVals(); getInsideVals(); // getOutSideVals(); // REST-Aufrufe verarbeiten WiFiClient client =server.available(); if (!client) { return; } while(!client.available()){ delay(1); } rest.handle(client);}void getmyDistance() { digitalWrite(trigPin,LOW); VerzögerungMikrosekunden(2); digitalWrite (trigPin, HOCH); VerzögerungMikrosekunden(10); digitalWrite (trigPin, LOW); Dauer =pulseIn(echoPin,HIGH); // Distanz berechnen HR_dist =Dauer/58.2; // sqrLevel =leer - HR_dist; if (HR_dist>=maximumRange || HR_dist <=minimumRange) { sqrLevel =0; } else { sqrLevel =leer - HR_dist; Serial.println (HR_dist); } Verzögerung (100); }void getDistance () {digitalWrite (trigPin, LOW); delayMicroseconds (10); // Senden Sie jetzt den 10uS-Impuls, um Ping zu aktivieren digitalWrite (trigPin, HIGH); VerzögerungMikrosekunden(10); digitalWrite(trigPin, LOW); // schließlich die Länge des eingehenden Pulses messen pulseduration =pulseIn(echoPin, HIGH); // die Pulslänge dividieren durch halfpulseduration =pulseduration/2; // in Zentimeter umwandeln.nivelRamasCm =int( pulseduration/29);nivelCm =leer - nivelRamasCm;nivelVol =map(nivelRamasCm, full, empty, 100, 0); // Tipareste nivelul in Centimeter 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 (long microseconds) { // Die Schallgeschwindigkeit beträgt 340 m/s oder 29 Mikrosekunden pro Zentimeter // Der Ping geht hin und her, also ist die Distanz die Hälfte der zurückgelegten Distanz return Mikrosekunden / 29 / 2;}void getInsideVals() { float h =dht.readHumidity(); // Temperatur als Celsius lesen (Standard) float t =dht.readTemperature (); // Temperatur als Fahrenheit lesen (isFahrenheit =true) // float f =dht.readTemperature (true); umidAer =h; tempIn =t; // Prüfen, ob Lesevorgänge fehlgeschlagen sind und vorzeitig beenden (um es erneut zu versuchen). if (isnan (h) || isnan (t)) { Serial.println ( "Fehler beim Lesen vom DHT-Sensor!"); Rückkehr; } // Wärmeindex in Fahrenheit berechnen (Standard) //float hif =dht.computeHeatIndex(f, h); // Wärmeindex in Celsius berechnen (isFahreheit =false) // float hic =dht.computeHeatIndex(t, h, false); // umidexIn =hic; }void getOutSideVals() { tempOut =Sensoren.getTempCByIndex(0); Serial.println ( "Temperaturausgang:"); Serial.print (tempOut); aufrechtzuerhalten. Void getSoilVals () { umidSol =SHT2x.GetHumidity (); tempSol =SHT2x.GetTemperature(); Serial.println("Feuchtigkeitsboden (%RH):"); Serial.print (umidSol); Serial.print ("Temperatur Boden (C):"); Serial.print (tempSol); } // sensoren.requestTemperatures (); // Temperature Out // Benutzerdefinierte Funktion, auf die über APIint zugegriffen werden kann ledControl (String-Befehl) { // Status vom Befehl abrufen int state =command.toInt(); digitalWrite(6,Zustand); 1 zurückgeben;} 
libraries.zipC/C++
In Filisera verwendete Bibliotheken
Keine Vorschau (nur Download).
Filisera - vb.zipVBScript
.net Visual Studio Project
Keine Vorschau (nur Download).
Filisera - VS VBScript
.net-Datei, die Daten von arduino liest und Schnittstelle zeigt
Imports System.GlobalizationImports System.IOImports System.NetImports System.ThreadingImports System.Windows.Forms.DataVisualization.ChartingImports Newtonsoft.JsonPublic Class Form1 Private _deviceIP As String ="" ' DEVICE IP Privat intVolumContainer, intUmidSol, intUmidSera, intTempAfara, intTempSera, intTempSol, intUmidex As String ' VARIABILES Private strR1, strR2 As String 'RELAYS Public Count As CountDown 'COUNTDOWN TICK Private _das"ITIREV 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) Behandelt MyBase.Load Count =New CountDown(50, 0 ) '5 SEKUNDEN UPDATE AddHandler Count.Tick, AddressOf Count_Tick AddHandler Count.TimesOut, AddressOf Times_up Versuchen 'EINSTELLUNGEN AUS .txt-DATEI LESEN Pfad als String dimmen =Directory.GetCurrentDirectory( ) Dim FILE_NAME As String =path &"\Settings.txt" Dim myText As String ="" ' If System.IO.File.Exists(FILE_NAME) =True Then Dim objReader As New 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 ="Gerät:" &_deviceIP txtInfo.Text =" IP-Gerät:" &_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 ="Einstellungen:" &myText objReader.Dispose () objReader.Close() End If Catch ex As Exception lblDevice.Text =ex.Message.ToString End Try cmdCheckDevice() 'LOKALE EINSTELLUNGEN 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() If CDate(dtFrom.Text).ToString("dd.MM.yyyy") =Date.Now().ToString("dd.MM.yyyy") Then cmdStartFilisera() End If 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) Behandelt cbxEnabled. CheckedChanged cmdCheckDevice() End Sub Private Sub cmdCheckDevice() Try If cbxDemo.Checked =False Then lblDevice.Text =("Enable device!") lblEvenimente.Text =Date.Now.ToString("dd.MM .yyyy HH:mm:ss") If cbxEnabled.Checked =True Then Dim pingsender As New Net.NetworkInformation.Ping If Not pingsender.Send(_deviceIP).Status =Net.NetworkInformation.IPStatus.Success Then lblDevice.Text =(" Gerät im lokalen Netzwerk nicht verfügbar!") cbxEnabled.Checked =False btnTemperatura.Enabled =False btnVolumContainer.Enabled =False Count.Reset() Count.Pause() MessageBox.Show("Device at " &_deviceIP &" not found! ") Else lblDevice.Text =("Gerät verbunden!") btnTemperatura.Enabled =True btnVolumContainer.Enabled =True cmdGetSensorValues() Timer1.Enabled =True cmdAddData() Count.Start() End If Else End If Else btnTemperatura.Enabled =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) Behandelt btnVolumContainer.Click ' http ://192.168.0.102/digital/7/1 'WASSER AUS TASTE SCHLIESSEN Dim _ItemsR1() As String =s trR1.Split(",") If btnVolumContainer.Text.Contains("Open") Then cmdRelay(_ItemsR1(0), 1) cmdRelay(_ItemsR1(1), 1) cmdRelay(_ItemsR1(2), 0) cmdRelay(_ItemsR1 (3), 0) btnVolumContainer.Text ="Wasser schließen" Sonst cmdRelay(_ItemsR1(0), 0) cmdRelay(_ItemsR1(1), 0) cmdRelay(_ItemsR1(2), 1) cmdRelay(_ItemsR1(3), 1 ) 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) Behandelt btnTemperatura.Click 'CLOSE WINDOW FROM BUTTON Dim _ItemsR2() As String =strR2.Split(",") If btnTemperatura.Text.Contains("Open") Then 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 Timer1_Tick(sender As Object, e As EventArgs) Behandelt Timer1.Tick cmdAddData () End Sub Private Sub btnTestCloud_Click(sender As Object, e As EventArgs) Behandelt btnTestCloud. Click Try cmdStartFilisera() Catch ex As Exception MessageBox.Show("Lost connection with 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 (kompatibel; MSIE 6.0; WindowsNT 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) Behandelt dtFrom.ValueChanged Try 'GET WERTE BASIERT AUF DATUMSAUSWAHL _dasResult =_myDas.getDas(_DSKey, "jsond ", CDate(dtFrom.Text).ToString("dd.MM.yyyy"), CDate(dtFrom.Text).ToString("dd.MM.yyyy")) cmdFillData() Catch ex als Ausnahme MessageBox.Show(ex .Message.ToString) End Try End Sub Private Sub cmdGetSensorValues() Try ''GET SENSOR VALUES FROM DEVICE If cbxDemo.Checked =False Then Dim client As New WebClient() client.Headers.Add("user-agent", "Arduino /4.0 (kompatibel; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)") Dim data As Stream =client.OpenRead("http://" &_deviceIP &"/index.html") Dim reader As New StreamReader(data) Dim s As String =reader.ReadToEnd() s =s.Replace("""", "").Replace("}", "").Replace("{", "").Replace(" ", "").Replace("variablen:", "") Dim sItems() As String =s.Split(",") intVolumContainer =cmdGetVal(sItems(0)) intUmidSol =cmdGetVal(sItems(1)) intUmidSera =cmdGetVal(sItems(2)) intTempSera =cmdGetVal(sItems(3)) intGetGetVal(sItdTempAfara =(cmdTempAfara =4)) intTempSol =cmdGetVal(sItems(5)) data.Close() reader.Close() Sonst intVolumContainer =_rnd(60) intUmidSol =_rnd(80) intUmidSera =_rnd(20) intTempSera =_rnd(45) int_Temprnfara =(57) intTempSol =_rnd(66) End If ggVolum.Value =intVolumContainer rgVolum.Value =intVolumContainer ggUmidSol.Value =intUmidSol ggUmidSera.Value =intUmidSera ggTempSera.Value =intTempSera ggTempOutfaraException =intTempASol '{"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} End Try E nd Sub Private Function cmdGetVal(ByVal _sItem As String) Try '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 () Versuchen Sie 'DATEN AN DASDATA CLOUD-SPEICHER SENDEN Dim _strFiliseraDataSend As String =intVolumContainer &"|" &intUmidSol &"|" &intUmidSera &"|" &intTempAfara &"|" &intTempSera &"|" &intTempSol '&"| "&intUmidex &"|"&Dim _dasResult As String =_myDas.sendDas(_strFiliseraDataSend, _DSKey, _AKey) Ex als Ausnahme abfangen cmdLogMe("ERROR..." &ex.Message.ToString(), "error") End Try End Sub Private Sub cmdFillData() Try 'FILL INTERFACE WILL ALL SORT OF DATA Dim dataSet As DataSet =JsonConvert.DeserializeObject(Of DataSet)(_dasResult) Dim dataTable As DataTable =dataSet.Tables(0) 'GRIDVIEW DataGridView1.DataSource =dataSet. Tables(0) DataGridView1.AutoGenerateColumns =True 'CHARTS 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 Für jede Tabelle in dataSet.Tables Für jede Zeile in der Tabelle. Zeilen für jede Spalte in table.Columns Dim colName As String =col.ColumnName.ToString Wenn colName <> "id" And colName <> "AIDate" Then Try Dim serieName As String =RTrim(colName) 'VOLUME If colName.Contains( "Nivel") Dann 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 +=1 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" j +=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" k +=1 End If Ex als Ausnahme abfangen Ende Try End If Next Exit For Next Next 'FILL THE CHARTS ChartTemp.DataBind() ChartTemp.Visible =True chartUmid.DataBind() chartUmid.Visible =True chartVolum.DataBind() chartVolum.Visible =True Catch ex As Ausnahme cmdLogMe("ERROR..." &ex.Message.ToString(), "error") End Try End Sub Private Sub cmdTriggers() 'SET TRIGGERS UND SPEICHERN DES LOGS Select Case intVolumContain er Case> 80 cmdLogMe("HIGH HIGH - Behältervolumen - Wasser stoppen", "0") Case> 70 ' cmdLogMe("HIGH - Behältervolumen - Wasser startet", "1") Case <20 ' cmdLogMe("LOW - Behältervolumen niedrig - Wasser stoppt", "1") Case <10 cmdLogMe("LOW LOW - Behältervolumen hoch hoch hoch - Start Wasser", "0") End Select Case auswählen intTempSera Case> 38 cmdLogMe("HIGH HIGH - Temperatur im Gewächshaus - Fenster öffnen", "0") Fall> 30 ' cmdLogMe("HIGH - Temperatur im Gewächshaus - Fenster vorbereiten", "1") Fall <10 ' cmdLogMe("LOW - Temperatur im Gewächshaus - Fenster vorbereiten", "1") Case <10 cmdLogMe("LOW LOW - Behältervolumen hoch hoch hoch - Startwasser", "0") End Select End Sub Public Function _rnd(ByVal n As Integer) As Integer 'Zufallszahl initialisieren Generator Dim r As New Random(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-SCHLÜSSEL lstEv enimente.Items.Add((System.DateTime.Now &" " &message) + Constants.vbNewLine) 'STORE LOGS TO DASDATA _myDas.sendDas(message &"|" &_type, _strLog, _AKey) Catch ex As Exception cmdLogMe( "ERROR..." &ex.Message.ToString(), "error") End Try End SubEnd Class
Quelldateien - Filisera
https://github.com/dasdata/DasFilisera

Schaltpläne

PDF-Datei mit Anschlüssen - Sensoren &Relais

Herstellungsprozess

  1. Himbeer-Pi-Temperaturlogger
  2. Messen Sie Temperaturen mit einem 1-Draht-DS18B20-Sensor und Raspberry Pi
  3. TMP006-Temperatursensor-Python-Bibliothek mit Raspberry Pi,
  4. Python- und Raspberry Pi-Temperatursensor
  5. 1-Draht-Temperatursensor DS1820 am Raspberry Pi (GPIO direkt)
  6. Raspberry Pi 1-Draht digitaler Thermometersensor (DS18B20)
  7. Raspberry Pi Temperatur- und Lichtsensor
  8. Raspberry Pi-Temperatursensor
  9. Lagertemperatursensor | Detektor
  10. Lab-On-Chip-Durchfluss- und Temperatursensor