Smart home center met ArduiTouch deel 6 - WiFi-verbinding, realtime klok en webserver

Een belangrijke noot in het begin!

Het ArduiTouch Smarthome bedieningspaneel werkt alleen met de ESP32 stal. Het bleek dat als gevolg van de aanzienlijk lagere RAM van de ESP8266, stabiele werking is niet mogelijk. Dus verwijderde ik de versie voor de ESP8266 uit de repository. De huidige versie van de ATSmartHome bibliotheek kan niet meer worden samengesteld met de Sketch voor ESP8266!

De nieuwe functies:

Deze keer zullen we het hoofdkantoor uitbreiden zodat het verbinding kan maken met de lokale WLAN. Aangezien ESP-Now ook gebruikt moet worden, is er een belangrijke beperking. De gebruikte Wi-Fi-router moet Kanaal 1 gebruiken, anders kan de 3r ESP32 geen verbinding maken!

Routerinstelling

Ik heb hier een nieuw installatieformulier aan toegevoegd. Het nieuwe formulier wordt geopend wanneer u op de bovenste groene balk klikt. 

Systeeminstelling

Met het selectievakje u kiezen of u een verbinding met de Wi-Fi wilt hebben of niet. Er is echter geen tijdweergave zonder Wi-Fi-verbinding.
Als u op het invoerveld voor het netwerk klikt, krijgt u een lijst met alle bereikbare Wlan-netwerken. Aandacht aangezien een netwerkscan wordt uitgevoerd, kan dit een weinig tijd vergen. Het gewenste netwerk kan dan eenvoudig uit de lijst worden geselecteerd.
In het volgende invoerveld moet u het WPA2-wachtwoord voor dit netwerk invoeren.
Dit wordt gevolgd door het opgeven van de NTP-server. Dit kan de URL zijn van elke bereikbare NTP-server.
De laatste invoer definieert het interval tussen twee updates voor de gegevensweergave op de webserver.

Nadat de gegevens zijn opgeslagen, moet de eerste resultatenpagina opnieuw worden weergegeven. De datum en tijd moeten nu ook worden weergegeven in de bovenste balk.

Resultaten met de tijd

Als ons SmartHome-configuratiescherm is verbonden met het Wi-Fi-netwerk, moet een webserver ook de URL doorlopen http://smart.homebereikbaar via het lokale wifi-netwerk. In de huidige versie levert de webserver hetzelfde scherm als de ArduiTouch. De breedte van het scherm wordt automatisch aangepast voor smartphones of tablets.

webserver

In latere versies wordt het weergave resultaten interactief, kunnen switches worden ingedrukt en kan de configuratie worden gewijzigd.

De huidige bibliotheek en de nieuwe versie van de voorbeeldschets kunnen door Git-Hub worden geladen. ATSmartHome ATSmartHome

Hier is een lijst met links naar alle voorgaande delen:

Veel plezier :)

 

DisplaysEsp-32Projekte für fortgeschritteneSmart home

6 Kommentare

oggin

oggin

Zunächst möchte ich noch ergänzen, dass ich das durch durch Herr Lechner erstellte SW-Konzept für den ArduiTouch echt gut finde!
Sie haben da echt viel geleistet, danke!

Also inzwischen habe ich das oben beschriebene Problem selbst gefunden, dass “isValueOutput”, bzw. “isSwitchOut” keine Werte findet.
In der Beschreibung der Datenstruktur ist angegeben, dass sich der Index wie folgt berechnet:
Index = Gerätenummer * 32 + Kanalnummer
Richtig aber ist:
Index = Gerätenummer * 8 + Kanalnummer (da pro Gerät 8 Kanäle vergeben sind. Insgesamt gibt es 32 Geräte => 32 * 8 = 256).

