Une note importante au début!
L'ArduiTouch Smarthome Central fonctionne uniquement avec l'écurie ESP32. Il a été démontré qu'en raison de la RAM considérablement plus faible de l'ESP8266, un fonctionnement stable n'est pas possible. J'ai donc supprimé la version de l'ESP8266 du référentiel. La version actuelle de la bibliothèque ATSmartHome ne peut plus être compilée avec l'esquisse pour ESP8266!
Les nouveautés:
Cette fois, nous allons agrandir le siège social afin qu'il puisse se connecter au WLAN local. Étant donné que ESP-Now doit également être utilisé, il existe une restriction importante. Le routeur WLAN utilisé doit utiliser le canal 1, sinon l'ESP32 ne peut pas établir de connexion!
J'ai ajouté un nouveau formulaire de configuration. Le nouveau formulaire s'ouvre lorsque vous cliquez sur la barre verte supérieure.
Avec la case à cocher, vous pouvez choisir si vous souhaitez ou non avoir une connexion au WLAN. Cependant, il n'y a pas d'affichage de l'heure sans connexion WLAN.
Si vous cliquez sur le champ de saisie du réseau, vous obtenez une liste de tous les réseaux WLAN accessibles. Attention, car une analyse du réseau est effectuée, cela peut prendre un peu de temps. Le réseau souhaité peut alors être simplement sélectionné dans la liste.
Dans le champ de saisie suivant, vous devez saisir le mot de passe WPA2 pour ce réseau.
Ensuite, le serveur NTP est spécifié. Il peut s'agir de l'URL de tout serveur NTP accessible.
La dernière entrée définit l'intervalle entre deux mises à jour de l'affichage des données sur le serveur Web.
Une fois les données enregistrées, la première page de résultats devrait s'afficher à nouveau. La date et l'heure doivent maintenant être affichées dans la barre supérieure.
Si notre centre SmartHome est connecté au WLAN, un serveur Web doit également être en cours d'exécution et utilise l'URL http://smart.homepeut être atteint à partir du WLAN local. La version actuelle du serveur Web fournit le même affichage que l'ArduiTouch. La largeur de l'écran est automatiquement ajustée pour les smartphones ou les tablettes.
Dans les versions ultérieures, l'affichage des résultats devient interactif, c'est-à-dire que les commutateurs peuvent être actionnés et la configuration modifiée.
La bibliothèque actuelle et la nouvelle version de l'exemple d'esquisse peuvent être chargées depuis Git-Hub. ATSmartHome
Voici une liste avec des liens vers toutes les parties précédentes:
Amusez-vous :)
6 commentaires
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
Habe das Smarthome System am Laufen, mit zwei Temp Sensoren, einen BMP und einem Relais Schalter. Insgesamt habe ich zwei Geräte angeschlossen.
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); } }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() {
…
Könnte mir jemand dabei helfen? Danke.
Oggin
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
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
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
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
extern fs::SPIFFSFS SPIFFS; ^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’
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