A ledstrip on a Harp, now I can see the strings at night!
Woohoo .. ( Little harp in the background (autoharp))
Well .. its a pity that the distance of the leds is NOT the same as the strings distance.
I could light up the string to be played, or even cooler … When using FFT code (Fast Fourier Transform), I could light up the string being played! I’m probably going to try to implement this at a later time.
But I didn’t like the continuous logins with automated logins.
So below solution is what i’ve implemented for now.
I’ve installed the IOT extra package from Mikrotik, now I can send MQTT messages from my Wifi enabled Mikrotiks to my Mosquitto broker. (Download extra package zip, extract iot-7.x-arm.npk, upload this to your mikrotik files folder, and reboot) The script I’m running on my Mikrotik, sends the active wifi connections with the comments. ( When a comment is set in the Access List, then it’s a know connection )
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
[admin@RB40111] /iot/mqtt> export
# may/15/2023 21:45:12 by RouterOS 7.9
# software id = xxxx-xxxx
#
# model = RB4011iGS+5HacQ2HnD
# serial number = xxxxxxxxxxxxxxxxx
/iot mqtt brokers
add address=10.1.x.y client-id=rb4011 name=NR
[admin@RB40111] /iot/mqtt> export
# may/15/2023 21:45:12 by RouterOS 7.9
# software id = xxxx-xxxx
#
# model = RB4011iGS+5HacQ2HnD
# serial number = xxxxxxxxxxxxxxxxx
/iot mqtt brokers
add address=10.1.x.y client-id=rb4011 name=NR
[admin@RB40111] /iot/mqtt> export
# may/15/2023 21:45:12 by RouterOS 7.9
# software id = xxxx-xxxx
#
# model = RB4011iGS+5HacQ2HnD
# serial number = xxxxxxxxxxxxxxxxx
/iot mqtt brokers
add address=10.1.x.y client-id=rb4011 name=NR
I made the following script on my MT named mqtt
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
:local broker "NR"
# MQTT topic where the message should be published
:local topic "rb4011/mac"
:foreach i in=[/interface wireless registration-table print proplist=mac-address as-value]do={
[admin@RB40111] /system/scheduler> export
# may/15/2023 21:48:14 by RouterOS 7.9
# software id = xxxx-xxx
#
# model = RB4011iGS+5HacQ2HnD
# serial number = xxxxxxxxxxx
/system scheduler
add interval=15m name=mqtt on-event=mqtt policy=\
ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \
start-date=may/15/2023 start-time=13:30:54
[admin@RB40111] /system/scheduler> export
# may/15/2023 21:48:14 by RouterOS 7.9
# software id = xxxx-xxx
#
# model = RB4011iGS+5HacQ2HnD
# serial number = xxxxxxxxxxx
/system scheduler
add interval=15m name=mqtt on-event=mqtt policy=\
ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon \
start-date=may/15/2023 start-time=13:30:54
Now all wifi connections will be send to topic rb4011/mac.
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# Example
.id=*6a;comment=Mobile Henri wlan2;mac-address=44:46:87:xx:xx:xx
# Example
.id=*6a;comment=Mobile Henri wlan2;mac-address=44:46:87:xx:xx:xx
# Example
.id=*6a;comment=Mobile Henri wlan2;mac-address=44:46:87:xx:xx:xx
Using NodeRed I can make filters and notifications
Below function: get Mac and Comment from payload, if the comment is empty then it is a unknown connection … so send me a warning using Pushover.
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
// filter function
var output = msg.payload.split(";");
var comment = (output[1].split("="));
var mac = (output[2].split("="));
msg.payload={};
msg.payload = mac[1];
if(comment[1] == ""){
return msg;
}
// is xx:xx:xx:xx:xx:xx online? example
var output = msg.payload.split(";");
var comment = (output[1].split("="));
var mac = (output[2].split("="));
msg.payload={};
msg.payload = mac[1];
if(mac[1] == "xx:xx:xx:xx:xx:xx"){
return msg;
}
// filter function
var output = msg.payload.split(";");
var comment = (output[1].split("="));
var mac = (output[2].split("="));
msg.payload={};
msg.payload = mac[1];
if (comment[1] == "") {
return msg;
}
// is xx:xx:xx:xx:xx:xx online? example
var output = msg.payload.split(";");
var comment = (output[1].split("="));
var mac = (output[2].split("="));
msg.payload={};
msg.payload = mac[1];
if (mac[1] == "xx:xx:xx:xx:xx:xx") {
return msg;
}
// filter function
var output = msg.payload.split(";");
var comment = (output[1].split("="));
var mac = (output[2].split("="));
msg.payload={};
msg.payload = mac[1];
if (comment[1] == "") {
return msg;
}
// is xx:xx:xx:xx:xx:xx online? example
var output = msg.payload.split(";");
var comment = (output[1].split("="));
var mac = (output[2].split("="));
msg.payload={};
msg.payload = mac[1];
if (mac[1] == "xx:xx:xx:xx:xx:xx") {
return msg;
}
Now i’m getting a notification when an unknown wifi connection is made on my Access Point. ( I going to implement the Access List from MT at a later point. No access when not in the Access List)
Last week I got my 1.2MB 5.25″ drive. And tested it with the fluxengine. Now i can read old 5.25″ disks again. And convert these to disk images. Amiga/Atari ST/C64 (single side) and my old MSDos disks. (That’s what I’m using, the fluxengine can read many more)
Why single side C64? you ask? Those are flippy disks, that means they are single sided and you flip the disk in the drive to read the other side.
Why can’t the fluxengine read those?
There is only one sensor in my drive.
Reading side 2 without turning the disk won’t work, the sectors are in reverse! (Maybe there is a trick to read in reverse? Fluxengine is reading and decoding raw disk sectors, but i have to read into this)
Note: The 1541 Drive for the commodore’s is a complete 6502 computer with 2x 6522 VIA and ram/rom chips! (2016-15 2K x 8 bit Static RAM / 27128 16kb x 8)
I started printing the bottom, no problem there. But because of the large size of bottom and top. (Both about a day of printing) I had to change the filament. But I didn’t have a good look at what I took! Below is what you get when printing PLA and switch to PETG!
Temperatures for PLA: Tool: 200 and bed 50 Temperatures for PETG: Tool: 240 and bed 70
So 12 hours printing and I had to start again.
I could not remove the knob, else I would have removed the beige front and spray painted this black.
A MOINK Ball is a beef meatball wrapped in pork bacon, sprinkled with rub, smoked, and sauced .. so beef and pork .. hence the name Moo – oink balls.
Made this today .. but forgot to take some pictures. Picture is from another date
Ingredients
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
500 grams of ground beef
40 grams Parmesan cheese grated
1 egg beaten
40 grams of breadcrumbs
100 ml of milk
1 tablespoon garlic finely chopped
1 teaspoon dried parsley
1/4 teaspoon sea salt
2/3 teaspoon dried oregano
2 packs of(smoked) breakfast bacon
barbecue rub
barbecue sauce
500 grams of ground beef
40 grams Parmesan cheese grated
1 egg beaten
40 grams of breadcrumbs
100 ml of milk
1 tablespoon garlic finely chopped
1 teaspoon dried parsley
1/4 teaspoon sea salt
2/3 teaspoon dried oregano
2 packs of (smoked) breakfast bacon
barbecue rub
barbecue sauce
500 grams of ground beef
40 grams Parmesan cheese grated
1 egg beaten
40 grams of breadcrumbs
100 ml of milk
1 tablespoon garlic finely chopped
1 teaspoon dried parsley
1/4 teaspoon sea salt
2/3 teaspoon dried oregano
2 packs of (smoked) breakfast bacon
barbecue rub
barbecue sauce
For the balls
ONE of the following
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
1/2 teaspoon cayenne pepper
1/2 teaspoon crushed red pepper flakes
1/4 teaspoon chili powder
1 jalapeño pepper, seeded and finely chopped
1/2 teaspoon cayenne pepper
1/2 teaspoon crushed red pepper flakes
1/4 teaspoon chili powder
1 jalapeño pepper, seeded and finely chopped
1/2 teaspoon cayenne pepper
1/2 teaspoon crushed red pepper flakes
1/4 teaspoon chili powder
1 jalapeño pepper, seeded and finely chopped
Recipe
Mix the ingredients of the balls , except for the rub and sauce. Sprinkle the meatballs with the rub. Cool in the fridge. Wrap a slice of bacon around the balls and secure with a cocktail stick. Put your MOINK Balls in the fridge for half an hour to stiffen.
I try to get my smoker at 110C. Using Cherry wood (or apple), I let the balls hit a core temperature of 55C. Brush the balls with barbecue sauce. Remove from the smoker when 70C.
My work document for my Mikrotiks (Also for my friend Vincent, with a similar setup.)
I’m going to collect information on this page for below changes.
WIFI
Access list connections only
Default forward – only certain clients
Guest network – better setup. I’ve got a folkband guest network right now and a captive portal AP on my internet router. (Outside my network) This is for colleagues of Coline.
Vlan for certain clients
Zerotier
Network routing
Security
IOT
Move all clients to own vlan New or better VLAN setup
Using a mqtt server with websockets and a website with the Eclipse Paho JavaScript Client
Above video: Joystick sends movement through the internet to my mqtt server, laptop is fetching a webpage from one of my webservers. A piece of javascript connects via websockets to the mqtt server and realtime changes the displayed image.
I intend to display maps and views into a maze you can walk through. like: (shamelessly stolen image from the internet)
I already have written another piece of code which generates a maze, and tells you using samples which way to go.
While working on a harmony for Irmgard and me in Musescore, i tought it would be nice to have it also in another notation.
Above a Musescore screenshot.
When using below button assignment, we can easily rewrite above into another notation.
Write musescore as MusicML/mxl Music xml.
Install xml2abc from https://wim.vree.org/svgParse/xml2abc.html
python xml2abc.py INPUTFILE.mxl output.abc
My abc file
X:1
T:Planxty Irwin
C:OCarolan
L:1/4
M:3/4
I:
K:G
V:1 treble nm="Henri" snm="H"
V:1
|: d | B2 d | c2 A | F2 A | G3/2 d/ B | A G F | G3/2 A/ B | D2 E | F2 d | B2 d | c2 A | F2 A |
G3/2 d/ B | A G F | G3/2 A/ B | e d c | B2 d | B3/2 c/ B | B G B | c3/2 d/ c | c A F | G d e |
c d e | d3/2 c/ A | d c A | B c d | c B A | F G A | G3/2 d/ B | A G F | G3/2 A/ B | e d c | B2 :|
Using below bash script you can convert this to PDF WITH concertina notations.
WARNING: I didn't include all keys (yet).
NOTE: Easy to adjust to other notations.
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#!/bin/bash
if [ $# -lt2 ]; then
print "script orgname convertname"
exit 1
fi
: > parced
org=$1
abc=$2
cat $1 | awk '/^\|/ {exit} {print}' > header
cat $1 | grep "|" | tr -d '[0-9]:/'> parse
(
cat parse | while read ; do
echo $REPLY
echo -n "w: "
for word in$(echo $REPLY) ; do
if [ "$word" == "|" ] ; then echo -n " | "
elif [ "$word" == "D" ] ; then echo -n " 2 ";
elif [ "$word" == "G" ] ; then echo -n " 3 ";
elif [ "$word" == "B" ] ; then echo -n " 4 ";
elif [ "$word" == "d" ] ; then echo -n " 5 ";
elif [ "$word" == "g" ] ; then echo -n " 6 ";
elif [ "$word" == "b" ] ; then echo -n " 7 ";
else echo -n " * "
fi
done
echo ""
echo -n "w: "
for word in$(echo $REPLY) ; do
if [ "$word" == "|" ] ; then echo -n " | "
elif [ "$word" == "F" ] ; then echo -n " 2 ";
elif [ "$word" == "A" ] ; then echo -n " 3 ";
elif [ "$word" == "c" ] ; then echo -n " 4 ";
elif [ "$word" == "e" ] ; then echo -n " 5 ";
elif [ "$word" == "f" ] ; then echo -n " 6 ";
elif [ "$word" == "a" ] ; then echo -n " 7 ";
elif [ "$word" == "E" ] ; then echo -n " 4' "; # <============ example 2nd row