MagicMirror² v2.4.1 is available! For more information about this release, check out this topic.
Please read the release notes carefully since this update requires adjustments to your Raspberry Pi configuration!

MMM-Rest & pimatic REST-API



  • I need help by my pimatic integration with the MMM-Rest Module.
    In the Module docu the url returns a single Integer but my pimatic api returs a string with more informations. like this

    curl http://user:user@himbeere/api/variables/dht-01.temperature
    {“variable”:{“name”:“dht-01.temperature”,“readonly”:true,“type”:“attribute”,“value”:20,“unit”:“°C”},“success”:true}

    what i need ist the value 20

    how i can filter the response?

    i have found this for an php request but i dont know how i can use it in the node_helper.js

    <b>Single value from weather.temperature:</b><br />
    php
       $curl = curl_init();
       curl_setopt ($curl, CURLOPT_URL, "http://demo:demo@demo.pimatic.org/api/variables/variable-set.temperature");
       curl_setopt ($curl, CURLOPT_RETURNTRANSFER, 1);
    
       $result = curl_exec ($curl);// curl to a variable
        curl_close ($curl);
    
    	$result = json_decode($result, true);// decode to associative array
    	$result = $result['variable']['value'];//pick desired value
    
    	print "Temperature: ".$result; 
    

    $result = Temperature 11.4

    node_helper.js

    /* Magic Mirror
     * Module: MMM-Rest
     *
     * By Dirk Melchers 
     * MIT Licensed.
     */
    var NodeHelper = require('node_helper');
    var request = require('request');
    
    module.exports = NodeHelper.create({
        start: function () {
            console.log(this.name + ' helper started ...');
        },
    
        socketNotificationReceived: function(notification, payload) {
            if (notification === 'MMM_REST_REQUEST') {
                var that = this;
                request({
                    url: payload.url,
                    method: 'GET'
                }, function(error, response, body) {
                    // console.log("MMM_REST response:");
                    if (!error && response.statusCode == 200) {
                        // console.log("send notification: "+payload.id);
                        that.sendSocketNotification('MMM_REST_RESPONSE', {
                            id: payload.id,
                            data: response
                        });
                    }
                });
            }
        }
    });
    
    

    does anyone have an idea how i can integrate the decode in the node_helper.js?