Jetzt habe ich aber weitere Probleme.
Ich möchte gerne an ein Ausgabegerät gesteuert durch das Datum und Uhrzeit automatisch einen Schalter Ein bzw. Ausschalten. Dazu lese ich vorher mit den Funktionen
- database.isSwitchOut(Index), dann
- database.isValueZero(Index) und stelle diesen Wert dann entweder auf 0 od. 1 mittels der Funktion
- database.toggleResult(Index)
Dann rufe ich die Funktion
- packets =(database.getResponse(devnr, &buf0, &sz));
auf, die mir aber immer
- Number of Datapacket found: 0
- size buffer: 10
liefert, d.h. keine Veränderung.
Danach müßte man die Daten noch an das Gerät schicken (mittels welcher Funktion habe ich bislang nicht rausgefunden ? “sendData” ??), aber da sich nichts verändert hat, bringt das ja auch nichts.
Allerdings sehe ich schon durch die Funktion
database.isValueZero(Index)
das Wert der vorher “0” war, nach database.ToggleResult(Index) nun auf “1” steht.

Was mache ich hier falsch, Herr Lechner? Könne Sie mir dabei einen Tipp geben, das wäre nett!
Auch wäre ich für eine kurze Anleitung dankbar, wie ich die Konfiguration Datei um die Eingabe wie folgt erweitern kann:
- Aktiviere den Schalter des Geräts xx um autoschalten durch die Uhrzeit.
- Eingabe des Einschalt Datums und der Uhrzeit
- Eingabe des Ausschalt Datums und der Uhrzeit

Bin dankbar für jeden sinnvollen Vorschlag.

Oggin

Oggin

Oggin

