#for documentation see project at https://github.com/Dilbert66/esphome-dsckeybus
substitutions:
systemName: "alarma"
accessCode: "my_code" #Only comes into effect if a password prompt occurs when arming eg. night mode
cmdWaitTime: "0" # milliseconds. set how long to delay before accepting a new 05 cmd as valid to filter out intermittent short duration bogus commands that some panels send. default = 0
esphome:
name: $systemName
platform: ESP8266
board: d1_mini
includes:
- dscKeybusInterface/
wifi:
ssid: "my_wifi"
password: "my_password"
ap:
ssid: "$systemName Fallback"
password: "my_password"
web_server:
port: 80
auth:
username: "my_user"
password: "my_password"
logger:
baud_rate: 0
level: debug
api:
password: "my_password"
ota:
password: "my_password"
safe_mode: True
status_led:
pin:
number: D4
inverted: yes
custom_component:
- lambda: |-
auto DSCkeybus = new DSCkeybushome();
DSCkeybus->accessCode="$accessCode";
DSCkeybus->cmdWaitTime=$cmdWaitTime;
DSCkeybus->debug=0;
DSCkeybus->onSystemStatusChange([&](std::string statusCode) {
id(system_status).publish_state(statusCode);
});
DSCkeybus->onPartitionStatusChange([&](uint8_t partition,std::string statusCode) {
switch(partition) {
case 1: id(p1).publish_state(statusCode); break;
case 2: id(p2).publish_state(statusCode); break;
}
});
DSCkeybus->onPartitionMsgChange([&](uint8_t partition,std::string msg) {
switch(partition) {
case 1: id(m1).publish_state(msg); break;
case 2: id(m2).publish_state(msg); break;
}
});
DSCkeybus->onTroubleStatusChange([&](bool open) {
id(t1).publish_state(open);
});
DSCkeybus->onFireStatusChange([&](uint8_t partition, bool open) {
switch (partition) {
case 1: id(f1).publish_state(open); break;
}
});
DSCkeybus->onZoneStatusChange([&](uint8_t zone, bool open) {
switch (zone) {
case 1: id(z1).publish_state(open); break;
case 2: id(z2).publish_state(open); break;
case 3: id(z3).publish_state(open); break;
case 4: id(z4).publish_state(open); break;
case 5: id(z5).publish_state(open); break;
case 6: id(z6).publish_state(open); break;
case 7: id(z7).publish_state(open); break;
case 8: id(z8).publish_state(open); break;
case 9: id(z9).publish_state(open); break;
case 10: id(z10).publish_state(open); break;
case 11: id(z11).publish_state(open); break;
}
});
DSCkeybus->onZoneAlarmChange([&](uint8_t zone, bool open) {
switch (zone) {
case 1: id(za1).publish_state(open); break;
case 2: id(za2).publish_state(open); break;
case 3: id(za3).publish_state(open); break;
case 4: id(za4).publish_state(open); break;
case 5: id(za5).publish_state(open); break;
case 6: id(za6).publish_state(open); break;
case 7: id(za7).publish_state(open); break;
case 8: id(za8).publish_state(open); break;
case 9: id(za9).publish_state(open); break;
case 10: id(za10).publish_state(open); break;
case 11: id(za11).publish_state(open); break;
}
});
return {DSCkeybus};
binary_sensor:
#zone status
- platform: template
id: z1
name: "$systemName Front door"
device_class: door
- platform: template
id: z2
name: "$systemName Garage door"
device_class: door
- platform: template
id: z3
name: "$systemName Back door"
device_class: door
- platform: template
id: z4
name: "$systemName Living room window"
device_class: window
- platform: template
id: z5
name: "$systemName Dining room window"
device_class: window
- platform: template
id: z6
name: "$systemName Family room window LF"
device_class: window
- platform: template
id: z7
name: "$systemName Family room window RF"
device_class: window
- platform: template
id: z8
name: "$systemName Basement windows"
device_class: window
- platform: template
id: z9
name: "$systemName Upstairs motion"
device_class: motion
- platform: template
id: z10
name: "$systemName Basement motion"
device_class: motion
- platform: template
id: z11
name: "$systemName Main floor motion"
device_class: motion
#zone alarm status
- platform: template
id: za1
name: "$systemName Front door alarm"
#device_class: safety
- platform: template
id: za2
name: "$systemName Garage door alarm"
#device_class: safety
- platform: template
id: za3
name: "$systemName Back door alarm"
#device_class: safety
- platform: template
id: za4
name: "$systemName Living room window alarm"
#device_class: safety
- platform: template
id: za5
name: "$systemName Dining room window alarm"
#device_class: safety
- platform: template
id: za6
name: "$systemName Family room window LF alarm"
#device_class: safety
- platform: template
id: za7
name: "$systemName Family room window RF alarm"
#device_class: safety
- platform: template
id: za8
name: "$systemName Basement windows alarm"
#device_class: safety
- platform: template
id: za9
name: "$systemName Upstairs motion alarm"
#device_class: safety
- platform: template
id: za10
name: "$systemName Basement motion alarm"
#device_class: safety
- platform: template
id: za11
name: "$systemName Main floor motion alarm"
#device_class: safety
- platform: template
id: t1
name: "$systemName Trouble Status"
device_class: problem
- platform: template
id: f1
device_class: safety
name: "$systemName Partition1 Fire Status"
text_sensor:
- platform: template
id: system_status
name: "$systemName System Status"
icon: "mdi:shield"
- platform: template
id: p1
name: "$systemName Partition 1 Status "
icon: "mdi:shield"
- platform: template
id: p2
name: "$systemName Partition 2 Status "
icon: "mdi:shield"
- platform: template
id: m1
name: "$systemName Partition 1 Msg "
icon: "mdi:alert-box"
- platform: template
id: m2
name: "$systemName Partition 2 Msg "
icon: "mdi:alert-box"
switch:
- platform: template
name: "$systemName Connection"
id: connection_status_switch
lambda: |-
return dsc.keybusConnected;
icon: "mdi:shield-link-variant"
turn_on_action:
- switch.toggle: restart_switch
turn_off_action:
- lambda: |-
disconnectKeybus();
- platform: restart
id: restart_switch
Valid config:
My ESPhome folder
And my dscKeybusInterface folder inside
Compile Output:
INFO Reading configuration /config/esphome/alarma.yaml...
INFO Generating C++ source...
INFO Compiling app...
INFO Running: platformio run -d /config/esphome/alarma
Processing alarma (board: d1_mini; framework: arduino; platform: espressif8266@2.2.3)
--------------------------------------------------------------------------------
HARDWARE: ESP8266 80MHz, 80KB RAM, 4MB Flash
PACKAGES:
- framework-arduinoespressif8266 2.20502.0 (2.5.2)
- tool-esptool 1.413.0 (4.13)
- tool-esptoolpy 1.20600.0 (2.6.0)
- toolchain-xtensa 1.40802.0 (4.8.2)
Looking for ESPAsyncTCP-esphome library in registry
LibraryManager: Installing id=6757 @ 1.2.2
ESPAsyncTCP-esphome @ 1.2.2 has been successfully installed!
Looking for ESPAsyncWebServer-esphome library in registry
LibraryManager: Installing id=6758 @ 1.2.6
ESPAsyncWebServer-esphome @ 1.2.6 has been successfully installed!
Looking for ESPAsyncTCP-esphome library in registry
LibraryManager: Installing id=6757
ESPAsyncTCP-esphome @ 1.2.3 has been successfully installed!
Looking for AsyncTCP-esphome library in registry
LibraryManager: Installing id=6798
AsyncTCP-esphome @ 1.1.1 has been successfully installed!
Looking for ArduinoJson-esphomelib library in registry
LibraryManager: Installing id=3837 @ 5.13.3
ArduinoJson-esphomelib @ 5.13.3 has been successfully installed!
Dependency Graph
|-- <ESPAsyncTCP-esphome> 1.2.2
| |-- <ESP8266WiFi> 1.0
|-- <ESP8266WiFi> 1.0
|-- <ESP8266mDNS> 1.2
| |-- <ESP8266WiFi> 1.0
|-- <ESPAsyncWebServer-esphome> 1.2.6
| |-- <ESPAsyncTCP-esphome> 1.2.2
| | |-- <ESP8266WiFi> 1.0
| |-- <Hash> 1.0
| |-- <ESP8266WiFi> 1.0
| |-- <ArduinoJson-esphomelib> 5.13.3
|-- <ArduinoJson-esphomelib> 5.13.3
Compiling /data/alarma/.pioenvs/alarma/src/dscKeybusInterface.cpp.o
Compiling /data/alarma/.pioenvs/alarma/src/dscKeybusPrintData.cpp.o
Compiling /data/alarma/.pioenvs/alarma/src/dscKeybusProcessData.cpp.o
Compiling /data/alarma/.pioenvs/alarma/src/esphome/components/api/api_connection.cpp.o
Compiling /data/alarma/.pioenvs/alarma/src/esphome/components/api/api_pb2.cpp.o
Compiling /data/alarma/.pioenvs/alarma/src/esphome/components/api/api_pb2_service.cpp.o
Compiling /data/alarma/.pioenvs/alarma/src/esphome/components/api/api_server.cpp.o
Compiling /data/alarma/.pioenvs/alarma/src/esphome/components/api/list_entities.cpp.o
Compiling /data/alarma/.pioenvs/alarma/src/esphome/components/api/proto.cpp.o
Compiling /data/alarma/.pioenvs/alarma/src/esphome/components/api/subscribe_state.cpp.o
Compiling /data/alarma/.pioenvs/alarma/src/esphome/components/api/user_services.cpp.o
Compiling /data/alarma/.pioenvs/alarma/src/esphome/components/api/util.cpp.o
Compiling /data/alarma/.pioenvs/alarma/src/esphome/components/binary_sensor/automation.cpp.o
Compiling /data/alarma/.pioenvs/alarma/src/esphome/components/binary_sensor/binary_sensor.cpp.o
Compiling /data/alarma/.pioenvs/alarma/src/esphome/components/binary_sensor/filter.cpp.o
Compiling /data/alarma/.pioenvs/alarma/src/esphome/components/json/json_util.cpp.o
Compiling /data/alarma/.pioenvs/alarma/src/esphome/components/logger/logger.cpp.o
Compiling /data/alarma/.pioenvs/alarma/src/esphome/components/ota/ota_component.cpp.o
Compiling /data/alarma/.pioenvs/alarma/src/esphome/components/restart/restart_switch.cpp.o
Compiling /data/alarma/.pioenvs/alarma/src/esphome/components/status_led/status_led.cpp.o
Compiling /data/alarma/.pioenvs/alarma/src/esphome/components/switch/automation.cpp.o
Compiling /data/alarma/.pioenvs/alarma/src/esphome/components/switch/switch.cpp.o
Compiling /data/alarma/.pioenvs/alarma/src/esphome/components/template/binary_sensor/template_binary_sensor.cpp.o
Compiling /data/alarma/.pioenvs/alarma/src/esphome/components/template/switch/template_switch.cpp.o
Compiling /data/alarma/.pioenvs/alarma/src/esphome/components/template/text_sensor/template_text_sensor.cpp.o
Compiling /data/alarma/.pioenvs/alarma/src/esphome/components/text_sensor/text_sensor.cpp.o
Compiling /data/alarma/.pioenvs/alarma/src/esphome/components/web_server/web_server.cpp.o
Compiling /data/alarma/.pioenvs/alarma/src/esphome/components/web_server_base/web_server_base.cpp.o
Compiling /data/alarma/.pioenvs/alarma/src/esphome/components/wifi/wifi_component.cpp.o
Compiling /data/alarma/.pioenvs/alarma/src/esphome/components/wifi/wifi_component_esp32.cpp.o
Compiling /data/alarma/.pioenvs/alarma/src/esphome/components/wifi/wifi_component_esp8266.cpp.o
Compiling /data/alarma/.pioenvs/alarma/src/esphome/core/application.cpp.o
Compiling /data/alarma/.pioenvs/alarma/src/esphome/core/component.cpp.o
Compiling /data/alarma/.pioenvs/alarma/src/esphome/core/controller.cpp.o
Compiling /data/alarma/.pioenvs/alarma/src/esphome/core/esphal.cpp.o
Compiling /data/alarma/.pioenvs/alarma/src/esphome/core/helpers.cpp.o
Compiling /data/alarma/.pioenvs/alarma/src/esphome/core/log.cpp.o
Compiling /data/alarma/.pioenvs/alarma/src/esphome/core/preferences.cpp.o
Compiling /data/alarma/.pioenvs/alarma/src/esphome/core/scheduler.cpp.o
Compiling /data/alarma/.pioenvs/alarma/src/esphome/core/util.cpp.o
Compiling /data/alarma/.pioenvs/alarma/src/main.cpp.o
Generating LD script /data/alarma/.pioenvs/alarma/ld/local.eagle.app.v6.common.ld
Compiling /data/alarma/.pioenvs/alarma/lib4d9/ESP8266WiFi/BearSSLHelpers.cpp.o
Compiling /data/alarma/.pioenvs/alarma/lib4d9/ESP8266WiFi/CertStoreBearSSL.cpp.o
Compiling /data/alarma/.pioenvs/alarma/lib4d9/ESP8266WiFi/ESP8266WiFi.cpp.o
Compiling /data/alarma/.pioenvs/alarma/lib4d9/ESP8266WiFi/ESP8266WiFiAP.cpp.o
Compiling /data/alarma/.pioenvs/alarma/lib4d9/ESP8266WiFi/ESP8266WiFiGeneric.cpp.o
Compiling /data/alarma/.pioenvs/alarma/lib4d9/ESP8266WiFi/ESP8266WiFiMulti.cpp.o
Compiling /data/alarma/.pioenvs/alarma/lib4d9/ESP8266WiFi/ESP8266WiFiSTA-WPS.cpp.o
Compiling /data/alarma/.pioenvs/alarma/lib4d9/ESP8266WiFi/ESP8266WiFiSTA.cpp.o
Compiling /data/alarma/.pioenvs/alarma/lib4d9/ESP8266WiFi/ESP8266WiFiScan.cpp.o
In file included from src/main.cpp:52:0:
src/dscAlarm.h:8:1: error: 'dscKeybusInterface' does not name a type
dscKeybusInterface dsc(dscClockPin, dscReadPin, dscWritePin);
^
src/dscAlarm.h: In function 'void disconnectKeybus()':
src/dscAlarm.h:12:3: error: 'dsc' was not declared in this scope
dsc.stop();
^
In file included from src/main.cpp:52:0:
src/dscAlarm.h: At global scope:
src/dscAlarm.h:65:18: error: 'dscPartitions' was not declared in this scope
byte lastStatus[dscPartitions];
^
src/dscAlarm.h: In member function 'virtual void DSCkeybushome::setup()':
src/dscAlarm.h:79:2: error: 'dsc' was not declared in this scope
dsc.cmdWaitTime=cmdWaitTime;
^
src/dscAlarm.h: In member function 'void DSCkeybushome::alarm_keypress(std::string)':
src/dscAlarm.h:124:5: error: 'dsc' was not declared in this scope
dsc.write(keys);
^
src/dscAlarm.h: In member function 'void DSCkeybushome::set_alarm_state(int, std::string, std::string)':
src/dscAlarm.h:142:37: error: 'dsc' was not declared in this scope
if (state.compare("S") == 0 && !dsc.armed[partition] && !dsc.exitDelay[partition]) {
^
src/dscAlarm.h: In member function 'virtual void DSCkeybushome::loop()':
src/dscAlarm.h:182:27: error: 'dsc' was not declared in this scope
if (!forceDisconnect && dsc.loop()) {
^
In file included from src/main.cpp:52:0:
src/dscAlarm.h:190:10: error: 'dsc' was not declared in this scope
if ( dsc.statusChanged ) { // Processes data only when a valid Keybus command has been read
^
src/dscAlarm.h:238:40: error: 'dscPartitions' was not declared in this scope
for (byte partition = 0; partition < dscPartitions; partition++) {
^
src/dscAlarm.h:244:8: error: 'lastStatus' was not declared in this scope
if (lastStatus[partition] != dsc.status[partition] ) {
^
src/dscAlarm.h:301:41: error: 'dscZones' was not declared in this scope
for (byte zoneGroup = 0; zoneGroup < dscZones; zoneGroup++) {
^
src/dscAlarm.h:322:41: error: 'dscZones' was not declared in this scope
for (byte zoneGroup = 0; zoneGroup < dscZones; zoneGroup++) {
^
Compiling /data/alarma/.pioenvs/alarma/lib4d9/ESP8266WiFi/WiFiClient.cpp.o
src/main.cpp: In lambda function:
src/main.cpp:559:14: error: 'dsc' was not declared in this scope
return dsc.keybusConnected;
^
Compiling /data/alarma/.pioenvs/alarma/lib4d9/ESP8266WiFi/WiFiClientSecureAxTLS.cpp.o
Compiling /data/alarma/.pioenvs/alarma/lib4d9/ESP8266WiFi/WiFiClientSecureBearSSL.cpp.o
Compiling /data/alarma/.pioenvs/alarma/lib4d9/ESP8266WiFi/WiFiServer.cpp.o
src/main.cpp:560:3: warning: control reaches end of non-void function [-Wreturn-type]
});
^
*** [/data/alarma/.pioenvs/alarma/src/main.cpp.o] Error 1
Compiling /data/alarma/.pioenvs/alarma/lib4d9/ESP8266WiFi/WiFiServerSecureAxTLS.cpp.o
========================== [FAILED] Took 7.55 seconds ==========================
My config.yaml:
Valid config:
My ESPhome folder
And my dscKeybusInterface folder inside
Compile Output: