Hey Everyone...
I wanted to start a discussion on my goal to have a smart house with a Jarvis (Ironman) / Sarah (Eureka) like AI and my little ARC robot servants roaming around.
So feel free to jump in and contribute...
I have been using a combination of open source programs with my ARC software and EZBv3 boards. ARC is the brains of my system and provides me with the intelligent front end that responds to voice commands and communicates to my four EZB-3 boards. Lawrence, as I like to call it, replies to my voice commands using the Ivona Brian voice file. Sound very like Jarvis.
After recognising the voice command Lawrence selects what to say back to me from a pool of scripted phrases. This addresses repetitiveness in responses and adds a nice human-ish touch.
At the same time Lawrence is replying several scripts are firing commands to other applications or devices through an MQTT broker that I have installed. This Broker, from the Mosquitto open source project, acts like my AI's nervous system or neural net. I store values that are stored in the broker, similar to database that get reloaded to my various devices when they wake up.... I find this easier than an a database.
Various other devices are subscribed to the broker topics and act appropriately but you must have your own broker installed. I run mine on a separate Raspberry Pi elsewhere on my network. I keep it as a stand alone device as everything connects to it so if I need to reboot my PC it does not cause problems. It is fast, works well on the newer Pi3 and supposedly can handle 100,000 posts per second... I have only rebooted it a couple of times since installation and that was only because I wanted to move it.
So I post directly from ARC to my MQTT neural net with the EXEC command like this:
exec("C:\Program Files\mosquitto\mosquitto_pub.exe", "-h 10.1.1.120 -p 1883 -t /HOME/EZ-BUILDER/COMMAND -m Command:Lounge_Lights_On' ")
I also use a second program called EventGhost that watches for those MQTT messages and fires commands to other devices on my network that ARC can't talk to. I complete this action by triggering events in EventGhost with the same exec command in ARC:
exec("Eventghost", "-event Guest.Welcome.Video.Fullscreen")
exec("Eventghost", "-event It's_Spa_Time")
Another big player in my system is Rainmeter which adds great visuals to my screen. It lets me change the entire look and feel of the PC. While not tied directly to ARC I can launch ARC from a fancy picture on my desktop. This simple script in Rainmeter simply launches ARC when I click it. (I know I could use a shortcut but this looks way cooler)
[Rainmeter]
Author=Wayne
MiddleMouseDownAction=!DeactivateConfig
Update=86400000
MouseActionCursor=0
[Metadata]
Version=1.0
Information=Phone_Wayne TextItem
License=Creative Commons Attribution-NonCommercial-NoDerivs 3.0
[Variables]
height=60
[noimage]
Meter=Image
ImageName=#CURRENTPATH#\Tablet.jpg
W=(#Height#)
LeftMouseUpAction=["C:\Program Files (x86)\EZ-Robot Inc\EZ-Builder\EZ-Builder.exe" "C:\Users\Wayne\Dropbox\My Robotics\Launcher.EZB" "Autostart"]
[Title]
Meter=STRING
MeterStyle=sTitle
Text=WAYNE
FontSize=9
X=10
Y=55
FontColor=255,255,133,255
And of course OpenHAB is the most recent player to come to my table. As it can communicate with the same MQTT broker I am now extending my domain out from my workshop to the rest of the house. OpenHAB is giving me a nice web front end with switches and buttons, status updates, etc. This means ARC can now turn on my lights through MQTT from a simple voice command.
So friends .... My goal of Home automation with a responsive AI and little robot servants roaming the property is slowly becoming a reality thanks to ARC.
What have you been doing?
Other robots from Synthiam community

Boon's Boon's Robot

Luis's Using The Sure Dc Ss503v100 With Ezb4 From Ez-Robots

I agree that built in has advantages, but this is exactly the kind of function that the plugin architecture is perfect for. Populating variables from external sources, and sending variables or commands from scripts. DJ's todo list, and bug fix list is very long, and he is the only one doing primary programming on ARC at the same time he is trying to run and expand the company from a few friends in a garage to a real business in the STEM space.
If it peaks his interest, he'll add it ahead of other things on the list, and I have often seen conversations like this drive new features (usually just as I figure out a workaround, he adds a feature....), but I know he is really trying to encourage the user community to learn to program and write plugins where they are a good fit.
I am hoping this fall/winter (once it is too cold to mountain bike on the weekends) to sit down with Visual Studio and get back up to speed on programming. I used to be pretty good with VB6, but I have not been able to wrap my head around dotnet yet, and I also want to learn Java for some work related stuff. I have a lot of plugin ideas I want to create, and this one looks like it would be a snap to complete since the APIs are already in place and well documented.
Alan
I hear what you are sayinig Alan... many a time I have suggested a tweek to ARC, completed a work-around and had @DJSures come up with just the right solution. Then I have gone back and recoded with the updated commands.
As for the plugin idea I have made a new friend who has way more skills in the field and we'll have a look on Thursday New Zealand time.... no promises though. I feel like a small fish with big ideas surrounded by many bigger fish.
Would be great to have my name beside a plugin. I've been around since almost the beginning ... and it would be great to give back to the community.
@Tameion
Okay friends it is time for an update.
We have started development on an MQTT plugin for ARC.
Initial tests have been successful but it is still very early days so don't jump up and down too much. Not even at v1.0 yet ... more like a 0.1 actually...
Anyway it would help me to know if anyone else out there is interested in using such a plugin.
@Tameion , this sounds like a very useful thing to have in the ARC toolbox. I'm sure it will get a lot of attention over time. Personally I don't have a use for it yet (I think) but projects I'm planning could use this. Bring it on!
Thanks Dave... I think it will be useful. I see MQTT used to 'connect' more and more devices, in a lot more and more places every time I look... mind you I am actively looking.
I particuarly like the possibility of using it to hold variables in topics for pickup by my various ARC installs and my other apps/devices.
I am very interested in this plugin. I use IBM MQ at work, and it is very powerful for sharing data among distributed applications. I could certainly see this as a great way to have multiple robots share global variables as well as easy integration to other devices.
Alan
Our minds connect and have begun sharing data among distributed locations. (Lol - sounds hippie-ish but I'm not really!)
I have been sharing variables between PC's running ARC for a number of years. Ever since @DJSures gave us file read/write functions. (Yes I have been around that long!)
I have 5 different PC's running ARC and since they are not all on the same LAN I share data via a TXT file in Drop-Box that they load at startup and write to at various times. While I get the occasional file conflict and associated versioning issues it has been an effective, if not clumsy, means of passing variable information between the installations. Especially since the units are not always going at the same time or on the same LAN.
Sooooo .... my goal with MQTT is to use the RETAIN message ability of the MQTT broker to hold my variables and act as an information database as well as. If there is a power fail then they are reloaded of course but they can also be updated on the fly.
This is especially valuable if the Workshop AI (Lawrence) wants to pass info to the House AI (Viki) and share it with Bert the Bot who occasionally drop off the network or crashes and loses power. I can also share this data with the ARC install at school and any other IoT device on my network . Well that's the plan anyway.
I'm a bit of a home automation geek and I know I could do this with HTTP Put & Get or a MySQL database but the ability to constantly monitor a topic in the broker until it changes is mind blowing in terms of what I want to do.
This project will allow me to say to my ARC installs "Turn on the lights" with the voice command, ARC will work out where the command came from and will post "Lights ON" to the MQTT Topic for lights in that particular room.
OpenHab, a popular home automation platform which also uses MQTT will "See" the topic for lights in that particular room have been turned on and the update the status of the Web interfaces Screens around the house at the same time as the IoT light switch, also watching that particular topic, turns on
OpenHab, EventGhost and ARC are all talking to each other and are best buddies.
A few years ago DJ added push and pull variable commands with the intention of storing them on EZ-Cloud. I don't know what ever happened to that project, but it never happened. Your file sharing and Daves EZ-DB project were good workarounds, but I really like this mqqt idea a lot.
Alan