@agent
Hallo,
hast Du vielleicht noch einen Sketch Schaltserver (mit 433 Mhz Sender / ohne 433 Mhz Sender) für den Arduino und ESP8266?
Oder ist der veröffentlicht und ich habe ihn übersehen?
Die Sketche (ESP8266) für DS18 und DHT habe ich mal zusammengeführt und auch einen 2. DHT eingetragen. Das verifizieren ist Fehlerfrei durchgelaufen. Hochgeladen habe ich ihn noch nicht.
Mir ist noch unklar, wie der zweite DHT angeschlossen und Adressiert wird.
Ich habe das mal so eingefügt: Ist das so richtig?
//Sonsorbelegungen für 2 DHT
#define DHT_POWER_PIN 2 //Pin der den DHT ein/aus-schaltet
#define DHT_PIN 3 //Pin an dem der DHT 1 Data Pin angeschlossen ist
#define DHT_PIN 4 //Pin an dem der DHT 2 Data Pin angeschlossen ist
Oder werden die Datenpin's parallel angeschlossen und die Adressierung wird über verschiedene DHT_Power Pin's gemacht?
Den kompletten Sketch habe ich angehängt. Die Belegung des Speichers vom Arduino pro mini wäre dann mit 58 % belegt.
Wäre es da möglich noch den Schaltserver ohne 433 Mhz Sender einzupflegen, da dieser wohl ca. 28 % Speicher belegt?
Display All
Hallo,
hast Du vielleicht noch einen Sketch Schaltserver (mit 433 Mhz Sender / ohne 433 Mhz Sender) für den Arduino und ESP8266?
Oder ist der veröffentlicht und ich habe ihn übersehen?
Die Sketche (ESP8266) für DS18 und DHT habe ich mal zusammengeführt und auch einen 2. DHT eingetragen. Das verifizieren ist Fehlerfrei durchgelaufen. Hochgeladen habe ich ihn noch nicht.
Mir ist noch unklar, wie der zweite DHT angeschlossen und Adressiert wird.
Ich habe das mal so eingefügt: Ist das so richtig?
//Sonsorbelegungen für 2 DHT
#define DHT_POWER_PIN 2 //Pin der den DHT ein/aus-schaltet
#define DHT_PIN 3 //Pin an dem der DHT 1 Data Pin angeschlossen ist
#define DHT_PIN 4 //Pin an dem der DHT 2 Data Pin angeschlossen ist
Oder werden die Datenpin's parallel angeschlossen und die Adressierung wird über verschiedene DHT_Power Pin's gemacht?
Den kompletten Sketch habe ich angehängt. Die Belegung des Speichers vom Arduino pro mini wäre dann mit 58 % belegt.
Wäre es da möglich noch den Schaltserver ohne 433 Mhz Sender einzupflegen, da dieser wohl ca. 28 % Speicher belegt?
Source Code
- /**
- * Sensorpunkt
- *
- * Benötigte Hardware:
- * - Arduino Uno, Mega, Due, Pro Mini oder Nano (für Pro Mini wird zum flashen noch ein FTDI/USB Adapter benötigt)
- * - ESP8266 WLAN Chip
- *
- * @author Oliver Kleditzsch
- * @copyright Copyright (c) 2015, Oliver Kleditzsch
- * @license http://opensource.org/licenses/gpl-license.php GNU Public License
- * @since 1.0.0
- * @version 1.0.0
- */
- #include "ESP8266.h" //https://github.com/itead/ITEADLIB_Arduino_WeeESP8266
- #include <SoftwareSerial.h>
- #include <OneWire.h>
- #include <DallasTemperature.h> // https://github.com/milesburton/Arduino-Temperature-Control-Library
- #include <PString.h>
- #include <DHT.h>
- //WLan Verbindungsdaten
- #define SSID "rmjspa" //SSID
- #define PASSWORD "xxxyyyxxx" //Passwort
- #define HOST_NAME "192.168.200.115" //IP des SHC Masters
- #define HOST_PORT (80)
- #define USER_SEL_VERSION VERSION_22
- //Allgemeine Einstellungen
- #define PRINT_ON_SERIAL 1 //Werte auch auf der Seriellen Schnittstelle ausgebe
- //Daten des Sensorpunktes
- #define POINT_ID 50 //ID des Sensorpunktes (muss zwischen 1 und 999 sein)
- //Sensorpunkt Spannung senden
- #define SEND_POINT_CURRENT 0 //Sensorpunkt Spannung Senden
- #define SEND_POINT_INDPUT A0 //Analogeingang für die Spannungsmessung
- //Verbindungs LED
- #define CONNECTED_LED 5 //Leuchtet solange die WLAN Verbindung aufgebaut ist
- //Sensor Typen
- //0 -> nicht Verwendet
- //1 -> DS18x20
- //2 -> DHT11/22
- //3 -> BMP085/180
- //4 -> Regensensor (Analogwert)
- //5 -> Feuchtigkeitssensor (Analogwert)
- //6 -> LDR (Analogwert)
- #define SENSOR_1_TYPE 0 //Typ des ersten Sensors (0 wenn deaktiviert)
- #define SENSOR_1_ID 51 //ID des ersten Sensors (muss Zwischen 1 und 998 sein und Systemweit eindeutig)
- #define SENSOR_2_TYPE 2
- #define SENSOR_2_ID 52
- #define SENSOR_3_TYPE 2
- #define SENSOR_3_ID 53
- #define SENSOR_4_TYPE 0
- #define SENSOR_4_ID 00
- #define SENSOR_5_TYPE 0
- #define SENSOR_5_ID 00
- #define SENSOR_6_TYPE 0
- #define SENSOR_6_ID 00
- //Sonsorbelegungen
- #define ONE_WIRE_BUS 8 //Daten Pin des DS18x20
- #define TEMPERATURE_PRECISION 9
- //DS18x20 Initialisieren
- OneWire oneWire(ONE_WIRE_BUS);
- DallasTemperature sensors(&oneWire);
- DeviceAddress sensor1, sensor2;
- //Sonsorbelegungen für 2 DHT
- #define DHT_POWER_PIN 2 //Pin der den DHT ein/aus-schaltet
- #define DHT_PIN 3 //Pin an dem der DHT 1 Data Pin angeschlossen ist
- #define DHT_PIN 4 //Pin an dem der DHT 2 Data Pin angeschlossen ist
- //DTH Initalisieren
- // Connect pin 1 (on the left) of the sensor to +5V
- // Connect pin 2 of the sensor to whatever your DHTPIN is
- // Connect pin 4 (on the right) of the sensor to GROUND
- // Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor
- DHT dht;
- //WLan Initalisieren
- SoftwareSerial mySerial(9, 8); /* RX:D9, TX:D8 */
- ESP8266 wifi(mySerial, 9600); //bei manchen auch 115200
- char host[] = "192.168.200.115"; //IP des SHC Masters
- char url[] = "/shc/index.php?app=shc&a&ajax=pushsensorvalues&"; //? oder & am Ende um dem Query String weiter zu fuehren
- void setup(void) {
- //Grundkonfiguration
- if(PRINT_ON_SERIAL) {
- Serial.begin(9600);
- Serial.println("WLan verbinden start");
- }
- //Verbindungs LED
- if(CONNECTED_LED > -1) {
- pinMode(CONNECTED_LED, OUTPUT);
- }
- //Firmware Version
- if(PRINT_ON_SERIAL) {
- Serial.print("FW Version: ");
- Serial.println(wifi.getVersion().c_str());
- }
- //WLan Modus setzen
- if (wifi.setOprToStation()) {
- if(PRINT_ON_SERIAL) {
- Serial.println("Client OK");
- }
- } else {
- if(PRINT_ON_SERIAL) {
- Serial.println("Client Error");
- while(1);
- }
- }
- //mit AccessPoint verbinden
- if (wifi.joinAP(SSID, PASSWORD)) {
- if(PRINT_ON_SERIAL) {
- Serial.println("erfolgreich mit dem AccessPoint verbunden");
- Serial.print("IP: ");
- Serial.println(wifi.getLocalIP().c_str());
- }
- } else {
- if(PRINT_ON_SERIAL) {
- Serial.println("verbindung zum AccessPoint fehlgeschlagen");
- while(1);
- }
- }
- if (wifi.disableMUX()) {
- if(PRINT_ON_SERIAL) {
- Serial.println("Single Modus OK");
- }
- } else {
- if(PRINT_ON_SERIAL) {
- Serial.println("Single Modus Error");
- while(1);
- }
- }
- if(PRINT_ON_SERIAL) {
- Serial.println("Verbindung erfolgreich hergestellt");
- Serial.println("");
- }
- if(CONNECTED_LED > -1) {
- digitalWrite(CONNECTED_LED, HIGH);
- }
- //DS18x20 starten
- sensors.begin();
- }
- //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- // Hilfsfunktionen ///////////////////////////////////////////////////////////////////////////////////////////////
- //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- //gibt den Wert des Sensors zurueck
- float printTemperature(DeviceAddress deviceAddress) {
- //Wert schreiben
- float tempC = sensors.getTempC(deviceAddress);
- return tempC;
- }
- void loop() {
- //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- // Sende LED an //////////////////////////////////////////////////////////////////////////////////////////////////
- //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- if(CONNECTED_LED > -1) {
- digitalWrite(CONNECTED_LED, HIGH);
- }
- //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- // Sensor 1 Daten senden /////////////////////////////////////////////////////////////////////////////////////////
- //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- if(SENSOR_1_TYPE != 0) {
- //DS18x20 lesen
- sensors.requestTemperatures();
- for(int n = 0; n < sensors.getDeviceCount(); n++) {
- if(sensors.getAddress(sensor1, n)) {
- //Puffer
- char buffer1[20];
- PString address(buffer1, sizeof(buffer1), "");
- //Adresse schreiben
- address.print(sensor1[0], HEX);
- address.print("-");
- for (uint8_t i = 1; i < 8; i++) {
- // zero pad the address if necessary
- if (sensor1[i] < 16) address.print("0");
- address.print(String(sensor1[i], HEX));
- }
- //Daten Senden
- if(wifi.createTCP(HOST_NAME, HOST_PORT)) {
- if(PRINT_ON_SERIAL) {
- Serial.println("verbunden");
- }
- char buffer1[512];
- PString request1(buffer1, sizeof(buffer1), "");
- //Anfrage senden
- request1.print("GET ");
- request1.print(url);
- request1.print("spid=");
- request1.print(POINT_ID);
- request1.print("&sid=");
- request1.print(SENSOR_2_ID);
- request1.print("&type=");
- request1.print(SENSOR_2_TYPE);
- request1.print("&v1=");
- request1.print(printTemperature(sensor1));
- request1.println(" HTTP/1.1");
- request1.print("Host: ");
- request1.println(host);
- request1.println();
- request1.println();
- //Daten senden
- const char *req1 = request1;
- wifi.send((const uint8_t*)req1, strlen(req1));
- //TCP verbindung trennen
- wifi.releaseTCP();
- } else {
- if(PRINT_ON_SERIAL) {
- Serial.println("Verbindung Fehlgeschlagen");
- }
- }
- if(PRINT_ON_SERIAL) {
- Serial.print("Sensor: ");
- Serial.println(address);
- Serial.print("Temperatur: ");
- Serial.print(printTemperature(sensor1));
- Serial.println("C");
- Serial.println("");
- }
- }
- }
- }
- //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- // Sensor 2 Daten senden /////////////////////////////////////////////////////////////////////////////////////////
- //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- if(SENSOR_2_TYPE != 0) {
- uint8_t buffer[1024] = {0};
- digitalWrite(DHT_POWER_PIN, HIGH);
- delay(2500);
- float temperature = dht.getTemperature();
- float humidity = dht.getHumidity();
- //Daten Senden
- if(wifi.createTCP(HOST_NAME, HOST_PORT)) {
- if(PRINT_ON_SERIAL) {
- Serial.println("verbunden");
- }
- char buffer1[512];
- PString request1(buffer1, sizeof(buffer1), "");
- //Anfrage senden
- request1.print("GET ");
- request1.print(url);
- request1.print("spid=");
- request1.print(POINT_ID);
- request1.print("&sid=");
- request1.print(SENSOR_1_ID);
- request1.print("&type=");
- request1.print(SENSOR_1_TYPE);
- request1.print("&v1=");
- request1.print(temperature);
- request1.print("&v2=");
- request1.print(humidity);
- request1.println(" HTTP/1.1");
- request1.print("Host: ");
- request1.println(host);
- request1.println();
- request1.println();
- //Daten senden
- const char *req1 = request1;
- wifi.send((const uint8_t*)req1, strlen(req1));
- //TCP verbindung trennen
- wifi.releaseTCP();
- } else {
- if(PRINT_ON_SERIAL) {
- Serial.println("Verbindung Fehlgeschlagen");
- }
- }
- if(PRINT_ON_SERIAL) {
- Serial.print("Temperatur: ");
- Serial.print(temperature);
- Serial.println("*C");
- Serial.print("Luftfeuchte: ");
- Serial.print(humidity);
- Serial.println("%");
- Serial.println("");
- }
- //Sensor ausschalten
- digitalWrite(DHT_POWER_PIN, LOW);
- }
- //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- // Sensor 3 Daten senden /////////////////////////////////////////////////////////////////////////////////////////
- //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- if(SENSOR_3_TYPE != 0) {
- uint8_t buffer[1024] = {0};
- digitalWrite(DHT_POWER_PIN, HIGH);
- delay(2500);
- float temperature = dht.getTemperature();
- float humidity = dht.getHumidity();
- //Daten Senden
- if(wifi.createTCP(HOST_NAME, HOST_PORT)) {
- if(PRINT_ON_SERIAL) {
- Serial.println("verbunden");
- }
- char buffer1[512];
- PString request1(buffer1, sizeof(buffer1), "");
- //Anfrage senden
- request1.print("GET ");
- request1.print(url);
- request1.print("spid=");
- request1.print(POINT_ID);
- request1.print("&sid=");
- request1.print(SENSOR_1_ID);
- request1.print("&type=");
- request1.print(SENSOR_1_TYPE);
- request1.print("&v1=");
- request1.print(temperature);
- request1.print("&v2=");
- request1.print(humidity);
- request1.println(" HTTP/1.1");
- request1.print("Host: ");
- request1.println(host);
- request1.println();
- request1.println();
- //Daten senden
- const char *req1 = request1;
- wifi.send((const uint8_t*)req1, strlen(req1));
- //TCP verbindung trennen
- wifi.releaseTCP();
- } else {
- if(PRINT_ON_SERIAL) {
- Serial.println("Verbindung Fehlgeschlagen");
- }
- }
- if(PRINT_ON_SERIAL) {
- Serial.print("Temperatur: ");
- Serial.print(temperature);
- Serial.println("*C");
- Serial.print("Luftfeuchte: ");
- Serial.print(humidity);
- Serial.println("%");
- Serial.println("");
- }
- //Sensor ausschalten
- digitalWrite(DHT_POWER_PIN, LOW);
- }
- //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- // Sensor 4 Daten senden /////////////////////////////////////////////////////////////////////////////////////////
- //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- // Sensor 5 Daten senden /////////////////////////////////////////////////////////////////////////////////////////
- //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- // Sensor 6 Daten senden /////////////////////////////////////////////////////////////////////////////////////////
- //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- // Sensorpunkt Spannung senden ///////////////////////////////////////////////////////////////////////////////////
- //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- if(SEND_POINT_CURRENT) {
- //Betriebsspannung ermitteln
- float voltage = analogRead(SEND_POINT_INDPUT) * (14.5 / 1023.0);
- //Daten Senden
- if(wifi.createTCP(HOST_NAME, HOST_PORT)) {
- if(PRINT_ON_SERIAL) {
- Serial.println("verbunden");
- }
- if(CONNECTED_LED > -1) {
- digitalWrite(CONNECTED_LED, HIGH);
- }
- char buffer7[512];
- PString request7(buffer7, sizeof(buffer7), "");
- //Anfrage senden
- request7.print("GET ");
- request7.print(url);
- request7.print("spid=");
- request7.print(POINT_ID);
- request7.print("&type=");
- request7.print(999);
- request7.print("&v1=");
- request7.print(voltage);;
- request7.println(" HTTP/1.1");
- request7.print("Host: ");
- request7.println(host);
- request7.println();
- request7.println();
- const char *req7 = request7;
- wifi.send((const uint8_t*)req7, strlen(req7));
- //TCP verbindung trennen
- wifi.releaseTCP();
- } else {
- if(PRINT_ON_SERIAL) {
- Serial.println("Verbindung Fehlgeschlagen");
- }
- }
- if(PRINT_ON_SERIAL) {
- Serial.print("Voltage ");
- Serial.print(voltage);
- Serial.println("V");
- Serial.println("");
- }
- }
- //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- // Sende LED aus /////////////////////////////////////////////////////////////////////////////////////////////////
- //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- if(CONNECTED_LED > -1) {
- digitalWrite(CONNECTED_LED, LOW);
- }
- //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- // Verweilzeit bis zum nächsten Sendevorgang /////////////////////////////////////////////////////////////////////
- //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- delay(60000);
- }
SHC Master B2+ WLAN sowie 1 Slave B2+, 2 Slave B+ und 2 Slave Raspi B. 5x Pi Cam; Imac mit OSX El Capitan; Iphone 6 plus; Ipad mini; Lenovo Android Tablet.