lluiscab / mpqtt Goto Github PK
View Code? Open in Web Editor NEWMPQTT is a linux program used to extract data from Voltronic / Axpert / MasterPower inverters and sending it to MQTT for use in Home Assistant
MPQTT is a linux program used to extract data from Voltronic / Axpert / MasterPower inverters and sending it to MQTT for use in Home Assistant
building under Ubuntu 20.04.4 LTS kernel 5.13.0-48-generic
warning: getting the inner pointer of a temporary `CString`
--> src/main.rs:185:88
|
185 | let fd = unsafe { open(CString::new(path.as_ref().as_os_str().as_bytes()).unwrap().as_ptr(), O_RDWR) };
| ----------------------------------------------------------- ^^^^^^ this pointer will be invalid
| |
| this `CString` is deallocated at the end of the statement, bind it to a variable to extend its lifetime
|
= note: `#[warn(temporary_cstring_as_ptr)]` on by default
= note: pointers do not have a lifetime; when calling `as_ptr` the `CString` will be deallocated at the end of the statement because nothing is referencing it as far as the type system is concerned
= help: for more information, see https://doc.rust-lang.org/reference/destructors.html
warning: `mpqtt` (bin "mpqtt") generated 1 warning
Finished dev [unoptimized + debuginfo] target(s) in 33m 33s
is there a problem or can be skiped?
I have strange problem wit MPQTT.
When start it from command line i get this
Starting MPQTT version 1.1.0
Enabled debug output
INFO mpqtt > Connecting to MQTT Broker at: 192.168.1.54:1883
INFO mpqtt > Connected to MQTT Broker
INFO mpqtt::mqtt_discovery > Running MQTT Discovery
INFO mpqtt::mqtt_discovery > Registering error sensor
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qid_serial_number
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpi_protocol_id
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qvfw_major
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qvfw_minor
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qvfw2_major
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qvfw2_minor
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qmod_mode
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpiri_grid_rating_voltage
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpiri_grid_rating_current
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpiri_ac_output_rating_voltage
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpiri_ac_out_rating_frequency
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpiri_ac_out_rating_current
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpiri_ac_out_rating_apparent_power
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpiri_ac_out_rating_active_power
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpiri_battery_rating_voltage
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpiri_battery_recharge_voltage
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpiri_battery_under_voltage
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpiri_battery_bulk_voltage
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpiri_battery_float_voltage
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpiri_battery_redischarge_voltage
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpiri_battery_type
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpiri_max_ac_charging_current
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpiri_max_charging_current
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpiri_input_voltage_range
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpiri_output_source_priority
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpiri_charge_source_priority
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpiri_machine_type
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpiri_topology
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpiri_output_mode
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpigs_grid_voltage
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpigs_grid_frequency
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpigs_ac_out_voltage
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpigs_ac_out_frequency
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpigs_ac_out_apparent_power
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpigs_ac_out_active_power
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpigs_out_load_percent
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpigs_bus_voltage
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpigs_battery_voltage
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpigs_battery_charge_current
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpigs_battery_capacity
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpigs_inverter_heat_sink_temp
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpigs_pv_input_current
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpigs_pv_input_voltage
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpigs_battery_scc_voltage
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpigs_battery_discharge_current
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpigs_device_status_charge_status
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpigs_device_status_active_load
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpigs_device_status_active_load
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpiws_inverter_fault
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpiws_bus_over
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpiws_bus_under
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpiws_bus_soft_fail
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpiws_line_fail
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpiws_opv_short
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpiws_inverter_voltage_too_low
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpiws_inverter_voltage_too_high
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpiws_over_temperature
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpiws_fan_locked
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpiws_battery_voltage_high
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpiws_battery_low_alarm
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpiws_battery_under_shutdown
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpiws_over_load
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpiws_eeprom_fault
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpiws_inverter_over_current
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpiws_inverter_soft_fail
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpiws_self_test_fail
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpiws_op_dc_voltage_over
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpiws_bat_open
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpiws_current_sensor_fail
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpiws_battery_short
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpiws_power_limit
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpiws_pv_voltage_high
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpiws_mppt_overload_fault
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpiws_mppt_overload_warning
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpiws_battery_too_low_to_charge
DEBUG masterpower_api::codec > Encoding command QuerySerialNumber.
TRACE masterpower_api::codec > Command payload (QuerySerialNumber): ().
TRACE masterpower_api::codec > Encoded command (QuerySerialNumber): [81, 73, 68, 214, 234, 13]
TRACE masterpower_api::inverter > Writing command to stream
DEBUG masterpower_api::codec > Decoding response QuerySerialNumber.
TRACE masterpower_api::codec > Decoding response (QuerySerialNumber): [40, 53, 53, 51, 53, 53, 53].
ERROR mpqtt > InvalidResponseCrcSum
then proces stop
after that i start it again ang get different output
...
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpiws_mppt_overload_fault
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpiws_mppt_overload_warning
INFO mpqtt::mqtt_discovery > Registering sensor mpqtt_qpiws_battery_too_low_to_charge
DEBUG masterpower_api::codec > Encoding command QuerySerialNumber.
TRACE masterpower_api::codec > Command payload (QuerySerialNumber): ().
TRACE masterpower_api::codec > Encoded command (QuerySerialNumber): [81, 73, 68, 214, 234, 13]
TRACE masterpower_api::inverter > Writing command to stream
DEBUG masterpower_api::codec > Decoding response QuerySerialNumber.
TRACE masterpower_api::codec > Decoding response (QuerySerialNumber): [40, 53, 53, 51, 53, 53, 53, 51, 53, 53, 53, 51, 53, 53, 53, 50, 253].
TRACE masterpower_api::codec > Decoded response (QuerySerialNumber): QIDResponse { serial_number: 55355535553555 }
DEBUG masterpower_api::codec > Encoding command QueryProtocolId.
TRACE masterpower_api::codec > Command payload (QueryProtocolId): ().
TRACE masterpower_api::codec > Encoded command (QueryProtocolId): [81, 80, 73, 190, 172, 13]
TRACE masterpower_api::inverter > Writing command to stream
ERROR mpqtt > Io(Kind(UnexpectedEof))
but in any case it finish with error
ERROR mpqtt > Io(Kind(UnexpectedEof))
I see inverter in Home Assistant MQTT with 75 objects
MPQTT - AC Output Rating Active Voltage sensor.mpqtt_ac_output_rating_active_voltage MQTT — — —
MPQTT - AC Output Rating Apparent Power sensor.mpqtt_ac_output_rating_apparent_power MQTT — — —
MPQTT - AC Output Rating Current sensor.mpqtt_ac_output_rating_current MQTT — — —
MPQTT - AC Output Rating Frequency sensor.mpqtt_ac_output_rating_frequency MQTT — — —
MPQTT - AC Output Rating Voltage sensor.mpqtt_ac_output_rating_voltage MQTT — — —
MPQTT - Active load sensor.mpqtt_active_load MQTT — — —
MPQTT - Bat open sensor.mpqtt_bat_open MQTT — — —
MPQTT - Battery Bulk Voltage sensor.mpqtt_battery_bulk_voltage MQTT — — —
MPQTT - Battery capacity sensor.mpqtt_battery_capacity MQTT — — —
MPQTT - Battery charge current sensor.mpqtt_battery_charge_current MQTT — — —
MPQTT - Battery discharge current sensor.mpqtt_battery_discharge_current MQTT — — —
MPQTT - Battery Float Voltage sensor.mpqtt_battery_float_voltage MQTT — — —
MPQTT - Battery low alarm sensor.mpqtt_battery_low_alarm MQTT — — —
MPQTT - Battery Rating Voltage sensor.mpqtt_battery_rating_voltage MQTT — — —
MPQTT - Battery Recharge Voltage sensor.mpqtt_battery_recharge_voltage MQTT — — —
MPQTT - Battery Redischarge Voltage sensor.mpqtt_battery_redischarge_voltage MQTT — — —
MPQTT - Battery SCC Voltage sensor.mpqtt_battery_scc_voltage MQTT — — —
MPQTT - Battery short sensor.mpqtt_battery_short MQTT — — —
MPQTT - Battery too low to charge sensor.mpqtt_battery_too_low_to_charge MQTT — — —
MPQTT - Battery Type sensor.mpqtt_battery_type MQTT — — —
MPQTT - Battery under shutdown sensor.mpqtt_battery_under_shutdown MQTT — — —
MPQTT - Battery Under Voltage sensor.mpqtt_battery_under_voltage MQTT — — —
MPQTT - Battery Voltage sensor.mpqtt_battery_voltage MQTT — — —
MPQTT - Battery voltage high sensor.mpqtt_battery_voltage_high MQTT — — —
MPQTT - Bus over sensor.mpqtt_bus_over MQTT — — —
MPQTT - Bus soft fail sensor.mpqtt_bus_soft_fail MQTT — — —
MPQTT - Bus under sensor.mpqtt_bus_under MQTT — — —
MPQTT - Bus Voltage sensor.mpqtt_bus_voltage MQTT — — —
MPQTT - Charge Source Priority sensor.mpqtt_charge_source_priority MQTT — — —
MPQTT - CPU Firmware Version 2 Major sensor.mpqtt_cpu_firmware_version_2_major MQTT — — —
MPQTT - CPU Firmware Version 2 Minor sensor.mpqtt_cpu_firmware_version_2_minor MQTT — — —
MPQTT - CPU Firmware Version Major sensor.mpqtt_cpu_firmware_version_major MQTT — — —
MPQTT - CPU Firmware Version Minor sensor.mpqtt_cpu_firmware_version_minor MQTT — — —
MPQTT - Current sensor fail sensor.mpqtt_current_sensor_fail MQTT — — —
MPQTT - Device charge status sensor.mpqtt_device_charge_status MQTT — — —
MPQTT - Device mode sensor.mpqtt_device_mode MQTT — — —
MPQTT - EEPROM Fault sensor.mpqtt_eeprom_fault MQTT — — —
MPQTT - Fan locked sensor.mpqtt_fan_locked MQTT — — —
MPQTT - Grid Frequency sensor.mpqtt_grid_frequency MQTT — — —
MPQTT - Grid Rating Current sensor.mpqtt_grid_rating_current MQTT — — —
MPQTT - Grid Rating Voltage sensor.mpqtt_grid_rating_voltage MQTT — — —
MPQTT - Grid Voltage sensor.mpqtt_grid_voltage MQTT — — —
MPQTT - Heat sink temperature sensor.mpqtt_heat_sink_temperature MQTT — — —
MPQTT - Input Voltage range sensor.mpqtt_input_voltage_range MQTT — — —
MPQTT - Inverter fault sensor.mpqtt_inverter_fault MQTT — — —
MPQTT - Inverter over current sensor.mpqtt_inverter_over_current MQTT — — —
MPQTT - Inverter soft fail sensor.mpqtt_inverter_soft_fail MQTT — — —
MPQTT - Inverter voltage too high sensor.mpqtt_inverter_voltage_too_high MQTT — — —
MPQTT - Inverter voltage too low sensor.mpqtt_inverter_voltage_too_low MQTT — — —
MPQTT - Last error sensor.mpqtt_last_error MQTT — — —
MPQTT - Line fail sensor.mpqtt_line_fail MQTT — — —
MPQTT - Machine Type sensor.mpqtt_machine_type MQTT — — —
MPQTT - Max AC Charging Current sensor.mpqtt_max_ac_charging_current MQTT — — —
MPQTT - Max Charging Current sensor.mpqtt_max_charging_current MQTT — — —
MPQTT - MPPT Overload fault sensor.mpqtt_mppt_overload_fault MQTT — — —
MPQTT - MPPT Overload warning sensor.mpqtt_mppt_overload_warning MQTT — — —
MPQTT - OP DC Voltage over sensor.mpqtt_op_dc_voltage_over MQTT — — —
MPQTT - OPV Short sensor.mpqtt_opv_short MQTT — — —
MPQTT - Out active power sensor.mpqtt_out_active_power MQTT — — —
MPQTT - Out apparent power sensor.mpqtt_out_apparent_power MQTT — — —
MPQTT - Out Frequency sensor.mpqtt_out_frequency MQTT — — —
MPQTT - Out load percent sensor.mpqtt_out_load_percent MQTT — — —
MPQTT - Out Voltage sensor.mpqtt_out_voltage MQTT — — —
MPQTT - Output mode sensor.mpqtt_output_mode MQTT — — —
MPQTT - Output Source Priority sensor.mpqtt_output_source_priority MQTT — — —
MPQTT - Over load sensor.mpqtt_over_load MQTT — — —
MPQTT - Over temperature sensor.mpqtt_over_temperature MQTT — — —
MPQTT - Power limit sensor.mpqtt_power_limit MQTT — — —
MPQTT - Protocol ID sensor.mpqtt_protocol_id MQTT — — —
MPQTT - PV Input Current sensor.mpqtt_pv_input_current MQTT — — —
MPQTT - PV Input Voltage sensor.mpqtt_pv_input_voltage MQTT — — —
MPQTT - PV Voltage high sensor.mpqtt_pv_voltage_high MQTT — — —
MPQTT - Self test fail sensor.mpqtt_self_test_fail MQTT — — —
MPQTT - Serial number sensor.mpqtt_serial_number MQTT — — —
MPQTT - Topology sensor.mpqtt_topology MQTT — — —
all have value unknown
except
Serial number & Last error with show
Io(Kind(UnexpectedEof))
I use:
Linux ET1610PT 5.13.0-52-generic #59~20.04.1-Ubuntu SMP Thu Jun 16 21:21:28 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
Distributor ID: Ubuntu
Description: Ubuntu 20.04.4 LTS
Codename: focal
Inverer is
EASun ISolar SMV III 5K-48
Hi
I'm not a rust expert, but during cargo build:
error[E0308]: mismatched types
--> src/main.rs:186:28
|
186 | let fd = unsafe { open(path.as_ref().as_os_str().as_bytes().as_ptr() as *const i8, O_RDWR) };
| ---- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected u8
, found i8
| |
| arguments to this function are incorrect
|
= note: expected raw pointer *const u8
found raw pointer *const i8
note: function defined here
--> /root/.cargo/registry/src/github.com-1ecc6299db9ec823/libc-0.2.72/src/unix/mod.rs:718:12
|
718 | pub fn open(path: *const c_char, oflag: ::c_int, ...) -> ::c_int;
| ^^^^
switching i8 to u8 fix the issue
Rgds
Hi,
After install, after service start, I get an error
ERROR mqtt_async_client::client::client > IoTask: Error connecting: Connection refused (os error 111)
Any idea where to look into?
Thanks.
Hi i want change the operation mode, now i change manually but i would change with mqtt
{
"mode": "LineMode"
}
/
/
when i change the operation mode the software send this error
Io(Kind(Other))
Io(Os { code: 5, kind: Other, message: "I/O error" })
Comparing with previous message: + 1 line, - 1 line
27/09/2021 09:13:13
Io(Os { code: 5, kind: Other, message: "I/O error" })
27/09/2021 09:13:12(-0.99 seconds)
Io(Kind(Other))
27/09/2021 09:13:11(-1.01 seconds)
Io(Os { code: 5, kind: Other, message: "I/O error" })
27/09/2021 09:13:10(-1 seconds)
Io(Kind(Other))
27/09/2021 09:13:09(-1.03 seconds)
Io(Os { code: 5, kind: Other, message: "I/O error" })
27/09/2021 09:13:08(-1.02 seconds)
Io(Kind(Other))
27/09/2021 09:13:07(-1 seconds)
Io(Os { code: 5, kind: Other, message: "I/O error" })
27/09/2021 09:13:06(-1.02 seconds)
Io(Kind(Other))
27/09/2021 09:13:05(-1.03 seconds)
Io(Os { code: 5, kind: Other, message: "I/O error" })
27/09/2021 09:13:04(-1 seconds)
Io(Kind(Other))
27/09/2021 09:13:02(-1.12 seconds)
Io(Os { code: 5, kind: Other, message: "I/O error" })
27/09/2021 09:13:01(-0.99 seconds)
Io(Kind(Other))
27/09/2021 09:13:00(-1.03 seconds)
Io(Os { code: 5, kind: Other, message: "I/O error" })
27/09/2021 09:12:59(-1 seconds)
Io(Kind(Other))
27/09/2021 09:12:58(-1 seconds)
Io(Os { code: 5, kind: Other, message: "I/O error" })
27/09/2021 09:12:57(-1 seconds)
Io(Kind(Other))
27/09/2021 09:12:56(-1.01 seconds)
Io(Os { code: 5, kind: Other, message: "I/O error" })
27/09/2021 09:12:55(-1.02 seconds)
Io(Kind(Other))
27/09/2021 09:12:54(-0.99 seconds)
Io(Os { code: 5, kind: Other, message: "I/O error" })
27/09/2021 09:12:53(-1.02 seconds)
Io(Kind(Other))
27/09/2021 09:12:52(-1.02 seconds)
Io(Os { code: 5, kind: Other, message: "I/O error" })
27/09/2021 09:12:51(-0.98 seconds)
Io(Kind(Other))
27/09/2021 09:12:50(-1.03 seconds)
Io(Os { code: 5, kind: Other, message: "I/O error" })
27/09/2021 09:12:49(-0.99 seconds)
Io(Kind(Other))
27/09/2021 09:12:48(-1.03 seconds)
Io(Os { code: 5, kind: Other, message: "I/O error" })
27/09/2021 09:12:47(-0.99 seconds)
Io(Kind(Other))
27/09/2021 09:12:46(-0.98 seconds)
Io(Os { code: 5, kind: Other, message: "I/O error" })
27/09/2021 09:12:45(-1.03 seconds)
Io(Kind(Other))
27/09/2021 09:12:44(-0.98 seconds)
Io(Os { code: 5, kind: Other, message: "I/O error" })
27/09/2021 09:12:43(-1.01 seconds)
Io(Kind(Other))
27/09/2021 09:12:42(-1.03 seconds)
Io(Os { code: 5, kind: Other, message: "I/O error" })
27/09/2021 09:12:41(-0.97 seconds)
Io(Kind(Other))
27/09/2021 09:12:40(-1.03 seconds)
Io(Os { code: 5, kind: Other, message: "I/O error" })
27/09/2021 09:12:39(-1 seconds)
Io(Kind(Other))
27/09/2021 09:12:38(-0.99 seconds)
Io(Os { code: 5, kind: Other, message: "I/O error" })
27/09/2021 09:12:37(-1.03 seconds)
Io(Kind(Other))
27/09/2021 09:12:36(-0.99 seconds)
Io(Os { code: 5, kind: Other, message: "I/O error" })
27/09/2021 09:12:35(-1.02 seconds)
Io(Kind(BrokenPipe))
if i restart i have this error
No such file or directory (os error 2)
Hi, I would like to use this project to connect to the voltronic vmIII device. I run the Openhab server on a Raspberry Pi4. Is it possible to adapt the SW for this use?
Hi,
Thanks for MPQTT, it's small and works on Pi Zero. I have one problem, the service randomly stops with error InvalidDeviceMode.
I played around with systemd start/restart but that only helped a little. It use to stop after 40 minutes now I got it to work for a few hours at a time. I saw today that it stops when the inverter changed from mains charging to solar. I know way to little of linux to fix it. Hope you can help.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.