Group Details Private

administrators

  • RE: After installation of a xG18 extention I get a Server Error 500 for the Rest Json

    Hello @yish,
    the image doesn't have the latest evok. Please, proceed with apt update && apt upgrade, then reboot the PLC and try again.

    Have a nice weekend,
    Martin

    posted in Official EVOK API
  • RE: After installation of a xG18 extention I get a Server Error 500 for the Rest Json

    Hello @Stoeffel ,

    it seems that you access the serial (RS485) line from multiple applications which confuses Evok. Can you try to disable other processes potentially working with HW and leave running Evok only?

    posted in Official EVOK API
  • RE: Watchdog settings via EVOK

    Hello @smontosa,

    please try to download the current version 2.4.10. The issue should be fixed. Please note that watchdog settings (same as other parameters) are stored in RAM memory by default. To burn it into non-volatile memory (FLASH), use the appropriate coil 1003 or call the separate REST request on the same endpoint with parameter nv_save=1.

    posted in Official EVOK API
  • RE: Watchdog settings via EVOK

    Hi @smontosa,
    you are correct. There is indeed some problem with setting the watchdog via Evok. I reported this to our developers and make sure this will be fixed in 2.4.10.

    As a workaround, you can set the watchdog via ModbusTCP. You can use mbpoll (not preinstalled, can be installed via apt update && apt install -y mbpoll):

    # enable the MWD
    mbpoll 127.0.0.1 -a 1 -0 -1 -r 6 1
    # set timeout to 3333ms
    mbpoll 127.0.0.1 -a 1 -0 -r 1008 3333
    # write this settings to the NVRAM
    mbpoll 127.0.0.1 -a 1 -0 -1 -t 0 -r 1003 1
    

    Best regards,
    Martin

    posted in Official EVOK API
  • RE: After installation of a xG18 extention I get a Server Error 500 for the Rest Json

    Hello @Stoeffel,
    with the 2.4.8 it looks ok from my side.

    This is /json/all:
    {"status": "success", "data": [{"counter_modes": ["Enabled", "Disabled"], "glob_dev_id": 1, "modes": ["Simple", "DirectSwitch"], "value": 0, "circuit": "1_01", "debounce": 50, "counter": 0, "counter_mode": "Enabled", "dev": "input", "mode": "Simple"}, {"counter_modes": ["Enabled", "Disabled"], "glob_dev_id": 1, "modes": ["Simple", "DirectSwitch"], "value": 0, "circuit": "1_02", "debounce": 50, "counter": 0, "counter_mode": "Enabled", "dev": "input", "mode": "Simple"}, {"counter_modes": ["Enabled", "Disabled"], "glob_dev_id": 1, "modes": ["Simple", "DirectSwitch"], "value": 0, "circuit": "1_03", "debounce": 50, "counter": 0, "counter_mode": "Enabled", "dev": "input", "mode": "Simple"}, {"counter_modes": ["Enabled", "Disabled"], "glob_dev_id": 1, "modes": ["Simple", "DirectSwitch"], "value": 0, "circuit": "1_04", "debounce": 50, "counter": 0, "counter_mode": "Enabled", "dev": "input", "mode": "Simple"}, {"relay_type": "digital", "glob_dev_id": 1, "pwm_duty": 0, "dev": "relay", "modes": ["Simple", "PWM"], "pwm_freq": 39, "value": 0, "alias": "al_lights_kitchen", "mode": "Simple", "circuit": "1_01", "pending": false}, {"relay_type": "digital", "glob_dev_id": 1, "pwm_duty": 0, "dev": "relay", "modes": ["Simple", "PWM"], "pwm_freq": 39, "value": 0, "alias": "al_lights_bedroom", "mode": "Simple", "circuit": "1_02", "pending": false}, {"pwm_duty": 0, "glob_dev_id": 1, "pwm_freq": 39, "modes": ["Simple", "PWM"], "value": 0, "circuit": "1_03", "pending": false, "relay_type": "digital", "dev": "relay", "mode": "Simple"}, {"pwm_duty": 0, "glob_dev_id": 1, "pwm_freq": 39, "modes": ["Simple", "PWM"], "value": 0, "circuit": "1_04", "pending": false, "relay_type": "digital", "dev": "relay", "mode": "Simple"}, {"glob_dev_id": 1, "unit": "V", "value": 0.010469025995341785, "circuit": "1_01", "range_modes": ["10.0"], "modes": ["Voltage", "Current"], "range": "10.0", "dev": "ai", "mode": "Voltage"}, {"modes": ["Voltage", "Current", "Resistance"], "value": 0.0, "glob_dev_id": 1, "dev": "ao", "circuit": "1_01", "unit": "V", "mode": "Voltage"}, {"value": 0, "circuit": "1_01", "dev": "led", "glob_dev_id": 1}, {"value": 0, "circuit": "1_02", "dev": "led", "glob_dev_id": 1}, {"value": 0, "circuit": "1_03", "dev": "led", "glob_dev_id": 1}, {"value": 0, "circuit": "1_04", "dev": "led", "glob_dev_id": 1}, {"circuit": "1_01", "value": 0, "glob_dev_id": 1, "dev": "wd", "timeout": 5000, "was_wd_reset": 0, "nv_save": 0}, {"glob_dev_id": 1, "last_comm": 0.014560937881469727, "ver2": "2.4", "sn": 1, "circuit": "1", "model": "S103", "dev": "neuron", "board_count": 1}, {"uart_circuit": "None", "dev": "extension", "glob_dev_id": 2, "last_comm": 1.0246500968933105, "circuit": "UART_1_2", "model": "xG18", "uart_port": "/dev/extcomm/0/0"}, {"conf_value": 3262, "glob_dev_id": 1, "sw_address": 0, "parity_modes": ["None", "Odd", "Even"], "stopb_modes": ["One", "Two"], "speed_modes": ["2400bps", "4800bps", "9600bps", "19200bps", "38400bps", "57600bps", "115200bps"], "dev": "uart", "circuit": "1_01", "parity_mode": "None", "stopb_mode": "One", "speed_mode": "19200bps"}, {"name": "temperature", "value": 327.68, "glob_dev_id": 2, "valid": "false", "dev": "unit_register", "circuit": "UART_1_2_8", "unit": "\u00b0C"}, {"name": "temperature", "value": 327.68, "glob_dev_id": 2, "valid": "false", "dev": "unit_register", "circuit": "UART_1_2_4", "unit": "\u00b0C"}, {"name": "temperature", "value": 327.68, "glob_dev_id": 2, "valid": "false", "dev": "unit_register", "circuit": "UART_1_2_5", "unit": "\u00b0C"}, {"name": "temperature", "value": 327.68, "glob_dev_id": 2, "valid": "false", "dev": "unit_register", "circuit": "UART_1_2_6", "unit": "\u00b0C"}, {"name": "temperature", "value": 327.68, "glob_dev_id": 2, "valid": "false", "dev": "unit_register", "circuit": "UART_1_2_7", "unit": "\u00b0C"}, {"name": "temperature", "value": 327.68, "glob_dev_id": 2, "valid": "false", "dev": "unit_register", "circuit": "UART_1_2_1", "unit": "\u00b0C"}, {"name": "temperature", "value": 327.68, "glob_dev_id": 2, "valid": "false", "dev": "unit_register", "circuit": "UART_1_2_2", "unit": "\u00b0C"}, {"name": "temperature", "value": 327.68, "glob_dev_id": 2, "valid": "false", "dev": "unit_register", "circuit": "UART_1_2_3", "unit": "\u00b0C"}, {"period_2": 2, "period_3": 2, "period_1": 2, "period_6": 2, "period_7": 2, "period_4": 2, "period_5": 2, "period_8": 2, "dev": "ext_config", "glob_dev_id": 2, "circuit": "UART_1_2", "address": 15}]}

    This is my /etc/evok.conf:

    
    [MAIN]                                          ; !!! ALL MAIN SECTION OPTIONS ARE MANDATORY !!!
    config_version = 2.5                            ; Configuration file version, DO NOT CHANGE!
    use_schema_verification = False                 ; Enabling this will deny any requests that do not match the JSON Schema; NOTE THAT THIS RESULTS IN A SIGNIFICANT INCREASE IN LATENCY AND SHOULD NOT BE USED EXCEPT FOR TESTING
    log_level = ERROR                               ; Minimum severity of messages to be logged; one of INFO, DEBUG, WARNING, ERROR, CRITICAL
    log_file = /var/log/evok.log                    ; Log file to use; will be cleared on boot
    port = 8080                                     ; !!! Internal API port - only change if you are certain you know what you are doing; FOR OUR WEB INTERFACE THE PORT SHOULD BE CHANGED IN "/etc/evok-nginx.conf" INSTEAD !!!
    webhook_enabled = False                         ; Enables webhook notification - see e.g. https://sendgrid.com/blog/whats-webhook/
    webhook_address = http://127.0.0.1:80           ; Put your server endpoint address here (e.g. http://123.123.123.123:/wh )
    webhook_device_mask = ["input","wd"]            ; List of device types to notify on (written as a JSON list) - adding AI will generate a large amount of messages!
    webhook_complex_events = False                  ; EVOK will send POST requests with the same data as WebSocket, rather than an empty GET request
    soap_server_enabled = False                     ; Enables the simple SOAP server; use only if you need the functionality
    soap_server_port = 8081                         ; !!! IF SOAP SERVER IS ENABLED, THIS PORT NEEDS TO BE UNIQUE (i.e. different from the port setting above) !!!
    force_immediate_state_changes = False           ; Outputs will return the value they are set to, rather than the value that the device is currently aware of
    websocket_all_filtered = False                  ; 'All' WebSocket requests will be subject to the filtering set by 'filter'
    
    [NEURON_1]
    global_id = 1                                   ; Mandatory, REQUIRED TO BE UNIQUE
    allow_register_access = False                   ; Optional, False default
    scan_frequency = 10                             ; Optional, 10 default, scanning frequency in [Hz]
    scan_enabled = True                             ; Optional, True default
    
    ; Below you can find examples for connecting devices over UART; first example is a Neuron extension while the second is a custom third-party device
    ; Devices sharing a port use the port settings of the first device on that port (baud rate, parity, stop bits)
    ; !!! Note that device_name has to match a filename in the /etc/hw_definitions directory !!! See /etc/hw_definitions/CUSTOM_MODBUS_DEVICE.yaml for an example
    
    [EXTENSION_1]
    global_id = 2                                   ; Mandatory, REQUIRED TO BE UNIQUE
    device_name = xG18                              ; Mandatory, must match name of .yaml modbus map file in /etc/hw_definitions
    modbus_uart_port = /dev/extcomm/0/0             ; Mandatory
    ;neuron_uart_circuit = 1_01                     ; Optional, allows associating extensions with specific Neuron UART-over-Modbus ports (not possible for non-Modbus UART ports, e.g. /dev/ttyUSB0 or /dev/ttyS0)
    ;allow_register_access = False                  ; Optional, False default, is mandatory with third-party devices
    ;address = 1                                    ; Optional, 1 default
    ;scan_frequency = 10                            ; Optional, 10 default, scanning frequency in [Hz]
    ;scan_enabled = True                            ; Optional, True default
    ; Note that the following settings will be inherited by other devices sharing the same port, i.e. /dev/extcomm/0/0
    ;baud_rate = 19200                              ; Optional, NEEDS UNIPI IMAGE TO WORK WITH UNIPI SERIAL PORTS! USE API TO CONFIGURE UART MANUALLY IF USING STANDARD RASPBIAN
    ;parity = N                                     ; Optional, NEEDS UNIPI IMAGE TO WORK WITH UNIPI SERIAL PORTS! USE API TO CONFIGURE UART MANUALLY IF USING STANDARD RASPBIAN
    ;stop_bits = 1                                  ; Optional, NEEDS UNIPI IMAGE TO WORK WITH UNIPI SERIAL PORTS! USE API TO CONFIGURE UART MANUALLY IF USING STANDARD RASPBIAN
    
    ;[EXTENSION_2]
    ;global_id = 3                                  ; Mandatory, REQUIRED TO BE UNIQUE
    ;device_name = CUSTOM MODBUS DEVICE             ; Mandatory, must match name of .yaml modbus map file in /etc/hw_definitions
    ;modbus_uart_port = /dev/extcomm/0/0            ; Mandatory
    ;neuron_uart_circuit = 1_01                     ; Optional, allows associating extensions with specific Neuron UART-over-Modbus ports (not possible for non-Modbus UART ports, e.g. /dev/ttyUSB0 or /dev/ttyS0)
    ;allow_register_access = True                   ; Mandatory with third-party devices
    ;address = 1                                    ; Optional, 15 default
    ;scan_frequency = 2                             ; Optional, 1 default, scanning frequency in [Hz]
    ;scan_enabled = True                            ; Optional, True default
    
    [OWBUS_1]
    owbus = /dev/i2c-1                              ; Mandatory, scanned bus (--i2c=/dev/i2c-1:ALL or localhost:2122 or 'u' for USB dongle)
    interval = 3                                    ; Mandatory, [s] length of sensor reading
    scan_interval = 300                             ; Mandatory, [s] How often the scanning is done
    
    ; See below for 1Wire extension module configuration
    ; Example for the 1W-4R/4DI extension module, 1W-8R is almost the same, only with inputs instead of relays
    ;
    ; - Map a new 1Wire sensor with the appropriate address, type and interval
    ; - The syntax can be either SENSOR or 1WDEVICE
    ; - Setting the correct reading interval is crucial to achieve ideal performance; the default interval is 15s
    ;
    ;[1WDEVICE_2]
    ;bus = 1
    ;address = 29F39A17000000BC
    ;type = DS2408
    ;interval = 1
    ;
    ;[1WRELAY_10]
    ;sensor = 2
    ;pin = 0
    ;
    ;[1WRELAY_11]
    ;sensor = 2
    ;pin = 1
    ;
    ;[1WRELAY_12]
    ;sensor = 2
    ;pin = 2
    ;
    ;[1WRELAY_13]
    ;sensor = 2
    ;pin = 3
    ;
    ;[1WINPUT_20]
    ;sensor = 2
    ;pin = 4
    ;
    ;[1WINPUT_21]
    ;sensor = 2
    ;pin = 5
    ;
    ;[1WINPUT_22]
    ;sensor = 2
    ;pin = 6
    ;
    ;[1WINPUT_23]
    ;sensor = 2
    ;pin = 7
    

    Please, verify that the configuration is the same. If it still doesn't work, can you please stop the evok and run it manually? It will show more information about the error.

    systemctl stop evok
    /opt/evok/bin/python /opt/evok/lib/python2.7/site-packages/evok/evok.py
    posted in Official EVOK API
  • RE: Problem with DI and Mervis

    Hello @HVAC-Arthus

    First, I recommend downloading and installing the latest Mervis IDE and Mervis OS available here: https://kb.unipi.technology/en:files:software

    Then open the project in a new IDE and save to convert the project to the new version. Before converting to the new version, we recommend that you always create a project archive with a suitable name.

    If you use the RaspberryPi 4 computing module for Unipi 1.1 / Lite, this should also solve your problem, as support for these computing modules was added only in the last version. With my RaspberryPi 4 and Mervis v2.4.0 your project works.

    posted in Mervis
  • RE: After installation of a xG18 extention I get a Server Error 500 for the Rest Json

    Hello @Stoeffel,

    the issue should be fixed in the current release. Please upgrade to version 2.4.8.

    posted in Official EVOK API
  • RE: Problem with DI and Mervis

    Hello @HVAC-Arthus

    Please send us your project to: support@unipi.technology. We will check if everything is in order in the project.

    Best regards,
    Antonin

    posted in Mervis
  • RE: 1-Wire 8 port hub, switched star topology

    Hi @Csevi,
    in short - the 1-Wire hub is passive device, which helps with the "linearization" of the star topology. You can find complete information about 1-Wire here: https://kb.unipi.technology/en:automation:02-glossary:1wire-hidden

    Best regards,
    Martin

    posted in Other Peripherals
  • RE: Problem with DI and Mervis

    Hello @HVAC-Arthus,
    the Step-by-step guide is very old. Please, follow this tutorial: https://kb.unipi.technology/en:sw:01-mervis:creating-new-project-on-unipi11-hidden

    Your HW connection looks OK.

    Best regards,
    Martin

    posted in Mervis