PT Brixters have made a conductor portal in react.js that is fully responsive and user friendly !
The Portal is made in React therefore we are claiming the “Client Side Salsa” badge for this.
The Portal also uses 2 module apps to show the train live video feed and a train controller where the train controller uses socket.io to communicate from the frontend to the backend, therefore we are claiming the “Right Now Badge” for this.
We are also claiming the “Glossy Pixels Badge”
for the conductor portal because the portal looks shiny, is easy to read (big text, big buttons). And its responsive, works on mobile devices also, therefore we are also claiming the “Chameleon Badge”
And we wanted to show of our old Dashboard that is now upgraded to the new one 😀
Some pictures of socket.io with flask in action for the “Right now badge”:
Picture of VS Code as proof that we are using React to build our app.
Et gammelt indiansk ordspråk lyder som følger (ikke verfisert): “Før du rekker å få sende en lang beskjed via røyksignaler, kan det allerede være for sent”. Dagens bønder har behov for oppdaterte data fortløpende og i vår løsning for vekstkontroll har vi tatt i bruk teknologi som understøtter dette behovet.
Sentralt i løsningen finner vi en Event Hub som kan ta imot data fra IOT sensorer eller fra bildeanalyse. Event hub’en kan videre supportere mange konsumenter av data som følger strømmen i sin egen hastighet.
Som i vår løsning skissert over så inkluderer dette Stream Analytics for analyse og aggregeringsformål, arkivering til andre datalagringstjenster slik som Azure Table Storage eller en .NET Core app som direkte konsumerer og behandler strømmen av data fortløpende.
When tasks are created in our nice little family the kids often doesn’t respond when their parents are sending out push notifications to their devices.
As a way to remind the kids on their tasks we have developed a system that reads out the tasks on the sonos speakers in the house
This setup requires the following components
Dataverse Tasks table
Power Automate Flow with “Common Data Service (current environment)” and “Service Bus” steps
Azure Service Bus
Talkity.com free text to speech subscription
Some device able to run Python on the same local netwok as the Sonos devices. E.g. a Raspberry PI
One or more Sonos Speakers
Power Automate Flow to put messages on Azure Service Bus Queue
Text to speech using Talkify
We have investigating several services for Text to Speech. Azure Cognitive Services have some, but we went the easy route and found one where it was possible to just compose a long url and post it directly and get a MP3 file with the speech back. https://talkify.com
The URL is on the format https://talkify.net/api/speech/v1?text=Clean your room&rate=2&format=mp3&voice=Microsoft Hazel Desktop&fallbackLanguage=English&key=xxxxxxx
The paid verison of Talkify also supports Norwegian, but as we are using the free version only English are supported
Our initial idea was to have a power automate flow step to do fetch the MP3 and upload the MP3 somewhere readable for Sonos (like Azure Blob Storage), but when it was as easy as calling an GET URL we can send that URL directly to Sonos.
Subscribing to the Azure Service Bus Queue and triggering the Sonos Speakers using Python running on a Raspberry PI
So playing files on the Sonos isn’t THAT difficult – especially when the sound files are from publically available URLs
The following Python script is using the SoCo Sonos Library (https://soco.readthedocs.io/en/v0.21/releases/0.13.html) and Azure Sevice Bus SDK v7.
The python script is deployed to a local raspberry Pi that can works as a local controller of the Sonos System.
Note: as long as you are on the same network as a Sonos speaker you can control it without any authentication. Tip for practical jokes 👌👍
from azure.servicebus import ServiceBusClient, ServiceBusMessage
from soco import SoCo
sonos = SoCo('192.168.x.x') #kontor
with ServiceBusClient.from_connection_string("Endpoint=sb://acdctaskservice.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=xxx=") as servicebus_client:
receiver = servicebus_client.get_queue_receiver(queue_name="taskqueue", max_wait_time=5)
for msg in receiver:
sonos.volume = 10
url = "https://talkify.net/api/speech/v1?text="+ str(msg) +"&rate=2&format=mp3&voice=Microsoft Hazel Desktop&fallbackLanguage=English&key=xxx"
track = sonos.get_current_track_info()
except Exception as e:
print( "Error: %s" % e )
Hopes for (some of) the following badges:
Go with the flow
Right now (uses service bus to send events directly)
Thieving Bastards (uses 3rd party SoCo Sonos library and shady text to speech service)
Nasty hacker (sends in the composed text-to-speech url with subscription key and everything to sonos)