Ja ok, dann machen wir mal Pause ...
Ich hab' das Archiv dr PCF_Lib anders aufgebaut (ohne Pfade) ... jetzt lässt sich die Bibliothel als ZIP ohne Fehlermeldung installieren (siehe Anhang).
Dir auch noch ein paar angenehme und friedvolle Tage,
-ds-
Ja ok, dann machen wir mal Pause ...
Ich hab' das Archiv dr PCF_Lib anders aufgebaut (ohne Pfade) ... jetzt lässt sich die Bibliothel als ZIP ohne Fehlermeldung installieren (siehe Anhang).
Dir auch noch ein paar angenehme und friedvolle Tage,
-ds-
WiFi Schaltuhr mit PCF8574 und 8-fach Relais? Schau mal ob du hier fündig wirst!
Hurra, PCF8574 wurde in der libraries jetzt aufgenommen.
Aber jetzt meutert die Timezone.cpp.
Arduino: 1.6.13 (Windows 7), Board: "Generic ESP8266 Module, 80 MHz, 40MHz, DIO, 115200, 1M (512K SPIFFS), ck, Disabled, None"
C:\Users\Theo\Desktop\Arduino IDE\arduino-1.6.13\libraries\Timezone\Timezone.cpp: In member function 'time_t Timezone::toLocal(time_t)':
C:\Users\Theo\Desktop\Arduino IDE\arduino-1.6.13\libraries\Timezone\Timezone.cpp:45:17: error: 'year' was not declared in this scope
if (year(utc) != year(_dstUTC)) calcTimeChanges(year(utc));
^
C:\Users\Theo\Desktop\Arduino IDE\arduino-1.6.13\libraries\Timezone\Timezone.cpp:48:36: error: 'SECS_PER_MIN' was not declared in this scope
return utc + _dst.offset * SECS_PER_MIN;
^
C:\Users\Theo\Desktop\Arduino IDE\arduino-1.6.13\libraries\Timezone\Timezone.cpp:50:36: error: 'SECS_PER_MIN' was not declared in this scope
return utc + _std.offset * SECS_PER_MIN;
^
C:\Users\Theo\Desktop\Arduino IDE\arduino-1.6.13\libraries\Timezone\Timezone.cpp: In member function 'time_t Timezone::toLocal(time_t, TimeChangeRule**)':
C:\Users\Theo\Desktop\Arduino IDE\arduino-1.6.13\libraries\Timezone\Timezone.cpp:62:17: error: 'year' was not declared in this scope
if (year(utc) != year(_dstUTC)) calcTimeChanges(year(utc));
^
C:\Users\Theo\Desktop\Arduino IDE\arduino-1.6.13\libraries\Timezone\Timezone.cpp:66:36: error: 'SECS_PER_MIN' was not declared in this scope
return utc + _dst.offset * SECS_PER_MIN;
^
C:\Users\Theo\Desktop\Arduino IDE\arduino-1.6.13\libraries\Timezone\Timezone.cpp:70:36: error: 'SECS_PER_MIN' was not declared in this scope
return utc + _std.offset * SECS_PER_MIN;
^
C:\Users\Theo\Desktop\Arduino IDE\arduino-1.6.13\libraries\Timezone\Timezone.cpp: In member function 'time_t Timezone::toUTC(time_t)':
C:\Users\Theo\Desktop\Arduino IDE\arduino-1.6.13\libraries\Timezone\Timezone.cpp:102:19: error: 'year' was not declared in this scope
if (year(local) != year(_dstLoc)) calcTimeChanges(year(local));
^
C:\Users\Theo\Desktop\Arduino IDE\arduino-1.6.13\libraries\Timezone\Timezone.cpp:105:38: error: 'SECS_PER_MIN' was not declared in this scope
return local - _dst.offset * SECS_PER_MIN;
^
C:\Users\Theo\Desktop\Arduino IDE\arduino-1.6.13\libraries\Timezone\Timezone.cpp:107:38: error: 'SECS_PER_MIN' was not declared in this scope
return local - _std.offset * SECS_PER_MIN;
^
C:\Users\Theo\Desktop\Arduino IDE\arduino-1.6.13\libraries\Timezone\Timezone.cpp: In member function 'boolean Timezone::utcIsDST(time_t)':
C:\Users\Theo\Desktop\Arduino IDE\arduino-1.6.13\libraries\Timezone\Timezone.cpp:117:17: error: 'year' was not declared in this scope
if (year(utc) != year(_dstUTC)) calcTimeChanges(year(utc));
^
C:\Users\Theo\Desktop\Arduino IDE\arduino-1.6.13\libraries\Timezone\Timezone.cpp: In member function 'boolean Timezone::locIsDST(time_t)':
C:\Users\Theo\Desktop\Arduino IDE\arduino-1.6.13\libraries\Timezone\Timezone.cpp:132:19: error: 'year' was not declared in this scope
if (year(local) != year(_dstLoc)) calcTimeChanges(year(local));
^
C:\Users\Theo\Desktop\Arduino IDE\arduino-1.6.13\libraries\Timezone\Timezone.cpp: In member function 'void Timezone::calcTimeChanges(int)':
C:\Users\Theo\Desktop\Arduino IDE\arduino-1.6.13\libraries\Timezone\Timezone.cpp:148:39: error: 'SECS_PER_MIN' was not declared in this scope
_dstUTC = _dstLoc - _std.offset * SECS_PER_MIN;
^
C:\Users\Theo\Desktop\Arduino IDE\arduino-1.6.13\libraries\Timezone\Timezone.cpp: In member function 'time_t Timezone::toTime_t(TimeChangeRule, int)':
C:\Users\Theo\Desktop\Arduino IDE\arduino-1.6.13\libraries\Timezone\Timezone.cpp:158:5: error: 'tmElements_t' was not declared in this scope
tmElements_t tm;
^
C:\Users\Theo\Desktop\Arduino IDE\arduino-1.6.13\libraries\Timezone\Timezone.cpp:158:18: error: expected ';' before 'tm'
tmElements_t tm;
^
C:\Users\Theo\Desktop\Arduino IDE\arduino-1.6.13\libraries\Timezone\Timezone.cpp:172:7: error: expected unqualified-id before '.' token
tm.Hour = r.hour;
^
C:\Users\Theo\Desktop\Arduino IDE\arduino-1.6.13\libraries\Timezone\Timezone.cpp:173:7: error: expected unqualified-id before '.' token
tm.Minute = 0;
^
C:\Users\Theo\Desktop\Arduino IDE\arduino-1.6.13\libraries\Timezone\Timezone.cpp:174:7: error: expected unqualified-id before '.' token
tm.Second = 0;
^
C:\Users\Theo\Desktop\Arduino IDE\arduino-1.6.13\libraries\Timezone\Timezone.cpp:175:7: error: expected unqualified-id before '.' token
tm.Day = 1;
^
C:\Users\Theo\Desktop\Arduino IDE\arduino-1.6.13\libraries\Timezone\Timezone.cpp:176:7: error: expected unqualified-id before '.' token
tm.Month = m;
^
C:\Users\Theo\Desktop\Arduino IDE\arduino-1.6.13\libraries\Timezone\Timezone.cpp:177:7: error: expected unqualified-id before '.' token
tm.Year = yr - 1970;
^
C:\Users\Theo\Desktop\Arduino IDE\arduino-1.6.13\libraries\Timezone\Timezone.cpp:178:20: error: expected primary-expression before ')' token
t = makeTime(tm); //first day of the month, or first day of next month for "Last" rules
^
C:\Users\Theo\Desktop\Arduino IDE\arduino-1.6.13\libraries\Timezone\Timezone.cpp:178:20: error: 'makeTime' was not declared in this scope
C:\Users\Theo\Desktop\Arduino IDE\arduino-1.6.13\libraries\Timezone\Timezone.cpp:179:43: error: 'weekday' was not declared in this scope
t += (7 * (w - 1) + (r.dow - weekday(t) + 7) % 7) * SECS_PER_DAY;
^
C:\Users\Theo\Desktop\Arduino IDE\arduino-1.6.13\libraries\Timezone\Timezone.cpp:179:57: error: 'SECS_PER_DAY' was not declared in this scope
t += (7 * (w - 1) + (r.dow - weekday(t) + 7) % 7) * SECS_PER_DAY;
^
exit status 1
Fehler beim Kompilieren für das Board Generic ESP8266 Module.
Dieser Bericht wäre detaillierter, wenn die Option
"Ausführliche Ausgabe während der Kompilierung"
in Datei -> Voreinstellungen aktiviert wäre.
Alles anzeigen
Konnte jetzt das Skript erfolgreich auf den ESP01 flashen. :thumbs1:
Habe nochmal komplett IDE 1.6.10 installiert und die
benötigten Lib`s als Zip Datei in die libraries eingeordnet.
Komme ich denn jetzt schon auf die home Oberfläche.
Na perfekt ... super :thumbs1:
Jetzt würde ich mich an Deiner Stelle erst mal selbst beweihräuchern und auf den erarbeiteten Lorbeeren ausruhen ...
Ist schon immer wieder witzig, welche Zicken die IDE manchmal macht.
Der Rest ist, denke ich, selbsterklärend.
Ich habe das Projekt jetzt in ein eigenes Repo verschoben. Da kannst Du es immer wieder mal aktualisieren, wenn was Neues dazugekommen ist. Die URL zum Relais-Projekt ist: https://github.com/dreamshader/ESP8266_WiFi_TimerRelais.
Die beiden Libraries habe ich ebenfalls verschoben, nach hier: https://github.com/dreamshader/dsEeprom und hier: https://github.com/dreamshader/SimpleLog.
Na dann erst mal viel Spass damit.
-ds-
Danke, werde mich dann mal da durchwurschteln.
Zum Wochenende werden die Teile für die Platine
wohl ankommen damit ich testen kann.
Wenn Bedarf besteht würde ich dir eine Zukommen lassen.
Entweder direkt auf der 8fach Relaiskarte steckbar
oder eine Externe.
Hallo dreamshader
:thumbs1: für die super Arbeit.
Konnte die Platine fertigstellen und erste Test sehen gut aus.
Zeitsteuerung mit 2 Zeiten geht super.
Was ich aber bemerkt habe, es lassen sich nur Relais 2-5 und 8 schalten.
Relais 1 und 6,7 reagieren nicht.
Manuelles Schalten mit Ein/Aus geht nur wenn ich z.b. "Ein" markiere und dann
auf speichern drücke. "Aus" schalten geht auch nur mit speichern.
Servus premo,
nur kurz, weil ich gerade Deine Frage gesehen habe:
Klar musst Du auf Speichern drücken ... das läuft ja über einen Webserver (auf dem ESP) und der bekommt ja Ein/Aus nicht mit, wenn Du die Seite nicht abschickst ...
Dasselbe gilt für die Zeiten resp. Ausgänge: Du musst sie aktivieren (Zeit1/Zeit2 und wieder abschicken) wenn sie schalten sollen ...
Du kannst das auch per z.B. javascript, ajax, k.A. lösen ... und/oder die Web-API nutzen ... aber das musst Du dann selber einbauen.
Und danke für das Angebot mit der Platine ... aber ich hab' hier noch ein Board von meinem Bruder rumliegen und ehrlich gesagt keine Verwendung für die ganzen Schalter ...
Guten Rutsch,
ich mach' mich dann mal wieder vom Acker,
-ds-
Ok, wünsche auch einen guten Rutsch.
Was ich aber bemerkt habe, es lassen sich nur Relais 2-5 und 8 schalten.
Relais 1 und 6,7 reagieren nicht.
Fehler lag bei mir, mit einer anderen Platine funtzt es.
Da auf dem geliefertem PCF8577 Modul die Stecker schon verlötet
und ich diese wieder demontieren musste wurden feinste Leiterbahnen
beschädigt. Jetzt lüppt dat.
Das mit dem einbinden der Wep Api wird meinerseits nicht klappen.
Warte noch bis du auf die Beine gestellt hast.
Wenn Interesse besteht setze ich gerne die Layouts der Platinen hier rein.
hallo dreamshader
Da ich im SHC Forum aktiv bin, möchte ich fragen ob ich dein Equipment
"WiFi Schaltuhr mit PCF8574 und 8-fach Relais" dort vorstellen darf.
Bis auf die Webapi läuft alles super.
Servus,
die Web-API sollte auch funktionieren ...
Klar kannst du das machen ... ich will die API noch dokumentieren und hatte schon agent47 darauf hingewiesen, dass ich seine Schnittstelle zum SHC gerne mit unterstütze ...
cu,
-ds-
Tja ... Endspurt ...
Die erste Version der Web-API ist jetzt mal implementiert.
Damit kann das ESP-Modul auch über z.B. curl gesteuert bzw. mit Daten versorgt werden.
Dabei sind alle Datenfelder über diese API änderbar oder können gelesen werden.
Der Aufruf erfolgt über http und beginnt mit der IP (oder dem Namen) des ESP-Moduls gefolgt vom Verzeichnis "api" und einem Fragezeichen, mit dem die Parameter-Liste (Query-String) eingeleitet wird:
Mögliche Parameter sind:
Diese beiden Angaben sind die einzigen, die sich nicht auf einen bestimmten Port beziehen.
stösst einen Update der Firmware an. Es nach dem im Modul eingestellten Update-File gesucht. Der Im Gegensatz dazu wird beim Aufruf von:
direkt das angegebene File als Firmware geladen.
Die Angabe apikey ist im Moment nur zu Testzwecken implementiert ... dieser Wert soll später genutzt werden, um eine einfache Authorisierung durchzuführen.
Mit
kann der api-key des ESP angefordert werden. Der besteht derzeit aus einem SHA1-Hash über die MAC-Adresse und ist so reproduzierbar.
Alle weiteren Aufrufe benötigen immer den Port-Parameter. Er gibt an, auf welche Zeile der Tabelle auf welchen Ausgang sich der Aufruf bezieht.
Abfragen von Daten werden aufgerufen, indem die zu den übergebenen Schlüsselworten gehörenden Parameter leer bleiben. Der Parameter bleibt zwar leer, aber das =-Zeichen ist trotzdem notwendig. Um z.B. den Modus (ON/OFF/AUTO) des ersten Ausgangs/Ports abzufragen also:
Nach diesem Schema können alle Werte der Tabelle abgefragt werden. Kennzeichen ist immer der leere Parameter:
http://111.222.333.444:8080/api?port=1&from1=
http://111.222.333.444:8080/api?port=1&to1=
http://111.222.333.444:8080/api?port=1&time1=
http://111.222.333.444:8080/api?port=1&from2=
http://111.222.333.444:8080/api?port=1&to2=
http://111.222.333.444:8080/api?port=1&time2=
http://111.222.333.444:8080/api?port=1&ext1=
http://111.222.333.444:8080/api?port=1&ext2=
Um Werte zu setzen bzw. zu ändern wird der entsprechende Wert übergeben:
http://111.222.333.444:8080/api?port=1&mode=auto
http://111.222.333.444:8080/api?port=1&from1=11:23
http://111.222.333.444:8080/api?port=1&to1=12:45
http://111.222.333.444:8080/api?port=1&time1=enable
http://111.222.333.444:8080/api?port=1&from2=13:55
http://111.222.333.444:8080/api?port=1&to2=15:10
http://111.222.333.444:8080/api?port=1&time2=enable
http://111.222.333.444:8080/api?port=1&ext1=enable
http://111.222.333.444:8080/api?port=1&ext2=disable
Die Werte können natürlich kombiniert werden:
Die Angabe des API-key ist derzeit (noch) nicht nötig.
Hinzugekommen sind mittlerweile auch die beiden Flags EXT1 und EXT2 ...
Dazu hat das ESP-Modul einen UDP-Client bekommen, der auf einer multicast-Adresse horcht.
Per Multicast kann jetzt von einem anderen Rechner ( ESP, Lapstop, PC, ... ) der entsprechende Aufruf geschickt werden und wird von allen ESPs die online sind, empfangen ...
Damit wäre das Teil jetzt einsatzbereit und auch durchgetestet.
Das Repo auf github wurde von mir verlagert ... ich habe dem Projekt ein eigenes Repo spendiert, das ihr -> hier finden könnt <- ...
Die Doku auf github wird jetzt noch ein wenig aufgepeppt und auch auf -> meiner Projektpage <- wird die Beschreibung noch vervollständigt.
Na dann viel Spass damit, und wie immer: Kritik und Anregungen werden gerne angenommen.
-ds-
Hallo dreamshader
Das bedienen über die Home.htm kann ich mit
http://192.168.178.xx:8080/ ausführen.
Da jetzt auch über die Webapi möglich ist, aber
ein Zugriff mit http://192.168.178.xx:8080/api?
bei mir nicht funktioniert.
Bei aufrufen der Curl erscheint nur ein graues
Fenster mit den Hinweis apiPage .
Bei 8080/apiupdate kommt Not found: /apiupdate
Wrd bei mir wohl sicherlich ein Bedienungsfehler sein :s
Servus,
nur diese Angabe macht irgendwie keinen Sinn, oder?
...
Bei 8080/apiupdate kommt Not found: /apiupdate
Da fehlt das ? ...
http://192.168.178.xx:8080/api?update
cu,
-ds-
Auch mit ? erscheint nur apiPage
Na der versucht halt nen Firmware-Update per OTA zu machen.
Hast Du denn eine aktualisiert Firmware (firmware.binX)?
Und hast Du das marker-File angelegt?
Du musst ausserdem im sketch:
auf den passenden Wert setzen.
Das ist aber alles auch -> hier <- beschrieben.
cu,
-ds-
Hi dreamshader,
Lange hat es gedauert und die Teile liegen schon eine Weile rum. Jetzt möchte ich dieses Projekt endlich mal nachbauen. Du hast in deinem Eingangspost zwei Elkos erwähnt, die benötigt werden. In dem Schaltplan auf der verlinkten Seite sehe ich aber nur einen mit der Beschreibung "100u". Dabei nehme ich mal an es handelt sich um einen 100 mycroF Elko. Du gibst aber an es wird ein 47 mycroF und ein 1200 mycroF Elko benötigt werden. Kannst Du mir erklären wie das zusammen passt? Muss ich irgendetwas anpassen? Stehe ein wenig auf dem Schlauch und möchte ungerne etwas zerlegen, wenn ich loslege. Vor allem der 1200er ist ja deutlich größer als der in der Schaltung vorgeschlagene.
wenn ich den Schaltplan richtig deute ist der 47 uF für die Eingangsseite von V1 (Pin 1 und 2)
und dein 1200uF ist der C1.
Okay. Kannst Du mir erklären wieso auf der Eingangsseite von V1 ein Elko benötigt werden würde?
Servus BallerNacken ,
Du hast Ideen ... nach einem Jahr soll ich noch wissen, welcher Elko für was vorgesehen war?
Nein, ernsthaft ... ich hatte da eine Platine von meinem Bruder bekommen. Ich weiss gar nicht, ob bzw. wo da eine Schaltplan exisitert.
C-3po : auf welche Schalte beziehst Du Dich?
Also bei 47 µF muss ich spontan an Block-/Filter-Kondensator denken ...
cu,
-ds-
Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!