Sitecore Symposium: What’s new in Sitecore Land (9.3)

pieter session Symposium sitecore 2019

Another great event comes to an end with Sitecore Symposium 2019. Almost 3.000 attendees gathered to learn more about Sitecore’s products, vision and roadmap.

For me this years Sitecore Symposium highlights the announcement that SaaS is coming and a new Machine Learning Service for auto personalization. Next to keynotes from Sitecore’s own Mark Frost, Paige O’Neill and Desta Price.

And let’s not forget about the legendary keynote from Earvin “Magic” Johnson, which I also had the pleasure to meet.

This year it was -again- my honor to announce and reveal more details about our upcoming release of Sitecore 9.3.

Since the presentation I’ve received lots of requests for slides, more info and speaker engagements. As a start the slides are now available on Notists.

View What’s new in Sitecore land on Notist.

Notists also include my speaker schedule as I’m planned to deliver the presentation again in London (14 November) and Amsterdam (10 December). Feel free to reach out to me if you want to invite me to speak at your event.

Continue reading “Sitecore Symposium: What’s new in Sitecore Land (9.3)”

Using Woonveilig / Egardia alarm with OpenHab using Node-Red

The above screenshots shows the flow in Node-red. The flow has following steps:

TIP: the flow is available for import at the end of this article.

1. Start flow every 20 seconds

2.  Do a webrequest to the woonveilig hub to get the current status

http://[YOUR WOONVEILIG IP/action/panelCondGet

3. Convert the responds to JSON

4. Check if the status of the alarm has changed if not exit the flow

The returned currentAlarmStatus variable has three values:

  • 0: the alarm is turned disabled
  • 1: the alarm is partial armed
  • 2: the alarm is armed

See code below

var currentAlarmStatus = context.get('currentAlarmStatus')||99;
var newAlarmStatus = msg.payload.forms.pcondform1.mode;
//node.warn(currentAlarmStatus);
if(newAlarmStatus == currentAlarmStatus){
//node.warn("Same status of the alarm, Exit");
return null;
}

context.set('currentAlarmStatus',newAlarmStatus);
if (newAlarmStatus == "0") { //Off
global.set('currentAlarmStatus',newAlarmStatus);
return msg;
} else if (newAlarmStatus === "1") { //Partial Armed
global.set('currentAlarmStatus',newAlarmStatus);
return msg;
} else { //Armed
global.set('currentAlarmStatus',newAlarmStatus);
return msg;
}

5. Get the status of the Alarm in from OpenHab

6. Run function to compare currentAlarmStatus

Compare Woonveilig alarm status with the status of the alarm in OpenHab. If changed update global variable and continue, if no change exit flow.

var currentAlarmStatus = global.get('currentAlarmStatus');
node.warn("current alarm : " + currentAlarmStatus);

var ohAlarmStatus = msg.payload.state;
node.warn("OH alarm status : " + ohAlarmStatus);

if(ohAlarmStatus == currentAlarmStatus){
node.warn("Status in OH is same as alarm status, Exit");
return null;
}

msg.payload = currentAlarmStatus;

return msg;

 

7. Update alarm item in Openhab

Import following flow directly into Node-red

Copy and import the flow below into Node-Red, make sure you update your OpenHab instance and Woonveilig details.

