rttools / hodmin

CLI-Tool for Homie-devices
12 stars 5 forks source link

hodmin must escape attributes name #1

Closed euphi closed 7 years ago

euphi commented 7 years ago

My homie implementation has a property named "rel%" (for relative humidity sensor), this results in an error when using hodmim, because the '%' is used in an internal variable name:

/var/lib/gems/2.3.0/gems/hodmin-0.1.3/lib/hodmin/hodmin_tools.rb:133:in `instance_variable_set': `@Sensor_rel%' is not allowed as an instance variable name (NameError)
        from /var/lib/gems/2.3.0/gems/hodmin-0.1.3/lib/hodmin/hodmin_tools.rb:133:in `create_attr'
        from /var/lib/gems/2.3.0/gems/hodmin-0.1.3/lib/hodmin/hodmin_tools.rb:112:in `block in initialize'
        from /var/lib/gems/2.3.0/gems/hodmin-0.1.3/lib/hodmin/hodmin_tools.rb:112:in `each'
        from /var/lib/gems/2.3.0/gems/hodmin-0.1.3/lib/hodmin/hodmin_tools.rb:112:in `initialize'
        from /var/lib/gems/2.3.0/gems/hodmin-0.1.3/lib/hodmin/hodmin_tools.rb:230:in `new'
        from /var/lib/gems/2.3.0/gems/hodmin-0.1.3/lib/hodmin/hodmin_tools.rb:230:in `block in get_homies'
        from /var/lib/gems/2.3.0/gems/hodmin-0.1.3/lib/hodmin/hodmin_tools.rb:228:in `each'
        from /var/lib/gems/2.3.0/gems/hodmin-0.1.3/lib/hodmin/hodmin_tools.rb:228:in `get_homies'
        from /var/lib/gems/2.3.0/gems/hodmin-0.1.3/lib/hodmin/hodmin_tools.rb:240:in `fetch_homie_dev_list'
        from /var/lib/gems/2.3.0/gems/hodmin-0.1.3/lib/hodmin/hodmin_list.rb:12:in `hodmin_list'
        from /var/lib/gems/2.3.0/gems/hodmin-0.1.3/bin/hodmin:144:in `<top (required)>'
        from /usr/local/bin/hodmin:22:in `load'
        from /usr/local/bin/hodmin:22:in `<main>'

MQTT output of startup:

16.665688 homie/Labor/$homie 2.0.0
00.000146 homie/Labor/$implementation esp8266
00.000200 homie/Labor/$mac 18:FE:34:F1:2A:C3
00.000196 homie/Labor/LED/$type RGBW
00.000197 homie/Labor/LED/$properties r:settable,g:settable,b:settable,w:settable
00.000238 homie/Labor/Sensor/$type sensor_t_h
00.000169 homie/Labor/Sensor/$properties degrees,rel%
00.000144 homie/Labor/$name Laborcontroller
00.000188 homie/Labor/$localip 192.168.0.135                                                                                                                                                                         
00.000183 homie/Labor/$stats/interval 60                                                                                                                                                                             
00.000179 homie/Labor/$fw/name ESP-PlatformIO_Minimum                                                                                                                                                                
00.000181 homie/Labor/$fw/version 0.1.0                                                                                                                                                                              
00.000207 homie/Labor/$fw/checksum 06bc5d366646e0014400339293d24bae                                                                                                                                                  
00.000242 homie/Labor/$implementation/config {"name":"Laborcontroller","device_id":"Labor","wifi":{"ssid":"KDG-49D6B"},"mqtt":{"host":"cubietruck","port":1883,"base_topic":"homie/","auth":false},"ota":{"enabled":true},"settings":{"RGBfadeDelay":10}}                                                                                                                                                                                 
00.000180 homie/Labor/$implementation/version 2.0.0                                                                                                                                                                  
00.000211 homie/Labor/$implementation/ota/enabled true                                                                                                                                                               
00.017184 homie/Labor/$online true                                                                                                                                                                                   
00.000398 homie/Labor/Log/DEBUG/RGBWNode virtual void RGBWNode::onReadyToOperate()                                                                                                                                   
00.000219 homie/Labor/Log/INFO/RGBWNode/Settings RGBfadedelay: 5                                                                                                                                                     
00.000216 homie/Labor/Log/INFO/void RGBWNode::updateLED(uint8_t) const Updated LED r on Pin 2, value 0% (gamma-corrected 0).                                                                                         
00.000217 homie/Labor/Log/INFO/void RGBWNode::updateLED(uint8_t) const Updated LED g on Pin 15, value 0% (gamma-corrected 0).                                                                                        
00.000211 homie/Labor/Log/INFO/void RGBWNode::updateLED(uint8_t) const Updated LED b on Pin 0, value 0% (gamma-corrected 0).                                                                                         
00.000216 homie/Labor/Log/INFO/void RGBWNode::updateLED(uint8_t) const Updated LED w on Pin 16, value 0% (gamma-corrected 0).                                                                                        
00.016636 homie/Labor/$stats/signal 30                                                                                                                                                                               
00.016569 homie/Labor/$stats/uptime 33                                                                                                                                                                               
00.013908 homie/Labor/Sensor/degrees 24.11                                                                                                                                                                           
00.005814 homie/Labor/Sensor/rel% 45.42                      
rttools commented 7 years ago

Thanks for this issue. Uploaded 0.1.4, should be fixed now.

euphi commented 7 years ago

: is forbidden, too...

ian@martok:~/Coding/Tools/HodMin$ hodmin list /var/lib/gems/2.3.0/gems/hodmin-0.1.4/lib/hodmin/hodmin_tools.rb:142:in instance_variable_set':@Log_INFO_voidOLEDStatusIndicator::EventHomieEvent' is not allowed as an instance variable name (NameError) from /var/lib/gems/2.3.0/gems/hodmin-0.1.4/lib/hodmin/hodmin_tools.rb:142:in create_attr' from /var/lib/gems/2.3.0/gems/hodmin-0.1.4/lib/hodmin/hodmin_tools.rb:112:inblock in initialize' from /var/lib/gems/2.3.0/gems/hodmin-0.1.4/lib/hodmin/hodmin_tools.rb:112:in each' from /var/lib/gems/2.3.0/gems/hodmin-0.1.4/lib/hodmin/hodmin_tools.rb:112:ininitialize' from /var/lib/gems/2.3.0/gems/hodmin-0.1.4/lib/hodmin/hodmin_tools.rb:239:in new' from /var/lib/gems/2.3.0/gems/hodmin-0.1.4/lib/hodmin/hodmin_tools.rb:239:inblock in get_homies' from /var/lib/gems/2.3.0/gems/hodmin-0.1.4/lib/hodmin/hodmin_tools.rb:237:in each' from /var/lib/gems/2.3.0/gems/hodmin-0.1.4/lib/hodmin/hodmin_tools.rb:237:inget_homies' from /var/lib/gems/2.3.0/gems/hodmin-0.1.4/lib/hodmin/hodmin_tools.rb:249:in fetch_homie_dev_list' from /var/lib/gems/2.3.0/gems/hodmin-0.1.4/lib/hodmin/hodmin_list.rb:12:inhodmin_list' from /var/lib/gems/2.3.0/gems/hodmin-0.1.4/bin/hodmin:144:in `<top (required)>'

However, usually hodmin works fine for me, now.

The MQTT message containing the : was a logging message that is not retained, so it was quite bad luck that it was sent by one of my ESPs just at the moment hodmin was subcribed....

rttools commented 7 years ago

Fixed this in 0.1.5 now. I changed the way of constructing instance-variable-names from topics. Now it should be OK to use any nonnumerical chars.