Habe das Smarthome System am Laufen, mit zwei Temp Sensoren, einen BMP und einem Relais Schalter. Insgesamt habe ich zwei Geräte angeschlossen.
Nun wollte ich innerhalb der database nach Output Werten suchen. Leider wird kein einziger Wert gefunden, z.B. isValueOutput, bzw. isSwitchOut gefunden. Was mache ich falsch?
Hier das Beispiel (habe ich in SmartHomeV2.ino eingebaut:
void Loop() {

for (uint16_t i = 0; i<32; i++) { for (uint16_t k = 0; k<8; k++) { if (database.isValueOutput(i*32+k)) { Serial.println(“ValueOutput device channel 0 found!”); Serial.print("DeviceNb. = "); Serial.println(i); Serial.print("ChannelNb. = "); Serial.println(k); } if (database.isSwitchOut(i*32+k)) { Serial.println(“SwitchOut device channel 1 found!”); Serial.print("DeviceNb. = "); Serial.println(i); Serial.print("ChannelNb. = "); Serial.println(k); } }

Könnte mir jemand dabei helfen? Danke.

Oggin

Bernhard Stobrawe

Bernhard Stobrawe

Ich habe jetzt stundenlang versucht das zum laufen zu bekommen.
Bei mir bleibt der Touch dauernd dunkel.

Er funktioniert. Das habe ich mit dem Codeschloss Script versucht. Aber mit dem Script hier geht gar nichts.

Michael

Michael

Wann kommt endlich mal ein neuer Teil dieser Blogreihe? Hab das Projekt umgesetzt und warte auf neue Updates mit versprochenen Features. :)
Für mich bis jetzt die beste Blogreihe 👍

Gerald

Gerald

Hallo Peter, das File FS.h sollte eigentlich automatisch mit dem ESP32 Paket installiert werden. Die Datei, die Datei, die Du geladen hast ist für den ESP 8266. Die richtige Datei findet man hier:
https://github.com/espressif/arduino-esp32/blob/master/libraries/FS/src/FS.h

Necas Peter

Necas Peter

Ich habe die neue Smarthome Zentrale Teil 6 geladen. Beim Kompilieren wird eine fehlende Datei fs.h beanstandet. Ich habe versucht, die unter
https://github.com/esp8266/Arduino/blob/master/cores/esp8266/FS.h
gefundene nachzuladen. Es dürfte aber eine andere Version sein, ich bekomme jede Menge Fehlermeldungen. Kann es ev. an meiner 1.9.0 Beta Version liegen?
Anbei die Fehlermeldung,
MfG
Peter Necas

Arduino: 1.9.0-beta (Windows 10), Board: “ESP32 Dev Module, Disabled, Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS), 240MHz (WiFi/BT), QIO, 80MHz, 4MB (32Mb), 921600, None”

In file included from D:\Arduino\_Smarthome\SmartHomeV2\SmartHomeV2.ino:6:0:

sketch\FS.h:63:12: error: ‘size_t fs::File::readBytes(char*, size_t)’ marked ‘override’, but does not override

size_t readBytes(char *buffer, size_t length) override { ^

sketch\FS.h:109:12: error: ‘String fs::File::readString()’ marked ‘override’, but does not override
String readString() override;
^
In file included from D:\Arduino\_Smarthome\SmartHomeV2\SmartHomeV2.ino:7:0:
C:\Users\wauzi\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.2\libraries\SPIFFS\src/SPIFFS.h:37:21: error: conflicting declaration ‘fs::SPIFFSFS SPIFFS’

extern fs::SPIFFSFS SPIFFS; ^

In file included from D:\Arduino\_Smarthome\SmartHomeV2\SmartHomeV2.ino:6:0:

sketch\FS.h:230:15: note: previous declaration as ‘fs::FS SPIFFS’

extern fs::FS SPIFFS; ^

SmartHomeV2:35:1: error: ‘AT_SETUP’ does not name a type
AT_SETUP * stp;
^

D:\Arduino\_Smarthome\SmartHomeV2\SmartHomeV2.ino: In function ‘void handleRoot()’:

SmartHomeV2:66:24: error: ‘stp’ was not declared in this scope

webserver.handleRoot(stp→refresh); ^

D:\Arduino\_Smarthome\SmartHomeV2\SmartHomeV2.ino: In function ‘void systemChanged()’:

SmartHomeV2:75:3: error: ‘ATSETUP’ was not declared in this scope

ATSETUP * stp=database.getSetup(); ^

SmartHomeV2:75:13: error: ‘stp’ was not declared in this scope

ATSETUP * stp=database.getSetup(); ^

SmartHomeV2:75:26: error: ‘class AT_Database’ has no member named ‘getSetup’

ATSETUP * stp=database.getSetup(); ^

D:\Arduino\_Smarthome\SmartHomeV2\SmartHomeV2.ino: In function ‘void setup()’:

SmartHomeV2:99:7: error: ‘class AT_Display’ has no member named ‘registerOnSystemChanged’

dsp.registerOnSystemChanged(systemChanged); ^

SmartHomeV2:101:24: error: no matching function for call to ‘fs::FS::begin(bool)’

if (SPIFFS.begin(FORMAT_SPIFFS_IF_FAILED)) Serial.println(F(“SPIFFS loaded”)); ^

In file included from D:\Arduino\_Smarthome\SmartHomeV2\SmartHomeV2.ino:6:0:

sketch\FS.h:182:10: note: candidate: bool fs::FS::begin()

bool begin(); ^

sketch\FS.h:182:10: note: candidate expects 0 arguments, 1 provided

SmartHomeV2:109:17: error: ‘class AT_Database’ has no member named ‘readSetup’

if (!database.readSetup()) Serial.println(“Can not read setup”); ^

SmartHomeV2:110:3: error: ‘stp’ was not declared in this scope

stp = database.getSetup(); ^

SmartHomeV2:110:18: error: ‘class AT_Database’ has no member named ‘getSetup’

stp = database.getSetup(); ^

exit status 1
sketch\AT_Webserver.cpp: In member function ‘void AT_Webserver::sendSimpleWidget(ATDISPLAYWIDGET)’:

AT_Webserver.cpp:147:11: error: ‘ATTXTOFF’ was not declared in this scope

val = ATTXTOFF; ^

AT_Webserver.cpp:150:13: error: ‘ATTXTON’ was not declared in this scope

val = ATTXTON; ^

‘AT_SETUP’ does not name a type

Einen Kommentar hinterlassen

Alle Kommentare werden vor der Veröffentlichung moderiert

Aanbevolen blog berichten

  1. Installeer ESP32 nu van de raad van bestuur
  2. Lüftersteuerung Raspberry Pi
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1
  4. ESP32 - das Multitalent
  5. OTA - Over the Air - ESP Programmeren via Wi-Fi