• Categories
    • Recent
    • Tags
    • Popular
    • Register
    • Login

    MyController 1.2.0-SNAPSHOT version with major provider changes and supports for ack

    Scheduled Pinned Locked Moved Announcements
    snapshotackprovider
    28 Posts 4 Posters 6.8k Views 3 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • jkandasaJ Offline
      jkandasa
      last edited by jkandasa

      Need volunteers to test 1.2.0-SNAPSHOT version. This version has major changes on the provider side.
      Now it supports ack.

      Report your issues here

      CAUTION: This version might have major bugs, do not use it in your production environment.
      Do backup your existing version and move to this version.

      Steps to do backup/restore

      Changes: https://github.com/mycontroller-org/mycontroller/commit/67b4f148ea36cd37d917d7560ffaed35871d2b6a

      Remove following directory, if you do the dirty upgrade:

      # rm mycontroller/conf/persistent_stores/mc/* -rf
      

      To enable ack, edit gateway and,
      0_1517923539590_99db3b0f-5aaa-42e0-9e76-8c68a74c45ac-image.png

      To see gateway Statistics go to gateway details:

      0_1517923602251_d8043430-3458-4b3f-939a-fa0d26436b14-image.png

      1 Reply Last reply Reply Quote 1
      • W Offline
        wanvo
        last edited by

        Excellent!
        I will test.

        1 Reply Last reply Reply Quote 1
        • T Offline
          Tag MOD
          last edited by Tag

          Sign me up! I will test!

          ---===[ UPDATE ]===---
          Houston, we got lift off, all systems go
          0_1517939712095_Screenshot from 2018-02-06 18-54-09.png

          Now i check my logs and find lots of these:

          2018-02-06 19:02:36,966 INFO [mc-th-pool-5] [org.mycontroller.standalone.provider.EngineAbstract:209] Retry count 1 of 3
          2018-02-06 19:02:43,865 INFO [mc-th-pool-5] [org.mycontroller.standalone.provider.EngineAbstract:209] Retry count 1 of 3
          2018-02-06 19:02:44,372 INFO [mc-th-pool-5] [org.mycontroller.standalone.provider.EngineAbstract:209] Retry count 2 of 3
          2018-02-06 19:02:44,885 INFO [mc-th-pool-5] [org.mycontroller.standalone.provider.EngineAbstract:209] Retry count 3 of 3
          2018-02-06 19:02:45,409 INFO [mc-th-pool-5] [org.mycontroller.standalone.provider.EngineAbstract:209] Retry count 1 of 3
          2018-02-06 19:02:45,924 INFO [mc-th-pool-5] [org.mycontroller.standalone.provider.EngineAbstract:209] Retry count 2 of 3
          2018-02-06 19:02:46,436 INFO [mc-th-pool-5] [org.mycontroller.standalone.provider.EngineAbstract:209] Retry count 3 of 3
          2018-02-06 19:02:47,084 INFO [mc-th-pool-5] [org.mycontroller.standalone.provider.EngineAbstract:209] Retry count 1 of 3
          2018-02-06 19:02:57,479 INFO [mc-th-pool-5] [org.mycontroller.standalone.provider.EngineAbstract:209] Retry count 1 of 3
          

          How to figure out what is going on here? πŸ™‚

          • What is being re-tried?
          • Why is it being re-tried?
          jkandasaJ 2 Replies Last reply Reply Quote 1
          • jkandasaJ Offline
            jkandasa @Tag
            last edited by

            @tag When you enable ack gateway will wait for ack from MySensors. If there is no ack sending again. This will try until it reaches it is Failed retry count. We have configured these settings in Gateway configuration.

            Are you Controller and MySensors set-up on the same network? Increase Ack wait time, sometimes it will help.

            I will add more detailed log here, to show what is going on.

            Thank you! I will update you once I put these changes.

            1 Reply Last reply Reply Quote 0
            • jkandasaJ Offline
              jkandasa @Tag
              last edited by

              @tag SNAPSHOT version updated with a meaningful message. Kindly update your build.

              1 Reply Last reply Reply Quote 0
              • D Offline
                Daniele
                last edited by

                I'd like to do some testing too!
                I have 2 ethernet gateways, but this new versions seems to have some issue with GW presentation (I still haven't enabled ack on GW):

                0_1518002999649_d923218d-56e4-4c57-90de-58ca4b709b31-image.png

                jkandasaJ 1 Reply Last reply Reply Quote 0
                • jkandasaJ Offline
                  jkandasa @Daniele
                  last edited by

                  @daniele Thanks to reporting this issue. I have fixed this issue and update SNAPSHOT version. Could you please try this change? and report back?

                  1 Reply Last reply Reply Quote 0
                  • D Offline
                    Daniele
                    last edited by

                    You're super-quick!!!

                    I updated the version, and now the issue is fixed.
                    For the time being everything is running fine, I'll let it run for a pair of days and let you know if I find any issue.

                    By the way, I suggest adding something in this page to expose the ack flag status:

                    0_1518011160598_a2327e09-f2e9-4c5c-acca-cb03f5b15b37-image.png

                    jkandasaJ 1 Reply Last reply Reply Quote 1
                    • D Offline
                      Daniele
                      last edited by

                      PS: really minor issue: the order of the dashboards is reversed now; is there a way to change it?

                      jkandasaJ 1 Reply Last reply Reply Quote 0
                      • jkandasaJ Offline
                        jkandasa @Daniele
                        last edited by

                        @daniele

                        PS: really minor issue: the order of the dashboards is reversed now; is there a way to change it?

                        There is a change in dashboard, from this fix -> https://github.com/mycontroller-org/mycontroller/issues/424

                        Do you see anything different? It should be order by ascending alphabetical

                        D 1 Reply Last reply Reply Quote 0
                        • jkandasaJ Offline
                          jkandasa @Daniele
                          last edited by

                          @daniele

                          By the way, I suggest adding something in this page to expose the ack flag status:

                          You mean ack enabled or disabled? Or something else?

                          D 1 Reply Last reply Reply Quote 0
                          • D Offline
                            Daniele @jkandasa
                            last edited by

                            @jkandasa That's exactly what's happening, I missed that change. Thanks!

                            1 Reply Last reply Reply Quote 0
                            • D Offline
                              Daniele @jkandasa
                              last edited by

                              @jkandasa Actually without going in edit you don't have anything telling you if this GW uses ack. Enabled / disabled would be enough for me.

                              jkandasaJ 1 Reply Last reply Reply Quote 1
                              • jkandasaJ Offline
                                jkandasa @Daniele
                                last edited by

                                @daniele said in MyController 1.2.0-SNAPSHOT version with major provider changes and supports for ack:

                                @jkandasa Actually without going in edit you don't have anything telling you if this GW uses ack. Enabled / disabled would be enough for me.

                                Changes updated in SNAPSHOT build.
                                changes: https://github.com/mycontroller-org/mycontroller/commit/0e7467e230927b67d8f664476f83e2f509d69010

                                1 Reply Last reply Reply Quote 0
                                • W Offline
                                  wanvo
                                  last edited by

                                  When registering nodes with a sensor of the "Motion" type in the old version of MyController, I created two variables "V_ARMED" and "V_TRIPPED". In the new version, only a variable of the type "V_TRIPPED" is created
                                  0_1518021880973_2018-02-07_19-35-13.png
                                  I'm still looking error in my sketch

                                  jkandasaJ 1 Reply Last reply Reply Quote 0
                                  • W Offline
                                    wanvo
                                    last edited by

                                    Earlier, when I changed the variable "Armed" on a sleeping node
                                    0_1518023364992_2018-02-07_20-03-05.png
                                    MyController waited until the node came out of sleep and sent it the right message.
                                    Now when I try to change this variable, I get the following warning
                                    0_1518023386576_2018-02-07_20-02-04.png

                                    jkandasaJ 1 Reply Last reply Reply Quote 0
                                    • jkandasaJ Offline
                                      jkandasa @wanvo
                                      last edited by

                                      @wanvo

                                      When registering nodes with a sensor of the "Motion" type in the old version of MyController, I created two variables "V_ARMED" and "V_TRIPPED". In the new version, only a variable of the type "V_TRIPPED" is created

                                      I guess the problem will be your node sketch presentation code?

                                      W 1 Reply Last reply Reply Quote 0
                                      • jkandasaJ Offline
                                        jkandasa @wanvo
                                        last edited by

                                        @wanvo said in MyController 1.2.0-SNAPSHOT version with major provider changes and supports for ack:

                                        MyController waited until the node came out of sleep and sent it the right message.
                                        Now when I try to change this variable, I get the following warning

                                        Yes, I changed this approach as follows,

                                        If you change anything for a sleeping node, simply it will be sent to the queue. Will not update into inventory/graph etc., Once it sent successfully to the sleeping node, it will be updated.

                                        I will change this message to user friendly, also I will try to display message queue for a sleeping node.

                                        1 Reply Last reply Reply Quote 0
                                        • W Offline
                                          wanvo @jkandasa
                                          last edited by

                                          @jkandasa said in MyController 1.2.0-SNAPSHOT version with major provider changes and supports for ack:

                                          I guess the problem will be your node sketch presentation code?
                                          This my presentation code

                                          void presentation()  {
                                          	sendSketchInfo(SKETCH_NAME, SKETCH_VERSION,true);
                                          	present(ID_S_MOTION, S_MOTION, "Motion Sensor",true);
                                          	present(ID_TIME_SLEEP, S_CUSTOM, "Time sleep",true);
                                          }
                                          
                                          void loop()     
                                          {
                                          	if(first_start){
                                          		first_start = false;
                                          		DEBUG_PRINTLN("Start");
                                          		send(msg_S_MOTION.set(false),true);
                                          		send(msg_S_MOTION_ARM.set(s_armed),true);
                                          		//send(msg_TIME_SLEEP.set(time_sleep));
                                          		//sendRSSIReport();
                                          		//sendBatteryReport(); 
                                          		request(ID_TIME_SLEEP, V_VAR5); //запрос значСния time_sleep```
                                          
                                          
                                          

                                          This all sketch

                                          /*******************************************************************
                                           * DEFINE SECTION
                                           ********************************************************************/
                                          // Enable debug prints
                                          //#define MY_DEBUG
                                          #define SER_DEBUG
                                          #ifdef SER_DEBUG
                                          #define DEBUG_SERIAL(x) Serial.begin(x)
                                          #define DEBUG_PRINT(x) Serial.print(x)
                                          #define DEBUG_PRINTLN(x) Serial.println(x)
                                          #else
                                          #define DEBUG_SERIAL(x)
                                          #define DEBUG_PRINT(x) 
                                          #define DEBUG_PRINTLN(x) 
                                          #endif
                                          #define ONE_DAY_TIME 86400000 //24 часа
                                          #define ONE_HOUR_TIME 3600000 //1 час
                                          
                                          #define MY_SMART_SLEEP_WAIT_DURATION_MS (30000ul) //врСмя ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠΊΠΈ эфира Π΄ΠΎ ΡƒΡ…ΠΎΠ΄Π° Π² сон
                                          #define TIME_SLEEP_INIT 60000
                                          #define RSSI_REPORT_INTERVAL 180000
                                          #define BATTERY_REPORT_INTERVAL 600000
                                          //#define BATTERY_REPORT_INTERVAL ONE_DAY_TIME
                                          //#define MY_INDICATION_HANDLER
                                          
                                          
                                           // Enable and select radio type attached
                                          //#define MY_RADIO_NRF24
                                          #define MY_RADIO_RFM69
                                          //#define MY_RADIO_RFM95
                                          //#define MY_RADIO_NRF5_ESB
                                          
                                          
                                          #ifdef MY_RADIO_NRF24
                                          //#define SKETCH_NAME "nrf24 gate"
                                          #define MY_RF24_PA_LEVEL (RF24_PA_MAX)
                                          #define MY_RF24_CHANNEL (124)
                                          //#define MY_RF24_CHANNEL (125)
                                          #endif
                                          #ifdef MY_RADIO_RFM69
                                          //#define SKETCH_NAME "rfm69 gate"
                                          #define MY_IS_RFM69HW
                                          #define MY_RFM69_NEW_DRIVER   // ATC on RFM69 works only with the new driver (not compatible with old=default driver)
                                          #define MY_RFM69_ATC_MODE_ENABLED
                                          #define MY_RFM69_ATC_TARGET_RSSI_DBM (-70)  // target RSSI -70dBm
                                          #define MY_RFM69_MAX_POWER_LEVEL_DBM (20)   // max. TX power 10dBm = 10mW
                                          //#define MY_DEBUG_VERBOSE_RFM69
                                          //#define MY_RFM69_ENABLE_ENCRYPTION
                                          #endif
                                          //**** Message signing settings
                                          
                                          /*#define MY_SIGNING_SOFT
                                          #define MY_SIGNING_SOFT_RANDOMSEED_PIN 7
                                          #define MY_SIGNING_REQUEST_SIGNATURES*/
                                          
                                          #ifdef  MY_RADIO_RFM95
                                          //#define SKETCH_NAME "rfm95 gate"
                                          #define MY_RFM95_FREQUENCY RFM95_434MHZ
                                          //#define MY_TRANSPORT_STATE_TIMEOUT_MS  (3*1000ul)
                                          //#define RFM95_RETRY_TIMEOUT_MS  (3000ul) 
                                          //#define MY_RFM95_MODEM_CONFIGRUATION  RFM95_BW125CR48SF4096
                                          #define MY_RFM95_MODEM_CONFIGRUATION RFM95_BW125CR45SF128
                                          #define MY_RFM95_ATC_TARGET_RSSI_DBM (-70)  // target RSSI -70dBm
                                          #define MY_RFM95_MAX_POWER_LEVEL_DBM (30)   // max. TX power 30dBm = 1000mW
                                          #endif
                                          
                                          #ifdef MY_RADIO_NRF5_ESB
                                          //#define SKETCH_NAME "nrf5 gate"
                                          #endif
                                          
                                          
                                          #if defined(MY_RADIO_RFM69) || defined(MY_RADIO_RFM95) 
                                          #define MY_SIGNAL_REPORT_ENABLED
                                          #define MY_DEFAULT_RX_LED_PIN LED_BUILTIN
                                          #endif
                                          
                                          // Set baud rate to same as optibot
                                          #define MY_BAUD_RATE 9600
                                          
                                          #define MY_NODE_ID 3
                                          #define SKETCH_NAME "Motion Sensor"
                                          #define SKETCH_VERSION "1.0"
                                          
                                          #define ID_S_MOTION		1   // Id of the sensor child
                                          #define ID_TIME_SLEEP  	2
                                          #define ID_RSSI		  	3
                                          
                                          #define PIN_S_MOTION  	3   // The digital input you attached your motion sensor.  (Only 2 and 3 generates interrupt!)
                                          #define PIN_PWR   		4   // Pin for power sensors in sleep.
                                          #define VCC_MIN 		2.7
                                          #define VCC_MAX 		3.9
                                          
                                          #include <MySensors.h>
                                          #include <Vcc.h>
                                          Vcc vcc;
                                          
                                          /*
                                          //ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π±Π°Ρ‚Π°Ρ€Π΅ΠΈ послС ΡΡ‚ΠΎΠ»ΡŒΠΊΠΈΡ… Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡.ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» ΠΎΡ‚Ρ‡Π΅Ρ‚Π° Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π΅Π½ этому количСству Π΄Π½Π΅ΠΉ.
                                          int BATTERY_REPORT_BY_IRT_CYCLE = 10; 
                                          // "false" will make the first loop disregard high output from HV-505 (from start-up) and make a battery report instead.  
                                          bool interruptReturn = false;
                                          */
                                          
                                          
                                          #if defined(MY_RADIO_RFM69) || defined(MY_RADIO_RFM95)
                                          MyMessage msg_RSSI(ID_RSSI,V_VAR5);//Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ для измСритСля RSSI
                                          #endif
                                          MyMessage msg_S_MOTION(ID_S_MOTION, V_TRIPPED);// Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ для Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ°
                                          MyMessage msg_S_MOTION_ARM(ID_S_MOTION, V_ARMED);// Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ для Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ°
                                          MyMessage msg_TIME_SLEEP(ID_TIME_SLEEP, V_VAR5);
                                          
                                          
                                          
                                          bool first_start;
                                          bool s_armed; //Ρ€Π΅ΠΆΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ сСнсора - armed, bypassed
                                          unsigned long time_sleep;
                                          unsigned long lastSendRSSI = 0;
                                          unsigned long lastSendBattery = 0;
                                          unsigned long millis_in_sleep = 0;
                                          unsigned long millis_total = 0;
                                          int sleep_returt;
                                          
                                          
                                          void setup()  
                                          {  
                                          	DEBUG_PRINTLN("Setup");
                                          	first_start = true;
                                          	s_armed = true;
                                          	time_sleep = TIME_SLEEP_INIT;
                                          	pinMode(PIN_PWR, OUTPUT);//Пин ΠΏΠΈΡ‚Π°ΡŽΡ‰ΠΈΠΉ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΈ
                                          	digitalWrite(PIN_PWR, HIGH);
                                          	pinMode(PIN_S_MOTION, INPUT);      // Π’Ρ…ΠΎΠ΄ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ°
                                          	//digitalWrite(PIN_S_DOOR, HIGH);  //подтяТка ΠΊ ΠΏΠ»ΡŽΡΡƒ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ
                                          }
                                          
                                          void presentation()  {
                                          	sendSketchInfo(SKETCH_NAME, SKETCH_VERSION,true);
                                          	present(ID_S_MOTION, S_MOTION, "Motion Sensor",true);
                                          	present(ID_TIME_SLEEP, S_CUSTOM, "Time sleep",true);
                                          }
                                          
                                          void loop()     
                                          {
                                          	if(first_start){
                                          		first_start = false;
                                          		DEBUG_PRINTLN("Start");
                                          		send(msg_S_MOTION.set(false),true);
                                          		send(msg_S_MOTION_ARM.set(s_armed),true);
                                          		//send(msg_TIME_SLEEP.set(time_sleep));
                                          		//sendRSSIReport();
                                          		//sendBatteryReport(); 
                                          		request(ID_TIME_SLEEP, V_VAR5); //запрос значСния time_sleep
                                          
                                          	}	
                                          	millis_total = millis() + millis_in_sleep + MY_SMART_SLEEP_WAIT_DURATION_MS;
                                          #if defined(MY_RADIO_RFM69) || defined(MY_RADIO_RFM95)
                                          	if (millis_total - lastSendRSSI > RSSI_REPORT_INTERVAL) {
                                          		lastSendRSSI = millis_total;
                                          		sendRSSIReport();
                                          	}
                                          #endif
                                          	if (millis_total - lastSendBattery > BATTERY_REPORT_INTERVAL) {
                                          		lastSendBattery = millis_total;
                                          		sendBatteryReport(); 
                                          	}
                                          
                                          	//sendHeartbeat();
                                          	sleep_returt = sleep(digitalPinToInterrupt(PIN_S_MOTION),CHANGE,time_sleep,true);
                                          	if(sleep_returt != MY_WAKE_UP_BY_TIMER){ // ΠΏΡ€ΠΎΡΠ½ΡƒΠ»ΠΈΡΡŒ ΠΏΠΎ Ρ‚Ρ€Π΅Π²ΠΎΠ³Π΅
                                          		send(msg_S_MOTION.set(true),true);
                                          		DEBUG_PRINTLN("Π’Π Π•Π’ΠžΠ“Π!!!");
                                          	}
                                          	else{
                                          		millis_in_sleep = millis_in_sleep + time_sleep;
                                          	}
                                          	DEBUG_PRINT("ts = ");DEBUG_PRINTLN(time_sleep);
                                          }
                                          
                                          /*********************FUNCTIONS**********************************/
                                          //функция ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ входящих сообщСний
                                          void receive(const MyMessage &message) {
                                              if (message.sensor == ID_S_MOTION) {		//провСряСм, Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ этому сСнсору
                                          		if (message.type == V_ARMED) {		//провСряСм Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ
                                          			s_armed = message.getBool();	//ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ V_ARMED
                                          			DEBUG_PRINT("V_ARMED received: ");DEBUG_PRINTLN(s_armed);
                                          			if(s_armed){
                                          				DEBUG_PRINTLN("Power On");
                                          				digitalWrite(PIN_PWR, HIGH); //Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΏΠΈΡ‚Π°Π½ΠΈΠ΅
                                          				//digitalWrite(PIN_PWR, LOW); //для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ
                                          			}
                                          			else{
                                          				DEBUG_PRINTLN("Power Off");
                                          				digitalWrite(PIN_PWR, LOW); //ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ ΠΏΠΈΡ‚Π°Π½ΠΈΠ΅	
                                          				//digitalWrite(PIN_PWR, HIGH); //для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ
                                          			}
                                                  }
                                              }
                                          	else if (message.sensor == ID_TIME_SLEEP){
                                          		if (message.type == V_VAR5) {
                                          			time_sleep = message.getULong(); //ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ sleep_time
                                          			DEBUG_PRINT("time_sleep = ");DEBUG_PRINTLN(time_sleep);
                                          		}
                                          	}
                                          }
                                          //функция ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ RSSI Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ RFM69 Ρ€Π°Π΄ΠΈΠΎ
                                          
                                          #if defined(MY_RADIO_RFM69) || defined(MY_RADIO_RFM95)
                                          void sendRSSIReport() 
                                          {
                                          	int16_t rssiVal;
                                          	char rssiStr[14];
                                              rssiVal = transportGetSignalReport(SR_RX_RSSI); 
                                          //    snprintf(rssiStr,10,"rssi: %d%",rssiVal,"dBm");
                                          	sprintf (rssiStr, "rssi:%d dBm", rssiVal);
                                              send(msg_RSSI.set(rssiStr),true);
                                          	DEBUG_PRINTLN(rssiStr);
                                          	//DEBUG_PRINT("TxRssi = ");DEBUG_PRINTLN(transportGetSignalReport(SR_TX_RSSI));
                                          }
                                          #endif
                                          //функция ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΠΎΡ‚Ρ‡Π΅Ρ‚Π° состояния Π±Π°Ρ‚Π°Ρ€Π΅ΠΈ
                                          void sendBatteryReport() 
                                          {
                                            float p = vcc.Read_Perc(VCC_MIN, VCC_MAX, true);
                                            int batteryPcnt = static_cast<int>(p);
                                            sendBatteryLevel(batteryPcnt,true);
                                            DEBUG_PRINT("Battery is: ");DEBUG_PRINTLN(batteryPcnt);
                                          }
                                          

                                          I can not find an error yet. I'll look further.

                                          jkandasaJ 1 Reply Last reply Reply Quote 0
                                          • jkandasaJ Offline
                                            jkandasa @wanvo
                                            last edited by jkandasa

                                            @wanvo Is this sketch running first time with MyController? Do you have this sketch with the previous version? Did it work with old version?

                                            Can you add some minimal delay between,

                                            send(msg_S_MOTION.set(false),true);
                                            wait(500); // value in milliseconds
                                            send(msg_S_MOTION_ARM.set(s_armed),true);
                                            
                                            W 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            0

                                            Online

                                            587

                                            Users

                                            529

                                            Topics

                                            3.4k

                                            Posts
                                            Copyright Β© 2015-2025 MyController.org | Contributors | Localization