Thieving shellbombs

Data er selve oljen. Ettersom Bombshells har samlet inn mer data har de innsett at veien til å forhindre kriminalitet og jobbe prevantivt mot mutantene er å gå på miljøproblematikken og heller fjerne årsaken til at mutantene dukker opp.

Bombshells har derfor valgt å fokusere på å samle inn data om miljøet, samt mulighet til å varsle hvis uheldige hendelser blir avdekket i våre sensorer. De har derfor implmentert en rekke integrasjoner. Vi ønsker å trekker frem følgende:

  1. Sende SMS med varsel:

2. Innhenting av værdata fra https://frost.met.no

3. Hente data om lavvann/ høyvann for en gitt lokasjon

http://api.sehavniva.no

En, to, mange 😉

Progressive web app – Submit your problem from any where

This is a form that you can report an issue from anywhere. Its responsive, works on both desktop and mobile screens.

It could be hosted any way. It is a progressive web app build with react, node.js

Citizens can report the issue by specifing title, description, take a photo of what the see and tag a location to help the turtles resolving the issue faster.

Desktop screen
Mobile screen
What is the issue with Sondre 🙂

We gonna contnuie build this to add administration functionalities and gather new batched. Update will come 🙂

The real nasty hacker

  1. When visiting www.elskling.no we used Fiddler to decrypt the HTTPS traffic to find the API they are using to get data. And turned it into our own custom connector.

2. We came above another API that gets both historical and today’s spot price in Norway. This could be filtered with “NO1” and so on, based on where in Norway you want to get a price from.

After getting some errors using the API, we needed an API key. After submitting an email to the email listed we received an API Key. After some more research, we could see that this is an API created by a “hacker” who abuses another public API that requires payment. We think that this is the ultimate candidate for “Thieving bastard”.

We are using this API to visualize today’s spot price and to create a local history in our database to create forecasts on prices with AI in the future.

3. The last API we are using is to get each day’s weather forecast, this is going to be combined with historical spot prices to forecast future prices on electricity. These prices are very much based on weather, and that’s why it is very relevant to include this in our library of apis.

Skumle lyder

Ved å bruke Microbit sound sensor, makecode-rammeverket Microsoft MakeCode for micro:bit (microbit.org) og Azure functions registerer vi lyder fra mutanter som romsterer rundt i fjæra.

Vi snakker med Azure functions gjennom Microbit-rammeverket via Wifi

Lydsensor koblet mot Microbit

Vi kobler sammen hovedkort og IoT-modulen til Microbit. I tillegg har vi koblet på lydsensoren for å registrere lyder innenfor et bestemt lydnivå.

Inne i makecode konfigurerer vi IoT-modulen til å snakke med Wifi. Dette gir oss mulighet til å snakke med skyen.

Videre viser vi også lokalt på tilkoblet led-skjerm på Microbitmodulen indikasjon på registrert lyd for å verifisere at vi tar i mot data lokalt.

Ved å sende lyddata fra sensoren til Azure function så registerer vi dataene i Dataverse.

Vil claimer Thieving Bastards og Nasty Hacker for denne

Developer basics and setup – GitHub repository

TMNT love to share and have setup a public github repository at https://github.com/EivindBerge/PIZZA-TIME-ACDC-202.

First order of business is to ensure security is handled by adding a security policy, enabling security advisories on code and artifacts committed as well as some code scanning in case Michelangelo has a brain fart and publish secret information or crappy code.

And 2022 is a good year to be in as scanning modules are free of charge for the turtles to re-use 🤩

Looking good so far – and we’ll keep monitoring!

IOT: Reading out messages on Sonos from Dataverse

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
import soco
import urllib

sonos = SoCo('192.168.x.x') #kontor
print(sonos.player_name)

with ServiceBusClient.from_connection_string("Endpoint=sb://acdctaskservice.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=xxx=") as servicebus_client:
        print("ok")

        while True:
                try:
                        receiver = servicebus_client.get_queue_receiver(queue_name="taskqueue", max_wait_time=5)
                        with receiver:
                                for msg in receiver:
                                        print(msg)
                                        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"
                                        print(url)
                                        sonos.play_uri(url)

                                        track = sonos.get_current_track_info()
                                        print(track)
                                        receiver.complete_message(msg)

                except Exception as e:
                        print( "Error: %s" % e )	
Bilderesultater for raspberry pi
Bilderesultater for sonos 1

Hopes for (some of) the following badges:

Embedding Numbnut

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)

And maybe a point or two in the categories

Blow my Mindstorm

Lego Autobots

Lego Shark Thank

Badge – Thieving Bastards

This badge is awarded when using code that you “borrow” or 3.rd party addons. For our solution we have used a bit of each.

First off we have a Portal from The Portal Connector. A professional service from The Portal Connector for Dynamics and the Power Platform (crmportalconnector.com) . This portal is used for our Citizen self service portal.

Portal Home
Submitting the case

We also have used a few PCF components within dynamics to make it look prettier. PCF components downloaded from Github found on pcf.gallery . This specific component renders images in the notification field to the form.

Lastly we have a GitHub solution connecting our Rasbery PI to our Lego Train. A solution coded by a Lego enthusiast and reused in our hackathon.

https://virantha.github.io/bricknil