Comments (53)
Interessant, das habe ich sicher drei oder vier mal gecheckt, es dürfte aber mit dem Kommentar dahinter zu tun haben. Als ich das gelöscht habe, gings.
Vielen Dank, und sorry für die häufigen Rückfragen...
from dbus-mqtt-devices.
Hi,
you can edit services.yml according to the evcharger and it should work.
Sebastian
from dbus-mqtt-devices.
Had the same need:
here is my current work in progress:
you can see it in vrm and monitor power with this
Unfortunately, i think we need help fom @freakent
- How can i set it connected/disconnected? it seems that it does nor work changing this value
- MaxCurrent does not work persisdent.
- StartStopp thows an error
- Position is not stored between restarts
evcharger:
ProductId:
default: 65535 # 0xFFFF
CustomName:
default: "MyCharger"
persist: true
Ac/Energy/Forward:
description: "wh"
format: "{:.2f}W"
Ac/L1/Power:
description: "W"
format: "{} W"
Ac/L2/Power:
description: "w"
format: "{} W"
Ac/L3/Power:
description: "w"
format: "{} W"
Ac/Power:
description: "w"
format: "{} W"
AutoStart:
# description: "w"
default: "0"
persist: true
# format: "{}"
ChargingTime:
description: "in seconds"
format: "{} s"
Current:
description: "A"
default: 0
format: "{}"
# persist: true
EnableDisplay:
description: ""
format: "{}"
MaxCurrent:
description: "A"
default: 0
# format: "{}"
#persist: true #wird nicht gespeichert reset nach disconnect/reconnect
Mode:
description: ""
default: 0
format: "{}"
Model:
description: "w"
default: "AC22NS"
format: "{}"
Position:
description: ""
format: "{}"
#persist: true # geht nicht
Role:
description: "w"
format: "{}"
SetCurrent:
description: "w"
format: "{}"
# StartStop: #mqtt deamon sbeendet sich fatal wenn gesetzt
# description: "w"
# format: "{}"
# persist: true
Status:
description: "w"
default: 1
from dbus-mqtt-devices.
from dbus-mqtt-devices.
This is the StartStop-Errormessage, when commented in
INFO:device_manager:Received device status message {'clientId': 'ev002', 'connected': 1, 'version': 'v0.9', 'services': {'ev1': 'evcharger'}}
exit_on_error: there was an exception. Printing stacktrace will be tried and then exit
Traceback (most recent call last):
File "/data/drivers/dbus-mqtt-devices-0.5.1/ext/velib_python/ve_utils.py", line 24, in exit_on_error
return func(*args, **kwargs)
File "/usr/lib/python3.8/site-packages/paho/mqtt/client.py", line 1572, in loop_read
rc = self._packet_read()
File "/usr/lib/python3.8/site-packages/paho/mqtt/client.py", line 2310, in _packet_read
rc = self._packet_handle()
File "/usr/lib/python3.8/site-packages/paho/mqtt/client.py", line 2936, in _packet_handle
return self._handle_publish()
File "/usr/lib/python3.8/site-packages/paho/mqtt/client.py", line 3216, in _handle_publish
self._handle_on_message(message)
File "/usr/lib/python3.8/site-packages/paho/mqtt/client.py", line 3444, in _handle_on_message
self.on_message(self, self._userdata, message)
File "/data/drivers/dbus-mqtt-devices-0.5.1/device_manager.py", line 60, in _on_message
if self._status_is_valid(status):
File "/data/drivers/dbus-mqtt-devices-0.5.1/device_manager.py", line 109, in _status_is_valid
if services.get(service_id) not in self.service_types: # as defined in services.yml
TypeError: argument of type 'NoneType' is not iterable
from dbus-mqtt-devices.
Is the services.yml extract you have provided the exact version giving this error?
The StartStop section looks OK, apart from having persist: true. Only use persist: true for static device settings. The problem is now that you have declared this a persisted value I think dbus will always retain the value you last set.
The AutoStart property does have a problem, the description is commented out. Every section MUST have a description attribute. Also you have comments around the default value, but I think that should be a numeric value not a string.
AutoStart:
# description: "w"
default: "0"
persist: true
# format: "{}"
from dbus-mqtt-devices.
Is the services.yml extract you have provided the exact version giving this error?
yes!!
The StartStop section looks OK, apart from having persist: true.
Only use persist: true for static device settings. The problem is now that you have declared this a persisted value I think dbus will always retain the value you last set.
so i have to save the state in nodered and send it after restarts?
Is there any chance to delete this?
i already had to reinstall my production-venusOS because of issues regarding this... ;-)
The AutoStart property does have a problem, the description is commented out. Every section MUST have a description attribute. Also you have comments around the default value, but I think that should be a numeric value not a string.
AutoStart: # description: "w" default: "0" persist: true # format: "{}"
ok, changed this. thank you.
Do you know why Charging Current is greyed out?
from dbus-mqtt-devices.
Is there any chance to delete this?
Have a look at a victron tool called dbus-spy, it will help you see what is actually help in the dbus.
Do you know why Charging Current is greyed out?
Sorry, I don't.
Here are a few resources for you to cross reference:
-
The Victron modbus-TCP register list. You can request a download of the spreadsheet from Victron, which includes a section for evcharger: https://www.victronenergy.com/panel-systems-remote-monitoring/color-control#technical-information
-
Victron's dbus-modbus implemtation for evcharger: https://github.com/victronenergy/dbus-modbus-client/blob/master/ev_charger.py
-
Open_EVSE charger Victron implementation : https://github.com/JuWorkshop/dbus-evsecharger/blob/main/dbus-evsecharger.py
from dbus-mqtt-devices.
Here you can see /Connected as parameter
https://github.com/victronenergy/venus/wiki/dbus#evcharger
This thets the vehicle to be connected.
But when I try to use it, I get:
#"Can't register the object-path handler for '/Connected': there is already a handler"
Is this not possible to use because of internals of this driver?
from dbus-mqtt-devices.
Where do you see this message? It's not one I recognise.
from dbus-mqtt-devices.
When i add " Connected:" to the services.yml for the evcharger profile
and then try to start the driver in the console, i see this error.
I thought that this is because your internal varuable uses "conncted" for the virtual device? but this is just a guess...
from dbus-mqtt-devices.
I thought that this is because your internal varuable uses "conncted" for the virtual device? but this is just a guess...
I doubt it, very different.
Please show the relevant section from your services.yml, /Connected is not in the extract you provided earlier.
from dbus-mqtt-devices.
When i add " Connected:" to the services.yml for the evcharger profile
and then try to start the driver in the console, i see this error.
Please also provide full text from the logging so I can see the context.
from dbus-mqtt-devices.
If you get weird messages like this, change the client id you send in the registration message (currently ev002) so that you create a new, clean set of dbus entries.
from dbus-mqtt-devices.
I noticed you have lots of
format: "{}"
Remove these, they add no value. Only use a format if the default format is not what you want. My worry is that you may be trying to apply formats incorrectly.
from dbus-mqtt-devices.
ok, i did.
here is the full errormessage
INFO:logger:Loglevel set to INFO
INFO:device_manager:Using portalId b827eb20de35
INFO:mqtt_gobject_bridge:[Init] Connecting to local broker
INFO:device_manager:[Connected] Result code 0
INFO:device_manager:Received device status message {'clientId': 'ev003', 'connected': 1, 'version': 'v0.9', 'services': {'ev3': 'evcharger'}}
INFO:device:**** Registering device: ev003, services: {'ev3': 'evcharger'} ****
INFO:device:Registering Service evcharger for client ev003
INFO:device_service_config:About to open config file
INFO:device_service:Registering service evcharger for client ev003 at path com.victronenergy.evcharger.mqtt_ev003_ev3
INFO:settingsdevice:Setting /Settings/MqttDevices/mqtt_ev003_ev3/CustomName does not exist yet or must be adjusted
INFO:settingsdevice:Setting /Settings/Devices/mqtt_ev003_ev3/ClassAndVrmInstance does not exist yet or must be adjusted
INFO:vedbus:registered ourselves on D-Bus as com.victronenergy.evcharger.mqtt_ev003_ev3
exit_on_error: there was an exception. Printing stacktrace will be tried and then exit
Traceback (most recent call last):
File "/data/drivers/dbus-mqtt-devices-0.5.1/ext/velib_python/ve_utils.py", line 24, in exit_on_error
return func(*args, **kwargs)
File "/usr/lib/python3.8/site-packages/paho/mqtt/client.py", line 1572, in loop_read
rc = self._packet_read()
File "/usr/lib/python3.8/site-packages/paho/mqtt/client.py", line 2310, in _packet_read
rc = self._packet_handle()
File "/usr/lib/python3.8/site-packages/paho/mqtt/client.py", line 2936, in _packet_handle
return self._handle_publish()
File "/usr/lib/python3.8/site-packages/paho/mqtt/client.py", line 3216, in _handle_publish
self._handle_on_message(message)
File "/usr/lib/python3.8/site-packages/paho/mqtt/client.py", line 3444, in _handle_on_message
self.on_message(self, self._userdata, message)
File "/data/drivers/dbus-mqtt-devices-0.5.1/device_manager.py", line 62, in _on_message
self._process_device(status)
File "/data/drivers/dbus-mqtt-devices-0.5.1/device_manager.py", line 143, in _process_device
self._devices[clientId] = device = MQTTDevice(device_mgr=self, device_status=status)
File "/data/drivers/dbus-mqtt-devices-0.5.1/device.py", line 30, in __init__
device_service = MQTTDeviceService(self, id, service)
File "/data/drivers/dbus-mqtt-devices-0.5.1/device_service.py", line 45, in __init__
self._set_up_dbus_paths()
File "/data/drivers/dbus-mqtt-devices-0.5.1/device_service.py", line 103, in _set_up_dbus_paths
dbus_service.add_path("/"+k, value=value, description=v.get('description'), writeable=True, gettextcallback=textformatcallback, onchangecallback=changecallback)
File "/data/drivers/dbus-mqtt-devices-0.5.1/ext/velib_python/vedbus.py", line 107, in add_path
item = VeDbusItemExport(
File "/data/drivers/dbus-mqtt-devices-0.5.1/ext/velib_python/vedbus.py", line 468, in __init__
dbus.service.Object.__init__(self, bus, objectPath)
File "/usr/lib/python3.8/site-packages/dbus/service.py", line 489, in __init__
self.add_to_connection(conn, object_path)
File "/usr/lib/python3.8/site-packages/dbus/service.py", line 578, in add_to_connection
connection._register_object_path(path, self._message_cb,
KeyError: "Can't register the object-path handler for '/Connected': there is already a handler"
from dbus-mqtt-devices.
Here is the current version.
evcharger:
ProductId:
default: 65535 # 0xFFFF
CustomName:
default: "MyCharger"
persist: true
Ac/Energy/Forward:
description: "wh"
format: "{:.2f}W"
Ac/L1/Power:
description: "W"
format: "{} W"
Ac/L2/Power:
description: "w"
format: "{} W"
Ac/L3/Power:
description: "w"
format: "{} W"
Ac/Power:
description: "w"
format: "{} W"
AutoStart:
description: "w"
default: 0
# persist: true
ChargingTime:
description: "in seconds"
format: "{} s"
Current:
description: "A"
default: 0
# persist: true
EnableDisplay:
description: ""
MaxCurrent:
description: "A"
default: 0
#persist: true #wird nicht gespeichert reset nach disconnect/reconnect
Mode:
description: ""
default: 0
Model:
description: "w"
default: "AC22NS"
Position:
description: ""
#persist: true # geht nicht
Connected:
description: "w"
Role:
description: "w"
SetCurrent:
description: "w"
# StartStop: #mqtt deamon sbeendet sich fatal wenn gesetzt
# description: "w"
# persist: true
Status:
description: "w"
default: 1
from dbus-mqtt-devices.
I've just realised the reason you get an error with Connected is that the driver already creates that key for you. It's used to tell the dbus the Mqtt device is connected to Mqtt. You don't need to add it to services.yml.
from dbus-mqtt-devices.
But i think in this description and context, this value is used to tell the device that the vehicle is connected to the powerwall.
Is there a workaround possible?
from dbus-mqtt-devices.
No, it's fundamental. I haven't seen any Victron documentation that suggests that it indicates whether it is connected to the car. It would also mean that the definition of Connected is different for ev chargers than any other service.
from dbus-mqtt-devices.
ok. But whats about StartStop?
Here is the log
*** starting dbus-mqtt-devices ***
-------- dbus_mqtt_devices, v0.5.1 is starting up --------
INFO:logger:Loglevel set to INFO
INFO:device_manager:Using portalId b827eb20de35
ERROR:device_manager:Unexpected error: <class 'yaml.scanner.ScannerError'>
INFO:mqtt_gobject_bridge:[Init] Connecting to local broker
INFO:device_manager:[Connected] Result code 0
INFO:device_manager:Received device status message {'clientId': 'ev003', 'connected': 1, 'version': 'v0.9', 'services': {'ev3': 'evcharger'}}
exit_on_error: there was an exception. Printing stacktrace will be tried and then exit
Traceback (most recent call last):
File "/data/drivers/dbus-mqtt-devices-0.5.1/ext/velib_python/ve_utils.py", line 24, in exit_on_error
return func(*args, **kwargs)
File "/usr/lib/python3.8/site-packages/paho/mqtt/client.py", line 1572, in loop_read
rc = self._packet_read()
File "/usr/lib/python3.8/site-packages/paho/mqtt/client.py", line 2310, in _packet_read
rc = self._packet_handle()
File "/usr/lib/python3.8/site-packages/paho/mqtt/client.py", line 2936, in _packet_handle
return self._handle_publish()
File "/usr/lib/python3.8/site-packages/paho/mqtt/client.py", line 3216, in _handle_publish
self._handle_on_message(message)
File "/usr/lib/python3.8/site-packages/paho/mqtt/client.py", line 3444, in _handle_on_message
self.on_message(self, self._userdata, message)
File "/data/drivers/dbus-mqtt-devices-0.5.1/device_manager.py", line 60, in _on_message
if self._status_is_valid(status):
File "/data/drivers/dbus-mqtt-devices-0.5.1/device_manager.py", line 109, in _status_is_valid
if services.get(service_id) not in self.service_types: # as defined in services.yml
TypeError: argument of type 'NoneType' is not iterable
from dbus-mqtt-devices.
It's definitely a YAML parse error:
<class 'yaml.scanner.ScannerError'>
from dbus-mqtt-devices.
Thank you!
With this config, "position" becomes editable:
Position:
persist: true
default: 0
min: 0
max: 1
description: "0=OUTPUT; 1=INPUT"
Now, my chargers are visible in VRM.
(How) could this implementation be used to do "PV-Überschussladen" without other tools?
from dbus-mqtt-devices.
Here is a current Screenshot: Works great.
Sadly, Victron seems to have no "soc" field for the car.
Would be a nice info aswell.
from dbus-mqtt-devices.
Why don't you post a suggestion on the Victron community forum to add an SOC field to EVCharger on the dbus. No need to mention this driver, it's the dbus api that needs to be extended.
from dbus-mqtt-devices.
Thank you! I'm not "into" it , I am just new to victron so i am learning a lot currently.
I need to get a useraccount there, so yes, i will try to do so the next days.
from dbus-mqtt-devices.
You could also register the car's battery on the system and push SOC to the battery.
from dbus-mqtt-devices.
@pos-ei-don
I tried your expanded services.yml from your PR.
In venusOS 2.82 this driver did not register a new device. I will try it on a newer version of venusOS.
from dbus-mqtt-devices.
I have multiple instances running, di I think it should work.
I am so happy with it the at I even migtated another Inverter from the shelly plugin to this one. I live it to be able to manipilulate some values while the GX is up and running
from dbus-mqtt-devices.
Maybe I did something wrong.
This driver runs smooth since one year, so I'm not in the flow right now... :-D
I would like to monitor my dumpload as evcharger.
I love It too. It's so flexible and easy to use! I don't know why there is not more attention. Or maybe it is, but just a view people have problems. ;-)
from dbus-mqtt-devices.
I think we should Post easy to use node Red flows to create Devices and fill them with values. This should help others to get startet much faster.
I did some programming in NodeRed, but currently it does not run without manual setting a value, so it needs some more attention 😉
from dbus-mqtt-devices.
Off topic: Also reading a existing Smartmeter with Tasmota and send it directly to venusOS is on the list. That would eliminate the need of a (relative expensive) EM24.
from dbus-mqtt-devices.
I use this, and it works well! Also hoymiles can be integrated directly. (and the EV charger for the car, but dlthis is a different Topic)
from dbus-mqtt-devices.
I think we should Post easy to use node Red flows to create Devices and fill them with values. This should help others to get startet much faster.
I did some programming in NodeRed, but currently it does not run without manual setting a value, so it needs some more attention 😉
The best place to post sample flows for NodeRed is https://flows.nodered.org. I don't mind adding links in the documentation to to sample flows on https://flows.nodered.org.
from dbus-mqtt-devices.
@pos-ei-don
what are the minimal information the victron system needs, to show up the charger in the overview?
With just power and energy it didn't.
from dbus-mqtt-devices.
I've never testes "the minimal" settings.
Here are the values I set from the nodered to this device.
Some other settings i set in the console (charge-current,...) and send it the car.
Are you shure that the registration succeded? You can monitor the calues in MQTT, did the device in the /N/ path (N//evcharger/... ) take the values? be shure to send numbers, not strings!
from dbus-mqtt-devices.
Here everything looks fine.
But not in the overview. But that's maybe because it's just a RasPi with nothing else connected. I Will try it on my main system.
from dbus-mqtt-devices.
I dont use the overview. But i dont See it there either. I use the online vrm.
Do you See it there?
from dbus-mqtt-devices.
You are right. It shows up in VRM.
Thanks :)
from dbus-mqtt-devices.
You are charging with 51w? 😉.
Do you plan to connect a solar charger with this?
from dbus-mqtt-devices.
This is just a test environment.
I use this driver to send temperatures and power of 6 APSystems inverters to the Victron system.
I would like to use the "evcharger" for monitoring a dumpload.
A friend will use it to monitor charging of his motorcycle.
I hope your services.yml will be included in the next version of the driver.
50W is just a example Power. :-D
from dbus-mqtt-devices.
@pos-ei-don
I have it running now for a few days without problems.
It's nice to see a ev charging but are there other benefits?
- I was expecting a calculation of how much energy did go to the ev like the battery (direct use, to battery, to grid, to ev).
- Can the Victron system control the charger? Start/stop, power control, ...
from dbus-mqtt-devices.
- You can add an additional battery device, but i am unshure if its worth it.
- You can Start and stop, but its on you to Code the backen connection to your charger. My EV-charger works with 0-10V input, so i can change the charge-current within Victron/NodeRed as needed.
from dbus-mqtt-devices.
Is start/stop and charge current native with VenusOS possible or only with separate logic like NodeRed on VenusOS lage?
I can't start/stop charging using the GUI, the slider is grayed out.
from dbus-mqtt-devices.
The wallbox can be controlled with VRM or the Cerbo GX via openWB.
However, it doesn't make any sense because openWB controls the wallbox very well and you have a lot more setting options.
Otherwise everything works great. Unfortunately, the SoC from the car is not transmitted, but it is not that important either.
The flow for Node Red openWB - Cerbo GX is available here:
https://openwb.de/forum/viewtopic.php?p=79599#p79599
from dbus-mqtt-devices.
@stephwe
Thank You Stephan.
But I don't have a real Smart EV charger. I have two use cases.
- Electric motorcycle with a Tasmota flashed power plug.
- A dump load controller (Tasmota).
Right now I control them from ioBroker. But I think it would be nice if the Victron system could control them. Just to have a "cleaner" system.
from dbus-mqtt-devices.
The on/off switch does not work for me either.
But Automatic/Manual charging works. So i used this one for turning something on/off.
Its only a workaround, i hope that victron will add several needed features to its EV module.
from dbus-mqtt-devices.
Is therre any reason why this is closed? The service file still does not contain evcharger or pvcharger.
from dbus-mqtt-devices.
Looks like the thread went off topic and a working config was not verified for evcharger. Going forward, I am replacing the single services yaml file with separate config files for each service. It's in beta at the moment. I'm not going to try to merge in any more community changes to the services file only to have to migrate them later. I also need contributors to provide tests so that I can verify any new services work as I have no way of testing them.
from dbus-mqtt-devices.
I already use the 0.7.5-beta which works great for me. I'm happy to test new service files.
from dbus-mqtt-devices.
I stopped using vrm at the Moment so i am not able to change this to the new Format. I cannot test it.
I hope someone will take over 😉.
from dbus-mqtt-devices.
Looks like the thread went off topic and a working config was not verified for evcharger. Going forward, I am replacing the single services yaml file with separate config files for each service. It's in beta at the moment. I'm not going to try to merge in any more community changes to the services file only to have to migrate them later. I also need contributors to provide tests so that I can verify any new services work as I have no way of testing them.
I can confirm that this config is working (since a couple of month now)
It would be great to have it included, then the mqtt EV Charger user don't need to inlcude this manually after every upgrade of dbus_mqtt_devices.
# https://github.com/victronenergy/venus/wiki/dbus#evcharger
evcharger:
ProductId:
default: 65535 # 0xFFFF
CustomName:
default: "MyCharger"
persist: true
Ac/Energy/Forward:
description: "wh"
format: "{:.2f}W"
Ac/L1/Power:
description: "W"
format: "{} W"
Ac/L2/Power:
description: "w"
format: "{} W"
Ac/L3/Power:
description: "w"
format: "{} W"
Ac/Power:
description: "w"
format: "{} W"
AutoStart:
description: "w"
default: 0
# persist: true
ChargingTime:
description: "in seconds"
format: "{} s"
Current:
description: "A"
default: 0
# persist: true
EnableDisplay:
description: ""
MaxCurrent:
description: "A"
default: 0
# persist: true #wird nicht gespeichert reset nach disconnect/reconnect
Mode:
description: ""
default: 0
Model:
description: "w"
default: "AC22NS"
Position:
persist: true
default: 0
min: 0
max: 1
description: "0=OUTPUT; 1=INPUT"
# Connected:
# description: "w"
Role:
description: "w"
SetCurrent:
description: "w"
# StartStop:
# description: "w"
# persist: true
Status:
description: "w"
default: 1
from dbus-mqtt-devices.
@dersch81 Thanks for raising this again. This thread went so off topic it got lost. I think this service description still needs refinement. I will open a new issue and will propose some improvements. I would welcome your collaboration (and anyone else interested) on this.
from dbus-mqtt-devices.
Related Issues (20)
- Victron Bus System Connection get lost when using dbus-mqtt-devices HOT 1
- Solax PV no longer shows up in the device list. HOT 1
- Root partion is now mounted readonly by default in VenusOS 3.30-* HOT 1
- Add support for EVCharger HOT 12
- Settings are not always persisting as they should HOT 1
- PVinverter is shown as "Fronius" in VRM HOT 4
- Position move in Venus OS GUI HOT 1
- AC loads to position 0 instead of 1 in Venus OS GUI HOT 1
- New GUI-Beta requires Status DBus path for Temp sensors HOT 6
- Exception error during installation HOT 1
- Inverter is not showing Values in VRM HOT 10
- Ensure deviceId is passed to dbus as a int and not a string
- Resolve dataclasses dependency with python3-misc module
- Add Status attribute for Temperature dbus path HOT 5
- Problem sending values over MQTT from nodered [not original title] HOT 12
- setup.sh shoiuld check if there are existing entries in /data/rc.local HOT 2
- Energy Ac/L1/Energy/Reverse not working as expected HOT 1
- Update readme to explain you need to run setup.sh after a VenusOS
- Setup module dependecies on every reboot from /data/rc.local HOT 2
- Setup module dependecies on every reboot from /data/rc.local HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from dbus-mqtt-devices.