Da ich doch einige Verbraucher habe (Kühlschrank, Mikrowelle, Spülmaschine usw.), wo der Zugang zu den Schuko-Steckern recht ,,bescheiden" ist, bzw. der geringe Raum hinter dem Gerät es nicht zulässt einen Gosund- / Obi- oder ein sonstiges Schalt-/Messmodul zu platzieren und ich diese Geräte sowieso alle im Schaltschrank extra abgesichert habe, war es naheliegend, das Messmodul eventuell im Schaltschrank gleich hinter der Sicherung unterzubringen.
Aus dieser Idee entstand dann dieses Projekt. Ein Energy-Messmodul mit dem HLW8012 und WLan-Anbindung über einen ESP01 in einem 1C-Gehäuse für die Hutschienenmontage.
Für das Modul gibt es zwei Platinen-Ausführungen, damit man nicht an nur ein Gehäuse gebunden ist und es ist bewusst nur ein reines Messmodul, also ohne Schaltausgang, da es bei manchen Gerät keine Sinn macht, bzw. eventuell auch fatal wäre, wenn man Dieses z.B. aus Versehen ausschaltet bzw. nach einem Stromausfall nicht wieder ans Netz geht (Kühlschrank, Gefriertruhe o.ä.).
Wählt man in TASMOTA Einstellungen Gerät konfigurieren das Modul ,,52 ESP01 Pow Hut" erhält man keinen Schaltbutton. Hier muss dann noch über die Konsole setOption21 auf ,,On" gesetzt werden, sonst erhält man keine Messwerte.
Wählt man das Modul ,,51 ESP01 Pow" erhält man auch einen An/Aus-Button. Über diesen kann dann, wenn setOption21 auf ,,Off" steht, die Messung ein- und ausschaltet werden, wie aber oben schon erwähnt, hat dies keine Auswirkung auf den Verbraucher. Im Modul selber kann auf der Basisplatine, über entsprechendes Umlöten eine Drahtbrücke, gewählt werden, ob der Eigenverbrauch des Moduls in die Messung mit einfließen soll oder nicht. Die zweite Option: Ein- und Ausgang des Messmodul´s vertauschen.
Der auf den Bildern zu sehende Aufbau ist für das Gehäuse, welches auch schon für den 1-Kanal-Eltako verwendet wurde. Die Version 2 (hab ich noch keine Platinen) ist für ein Gehäuse, wie es für den 2-Kanal-Eltako Verwendung gefunden hat, allerdings eben in der 1C-Ausführung. Dieses liegt in der Anschaffung etwa beim halben Preis gegenüber des Gehäuses von Version 1. Die zweite Platinen-Version folgt nach dem Testen.
Auf Grund einiger Anfragen, hier dann noch der Schaltplan für die beiden Projekte.
Hallo Papa Romeo,
habe versucht die aktuelle Version von Tasmota mit deiner sonoff_template.h zu compilieren.
Leider scheitert es immer mit folgender Fehlermeldung
In file included from E:\Arduino\Energie - Hutschiene Vers.1\sonoff\sonoff.ino:38:0:
sonoff_template.h:161:3: error: expected ',' or ';' before 'D_SENSOR_PZEM_TX'
http://arduino.esp8266.com/stable/package_esp8266com_index.json
D_SENSOR_PZEM_TX "|" D_SENSOR_PZEM_RX "|"
^
E:\Arduino\Energie - Hutschiene Vers.1\sonoff\sonoff.ino: In function 'void GpioSwitchPinMode(uint8_t)':
sonoff:2345:11: error: 'SHELLY2' was not declared in this scope
if (SHELLY2 == Settings.module) {
^
E:\Arduino\Energie - Hutschiene Vers.1\sonoff\support.ino: In function 'boolean GetUsedInModule(byte, uint8_t*)':
support:665:17: error: 'GPIO_PZEM0XX_TX' was not declared in this scope
if (!pzem && (GPIO_PZEM0XX_TX == val)) { return true; }
^
In file included from C:\Users\breger\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2\cores\esp8266/Arduino.h:256:0,
from C:\Users\breger\AppData\Local\Temp\arduino_build_733114\sketch\sonoff.ino.cpp:1:
E:\Arduino\Energie - Hutschiene Vers.1\sonoff\xdrv_01_webserver.ino: In function 'void HandleModuleConfiguration()':
xdrv_01_webserver:765:26: error: 'kModuleNiceList' was not declared in this scope
midx = pgm_read_byte(kModuleNiceList + i);
^
C:\Users\breger\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2\cores\esp8266/pgmspace.h:123:51: note: in definition of macro 'pgm_read_byte'
#define pgm_read_byte(addr) pgm_read_byte_inlined(addr)
^
xdrv_01_webserver:777:26: error: 'kGpioNiceList' was not declared in this scope
midx = pgm_read_byte(kGpioNiceList + j);
^
C:\Users\breger\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2\cores\esp8266/pgmspace.h:123:51: note: in definition of macro 'pgm_read_byte'
#define pgm_read_byte(addr) pgm_read_byte_inlined(addr)
^
E:\Arduino\Energie - Hutschiene Vers.1\sonoff\xdrv_04_light.ino: In function 'void LightSetColorTemp(uint16_t)':
xdrv_04_light:433:7: error: 'PHILIPS' was not declared in this scope
if (PHILIPS == Settings.module) {
^
E:\Arduino\Energie - Hutschiene Vers.1\sonoff\xdrv_04_light.ino: In function 'void LightSetDimmer(uint8_t)':
xdrv_04_light:469:7: error: 'PHILIPS' was not declared in this scope
if (PHILIPS == Settings.module) {
^
E:\Arduino\Energie - Hutschiene Vers.1\sonoff\xdrv_05_irremote.ino: In function 'boolean IrSendCommand()':
xdrv_05_irremote:299:7: error: 'StaticJsonBuffer' was not declared in this scope
StaticJsonBuffer<128> jsonBuf;
^
xdrv_05_irremote:299:29: error: 'jsonBuf' was not declared in this scope
StaticJsonBuffer<128> jsonBuf;
^
xdrv_05_irremote:301:17: error: 'class ArduinoJson660_0_0::JsonObject' has no member named 'success'
if (!root.success()) {
^
E:\Arduino\Energie - Hutschiene Vers.1\sonoff\xdrv_07_domoticz.ino: In function 'boolean DomoticzMqttData()':
xdrv_07_domoticz:161:5: error: 'StaticJsonBuffer' was not declared in this scope
StaticJsonBuffer<400> jsonBuf;
^
xdrv_07_domoticz:161:27: error: 'jsonBuf' was not declared in this scope
StaticJsonBuffer<400> jsonBuf;
^
xdrv_07_domoticz:163:19: error: 'class ArduinoJson660_0_0::JsonObject' has no member named 'success'
if (!domoticz.success()) {
^
xdrv_07_domoticz:184:49: error: invalid initialization of non-const reference of type 'ArduinoJson660_0_0::JsonObject&' from an rvalue of type 'ArduinoJson660_0_0::JsonObjectSubscript<const char*>'
JsonObject& color = domoticz["Color"];
^
E:\Arduino\Energie - Hutschiene Vers.1\sonoff\xdrv_09_timers.ino: In function 'boolean TimerCommand()':
xdrv_09_timers:364:11: error: 'StaticJsonBuffer' was not declared in this scope
StaticJsonBuffer<256> jsonBuffer;
^
xdrv_09_timers:364:33: error: 'jsonBuffer' was not declared in this scope
StaticJsonBuffer<256> jsonBuffer;
^
xdrv_09_timers:366:21: error: 'class ArduinoJson660_0_0::JsonObject' has no member named 'success'
if (!root.success()) {
^
xdrv_09_timers:373:68: error: 'class ArduinoJson660_0_0::JsonObjectSubscript<char*>' has no member named 'success'
if (root[UpperCase_P(parm_uc, PSTR(D_JSON_TIMER_ARM))].success()) {
^
xdrv_09_timers:377:69: error: 'class ArduinoJson660_0_0::JsonObjectSubscript<char*>' has no member named 'success'
if (root[UpperCase_P(parm_uc, PSTR(D_JSON_TIMER_MODE))].success()) {
^
xdrv_09_timers:381:69: error: 'class ArduinoJson660_0_0::JsonObjectSubscript<char*>' has no member named 'success'
if (root[UpperCase_P(parm_uc, PSTR(D_JSON_TIMER_TIME))].success()) {
^
xdrv_09_timers:408:71: error: 'class ArduinoJson660_0_0::JsonObjectSubscript<char*>' has no member named 'success'
if (root[UpperCase_P(parm_uc, PSTR(D_JSON_TIMER_WINDOW))].success()) {
^
xdrv_09_timers:412:69: error: 'class ArduinoJson660_0_0::JsonObjectSubscript<char*>' has no member named 'success'
if (root[UpperCase_P(parm_uc, PSTR(D_JSON_TIMER_DAYS))].success()) {
^
xdrv_09_timers:425:71: error: 'class ArduinoJson660_0_0::JsonObjectSubscript<char*>' has no member named 'success'
if (root[UpperCase_P(parm_uc, PSTR(D_JSON_TIMER_REPEAT))].success()) {
^
xdrv_09_timers:428:71: error: 'class ArduinoJson660_0_0::JsonObjectSubscript<char*>' has no member named 'success'
if (root[UpperCase_P(parm_uc, PSTR(D_JSON_TIMER_OUTPUT))].success()) {
^
xdrv_09_timers:432:71: error: 'class ArduinoJson660_0_0::JsonObjectSubscript<char*>' has no member named 'success'
if (root[UpperCase_P(parm_uc, PSTR(D_JSON_TIMER_ACTION))].success()) {
^
E:\Arduino\Energie - Hutschiene Vers.1\sonoff\xdrv_10_rules.ino: In function 'bool RulesRuleMatch(byte, String&, String&)':
xdrv_10_rules:190:3: error: 'StaticJsonBuffer' was not declared in this scope
StaticJsonBuffer<1024> jsonBuf;
^
xdrv_10_rules:190:26: error: 'jsonBuf' was not declared in this scope
StaticJsonBuffer<1024> jsonBuf;
^
xdrv_10_rules:192:13: error: 'class ArduinoJson660_0_0::JsonObject' has no member named 'success'
if (!root.success()) { return false; } // No valid JSON data
^
xdrv_10_rules:201:35: error: 'ArduinoJson660_0_0::enable_if<true, ArduinoJson660_0_0::JsonObjectSubscript<const String&> >::type' has no member named 'success'
if (!root[rule_task][rule_name].success()) { return false; }
^
E:\Arduino\Energie - Hutschiene Vers.1\sonoff\xdrv_16_tuyadimmer.ino: In function 'boolean TuyaModuleSelected()':
xdrv_16_tuyadimmer:220:13: error: 'GPIO_TUYA_RX' was not declared in this scope
if (!(pin[GPIO_TUYA_RX] < 99) || !(pin[GPIO_TUYA_TX] < 99)) { // fallback to hardware-serial if not explicitly selected
^
xdrv_16_tuyadimmer:220:42: error: 'GPIO_TUYA_TX' was not declared in this scope
if (!(pin[GPIO_TUYA_RX] < 99) || !(pin[GPIO_TUYA_TX] < 99)) { // fallback to hardware-serial if not explicitly selected
^
E:\Arduino\Energie - Hutschiene Vers.1\sonoff\xdrv_16_tuyadimmer.ino: In function 'void TuyaInit()':
xdrv_16_tuyadimmer:248:38: error: 'GPIO_TUYA_RX' was not declared in this scope
TuyaSerial = new TasmotaSerial(pin[GPIO_TUYA_RX], pin[GPIO_TUYA_TX], 1);
^
xdrv_16_tuyadimmer:248:57: error: 'GPIO_TUYA_TX' was not declared in this scope
TuyaSerial = new TasmotaSerial(pin[GPIO_TUYA_RX], pin[GPIO_TUYA_TX], 1);
^
E:\Arduino\Energie - Hutschiene Vers.1\sonoff\xdrv_16_tuyadimmer.ino: In function 'boolean Xdrv16(byte)':
xdrv_16_tuyadimmer:299:7: error: 'TUYA_DIMMER' was not declared in this scope
if (TUYA_DIMMER == Settings.module) {
^
E:\Arduino\Energie - Hutschiene Vers.1\sonoff\xdrv_17_rcswitch.ino: In function 'void RfInit()':
xdrv_17_rcswitch:77:11: error: 'GPIO_RFSEND' was not declared in this scope
if (pin[GPIO_RFSEND] < 99) {
^
xdrv_17_rcswitch:80:11: error: 'GPIO_RFRECV' was not declared in this scope
if (pin[GPIO_RFRECV] < 99) {
^
E:\Arduino\Energie - Hutschiene Vers.1\sonoff\xdrv_17_rcswitch.ino: In function 'boolean RfSendCommand()':
xdrv_17_rcswitch:104:7: error: 'StaticJsonBuffer' was not declared in this scope
StaticJsonBuffer<150> jsonBuf; // ArduinoJSON entry used to calculate jsonBuf: JSON_OBJECT_SIZE(5) + 40 = 134
^
xdrv_17_rcswitch:104:29: error: 'jsonBuf' was not declared in this scope
StaticJsonBuffer<150> jsonBuf; // ArduinoJSON entry used to calculate jsonBuf: JSON_OBJECT_SIZE(5) + 40 = 134
^
xdrv_17_rcswitch:106:16: error: 'class ArduinoJson660_0_0::JsonObject' has no member named 'success'
if (root.success()) {
^
E:\Arduino\Energie - Hutschiene Vers.1\sonoff\xdrv_17_rcswitch.ino: In function 'boolean Xdrv17(byte)':
xdrv_17_rcswitch:173:12: error: 'GPIO_RFSEND' was not declared in this scope
if ((pin[GPIO_RFSEND] < 99) || (pin[GPIO_RFRECV] < 99)) {
^
xdrv_17_rcswitch:173:39: error: 'GPIO_RFRECV' was not declared in this scope
if ((pin[GPIO_RFSEND] < 99) || (pin[GPIO_RFRECV] < 99)) {
^
E:\Arduino\Energie - Hutschiene Vers.1\sonoff\xnrg_01_hlw8012.ino: In function 'void HlwEvery200ms()':
xnrg_01_hlw8012:122:22: error: 'GPIO_NRG_SEL' was not declared in this scope
digitalWrite(pin[GPIO_NRG_SEL], hlw_select_ui_flag);
^
E:\Arduino\Energie - Hutschiene Vers.1\sonoff\xnrg_01_hlw8012.ino: In function 'void HlwSnsInit()':
xnrg_01_hlw8012:203:15: error: 'GPIO_NRG_SEL' was not declared in this scope
pinMode(pin[GPIO_NRG_SEL], OUTPUT);
^
xnrg_01_hlw8012:205:15: error: 'GPIO_NRG_CF1' was not declared in this scope
pinMode(pin[GPIO_NRG_CF1], INPUT_PULLUP);
^
E:\Arduino\Energie - Hutschiene Vers.1\sonoff\xnrg_01_hlw8012.ino: In function 'void HlwDrvInit()':
xnrg_01_hlw8012:217:13: error: 'GPIO_HJL_CF' was not declared in this scope
if (pin[GPIO_HJL_CF] < 99) {
^
xnrg_01_hlw8012:224:13: error: 'GPIO_NRG_SEL_INV' was not declared in this scope
if (pin[GPIO_NRG_SEL_INV] < 99) {
^
xnrg_01_hlw8012:225:11: error: 'GPIO_NRG_SEL' was not declared in this scope
pin[GPIO_NRG_SEL] = pin[GPIO_NRG_SEL_INV];
^
xnrg_01_hlw8012:230:14: error: 'GPIO_NRG_SEL' was not declared in this scope
if ((pin[GPIO_NRG_SEL] < 99) && (pin[GPIO_NRG_CF1] < 99) && (pin[GPIO_HLW_CF] < 99)) { // HLW8012 or HJL-01 based device
^
xnrg_01_hlw8012:230:42: error: 'GPIO_NRG_CF1' was not declared in this scope
if ((pin[GPIO_NRG_SEL] < 99) && (pin[GPIO_NRG_CF1] < 99) && (pin[GPIO_HLW_CF] < 99)) { // HLW8012 or HJL-01 based device
^
E:\Arduino\Energie - Hutschiene Vers.1\sonoff\xnrg_03_pzem004t.ino: In function 'void PzemSnsInit()':
xnrg_03_pzem004t:206:38: error: 'GPIO_PZEM004_RX' was not declared in this scope
PzemSerial = new TasmotaSerial(pin[GPIO_PZEM004_RX], pin[GPIO_PZEM0XX_TX], 1);
^
xnrg_03_pzem004t:206:60: error: 'GPIO_PZEM0XX_TX' was not declared in this scope
PzemSerial = new TasmotaSerial(pin[GPIO_PZEM004_RX], pin[GPIO_PZEM0XX_TX], 1);
^
E:\Arduino\Energie - Hutschiene Vers.1\sonoff\xnrg_03_pzem004t.ino: In function 'void PzemDrvInit()':
xnrg_03_pzem004t:217:14: error: 'GPIO_PZEM004_RX' was not declared in this scope
if ((pin[GPIO_PZEM004_RX] < 99) && (pin[GPIO_PZEM0XX_TX] < 99)) { // Any device with a Pzem004T
^
xnrg_03_pzem004t:217:45: error: 'GPIO_PZEM0XX_TX' was not declared in this scope
if ((pin[GPIO_PZEM004_RX] < 99) && (pin[GPIO_PZEM0XX_TX] < 99)) { // Any device with a Pzem004T
^
E:\Arduino\Energie - Hutschiene Vers.1\sonoff\xnrg_04_mcp39f501.ino: In function 'void McpDrvInit()':
xnrg_04_mcp39f501:553:9: error: 'SHELLY2' was not declared in this scope
if (SHELLY2 == Settings.module) {
^
E:\Arduino\Energie - Hutschiene Vers.1\sonoff\xnrg_05_pzem_ac.ino: In function 'void PzemAcSnsInit()':
xnrg_05_pzem_ac:83:40: error: 'GPIO_PZEM016_RX' was not declared in this scope
PzemAcModbus = new TasmotaModbus(pin[GPIO_PZEM016_RX], pin[GPIO_PZEM0XX_TX]);
^
xnrg_05_pzem_ac:83:62: error: 'GPIO_PZEM0XX_TX' was not declared in this scope
PzemAcModbus = new TasmotaModbus(pin[GPIO_PZEM016_RX], pin[GPIO_PZEM0XX_TX]);
^
E:\Arduino\Energie - Hutschiene Vers.1\sonoff\xnrg_05_pzem_ac.ino: In function 'void PzemAcDrvInit()':
xnrg_05_pzem_ac:95:14: error: 'GPIO_PZEM016_RX' was not declared in this scope
if ((pin[GPIO_PZEM016_RX] < 99) && (pin[GPIO_PZEM0XX_TX] < 99)) {
^
xnrg_05_pzem_ac:95:45: error: 'GPIO_PZEM0XX_TX' was not declared in this scope
if ((pin[GPIO_PZEM016_RX] < 99) && (pin[GPIO_PZEM0XX_TX] < 99)) {
^
E:\Arduino\Energie - Hutschiene Vers.1\sonoff\xnrg_06_pzem_dc.ino: In function 'void PzemDcSnsInit()':
xnrg_06_pzem_dc:81:40: error: 'GPIO_PZEM017_RX' was not declared in this scope
PzemDcModbus = new TasmotaModbus(pin[GPIO_PZEM017_RX], pin[GPIO_PZEM0XX_TX]);
^
xnrg_06_pzem_dc:81:62: error: 'GPIO_PZEM0XX_TX' was not declared in this scope
PzemDcModbus = new TasmotaModbus(pin[GPIO_PZEM017_RX], pin[GPIO_PZEM0XX_TX]);
^
E:\Arduino\Energie - Hutschiene Vers.1\sonoff\xnrg_06_pzem_dc.ino: In function 'void PzemDcDrvInit()':
xnrg_06_pzem_dc:94:14: error: 'GPIO_PZEM017_RX' was not declared in this scope
if ((pin[GPIO_PZEM017_RX] < 99) && (pin[GPIO_PZEM0XX_TX] < 99)) {
^
xnrg_06_pzem_dc:94:45: error: 'GPIO_PZEM0XX_TX' was not declared in this scope
if ((pin[GPIO_PZEM017_RX] < 99) && (pin[GPIO_PZEM0XX_TX] < 99)) {
^
E:\Arduino\Energie - Hutschiene Vers.1\sonoff\xplg_wemohue.ino: In function 'void HueLights(String*)':
xplg_wemohue:666:7: error: 'StaticJsonBuffer' was not declared in this scope
StaticJsonBuffer<400> jsonBuffer;
^
xplg_wemohue:666:29: error: 'jsonBuffer' was not declared in this scope
StaticJsonBuffer<400> jsonBuffer;
^
E:\Arduino\Energie - Hutschiene Vers.1\sonoff\xplg_ws2812.ino: At global scope:
xplg_ws2812:88:18: error: conflicting declaration 'uint8_t kRepeat [5]'
uint8_t kRepeat[5] = {
^
In file included from E:\Arduino\Energie - Hutschiene Vers.1\sonoff\xdrv_05_irremote.ino:74:0:
\\ad\home\breger\Dokumente\Arduino\libraries\IRremoteESP8266-master\src/IRrecv.h:26:16: error: 'kRepeat' has a previous declaration as 'const uint64_t kRepeat'
const uint64_t kRepeat = UINT64_MAX;
^
E:\Arduino\Energie - Hutschiene Vers.1\sonoff\xplg_ws2812.ino: In function 'void Ws2812Gradient(uint8_t)':
xplg_ws2812:225:48: error: invalid types 'const uint64_t {aka const long long unsigned int}[uint8_t {aka unsigned char}]' for array subscript
uint8_t repeat = kRepeat[Settings.light_width]; // number of scheme.count per ledcount
^
xplg_ws2812:235:37: error: invalid types 'const uint64_t {aka const long long unsigned int}[uint8_t {aka unsigned char}]' for array subscript
if (kRepeat[Settings.light_width] > 1) {
^
E:\Arduino\Energie - Hutschiene Vers.1\sonoff\xsns_20_novasds.ino: In function 'void NovaSdsInit()':
xsns_20_novasds:125:11: error: 'GPIO_SDS0X1_RX' was not declared in this scope
if (pin[GPIO_SDS0X1_RX] < 99 && pin[GPIO_SDS0X1_TX] < 99) {
^
xsns_20_novasds:125:39: error: 'GPIO_SDS0X1_TX' was not declared in this scope
if (pin[GPIO_SDS0X1_RX] < 99 && pin[GPIO_SDS0X1_TX] < 99) {
^
E:\Arduino\Energie - Hutschiene Vers.1\sonoff\xsns_34_hx711.ino: In function 'void HxInit()':
xsns_34_hx711:226:12: error: 'GPIO_HX711_DAT' was not declared in this scope
if ((pin[GPIO_HX711_DAT] < 99) && (pin[GPIO_HX711_SCK] < 99)) {
^
xsns_34_hx711:226:42: error: 'GPIO_HX711_SCK' was not declared in this scope
if ((pin[GPIO_HX711_DAT] < 99) && (pin[GPIO_HX711_SCK] < 99)) {
^
E:\Arduino\Energie - Hutschiene Vers.1\sonoff\xsns_35_tx20.ino: In function 'void Tx20StartRead()':
xsns_35_tx20:107:37: error: 'GPIO_TX20_TXD_BLACK' was not declared in this scope
uint8_t dpin = (digitalRead(pin[GPIO_TX20_TXD_BLACK]));
^
In file included from C:\Users\breger\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2/tools/sdk/include/ets_sys.h:29:0,
from C:\Users\breger\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2\cores\esp8266/pgmspace.h:10,
from C:\Users\breger\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2\cores\esp8266/Arduino.h:256,
from C:\Users\breger\AppData\Local\Temp\arduino_build_733114\sketch\sonoff.ino.cpp:1:
xsns_35_tx20:144:53: error: 'GPIO_TX20_TXD_BLACK' was not declared in this scope
GPIO_REG_WRITE(GPIO_STATUS_W1TC_ADDRESS, 1 << pin[GPIO_TX20_TXD_BLACK]);
^
C:\Users\breger\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2/tools/sdk/include/eagle_soc.h:69:98: note: in definition of macro 'WRITE_PERI_REG'
#define WRITE_PERI_REG(addr, val) (*((volatile uint32_t *)ETS_UNCACHED_ADDR(addr))) = (uint32_t)(val)
^
E:\Arduino\Energie - Hutschiene Vers.1\sonoff\xsns_35_tx20.ino:144:3: note: in expansion of macro 'GPIO_REG_WRITE'
GPIO_REG_WRITE(GPIO_STATUS_W1TC_ADDRESS, 1 << pin[GPIO_TX20_TXD_BLACK]);
^
E:\Arduino\Energie - Hutschiene Vers.1\sonoff\xsns_35_tx20.ino: In function 'void Tx20Init()':
xsns_35_tx20:167:15: error: 'GPIO_TX20_TXD_BLACK' was not declared in this scope
pinMode(pin[GPIO_TX20_TXD_BLACK], INPUT);
^
E:\Arduino\Energie - Hutschiene Vers.1\sonoff\xsns_35_tx20.ino: In function 'boolean Xsns35(byte)':
xsns_35_tx20:203:11: error: 'GPIO_TX20_TXD_BLACK' was not declared in this scope
if (pin[GPIO_TX20_TXD_BLACK] < 99) {
^
Mehrere Bibliotheken wurden für "ArduinoJson.h" gefunden
Benutzt: \\ad\home\breger\Dokumente\Arduino\libraries\ArduinoJson
Nicht benutzt: \\ad\home\breger\Dokumente\Arduino\libraries\ArduinoJson-5.11.2
Mehrere Bibliotheken wurden für "IRremoteESP8266.h" gefunden
Benutzt: \\ad\home\breger\Dokumente\Arduino\libraries\IRremoteESP8266-master
Nicht benutzt: \\ad\home\breger\Dokumente\Arduino\libraries\IRremoteESP8266-2.5.2.03
Mehrere Bibliotheken wurden für "NeoPixelBus.h" gefunden
Benutzt: \\ad\home\breger\Dokumente\Arduino\libraries\NeoPixelBus_by_Makuna
Nicht benutzt: \\ad\home\breger\Dokumente\Arduino\libraries\arduino_531789
Mehrere Bibliotheken wurden für "esp-knx-ip.h" gefunden
Benutzt: \\ad\home\breger\Dokumente\Arduino\libraries\esp-knx-ip-master
Nicht benutzt: \\ad\home\breger\Dokumente\Arduino\libraries\esp-knx-ip-0.5.1
Bibliothek esp-knx-ip-master in Version 0.4 im Ordner: \\ad\home\breger\Dokumente\Arduino\libraries\esp-knx-ip-master wird verwendet
Bibliothek EEPROM in Version 1.0 im Ordner: C:\Users\breger\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2\libraries\EEPROM wird verwendet
Bibliothek ESP8266WiFi in Version 1.0 im Ordner: C:\Users\breger\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2\libraries\ESP8266WiFi wird verwendet
Bibliothek ESP8266WebServer in Version 1.0 im Ordner: C:\Users\breger\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2\libraries\ESP8266WebServer wird verwendet
Bibliothek Ticker in Version 1.0 im Ordner: C:\Users\breger\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2\libraries\Ticker wird verwendet
Bibliothek ESP8266HTTPClient in Version 1.1 im Ordner: C:\Users\breger\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2\libraries\ESP8266HTTPClient wird verwendet
Bibliothek ESP8266httpUpdate in Version 1.2 im Ordner: C:\Users\breger\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2\libraries\ESP8266httpUpdate wird verwendet
Bibliothek ArduinoJson in Version 6.6.0-beta im Ordner: \\ad\home\breger\Dokumente\Arduino\libraries\ArduinoJson wird verwendet
Bibliothek DNSServer in Version 1.1.0 im Ordner: C:\Users\breger\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2\libraries\DNSServer wird verwendet
Bibliothek ESP8266mDNS im Ordner: C:\Users\breger\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2\libraries\ESP8266mDNS (legacy) wird verwendet
Bibliothek Wire in Version 1.0 im Ordner: C:\Users\breger\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2\libraries\Wire wird verwendet
Bibliothek PubSubClient in Version 2.7 im Ordner: \\ad\home\breger\Dokumente\Arduino\libraries\PubSubClient wird verwendet
Bibliothek IRremoteESP8266-master in Version 2.5.3 im Ordner: \\ad\home\breger\Dokumente\Arduino\libraries\IRremoteESP8266-master wird verwendet
Bibliothek C2Programmer-1.0.0 in Version 1.0.0 im Ordner: \\ad\home\breger\Dokumente\Arduino\libraries\C2Programmer-1.0.0 wird verwendet
Bibliothek TasmotaSerial-2.2.0 in Version 2.2.0 im Ordner: \\ad\home\breger\Dokumente\Arduino\libraries\TasmotaSerial-2.2.0 wird verwendet
Bibliothek rc-switch-2.6.2.13 in Version 2.6.2 im Ordner: \\ad\home\breger\Dokumente\Arduino\libraries\rc-switch-2.6.2.13 wird verwendet
Bibliothek TasmotaModbus-1.1.0 in Version 1.1.0 im Ordner: \\ad\home\breger\Dokumente\Arduino\libraries\TasmotaModbus-1.1.0 wird verwendet
Bibliothek NeoPixelBus_by_Makuna in Version 2.3.4 im Ordner: \\ad\home\breger\Dokumente\Arduino\libraries\NeoPixelBus_by_Makuna wird verwendet
Bibliothek SPI in Version 1.0 im Ordner: C:\Users\breger\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2\libraries\SPI wird verwendet
Bibliothek Adafruit_SGP30-1.0.0.13 in Version 1.0.2 im Ordner: \\ad\home\breger\Dokumente\Arduino\libraries\Adafruit_SGP30-1.0.0.13 wird verwendet
exit status 1
expected ',' or ';' before 'D_SENSOR_PZEM_TX'
mit der originalen sonoff_template.h bekomme ich es kompiliert und auch geflasht.
Könnte ich auch Tasmota Generic-Modul auswählen und dann die GPIOs entsprechend setzen (weiss zwar noch nicht wie) oder funktioniert das nicht.
Vieleicht hast du ja noch eine fertige sonoff.bin?
Danke und Gruß
Hartmut
Hallo Hartmut,
das ist klar, weil in meiner template.h der Shelly2 noch nicht hinterlegt ist, die neue Tasmota-Version aber danach frägt.
Ich versuch mal die template.h der neuen Version anzupassen, bzw. integriere in meine Version den Shelly2.
Papa Romeo
Hallo Hartmut,
im Anhang das modifizierte Tasmota Release 6.3.
Bei mir ist die Kompilierung fehlerfrei durchgelaufen.
Versuch´s mal damit.
Papa Romeo
Hallo Papa Romeo,
danke für deine Mühe.
Jetzt hat das Compilieren funktioniert, aber erst nachdem man auch die richtigen Libraries in der entsprechenden Version eingespielt hat.
Das ist ganz schön kompliziert.
Würde auch die Standard Tasmota funktioneren oder sind es zu viele Unterschiede zwischen deiner Version und der Tasmota-Version?
Jetzt funktioniert es endlich. :) :)
Gruß rippi
Hallo papa,
Interessantes Gerät. :-)
wäre es auch möglich den Sensor seriell z.B. über einen USB Wandler am Raspberry zu betreiben?
@Frank: Du meinst den HLW8012 ?
@rippi: Es ist die Standart Version. Ich habe nur in der template.h meine Module gleich mit den entsprechenden GPIO-Zuweisungen hinzugefügt,
damit ich nicht lang nach einem gerade passenden Device suchen muss, der meiner Modul-Konfiguration zufällig entspricht.
Oder die Zuweisungen per Hand nach dem "Try and Error" Prinzip durchführen muss.
Zitat von: Papa Romeo am 29 November 2018, 15:27:30
@Frank: Du meinst den HLW8012 ?
Na das oben beschriebene Modul, aber anstatt einem ESP direkt angeschlossen.
Gerade auf dem Schaltplan gesehen, ja den HLW8012 meine ich.
Ich habe z.B. in jedem Verteiler einen Raspberry sitzen. Da wäre WLAN eigentlich unnötig. :-)
OK. Danke
Die LED ist nur Betriebsanzeige oder hat die noch einen anderen Zweck. (meine leuchtet nicht; richtig eingelötet und getestet)
Gruß
rippi
..die LED blinkt wenn Strom verbraucht wird. Umso höher die Blinkfrequenz umso mehr Strom wird gerade gezogen.
Fehlt nur noch ein LCD Display mit den KWh.
[emoji6]
Gesendet von meinem E6653 mit Tapatalk
@Frank: Über das mit USB hab ich mir noch nie Gedanken gemacht, aber es stellt sich sicherlich die Frage, welchen Aufwand es bedeuten würde, hier ins
Detail zu gehen und die Daten des HLW so aufzubereiten das sie "USB-fähig werden".
Ob es da dann doch nicht sinnvoller ist, eine schon vorhanden Datenverarbeitung zu nutzen (z.B. Tasmota) und auch wenn man, um 20 Zentimeter
zu überbrücken, eigentlich kein WLan benötigen würde, dann trotzdem auf diesen Übertragungsweg zurückgreift ?
Ah, dachte der esp macht nur ne serial bridge.
Klar, wenn der die Berechnungen macht macht es keinen Sinn das zu ändern. [emoji16]
Danke für die Aufklärung.
Gesendet von meinem Doogee S60 mit Tapatalk
Hallo Papa Romeo,
kann es sein, dass der Widerstand auf der Platine für die LED mit 1KOhm zu groß ist und deswegen meine LED nicht leuchtet.
Gruß rippi
... wäre möglich, da es auf die verwendete LED ankommt. Ich habe LED´s die schon ab etwa 2 mA leuchten.
Wenn Du welche hast, die mehr Strom brauchen, kannst du den Widerstand wie folgt berechnen:
R = (3,3 V - U_Led) / I_Led
oder löte einfach mal einen weiteren 1 kOhm Widerstand parallel zu dem schon vorhandenen.
Das könnte natürlich sein.
Werde ich heute Abend mal testen.
Platinen sind heute angekommen, danke!
Auf den ersten Blick sind auch alle Bauteile klar, bis auf den Schaltwandler.
würdest mir da noch den Typ verraten? :)
EDIT, und um sicher zu gehen, ist das das richtige Gehäuse?
https://www.pollin.de/p/hutschienengehaeuse-1-c-17x71x90-mm-460144
Hallo Frank,
Gehäuse passt.
Schaltwandler schau mal hier:
https://forum.fhem.de/index.php/topic,90282.msg831222.html#msg831222
Zitat von: Papa Romeo am 03 Dezember 2018, 21:42:17
Hallo Frank,
Gehäuse passt.
Schaltwandler schau mal hier:
https://forum.fhem.de/index.php/topic,90282.msg831222.html#msg831222
Danke!
Gesendet von meinem Doogee S60 mit Tapatalk
Zitat von: Papa Romeo am 29 November 2018, 17:53:52aber es stellt sich sicherlich die Frage, welchen Aufwand es bedeuten würde, hier ins
Detail zu gehen und die Daten des HLW so aufzubereiten das sie "USB-fähig werden".
Aber warum der Umweg über USB? Warum nicht direkt an die GPIO?
Interessant wäre auch ein Slave-Modul, was nur angereiht wird und den ESP des Masters nutzt.
Der Slave wäre dann wahrscheinlich auch alternativ direkt an den RaspPi, zur Not mit einem ATtiny85 dazwischen, anschließbar.Mir gefällt das Projekt gut, den Kontakten der Steckervarianten traue ich bei höheren Leistungen (WM, GS...) nur soweit, wie ich ein Klavier werfen kann.
Zitat von: Per am 04 Dezember 2018, 13:49:41
Aber warum der Umweg über USB? Warum nicht direkt an die GPIO?
weil die in meinem Fal für Licht und Rollo-Taster verwendet sind.
Eine Erweiterung der Eingänge (PiZero, NanoPi, AT...) dürfte weniger aufwendig sein als das Anschließen an USB. Vor allem später für die CPU.
Bei ~1€ für ein USB-Modul dürften die Kosten hingegen nebensächlich sein.
Ich Bau die Module jetzt einfach mit ESP01 auf wie vorgesehen.
Gesendet von meinem Doogee S60 mit Tapatalk
Frank, ich hab auch mal Adapter vorgestellt, wo ein ESP12 oder 07 anstatt dem ESP01 verwendet werden kann. Da wären dann einige GPIO´s noch frei zur Verfügung. Nur dann müsstest du wahrscheinlich ein 2C Gehäuse verwenden.
Die gpio am pi reichen aus. Am pi selbst sind alle Taster, die Relais an mcp23017 32fach Erweiterungen.
Die Anbindung über WLAN hat so jetzt auch den Vorteil dass ich alle an der Instanz in kg direkt ei richten kann, das ist der datensammler.
Aber danke für den Hinweis. [emoji1360]
Gesendet von meinem Doogee S60 mit Tapatalk
@papa romeo
Gibt es die Module bei dir als komplett Version zu beziehen?
Gruß Sascha
Gesendet von meinem E6653 mit Tapatalk
Hallo Sascha,
hab ich mal für jene gemacht, die mit dem Lötkolben absolut auf Kriegsfuß standen (allerdings ohne Gehäuse). Aber auch nur solange wie der Vorrat an Bauteilen für das gereicht hat, was ich selber nicht benötigte und Platinen zur Verfügung standen.
Im Moment habe ich keine Platinen mehr und das was ich jetzt noch an vereinzelnden Bauteilen hier liegen habe, benötige ich für die Entwicklung weiterer Projekte...sorry.
Damit sich eine Neuauflage rentiert (Bestellung Platinen u. Bauteile) sollte daher Interesse an mindestens fünf Modulen bestehen, wobei, wie oben schon geschrieben, das Gehäuse selbst beschafft werden muss.
LG
Papa Romeo
Hallo Papa Romeo,
die Datei aus Post #4 ist Passwortgeschützt.Wie lautet das Passwort? oder gibt es eine Fertige .bin Datei?
Ich probiere schon seit Stunden mit ArduinoIDE und bekomme Tasmota nicht kompiliert :-(
Gruß,
Claudiu
Hallo Claudiu,
du hast ne PM.
Zitat von: Papa Romeo am 09 März 2019, 20:55:19
... die Datei ist nicht geschützt, aber ich hänge sie nochmal mit an.
7-zip fragt nach einem Passwort und entpackt nicht :o
Gruß PeMue
...sorry...mein Fehler...PW an Sentinel1 übermittelt und PW entfernt.
Zitat von: Papa Romeo am 12 November 2018, 10:35:59Auf Grund einiger Anfragen, hier dann noch der Schaltplan für die beiden Projekte.
Hallo Papa Romeo,
ich hab den HLW8012 da und möchte ihn jetzt einsetzen.
Ich möchte ihn zusammen mit einem Kannix in einer berührungssicheren Verteilerdose einsetzen. Da der ESP8266-12F über mehr rausgeführte PINs verfügt, kann ich da andere PINs als beim ESP8266-01 benutzen?
GPIO12-14 sind für Input und Output gleichermaßen gut geeignet.
Wofür ist der Pin CF zuständig, der über einen 47k-Widerstand an einen BS170/BC337 geführt wird und dann zum GPIO1 des ESPs?
Da ich keine LED habe und auch nicht benötige, kann ich dann die LED und den 1k-Widerstand weglassen? Ist dann der 47k-Widerstand und der BS170/BC337 überhaupt noch notwendig?
Viele Grüße Gisbert
Hallo Papa Romeo,
noch eine weitere Frage zur Genauigkeit und Kalibrierung der Spannung und Stromstärke. Macht man das einmal mit einem Referenzwert und passt das dann für alle anderen Wertebereiche auch? Mit welcher Abweichung muss man rechnen?
Viele Grüße Gisbert
Hallo Gisbert,
beziehen sich deine Fragen jetzt auf den HLW ?
LG
Papa Romeo
Hallo Papa Romeo,
meine Hauptanliegen ist eigentlich der BS170/BC337 (nebst Widerstand) laut Schaltplan im Thread #1. Wird der benötigt, wenn man keine LED einbauen möchte, weil ich schlicht keine habe.
Viele Grüße Gisbert
Hallo Gisbert,
die drei Bauteile kannst du natürlich auch weg lassen. Ist nur optische Kontrolle.
LG
Papa Romeo