1.3.2 • Published 1 year ago
@2colors/esphome-native-api v1.3.2
Esphome native api
This library implements client for Esphome Native APi.
This library rewrite for node-red-contrib-esphome, original library esphome-native-api by @Nafaya
Installation
$ npm i @2colors/esphome-native-apiSynopsis
Device info and list entities
const { Client } = require('@2colors/esphome-native-api');
const client = new Client({
host: '<esp host or ip>',
port: 6053,
// encryptionKey: '', // Use encryption key
// password: '', // Insert password if you have any (Deprecated)
});
client.connect();
client.on('deviceInfo', deviceInfo => {
console.log('Device info:', deviceInfo);
});
client.on('newEntity', entity => {
console.log('New entity:', entity);
// enable light
if (entity.type === 'Light') {
entity.setState(true);
}
// show state
entity.on('state', (state) => console.log(state));
});
client.on('error', (error) => console.log(error));Discovery
const { Discovery } = require('@2colors/esphome-native-api');
Discovery().then(results => {
console.log(results);
/*
[
{
port: 6053,
network: 'wifi',
board: 'esp01_1m',
platform: 'ESP8266',
mac: 'c82b965b4153',
version: '2023.11.4',
host: 'bathroom-light.local',
address: '192.168.0.119'
}
]
*/
});const { Discovery } = require('@2colors/esphome-native-api');
const discovery = new Discovery();
discovery.on('info', console.log);
/*
{
port: 6053,
network: 'wifi',
board: 'esp01_1m',
platform: 'ESP8266',
mac: 'c82b965b4153',
version: '2023.11.4',
host: 'bathroom-light.local',
address: '192.168.0.119'
}
*/
discovery.run();Logging
const { Client } = require('@2colors/esphome-native-api');
const client = new Client({
host: '<esp host or ip>',
port: 6053,
initializeSubscribeLogs: true
});
client.on('logs', ({ message }) => {
console.log(message);
});Documantation
Discovery
!!! Importan, if you want use on Windows must disable/uninstall Bonjour (Apple) !!!
const { Discovery } = require('@2colors/esphome-native-api');
const discovery = new Discovery(options);options- optionalmulticast- optional. Default -true. Use udp multicastinginterface- optional. Explicitly specify a network interface. defaults to allport- optional. Default -5353. Set the udp portip- optional. Default -224.0.0.251. Set the udp ipttl- optional. Default -255. Set the multicast ttlloopback- optional. Default -true. Receive your own packetsreuseAddr- optional. Default -true. Set the reuseAddr option when creating the socket (requires node >=0.11.13)bind- optional. for workinterfaceread more
const { Discovery } = require('@2colors/esphome-native-api');
Discovery(options).then(console.log)options- optionaltimeout- optional. Default -5. Time in seconds how long to wait for responses*- all options above
Client
More frienly layer over the Connection
const { Client } = require('@2colors/esphome-native-api');
const client = new Client({
clearSession = false,
initializeDeviceInfo = true,
initializeListEntities = true,
initializeSubscribeStates = true,
initializeSubscribeLogs = false,
initializeSubscribeBLEAdvertisements = false,
port = 6053,
host,
clientInfo = 'esphomenativeapi',
encryptionKey = '',
password = '', // Deprecated
reconnect = true,
reconnectInterval = 30000,
pingInterval = 15000,
pingAttempts = 3
});host- (REQUIRED). Host or ip to connect toport- optional. Default -6053. Port to connect toencryptionKey- encryption Key. Default -''. The pre-shared key for the encryption. This is a 32-byte base64 encoded stringpassword- passsword (Deprecated). Default -''. Password used to authorized the client, It is recommended to use the encryptionKeyreconnect- optional. Default -true. indicates wheter reconnect automatically or notreconnectInterval- optional. Default -30000. Number. Amount of miliseconds to wait before new tryclearSession- optional. Default -true. Settrueto forget any information after reconnectioninitializeDeviceInfo- optional. Default -true. Settrueto retrieve device info after connection is establishedinitializeListEntities- optional. Default -true. Settrueto retrieve list of device's entities after connection is establishedinitializeSubscribeStates- optional. Default -trueinitializeSubscribeLogs- optional. Default -falseinitializeSubscribeBLEAdvertisements- optional. Default -falseclientInfo- string, name of client to be sent to esphome device. (Not necessary to send but nice for debugging issues)clientInfo- string, name of client to be sent to esphome device. Usually needed only for tracking connection on esphome device. See ConnectionpingInterval- optional. Default -15000. Ping interval. Amount of miliseconds. See ConnectionpingAttempts- optional. Default -3. Number of failed ping attempts after witch connection is considered to be corrupted. See Connection
Client methods and attributes
connect()- starts clientdisconnect()- srops clientconnected- indicates if client is connected to esphome and autorizedinitialized- indicates if client is connected and autorized and all initialization step are doneentities- array of discovered entitiesconnection- connection instance
Client events
connected- emmited if client is connected to esphome and autorizeddisconnected- emmited when connection is corruptedinitialized- emmited if client is connected and autorized and all initialization step are donedeviceInfo- emmited when deviceInfo is retrieved or updated. Activated withinitializeDeviceInfooptions passed toClient's constructor.newEntity- emmited when new entity is discovered. Activated withinitializeListEntitiesoptions passed toClient's constructor. First argument is instance of one of entities classlogs- emmited when esphome send any logs. Activated withinitializeSubscribeLogsoptions passed toClient's constructor. First argument is object withlevel,tag,message,send_failedble- emmited when esphome send any BLE Advertisements. Activated withinitializeSubscribeBLEAdvertisementsoptions passed toClient's constructor. First argument is object withaddress,name,rssi,serviceUuidsList,serviceDataList,manufacturerDataList,addressTypeerror- emitted when any error occurs
Entities
Each entity class defines individual interaction with esphome components. All entities have
configattrubute - entity configuration receved from esphomestateevent when new state is receivedstateattributedestroyedevent which is called when corresponfing client is no longer connection to this entity(SeeclearSessionoption) andtypeattribute equal to component typenameattribute equal to name of entity
Binary sensor
Only base functionality
Button
static commandService(connection, { key })key- REQUIRED. key/id of entity
Camera
Climate
static commandService(connection, { key, mode, targetTemperature, targetTemperatureLow, targetTemperatureHigh, away, fanMode, swingMode })- sends command to climate entitykey- REQUIRED. key/id of entitymode- optional. 0 - OFF, 1 - AUTO, 2 - COOL, 3 - HEAT, 4 - FAN_ONLY, 5 - DRY. SeesupportedModesListattr in configtargetTemperature- optional. floattargetTemperatureLow- optional. floattargetTemperatureHigh- optional. floatlegacyAway- optional. Boolean. Deprecated: usepresetwith AWAYfanMode- optional. 0 - ON, 1 - OFF, 2 - AUTO, 3 - LOW, 4 - MEDIUM, 5 - HIGH, 6 - MIDDLE, 7 - FOCUS, 8 - DIFFUSE, 9 - QUIET. SeesupportedFanModesListattr in configswingMode- optional. 0 - OFF, 1 - BOTH, 2 - VERTICAL, 3 - HORIZONTAL. SeesupportedSwingModesListattr in configcustomFanMode- optional. string. SeesupportedCustomFanModesListattr in configpreset- optional. 0 - NONE, 1 - HOME, 2 - AWAY, 3 - BOOST, 4 - COMFORT, 5 - ECO, 6 - SLEEP, 7 - ACTIVITY. SeesupportedPresetsListattr in configcustomPreset- optional. string. SeesupportedCustomPresetsListattr in config
Cover
static commandService(connection, { key, legacyCommand, position, tilt, stop })- sends command to cover entity.key- REQUIRED. key/id of entitylegacyCommand- optional. 0 - OPEN, 1 - CLOSE, 2 - STOP. Deprecated: usepositionposition- optional. float. 0.0 - CLOSED, 1.0 - OPEN. SeesupportsPositionattr in configtilt- optional. float. 0.0 - CLOSED, 1.0 - OPEN. SeesupportsTiltattr in configstop- optional. boolean
Fan
static commandService(connection, { key, state, speed, oscillating, direction, speedLevel })- sends command to fan entity.key- REQUIRED. key/id of entitystate- optional. booleanspeed- optional. 0 - LOW, 1 - MEDIUM, 2 - HIGHoscillating- optional. booleandirection- optional. 0 - FORWARD, 1 - REVERSEspeedLevel- optional. integer. SeesupportedSpeedLevelsattr in config
Light
static commandService(connection, { key, state, brightness, red, green, blue, colorMode, colorBrightness, white, colorTemperature, coldWhite, warmWhite, transitionLength, flashLength, effect })- sends command to light entity.key- REQUIRED. key/id of entitystate- optional. booleanbrightness- optional. floatred- optional. integer 0-255green- optional. integer 0-255blue- optional. integer 0-255colorMode- optional. integer. SeesupportedColorModesListattr in configcolorBrightness- optional. floatwhite- optional. integer 0-255colorTemperature- optional. integercoldWhite- optional. floatwarmWhite- optional. floatflashLength- optional. integereffect- optional. string. effect from effects array in config list
Lock
static commandService(connection, { key, command, code }- sends command to lock entity.key- REQUIRED. key/id of entitycommand- REQUIRED. 0 - UNLOCK, 1 - LOCK, 2 - OPENcode- optional. string. SeerequiresCodeattr in config
MediaPlayer
static commandService(connection, { key, command, volume, mediaUrl }- sends command to mediaplayer entity.key- REQUIRED. key/id of entitycommand- REQUIRED. 0 - MEDIA_PLAYER_COMMAND_PLAY, 1 - MEDIA_PLAYER_COMMAND_PAUSE, 2 - MEDIA_PLAYER_COMMAND_STOP, 3 - MEDIA_PLAYER_COMMAND_MUTE, 4 - MEDIA_PLAYER_COMMAND_UNMUTEvolume- optional. floatmediaUrl- optional. string
Number
static commandService(connection, { key, state })- sends command to number entity.key- REQUIRED. key/id of entitystate- REQUIRED. float. SeeminValue,maxValue, andstepattrs in config
Select
static commandService(connection, { key, state })- sends command to select entity.key- REQUIRED. key/id of entitystate- REQUIRED. string. SeeoptionsListattr in config
Sensor
Only base functionality
Siren
static commandService(connection, { key, state, tone, duration, volume })- sends command to siren entity.key- REQUIRED. key/id of entitystate- REQUIRED. booleantone- optional. string. SeetonesListattr in configduration- optional. integer. SeesupportsDurationattr in configvolume- optional. integer. SeesupportsVolumeattr in config
Switch
static commandService(connection, { key, state })- sends command to switch entity.key- REQUIRED. key/id of entitystate- REQUIRED. boolean
TextSensor
Only base functionality
Text
static commandService(connection, { key, state })- sends command to text entity.key- REQUIRED. key/id of entitystate- REQUIRED. string. SeeminLength,maxLengthattrs in config
Connection
const { Connection } = require('@2colors/esphome-native-api');
const connection = new Connection({
port = 6053,
host,
clientInfo = 'esphomenativeapi',
encryptionKey = '',
password = '', // Deprecated
reconnect = true,
reconnectInterval = 30000,
pingInterval = 15000,
pingAttempts = 3
});host- (REQUIRED). Host or ip to connect to.port- optional. Default -6053. Port to connect to.encryptionKey- encryption Key. Default -''. The pre-shared key for the encryption. This is a 32-byte base64 encoded stringpassword- passsword (Deprecated). Default -''. Password used to authorized the client, It is recommended to use the encryptionKeyreconnect- optional. Default -true. indicates wheter reconnect automatically or notreconnectInterval- optional. Default -30000. Number. Amount of miliseconds to wait before new tryclientInfo- string, name of client to be sent to esphome device. (Not necessary to send but nice for debugging issues)clientInfo- string, name of client to be sent to esphome device. Usually needed only for tracking connection on esphome device.pingInterval- optional. Default -15000. Ping interval. Amount of miliseconds.pingAttempts- optional. Default -3. Number of failed ping attempts after witch connection is considered to be corrupted.
Methods and attributes
connected-trueif client is introduced to esphome deviceauthorized-trueif client is logged in esphome deviceconnect()- do connection trydisconnect()- close connectionasync deviceInfoService()- subsribes to entities state changes. Returns device info objectasync getTimeService()- subsribes to entities state changes. Returns time objectasync listEntitiesService()- subsribes to entities state changes. Returns entities listsubscribeStatesService()- subsribes to entities state changessubscribeLogsService(level = 5, dumpConfig = false)- subsribes to logs.level- logs level. 0 - NONE, 1 - ERROR, 2 - WARN, 3 - INFO, 4 - DEBUG, 5 - DEBUG, 6 - VERBOSE, 7 - VERY_VERBOSEdumpConfig
cameraImageService(single = true, stream = false)- requests camera image.singlestream
subscribeBluetoothAdvertisementService()- subsribes to bluetooth advertisement state changesunsubscribeBluetoothAdvertisementService()- unsubsribes to bluetooth advertisement state changesasync connectBluetoothDeviceService(address = int)- connect to connectable BLE deviceasync disconnectBluetoothDeviceService(address = int)- disconnect to connectable BLE deviceasync listBluetoothGATTServicesService(address = int)- MUST be connected to BLE device, BLE list GATT servicesasync readBluetoothGATTCharacteristicService(address = int, handle)- MUST be connected to BLE device, BLE list GATT Characteristic servicesasync writeBluetoothGATTCharacteristicService(address = int, handle, someUint8Array, response = false)- MUST be connected to BLE device, BLE write GATT Characteristic more pull/10async notifyBluetoothGATTCharacteristicService(address = int, handle)- MUST be connected to BLE device, BLE notify GATT Characteristicasync readBluetoothGATTDescriptorService(address = int, handle)- MUST be connected to BLE device, BLE list GATT Descriptorasync writeBluetoothGATTDescriptorService(address = int, handle, someUint8Array)- MUST be connected to BLE device, BLE write GATT Descriptor<entityType>CommandService(data)- sends command to the specified entity. Seestatic commandServicein the Entity classesbuttonCommandService(data)climateCommandService(data)coverCommandService(data)fanCommandService(data)lightCommandService(data)lockCommandService(data)numberCommandService(data)selectCommandService(data)sirenCommandService(data)switchCommandService(data)mediaplayerCommandService(data)
Connection events
message.<type>- when valid message from esphome device is received. First arg is message. The event is called beforemessageevent(more genetal analogue)reconnect- emmited if client is reconnect to esphome devicemessage- when valid message from esphome device is received. First arg is type, second is message.connected- emmited if client is introduced to esphome devicedisconnected- emmited if session is corruptredauthorized- emmited if client is logged in esphome deviceunauthorized- emmited if session is corruptreddata- when any data is receivederror- when any error is occuredunhandledData- when data is received, but an error occured and we have unprocessed data
1.3.2
1 year ago
1.3.1
2 years ago
1.3.0
2 years ago
1.2.9
2 years ago
1.2.8
2 years ago
1.2.7
2 years ago
1.2.6
2 years ago
1.2.5
2 years ago
1.2.4
2 years ago
1.2.0
3 years ago
1.1.1
3 years ago
1.2.3
3 years ago
1.2.2
3 years ago
1.2.1
3 years ago
1.1.0
3 years ago
1.0.9
3 years ago
1.0.8
3 years ago
1.0.7
3 years ago
1.0.6
3 years ago