[{"id":"96c97991.eeefe8","type":"inject","z":"fb8e5ae4.e53ae8","name":"Start Timer ","topic":"","payload":"","payloadType":"date","repeat":"20","crontab":"","once":false,"onceDelay":"","x":151,"y":152.99999904632568,"wires":[["ce82f7fb.ce0b08"]]},{"id":"ce82f7fb.ce0b08","type":"http request","z":"fb8e5ae4.e53ae8","name":"Get Alarm Status","method":"GET","ret":"txt","url":"http://192.168.0.13/action/panelCondGet","tls":"","x":171,"y":212.99999904632568,"wires":[["4cc27829.c6f228"]]},{"id":"4cc27829.c6f228","type":"json","z":"fb8e5ae4.e53ae8","name":"","property":"payload","action":"","pretty":false,"x":351,"y":212.99999904632568,"wires":[["b0eaca39.9416c8"]]},{"id":"e08a64c5.b4c9d8","type":"function","z":"fb8e5ae4.e53ae8","name":"Alarm status","func":"var currentAlarmStatus = global.get('currentAlarmStatus');\nnode.warn(\"current alarm : \" + currentAlarmStatus);\n\nvar ohAlarmStatus = msg.payload.state;\nnode.warn(\"OH alarm status : \" + ohAlarmStatus);\n\nif(ohAlarmStatus == currentAlarmStatus){\n node.warn(\"Status in OH is same as alarm status, Exit\");\n return null;\n}\n\nmsg.payload = currentAlarmStatus;\n\nreturn msg;","outputs":1,"noerr":0,"x":363.0000305175781,"y":332.0000047683716,"wires":[["e26d4b11.ee8228"]]},{"id":"b0eaca39.9416c8","type":"function","z":"fb8e5ae4.e53ae8","name":"Alarm status","func":"var currentAlarmStatus = context.get('currentAlarmStatus')||99;\nvar newAlarmStatus = msg.payload.forms.pcondform1.mode;\n//node.warn(currentAlarmStatus);\nif(newAlarmStatus == currentAlarmStatus){\n //node.warn(\"Same status of the alarm, Exit\");\n return null;\n}\n\ncontext.set('currentAlarmStatus',newAlarmStatus);\nif (newAlarmStatus == \"0\") { //Uit\n global.set('currentAlarmStatus',newAlarmStatus);\n // node.warn(\"new alarm 0\");\n return msg;\n} else if (newAlarmStatus === \"1\") { //Thuis\n global.set('currentAlarmStatus',newAlarmStatus);\n //node.warn(\"new alarm 1\");\n return msg;\n} else { //Aan\n //node.warn(\"new alarm overig\");\n global.set('currentAlarmStatus',newAlarmStatus);\n return msg;\n}","outputs":1,"noerr":0,"x":511,"y":212.99999904632568,"wires":[["f00db576.387518"]]},{"id":"e0560d60.8cc0f","type":"comment","z":"fb8e5ae4.e53ae8","name":"Check if Alarm status changed","info":"Check if alarm status changed, if not exit\n\n0: uit\n1: Thuis\n2: aan","x":561,"y":172.99999904632568,"wires":[]},{"id":"54de2a09.70ac34","type":"comment","z":"fb8e5ae4.e53ae8","name":"Check in OpenHab if alarm status need to be updated","info":"","x":493.0000915527344,"y":294.0000047683716,"wires":[]},{"id":"f00db576.387518","type":"openhab2-get","z":"fb8e5ae4.e53ae8","name":"","controller":"e263d712.1e7b38","itemname":"HO_Alarm_Status","x":170.1666717529297,"y":281.0000238418579,"wires":[["e08a64c5.b4c9d8"]]},{"id":"e26d4b11.ee8228","type":"openhab2-out","z":"fb8e5ae4.e53ae8","name":"","controller":"e263d712.1e7b38","itemname":"HO_Alarm_Status","topic":"ItemCommand","payload":"","x":551.1666870117188,"y":332.0000047683716,"wires":[[]]},{"id":"d08ad29f.6f20f","type":"comment","z":"fb8e5ae4.e53ae8","name":"........................Set alarm status from Woonveilig to Openhap........................","info":"Check if alarm status changed, if not exit\n\n0: uit\n1: Thuis\n2: aan","x":310,"y":112.00000286102295,"wires":[]},{"id":"e263d712.1e7b38","type":"openhab2-controller","z":"","name":"Openhab","protocol":"http","host":"localhost","port":"8080","path":"","username":"","password":""}]

Sitecore 9.2 – Enhancements Highlights

Now the last of the 3 strategy pillars is enhancements and I want to show you how 9.2 will make day-to-day working with Sitecore a lot more comfortable.

You can see a true change in Sitecore as a company, we never have been so focused in enhancing the product. Focusing on making the platform work better for you by fixing bugs and enhancing existing features.

Our work on enhancing our platform is guided by the feedback we get from our customers, partners and analysts. You are not shy to tell us what is missing and what we can improve. We are listening and documenting everything we hear and see.

We have been working hard to enhance the platform as a whole, and we’ve made some great improvements in 9.2. We’re including over 220 customer fixes, and have also implemented over 150 customer requests! We have fixed 80 issues across multiple functionalities including Content Search, Publishing, Indexing, Caching and Security. So that goes to show that we are listening!

Continue reading “Sitecore 9.2 – Enhancements Highlights”

Sitecore 9.2 – Time to Market Highlights

In a previous blog post I wrote about how the Sitecore strategy has three investment pillars and how this impacts your day-to-day job as a developer. We already covered innovation, let’s dive into the efficiency that you can get with our upcoming Time to Market improvements.

Sitecore 9.2 contains a number of efficiency improvements, but as with the previous section I’ve picked 3 key areas that will help you do your job more efficient and increase the time-to-market for our shared customers. Features that help you get up and running faster, features that will improve standardization between different implementations and features that will help the marketers in their day-to-day job.

Continue reading “Sitecore 9.2 – Time to Market Highlights”

How Sitecore’s Investment strategy impacts the developer’s job

Sitecore investment Research and Developement strategy

At Sitecore we have three 3 pillars in our continuous R&D investment strategy: Innovation, Time to Market and Enhancements.

While preparing the keynotes for the SUGCON conferences in Europe and India I wanted to use these strategic pillars since they define how we work as a company. Since I already talked about this during Sitecore Symposium in 2018 I wanted to take a different approach. This time, knowing that SUGCON is a developer event, I started brainstorming on how our pillars impact you as a developer. In this article I would like to share my thoughts and outcomes on how the strategic pillars have affect on your day-to-day job.

Continue reading “How Sitecore’s Investment strategy impacts the developer’s job”

Use your alarm for presence detection in your Home Automation setup

One of the great things about home automation is the possibility to activate scenes based on presence of people in the house. Having solid presence detection in your home is not easy to achieve. There are a lot of ways to do this, but most of them use ping your devices, using network connectivity, Bluetooth or GPS geo-fencing technology. These solutions might work for some use cases, but if your presence detection is based on devices will only work for known devices and people. Meaning you can never be 100% sure that no-one is home.

So do not, I repeat do not, trigger scenes that shut down all the lights if no-one is home based on phones. I’ve a great story about a baby sitter that called me very unhappy about all lights being turned off and also that every time she switched them on they went off again. This go back to one of the essential rules of home automation. Read the 7 tips for a successful home automation.

However, switching lights off when nobody is home or switching random lights on while you are on holiday are great benefits of home automation. This is something you want to achieve. A great way of doing this is by installing an alarm and read the status of the alarm, e.g. Fully Armed, partial armed or off.

Continue reading “Use your alarm for presence detection in your Home Automation setup”