Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languageyml
titletuya_bulb_baci.yml
linenumberstrue
working_dir: /home/francisco/workspace
prefix: ACSIOT
module: acsiot
component_name: TuyaBulbBaci
functions:
  - 'void turnOn(in string api_region, in string api_key, in string api_secret)'
  - 'void turnOff(in string api_region, in string api_key, in string api_secret)'
properties:
  - 'readonly attribute ACS::ROboolean status'

...

Code Block
languagecpp
titleidlTuyaBulbBaci/idl/TuyaBulbBaci.idl
linenumberstrue
#ifndef _TUYABULBBACI_IDL_
#define _TUYABULBBACI_IDL_
  
#pragma prefix "ACSIOT"
  
#include <baci.idl>
  
module acsiot {
    interface TuyaBulbBaci : ACS::CharacteristicComponent {
        void turnOn(in string api_region, in string api_key, in string api_secret);
        void turnOff(in string api_region, in string api_key, in string api_secret);
        readonly attribute ACS::ROboolean status;
    };
};
 
#endif


Component implementation

Code Block
languagecpp
titlecppTuyaBulbBaci/include/TuyaBulbBaciImpl.h
#ifndef _TUYABULBBACI_IMPL_H
#define _TUYABULBBACI_IMPL_H
  
#ifndef __cplusplus
#error This is a C++ include file and cannot be used from plain C
#endif
  
// Base component implementation, including container services and component lifecycle infrastructure
//#include <baciCharacteristicComponentImpl.h>
#include <acscomponentImpl<baciROboolean.h>
  
// Skeleton interface for server implementation
#include <TuyaBulbBaciS.h>

// TuyaBulbBaci
#include <baciCharacteristicComponentImpl.h>

// BACI smart bulb
#include <baciROboolean.h>
  
//Error definitions for catching and raising exceptions
class TuyaBulbBaciImpl : public virtual baci::CharacteristicComponentImpl, public virtual POA_acsiot::TuyaBulbBaci {
    public:
        TuyaBulbBaciImpl(const ACE_CString& name, maci::ContainerServices* containerServices);
        virtual ~TuyaBulbBaciImpl();

        virtual void turnOn(const char* api_region, const char* api_key, const char* api_secret);
        void turnOff();
        virtual void turnOff(ACS::ROboolean_ptr status();

    private:
        const char* api_region, const char* api_key,;
        const char* api_secret)key;
        virtual ACS::ROboolean_ptr status();

 const char* api_secret;
   private:
        const char* device_id;
        baci::ROboolean* *status_p;
};
  
#endif
Code Block
languagecpp
titlecppTuyaBulbBaci/src/TuyaBulbBaciImpl.cpp
#include <TuyaBulbBaciImpl.h>

#include <stdexcept>
  
TuyaBulbBaciImpl::TuyaBulbBaciImpl(const ACE_CString& name, maci::ContainerServices* *containerServices) : CharacteristicComponentImpl(name, containerServices) {
    cout << "Constructing TuyaBulbBaciImpl object." << endl;
    this->api_region = "us";
    this->api_key = "...";
    this->api_secret = "...";
    this->device_id = "...";
}
  
TuyaBulbBaciImpl::~TuyaBulbBaciImpl() {
}

void TuyaBulbBaciImpl::turnOn() {
    cout << "Destroying objectTurning smart bulb ON..." << endl;
}

void TuyaBulbBaciImpl::turnOn(const char* api_region, const char* api_key, const char* api_secret) {    cout << "API Region: " << this->api_region << endl;
    cout << "API Key: " << this->api_key << endl;
    cout << "API Secret: " << this->api_secret << endl;
    cout << "Turning smart bulb ONDevice ID: " << this->device_id << endl;
    cout << "Done." << endl;
}

void TuyaBulbBaciImpl::turnOff(const char* api_region, const char* api_key, const char* api_secret) {) {
    cout << "Turning smart bulb OFF..." << endl;
    cout << "API Region: " << this->api_region << endl;
    cout << "API Key: " << this->api_key << endl;
    cout << "API Secret: " << this->api_secret << endl;
    cout << "Device "Turning smart bulb OFFID: " << this->device_id << endl;
    cout << "Done." << endl;
}

ACS::ROboolean_ptr TuyaBulbBaciImpl::status () {
    cout << "Returning smart bulb status" << endl;
    return ACS::ROboolean::_nil();
}
  
/* --------------- [ MACI DLL support functions ] -----------------*/
#include <maciACSComponentDefines.h>
MACI_DLL_SUPPORT_FUNCTIONS(TuyaBulbBaciImpl)
/* ----------------------------------------------------------------*/

...

Code Block
languagepy
from Acspy.Clients.SimpleClient import PySimpleClient
  

api_region = 'us'
api_key = 'tsvjqcdhbkr7dt2kd0jo'
api_secret = '58a64e482618444bae58cee0482894cb'

client = PySimpleClient()

bulb_comp = client.getComponent("TuyaBulbBaciCPP")
bulb_comp.turnOn(api_region, api_key, api_secret)
bulb_comp.turnOff(api_region, api_key, api_secret)